:: commit 375360f4b9f8ff7a2655ad430b5f647b8ebef24d

mintsuki <mintsuki@protonmail.com> — 2024-11-27 23:42

parents: e287c9d1d0

build: Misc improvements wrt variable passing

diff --git a/GNUmakefile.in b/GNUmakefile.in
index 94831f59..7a1d23da 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -104,6 +104,7 @@ $(call MKESCAPE,$(BINDIR))/limine-bios-hdd.h: $(call MKESCAPE,$(BINDIR))/limine-
 	$(MKDIR_P) '$(call SHESCAPE,$(BINDIR))'
 	cd '$(call SHESCAPE,$(BINDIR))' && '$(call SHESCAPE,$(SRCDIR))/host/hgen.sh' >limine-bios-hdd.h
 
+override LIMINE_NO_BIOS :=
 ifneq ($(BUILD_BIOS),limine-bios)
 override LIMINE_NO_BIOS := -DLIMINE_NO_BIOS
 endif
@@ -113,7 +114,10 @@ $(call MKESCAPE,$(BINDIR))/limine: $(call MKESCAPE,$(BINDIR))/Makefile $(call MK
 	$(MAKE) -C '$(call SHESCAPE,$(BINDIR))' limine \
 		CC="$(CC)" \
 		CFLAGS="$(CFLAGS)" \
-		CPPFLAGS='$(CPPFLAGS) $(LIMINE_NO_BIOS) -DLIMINE_DATADIR=\"$(call SHESCAPE,$(datarootdir))/limine\"'
+		CPPFLAGS='$(CPPFLAGS) $(LIMINE_NO_BIOS) -DLIMINE_DATADIR=\"$(call SHESCAPE,$(datarootdir))/limine\"' \
+		LDFLAGS="$(LDFLAGS)" \
+		LIBS="$(LIBS)" \
+		WERROR_FLAG="$(WERROR_FLAG)"
 
 $(call MKESCAPE,$(BINDIR))/Makefile: $(call MKESCAPE,$(SRCDIR))/host/host.mk $(call MKESCAPE,$(SRCDIR))/host/.gitignore
 	mkdir -p '$(call SHESCAPE,$(BINDIR))'
@@ -336,10 +340,10 @@ maintainer-clean: distclean
 
 .PHONY: common-uefi-x86-64
 common-uefi-x86-64:
-	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk' \
-		TARGET=uefi-x86-64 \
-		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64'
+	TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk' \
+	TARGET=uefi-x86-64 \
+	BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64' \
+		$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
 
 .PHONY: common-uefi-x86-64-clean
 common-uefi-x86-64-clean:
@@ -347,10 +351,10 @@ common-uefi-x86-64-clean:
 
 .PHONY: common-uefi-aarch64
 common-uefi-aarch64:
-	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-aarch64-toolchain.mk' \
-		TARGET=uefi-aarch64 \
-		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-aarch64'
+	TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-aarch64-toolchain.mk' \
+	TARGET=uefi-aarch64 \
+	BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-aarch64' \
+		$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
 
 .PHONY: common-uefi-aarch64-clean
 common-uefi-aarch64-clean:
@@ -358,10 +362,10 @@ common-uefi-aarch64-clean:
 
 .PHONY: common-uefi-riscv64
 common-uefi-riscv64:
-	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-riscv64-toolchain.mk' \
-		TARGET=uefi-riscv64 \
-		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-riscv64'
+	TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-riscv64-toolchain.mk' \
+	TARGET=uefi-riscv64 \
+	BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-riscv64' \
+		$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
 
 .PHONY: common-uefi-riscv64-clean
 common-uefi-riscv64-clean:
@@ -369,10 +373,10 @@ common-uefi-riscv64-clean:
 
 .PHONY: common-uefi-loongarch64
 common-uefi-loongarch64:
-	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-loongarch64-toolchain.mk' \
-		TARGET=uefi-loongarch64 \
-		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-loongarch64'
+	TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-loongarch64-toolchain.mk' \
+	TARGET=uefi-loongarch64 \
+	BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-loongarch64' \
+		$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
 
 .PHONY: common-uefi-loongarch64-clean
 common-uefi-loongarch64-clean:
@@ -380,10 +384,10 @@ common-uefi-loongarch64-clean:
 
 .PHONY: common-uefi-ia32
 common-uefi-ia32:
-	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-i686-toolchain.mk' \
-		TARGET=uefi-ia32 \
-		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-ia32'
+	TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-i686-toolchain.mk' \
+	TARGET=uefi-ia32 \
+	BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-ia32' \
+		$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
 
 .PHONY: common-uefi-ia32-clean
 common-uefi-ia32-clean:
@@ -391,10 +395,10 @@ common-uefi-ia32-clean:
 
 .PHONY: common-bios
 common-bios:
-	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/bios-i686-toolchain.mk' \
-		TARGET=bios \
-		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-bios'
+	TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/bios-i686-toolchain.mk' \
+	TARGET=bios \
+	BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-bios' \
+		$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
 
 .PHONY: common-bios-clean
 common-bios-clean:
@@ -402,9 +406,9 @@ common-bios-clean:
 
 .PHONY: decompressor
 decompressor:
-	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/decompressor' -f decompressor.mk all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/bios-i686-toolchain.mk' \
-		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/decompressor-build'
+	TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/bios-i686-toolchain.mk' \
+	BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/decompressor-build' \
+		$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/decompressor' -f decompressor.mk
 
 .PHONY: decompressor-clean
 decompressor-clean:
diff --git a/common/common.mk b/common/common.mk
index 06cd0a21..862f9d22 100644
--- a/common/common.mk
+++ b/common/common.mk
@@ -9,9 +9,6 @@ export OBJDUMP_FOR_TARGET
 export OBJCOPY_FOR_TARGET
 export READELF_FOR_TARGET
 
-TARGET :=
-BUILDDIR :=
-
 override SRCDIR := $(shell pwd -P)
 
 override SPACE := $(subst ,, )
@@ -20,10 +17,6 @@ override MKESCAPE = $(subst $(SPACE),\ ,$(1))
 override SHESCAPE = $(subst ','\'',$(1))
 override OBJESCAPE = $(subst .a ,.a' ',$(subst .o ,.o' ',$(call SHESCAPE,$(1))))
 
-ifeq ($(call MKESCAPE,$(BUILDDIR)),)
-    $(error BUILDDIR not specified)
-endif
-
 COM_OUTPUT := false
 E9_OUTPUT := false
 
diff --git a/decompressor/decompressor.mk b/decompressor/decompressor.mk
index 0741eee6..35ad45b9 100644
--- a/decompressor/decompressor.mk
+++ b/decompressor/decompressor.mk
@@ -2,14 +2,6 @@ MAKEFLAGS += -rR
 .SUFFIXES:
 
 include $(TOOLCHAIN_FILE)
-export AR_FOR_TARGET
-export CC_FOR_TARGET
-export LD_FOR_TARGET
-export OBJDUMP_FOR_TARGET
-export OBJCOPY_FOR_TARGET
-export READELF_FOR_TARGET
-
-BUILDDIR :=
 
 override SRCDIR := $(shell pwd -P)
 
@@ -19,10 +11,6 @@ override MKESCAPE = $(subst $(SPACE),\ ,$(1))
 override SHESCAPE = $(subst ','\'',$(1))
 override OBJESCAPE = $(subst .a ,.a' ',$(subst .o ,.o' ',$(call SHESCAPE,$(1))))
 
-ifeq ($(call MKESCAPE,$(BUILDDIR)),)
-    $(error BUILDDIR not specified)
-endif
-
 override CFLAGS_FOR_TARGET += \
     -Os \
     -Wall \
diff --git a/host/host.mk b/host/host.mk
index 65b41196..8f599080 100644
--- a/host/host.mk
+++ b/host/host.mk
@@ -1,13 +1,18 @@
 SHELL = /bin/sh
 
 CC = cc
+CFLAGS = -g -O2 -pipe
+CPPFLAGS =
+LDFLAGS =
+LIBS =
+
+WERROR_FLAG =
+
 STRIP = strip
 INSTALL = ./install-sh
 
 PREFIX = /usr/local
 
-CFLAGS = -g -O2 -pipe
-
 .PHONY: all
 all: limine
 
tab: 248 wrap: offon