include mk.conf

all: fhs learn

destroy:
	cd "$(PREFIX)"
	git clean -f -d

fhs:
	# Filesystem Hierarchy Standard 3.0, 2015
	# https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf

	# section 3.2
	mkdir -p	"$(PREFIX)/bin"
	mkdir -p	"$(PREFIX)/boot"
	mkdir -p	"$(PREFIX)/dev"
	mkdir -p	"$(PREFIX)/etc"
	mkdir -p	"$(PREFIX)/lib"
	mkdir -p	"$(PREFIX)/media"
	mkdir -p	"$(PREFIX)/mnt"
	mkdir -p	"$(PREFIX)/opt"
	mkdir -p	"$(PREFIX)/run"
	mkdir -p	"$(PREFIX)/sbin"
	mkdir -p	"$(PREFIX)/srv"
	mkdir -p	"$(PREFIX)/tmp"
	mkdir -p	"$(PREFIX)/usr"
	mkdir -p	"$(PREFIX)/var"

	# section 3.7.4
	mkdir -p	"$(PREFIX)/etc/opt"

	# section 4.2
	mkdir -p	"$(PREFIX)/usr/bin"
	mkdir -p	"$(PREFIX)/usr/lib"
	mkdir -p	"$(PREFIX)/usr/local"
	mkdir -p	"$(PREFIX)/usr/sbin"
	mkdir -p	"$(PREFIX)/usr/share"

	# section 4.3
	mkdir -p	"$(PREFIX)/usr/include"
	mkdir -p	"$(PREFIX)/var/spool"
	mkdir -p	"$(PREFIX)/var/tmp"
	mkdir -p	"$(PREFIX)/var/lock"
	ln -s	"$(PREFIX)/usr/spool"	"$(PREFIX)/var/spool"
	ln -s	"$(PREFIX)/usr/tmp"	"$(PREFIX)/var/tmp"
	ln -s	"$(PREFIX)/usr/spool/locks"	"$(PREFIX)/var/lock"

	# section 4.6
	mkdir -p	"$(PREFIX)/usr/lib"

	# section 4.9
	mkdir -p	"$(PREFIX)/usr/local"

	# section 4.9.2
	mkdir -p	"$(PREFIX)/usr/local/bin"
	#mkdir -p	"$(PREFIX)/usr/local/etc" # see section 4.9.3
	mkdir -p	"$(PREFIX)/usr/local/games"
	mkdir -p	"$(PREFIX)/usr/local/include"
	mkdir -p	"$(PREFIX)/usr/local/lib"
	mkdir -p	"$(PREFIX)/usr/local/man"
	mkdir -p	"$(PREFIX)/usr/local/sbin"
	mkdir -p	"$(PREFIX)/usr/local/share"
	mkdir -p	"$(PREFIX)/usr/local/src"

	# section 4.9.3
	ln -s	"$(PREFIX)/usr/local/etc" "$(PREFIX)/etc/local"

	# section 4.11.6
	mkdir -p	"$(PREFIX)/usr/share/man"

	# section 4.11.7
	mkdir -p	"$(PREFIX)/usr/share/misc"

	# section 4.12
	mkdir -p	"$(PREFIX)/usr/src"

	# section 5.2
	mkdir -p	"$(PREFIX)/var/lib"
	mkdir -p	"$(PREFIX)/var/local"
	mkdir -p	"$(PREFIX)/var/log"
	mkdir -p	"$(PREFIX)/var/opt"
	#mkdir -p	"$(PREFIX)/var/run" # see section 5.13.2

	# section 5.8.2
	mkdir -p	"$(PREFIX)/var/lib/misc"

	# section 5.13.2
	ln -s	"$(PREFIX)/var/run" "$(PREFIX)/run"

	# section 6.1.10
	mkdir -p	"$(PREFIX)/var/spool/cron"

learn: fhs
	mkdir -p "$(PREFIX)/usr/man/man1"
	cp "$(PREFIX)/dist/doc/*.1" "$(PREFIX)/usr/man/man1/"
	mkdir -p "$(PREFIX)/usr/man/man7"
	cp "$(PREFIX)/dist/doc/*.7" "$(PREFIX)/usr/man/man7/"

musl_fetch: "$(PREFIX)/usr/src/musl"
	git clone "$(MUSL_UPSTREAM)" "$(PREFIX)/usr/src/musl" || true

musl: musl_fetch
	cd "$(PREFIX)/usr/src/musl"
	./configure --prefix="$(PREFIX)"
	$(MAKE) install

unrepo:
	rm -rf	"$(PREFIX)/.git"
	rm -f	"$(PREFIX)/LICENSE"
	rm -f	"$(PREFIX)/README.md"

.PHONY: all destroy
