src/Makefile

115 lines
3.2 KiB
Makefile

# Makefile - hhl - /usr/src
# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
#
include src-config.mk
include src-files.mk
uid = $(shell id -u)
include_dir = /usr/include/mk
make_includes += $(wildcard $(include_dir)/*.mk)
pkgdbdir = $(build)/var/db/pkg/base
plists = $(pkgdbdir)/plist $(pkgdbdir)/etc.plist
dirs = dev proc sys run
ifeq ($(arch),x86_64)
dirs += lib64
endif
alldirs = bin boot dev etc home lib lib64 media mnt \
opt proc root run sbin srv sys tmp usr var
all: buildworld
toolchain-tgz: toolchain-hhl-${os_version}-${arch}.tgz
toolchain-tbz: toolchain-hhl-${os_version}-${arch}.tbz
toolchain-txz: toolchain-hhl-${os_version}-${arch}.txz
rootfs-tgz: rootfs-hhl-${os_version}-${arch}.tgz
rootfs-tbz: rootfs-hhl-${os_version}-${arch}.tbz
rootfs-txz: rootfs-hhl-${os_version}-${arch}.txz
toolchain-hhl-${os_version}-${arch}.tgz: /toolchain/.built smalltools
cd build && paxtar -M uidgid -czf ../$@ toolchain
toolchain-hhl-${os_version}-${arch}.tbz: /toolchain/.built smalltools
cd build && paxtar -M uidgid -cjf ../$@ toolchain
toolchain-hhl-${os_version}-${arch}.txz: /toolchain/.built smalltools
cd build && paxtar -M uidgid -cJf ../$@ toolchain
smalltools: /toolchain/.built
$(MAKE) -C toolchain reduce-size
buildtools: /toolchain/.built
$(info $(grn)=== Temporary toolchain build ===$(reset))
/toolchain/.built: config.mk | $(dirs)
$(info $(grn)=== Building temporary toolchain ===$(reset))
$(MAKE) -C toolchain
touch $@
toolsclean:
$(MAKE) -C toolchain clean
src-files.mk:
echo src-files = \\ > $@.in
git ls-files | sort | while read l ; do echo $${l} \\ ; done | \
sed '$$ s:\\::' >> $@.in
mv $@.in $@
buildworld: $(build)/.built $(plists)
$(info $(grn)=== World build complete ===$(reset))
strip: $(build)/.stripped
$(build)/.stripped:
for dir in $(stripdirs) ; \
do $(arch)-strip --strip-debug $${dir}/* > \
/dev/null 2>&1 || true ; done
touch $@
$(build)/.built: /toolchain/.built $(build)/.skeleton.built
$(MAKE) -C world
touch $@
$(build)/.skeleton.built: | $(dirs)
install -d -m 0750 build/root
install -dv -m 1777 build/tmp build/var/tmp
[ -h build/var/run ] || ln -sv /run build/var/run
[ -h build/var/lock ] || ln -sv /run/lock build/var/lock
[ -c $(build)/dev/console ] || su -c "mknod -m 600 $(build)/dev/console c 5 1"
[ -c $(build)/dev/null ] || su -c "mknod -m 666 $(build)/dev/null c 1 3"
touch $@
$(plists): $(build)/.built
$(info $(grn)=== Creating plist ===$(reset))
pkgname=base $(MAKE) -C $(build) -f $(include_dir)/create-plist.mk install
$(dirs):
install -d ${build}/$@
remove-toolchain:
$(MAKE) -C toolchain remove
rootfs-hhl-$(os_version)-$(arch).tgz: $(plists) $(build)/.stripped
cd build && paxtar -M uidgid -czf ../$@ $(alldirs)
rootfs-hhl-$(os_version)-$(arch).tbz: $(plists) $(build)/.stripped
cd build && paxtar -M uidgid -cjf ../$@ $(alldirs)
rootfs-hhl-$(os_version)-$(arch).txz: $(plists) $(build)/.stripped
cd build && paxtar -M uidgid -cJf ../$@ $(alldirs)
clean:
$(MAKE) -C world clean
$(MAKE) -C toolchain clean
rm -rf build/*
rm -rf build/.built
rm -rf build/.skeleton.built
.PHONY: toolchain-archive buildtools smalltools toolsclean buildworld $(dirs) strip