diff --git a/GNUmakefile b/GNUmakefile index 4bbc50a..68f237f 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,23 +1,80 @@ +ARCH ?= x86_64 +PLATFORM ?= UEFI +DESTROOT ?= destroot +REPO ?= repo +DOSU ?= sudo +ALPINE_REPO ?= https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/ +PKGS ?= +BUSYBOX ?= busybox +APORTSDIR ?= $(APORTS_MODULE) +SHELL := /usr/bin/env bash + GIMME_MODULE := git submodule update --init --recursive + +ABUILD_MODULE := modules/abuild ARCH_MODULE := modules/arch-install-scripts APK_MODULE := modules/apk-tools +APORTS_MODULE := modules/aports + +ABUILD_SCRIPT := $(ABUILD_MODULE)/abuild APK_BIN := $(APK_MODULE)/src/apk +ABUILD := $(BUSYBOX) ash $(CURDIR)/$(ABUILD_SCRIPT) -c -P $(CURDIR)/$(REPO) rootbld ACHROOT := $(ARCH_MODULE)/arch-chroot APK := LD_LIBRARY_PATH=$(APK_MODULE)/src $(APK_BIN) -tools: $(ACHROOT) $(APK_BIN) +### TOOLS ### + +tools: $(ACHROOT) $(APK_BIN) $(ABUILD_SCRIPT) $(ARCH_MODULE)/Makefile: .gitmodules $(GIMME_MODULE) -- $(ARCH_MODULE) $(ACHROOT): $(ARCH_MODULE)/Makefile - $(MAKE) -C $(ARCH_MODULE) arch-chroot + $(MAKE) -j -C $(ARCH_MODULE) arch-chroot $(APK_MODULE)/Makefile: .gitmodules $(GIMME_MODULE) -- $(APK_MODULE) $(APK_BIN): $(APK_MODULE)/Makefile - $(MAKE) -C $(APK_MODULE) + $(MAKE) -j -C $(APK_MODULE) -.PHONY: tools +$(ABUILD_MODULE)/Makefile: .gitmodules + $(GIMME_MODULE) -- $(ABUILD_MODULE) + +$(ABUILD_SCRIPT): $(ABUILD_MODULE)/Makefile + $(MAKE) -j -C $(ABUILD_MODULE) all + +### PORTS TREE ### + +$(APORTS_MODULE)/README.md: .gitmodules + $(GIMME_MODULE) -- $(APORTS_MODULE) + +aports: $(APORTS_MODULE)/README.md + +### REPO BUILDING ### + +# Something will go here... + +### INSTALLATION ### + +$(DESTROOT): + mkdir -p $(DESTROOT) || $(DOSU) mkdir -p $(DESTROOT) + +$(DESTROOT)/.bootstrap-done: $(DESTROOT) $(APK_BIN) + $(DOSU) $(APK) --arch $(ARCH) -X $(ALPINE_REPO) --root $(DESTROOT) \ + -U --allow-untrusted --initdb add alpine-keys $(PKGS) && touch $@ + $(DOSU) $(APK) --arch $(ARCH) -X $(ALPINE_REPO) --root $(DESTROOT) \ + add alpine-base $(PKGS) && touch $@ + +bootstrap: $(DESTROOT)/.bootstrap-done + +### CLEANLINESS ### +clean: + git submodule deinit -f -- \ + $(APK_MODULE) $(ABUILD_MODULE) $(APORTS_MODULE) $(ARCH_MODULE) + $(DOSU) rm -rf destroot/* repo/* + +### MAKEY-MAKEY ### + +.PHONY: tools bootstrap aports