:: commit b8d4a54e6499112cc6576fbba35c51fa2d93a860

Mintsuki <mintsuki@protonmail.com> — 2025-07-31 01:30

parents: a9d9394e03

build: Many makefile improvements (hopefully, includes bodging)

diff --git a/GNUmakefile.in b/GNUmakefile.in
index 6c9fe1a2..ad21d254 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -1,5 +1,16 @@
-MAKEFLAGS += -rR
-.SUFFIXES:
+# Nuke built-in rules and variables.
+ROOTMAKE := true
+ifeq ($(__BASH_MAKE_COMPLETION__)$(ROOTMAKE),true)
+ifeq ($(MAKECMDGOALS),)
+    override TARGETS := all
+else
+    override TARGETS := $(MAKECMDGOALS)
+endif
+override TMP_INC := $(shell mktemp)
+$(shell for t in $(TARGETS); do printf ".PHONY: $$t\n$$t:\n\t@true\n" >>'$(TMP_INC)'; done)
+$(shell printf "\t@rm -f '$(TMP_INC)'\n\t@\$$(MAKE) -rR $(MAKECMDGOALS) ROOTMAKE=false\n" >>'$(TMP_INC)')
+include $(TMP_INC)
+else
 
 override SOURCE_DATE_EPOCH := @SOURCE_DATE_EPOCH@
 export SOURCE_DATE_EPOCH
@@ -10,17 +21,15 @@ override PACKAGE_TARNAME := @PACKAGE_TARNAME@
 override PACKAGE_VERSION := @PACKAGE_VERSION@
 override DIST_OUTPUT := $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
 
-prefix := @prefix@
-exec_prefix := @exec_prefix@
-
-bindir := @bindir@
-datarootdir := @datarootdir@
-includedir := @includedir@
-datarootdir := @datarootdir@
-mandir := @mandir@
-docdir := @docdir@
+override prefix := @prefix@
+override exec_prefix := @exec_prefix@
 
-STRIP := @STRIP@
+override bindir := @bindir@
+override datarootdir := @datarootdir@
+override includedir := @includedir@
+override datarootdir := @datarootdir@
+override mandir := @mandir@
+override docdir := @docdir@
 
 override BUILDDIR := @BUILDDIR@
 override BINDIR := $(BUILDDIR)/bin
@@ -44,49 +53,52 @@ override BUILD_UEFI_CD := @BUILD_UEFI_CD@
 override BUILD_BIOS_PXE := @BUILD_BIOS_PXE@
 override BUILD_BIOS_CD := @BUILD_BIOS_CD@
 
-CC := @CC@
+CC ?= @CC@
 export CC
 
-MKDIR_P := @MKDIR_P@
+MKDIR_P ?= @MKDIR_P@
 export MKDIR_P
 
-INSTALL := @INSTALL@
+INSTALL ?= @INSTALL@
 export INSTALL
 
-INSTALL_PROGRAM := @INSTALL_PROGRAM@
+INSTALL_PROGRAM ?= @INSTALL_PROGRAM@
 export INSTALL_PROGRAM
 
-INSTALL_DATA := @INSTALL_DATA@
+INSTALL_DATA ?= @INSTALL_DATA@
 export INSTALL_DATA
 
-GREP := @GREP@
+STRIP ?= @STRIP@
+export STRIP
+
+GREP ?= @GREP@
 export GREP
 
-SED := @SED@
+SED ?= @SED@
 export SED
 
-AWK := @AWK@
+AWK ?= @AWK@
 export AWK
 
-CPPFLAGS := @CPPFLAGS@
+CPPFLAGS ?= @CPPFLAGS@
 export CPPFLAGS
-CFLAGS := @CFLAGS@
+CFLAGS ?= @CFLAGS@
 export CFLAGS
-LDFLAGS := @LDFLAGS@
+LDFLAGS ?= @LDFLAGS@
 export LDFLAGS
-LIBS := @LIBS@
+LIBS ?= @LIBS@
 export LIBS
 
 override WERROR_FLAG := @WERROR_FLAG@
 export WERROR_FLAG
 
