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
