stigma/Makefile

95 lines
2.4 KiB
Makefile

OPENWRT_RELEASE = 21.02.1
OPENWRT_TARGET = x86/64
OPENWRT_PROFILE = Generic
export OPENWRT_RELEASE OPENWRT_TARGET OPENWRT_PROFILE
CONFIG = base
IDENT = default
DOCKER_TAG = git.projectflower.eu/flower/stigma
export CONFIG IDENT
TOP = $(shell pwd)
CACHE_DIR = ./cache
WORK_DIR = ./temp
OUT_DIR = ./build
export CACHE_DIR WORK_DIR OUT_DIR
OPENWRT_COPY =
OPENWRT_FILES =
OPENWRT_PACKAGES =
OPENWRT_EXTRA_NAME = stigma
export OPENWRT_COPY OPENWRT_FILES OPENWRT_PACKAGES OPENWRT_EXTRA_NAME
FILES_DIR = $(WORK_DIR)/files/$(OPENWRT_RELEASE)-$(OPENWRT_TARGET)-$(OPENWRT_PROFILE)/$(CONFIG)-$(IDENT)
clean:
rm -rf ${CACHE_DIR}/* ${WORK_DIR}/* ${OUT_DIR}/*
.PHONY: docker
docker:
docker build -t $(DOCKER_TAG) .
docker.%: docker
docker run \
-v /build/$(CACHE_FOLDER):$(TOP)/$(CACHE_FOLDER) \
-v /build/$(OUT_DIR):$(TOP)/$(OUT_DIR) \
--rm $(DOCKER_TAG) \
$(patsubst docker.%,%,$@) $(MAKEFLAGS)
include $(wildcard configs/*.mk)
.PHONY: image
image: $(OUT_DIR)/$(CONFIG)-$(IDENT)/openwrt-$(OPENWRT_RELEASE)-$(subst /,-,$(OPENWRT_TARGET))/
.SECONDARY:
# Vital directories
$(CACHE_DIR) $(WORK_DIR) $(OUT_DIR):
mkdir -p $@
# The imagebuilder archive
$(CACHE_DIR)/openwrt-imagebuilder-%.tar.xz: $(CACHE_DIR)
curl -sL https://downloads.openwrt.org/releases/$(OPENWRT_RELEASE)/targets/$(OPENWRT_TARGET)/$(notdir $@) -o $@
# The extracted imagebuilder
$(WORK_DIR)/%: $(CACHE_DIR)/%.tar.xz $(WORK_DIR)
tar -xC $(dir $@) -f $<
# The main image!
$(OUT_DIR)/$(CONFIG)-$(IDENT)/openwrt-%/: $(WORK_DIR)/openwrt-imagebuilder-%.$(shell uname -s)-$(shell uname -m) $(OUT_DIR)
rm -rf "$(TOP)/$(FILES_DIR)" && mkdir -p "$(TOP)/$(FILES_DIR)"
for f in $(OPENWRT_FILES); do \
cp -R "$(TOP)/$$f"/* "$(TOP)/$(FILES_DIR)"; \
done
for f in $(OPENWRT_COPY); do \
dest="$${f%%=*}"; \
src="$${f#*=}"; \
mkdir -p "$$(dirname $(TOP)/$(FILES_DIR)/$$dest)"; \
cp -R "$$src" $(TOP)/$(FILES_DIR)/$$dest; \
done
find "$(TOP)/$(FILES_DIR)" -name '*.env' | while read f; do \
envsubst < "$$f" > "$${f%%.env}" && rm "$$f"; \
done
find "$(TOP)/$(FILES_DIR)" -name '*.append.*' | while read f; do \
cat "$$f" >> "$${f%%.append.*}" && rm "$$f"; \
done
umask 022 && make -C $< \
image \
PROFILE=$(OPENWRT_PROFILE) \
PACKAGES="$(OPENWRT_PACKAGES)" \
FILES=$(TOP)/$(FILES_DIR) \
BIN_DIR=$(TOP)/$(WORK_DIR) \
EXTRA_IMAGE_NAME="$(OPENWRT_EXTRA_NAME)" \
mkdir -p $@
cp $(WORK_DIR)/*$(OPENWRT_EXTRA_NAME)-$(subst /,-,$(OPENWRT_TARGET))-* $@