-CFLAGS_FOR_TARGET := @CFLAGS_FOR_TARGET@
+CFLAGS_FOR_TARGET ?= @CFLAGS_FOR_TARGET@
 export CFLAGS_FOR_TARGET
-CPPFLAGS_FOR_TARGET := @CPPFLAGS_FOR_TARGET@
+CPPFLAGS_FOR_TARGET ?= @CPPFLAGS_FOR_TARGET@
 export CPPFLAGS_FOR_TARGET
-LDFLAGS_FOR_TARGET := @LDFLAGS_FOR_TARGET@
+LDFLAGS_FOR_TARGET ?= @LDFLAGS_FOR_TARGET@
 export LDFLAGS_FOR_TARGET
-NASMFLAGS_FOR_TARGET := @NASMFLAGS_FOR_TARGET@
+NASMFLAGS_FOR_TARGET ?= @NASMFLAGS_FOR_TARGET@
 export NASMFLAGS_FOR_TARGET
 
 override STAGE1_FILES := $(shell find '$(call SHESCAPE,$(SRCDIR))/stage1' -type f -name '*.asm' | LC_ALL=C sort)
@@ -421,3 +433,5 @@ decompressor-clean:
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))/decompressor-build'
 
 -include test.mk
+
+endif
diff --git a/bootstrap b/bootstrap
index 9cfd8771..71aff387 100755
--- a/bootstrap
+++ b/bootstrap
@@ -85,7 +85,7 @@ if ! test -f version; then
     clone_repo_commit \
         https://codeberg.org/osdev/freestanding-toolchain.git \
         build-aux/freestanding-toolchain \
-        476692d0644d44618a30e77d9c10e976a650b79b
+        2da3feadd74c6b11b5887e0703a253c164388d80
 
     clone_repo_commit \
         https://github.com/limine-bootloader/limine-protocol.git \
diff --git a/common/common.mk b/common/common.mk
index ca953b37..a7a2575e 100644
--- a/common/common.mk
+++ b/common/common.mk
@@ -1,12 +1,5 @@
-MAKEFLAGS += -rR
-.SUFFIXES:
-
 include $(TOOLCHAIN_FILE)
-export CC_FOR_TARGET
-export LD_FOR_TARGET
 export OBJDUMP_FOR_TARGET
-export OBJCOPY_FOR_TARGET
-export READELF_FOR_TARGET
 
 override SRCDIR := $(shell pwd -P)
 
@@ -16,8 +9,8 @@ override MKESCAPE = $(subst $(SPACE),\ ,$(1))
 override SHESCAPE = $(subst ','\'',$(1))
 override OBJESCAPE = $(subst .a ,.a' ',$(subst .o ,.o' ',$(call SHESCAPE,$(1))))
 
-COM_OUTPUT := false
-E9_OUTPUT := false
+COM_OUTPUT ?= false
+E9_OUTPUT ?= false
 
 override S2CFLAGS := -Os
 
diff --git a/decompressor/decompressor.mk b/decompressor/decompressor.mk
index 592d6834..aa5ccd6c 100644
--- a/decompressor/decompressor.mk
+++ b/decompressor/decompressor.mk
@@ -1,6 +1,3 @@
-MAKEFLAGS += -rR
-.SUFFIXES:
-
 include $(TOOLCHAIN_FILE)
 
 override SPACE := $(subst ,, )
diff --git a/host/host.mk b/host/host.mk
index 8f599080..555cd7f2 100644
--- a/host/host.mk
+++ b/host/host.mk
@@ -1,17 +1,17 @@
-SHELL = /bin/sh
+SHELL=/bin/sh
 
-CC = cc
-CFLAGS = -g -O2 -pipe
-CPPFLAGS =
-LDFLAGS =
-LIBS =
+CC=cc
+CFLAGS=-g -O2 -pipe
+CPPFLAGS=
+LDFLAGS=
+LIBS=
 
-WERROR_FLAG =
+WERROR_FLAG=
 
-STRIP = strip
-INSTALL = ./install-sh
+STRIP=strip
+INSTALL=./install-sh
 
-PREFIX = /usr/local
+PREFIX=/usr/local
 
 .PHONY: all
 all: limine
tab: 248 wrap: offon