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@ +override prefix := @prefix@ +override exec_prefix := @exec_prefix@ -bindir := @bindir@ -datarootdir := @datarootdir@ -includedir := @includedir@ -datarootdir := @datarootdir@ -mandir := @mandir@ -docdir := @docdir@ - -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