|
| 1 | +# Build, push, or run a libfly CI container. |
| 2 | + |
| 3 | +.PHONY: help |
| 4 | +.PHONY: build |
| 5 | +.PHONY: push |
| 6 | +.PHONY: run |
| 7 | + |
| 8 | +# Set the path to the build system. |
| 9 | +BUILD_ROOT := $(CURDIR)/../src |
| 10 | + |
| 11 | +# Import the build system. |
| 12 | +include $(BUILD_ROOT)/system.mk |
| 13 | +include $(BUILD_ROOT)/config.mk |
| 14 | +include $(BUILD_ROOT)/flags.mk |
| 15 | + |
| 16 | +# Docker settings. |
| 17 | +USER := trflynn89 |
| 18 | +REPO := libfly |
| 19 | +BASE := $(shell grep -oP "(?<=FROM )(\S+)" Dockerfile) |
| 20 | + |
| 21 | +# Toolchain versions. |
| 22 | +CLANG_VERSION := 11 |
| 23 | +GCC_VERSION := 10 |
| 24 | +JDK_VERSION := 15 |
| 25 | + |
| 26 | +# Form the tag for the container. |
| 27 | +ifeq ($(JDK_VERSION),) |
| 28 | + TAG := $(subst :,,$(subst .,,$(BASE)))_clang$(CLANG_VERSION)_gcc$(GCC_VERSION) |
| 29 | +else |
| 30 | + TAG := $(subst :,,$(subst .,,$(BASE)))_clang$(CLANG_VERSION)_gcc$(GCC_VERSION)_jdk$(JDK_VERSION) |
| 31 | +endif |
| 32 | + |
| 33 | +help: |
| 34 | + $(Q)echo "Build, push, or run a $(REPO) container." |
| 35 | + $(Q)echo |
| 36 | + $(Q)echo "Container will be based on $(BASE), tagged $(TAG), and contain:" |
| 37 | + $(Q)echo |
| 38 | + $(Q)echo " Clang $(CLANG_VERSION)" |
| 39 | + $(Q)echo " GCC $(GCC_VERSION)" |
| 40 | +ifneq ($(JDK_VERSION),) |
| 41 | + $(Q)echo " JDK $(JDK_VERSION)" |
| 42 | +endif |
| 43 | + $(Q)echo |
| 44 | + $(Q)echo "Usage: make [build] [push] [run] [clean]" |
| 45 | + |
| 46 | +build: |
| 47 | + $(Q)docker build \ |
| 48 | + --tag $(USER)/$(REPO):$(TAG) \ |
| 49 | + --build-arg CLANG_VERSION=$(CLANG_VERSION) \ |
| 50 | + --build-arg GCC_VERSION=$(GCC_VERSION) \ |
| 51 | + --build-arg JDK_VERSION=$(JDK_VERSION) \ |
| 52 | + . |
| 53 | + |
| 54 | +push: build |
| 55 | + $(Q)docker push $(USER)/$(REPO):$(TAG) |
| 56 | + |
| 57 | +run: build |
| 58 | + $(Q)docker rm $(REPO) > /dev/null 2>&1 || true |
| 59 | + |
| 60 | + $(Q)docker run -it \ |
| 61 | + --name $(REPO) \ |
| 62 | + --cap-add SYS_PTRACE \ |
| 63 | + $(USER)/$(REPO):$(TAG) |
| 64 | + |
| 65 | +clean: |
| 66 | + $(Q)docker rm $(REPO) > /dev/null 2>&1 || true |
| 67 | + $(Q)docker image rm $(shell docker images -q) > /dev/null 2>&1 || true |
0 commit comments