You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.4 KiB
94 lines
2.4 KiB
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))-* $@
|
|
|