# Copyright © Tavian Barnes # SPDX-License-Identifier: 0BSD # Makefile fragment that implements `make config` include config/prelude.mk include config/exports.mk # All configuration steps config: ${CONFIG} ${GEN}/config.h .PHONY: config # Makefile fragments generated by `make config` MKS := \ ${GEN}/vars.mk \ ${GEN}/flags.mk \ ${GEN}/deps.mk \ ${GEN}/pkgs.mk # The main configuration file, which includes the others ${CONFIG}: ${MKS} ${MSG} "[ GEN] ${TGT}" @printf '# %s\n' "${TGT}" >$@ @printf 'include $${GEN}/%s\n' ${MKS:${GEN}/%=%} >>$@ ${VCAT} ${CONFIG} .PHONY: ${CONFIG} # Saves the configurable variables ${GEN}/vars.mk:: @${MKDIR} ${@D} ${MSG} "[ GEN] ${TGT}" @printf '# %s\n' "${TGT}" >$@ @printf 'PREFIX := %s\n' "$$XPREFIX" >>$@ @printf 'MANDIR := %s\n' "$$XMANDIR" >>$@ @printf 'OS := %s\n' "$${OS:-$$(uname)}" >>$@ @printf 'CC := %s\n' "$$XCC" >>$@ @printf 'INSTALL := %s\n' "$$XINSTALL" >>$@ @printf 'MKDIR := %s\n' "$$XMKDIR" >>$@ @printf 'PKG_CONFIG := %s\n' "$$XPKG_CONFIG" >>$@ @printf 'RM := %s\n' "$$XRM" >>$@ @printf 'PKGS :=\n' >>$@ ${VCAT} $@ # Sets the build flags. This depends on vars.mk and uses a recursive make so # that the default flags can depend on variables like ${OS}. ${GEN}/flags.mk: ${GEN}/vars.mk @+${MAKE} -sf config/flags.mk $@ .PHONY: ${GEN}/flags.mk # Check for dependency generation support ${GEN}/deps.mk: ${GEN}/flags.mk @+${MAKE} -sf config/deps.mk $@ .PHONY: ${GEN}/deps.mk # Auto-detect dependencies and their build flags ${GEN}/pkgs.mk: ${GEN}/flags.mk @+${MAKE} -sf config/pkgs.mk $@ .PHONY: ${GEN}/pkgs.mk # Compile-time feature detection ${GEN}/config.h: ${CONFIG} @+${MAKE} -sf config/header.mk $@ .PHONY: ${GEN}/config.h