From 26641eb1a86525d26532a91178b9760f0dd04cb1 Mon Sep 17 00:00:00 2001 From: mintsuki Date: Sun, 16 Jan 2022 22:41:37 +0100 Subject: [PATCH] build: Misc build system improvements --- .gitignore | 2 +- GNUmakefile.in | 79 ++++++++++++++++++++---------------- configure.ac | 46 +++++++++++++-------- decompressor/GNUmakefile | 16 +++----- stage23/GNUmakefile | 87 +++++++++++++++++++--------------------- 5 files changed, 123 insertions(+), 107 deletions(-) diff --git a/.gitignore b/.gitignore index 87417fd4..ab1c7561 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,7 @@ stivale test_image !stage23/font.bin configure -configure~ +*~ config.status config.log autom4te.cache diff --git a/GNUmakefile.in b/GNUmakefile.in index 37435136..1eecad95 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -24,54 +24,65 @@ export LIMINE_VERSION override LIMINE_COPYRIGHT := $(shell grep Copyright '$(call SHESCAPE,$(SRCDIR))/LICENSE.md') export LIMINE_COPYRIGHT +WERROR ?= @werror@ +export WERROR + ifeq ($(origin CC), default) CC := @CC@ endif +export CC + +CFLAGS ?= @CFLAGS@ +export CFLAGS + +LIMINE_CFLAGS ?= @LIMINE_CFLAGS@ +LIMINE_LDFLAGS ?= @LIMINE_LDFLAGS@ +export LIMINE_CFLAGS +export LIMINE_LDFLAGS TOOLCHAIN ?= @TOOLCHAIN@ -TOOLCHAIN_CC ?= @TOOLCHAIN_CC@ -TOOLCHAIN_LD ?= @TOOLCHAIN_LD@ -TOOLCHAIN_AR ?= @TOOLCHAIN_AR@ -TOOLCHAIN_OBJCOPY ?= @TOOLCHAIN_OBJCOPY@ -TOOLCHAIN_OBJDUMP ?= @TOOLCHAIN_OBJDUMP@ -TOOLCHAIN_READELF ?= @TOOLCHAIN_READELF@ +LIMINE_CC ?= @LIMINE_CC@ +LIMINE_LD ?= @LIMINE_LD@ +LIMINE_AR ?= @LIMINE_AR@ +LIMINE_OBJCOPY ?= @LIMINE_OBJCOPY@ +LIMINE_OBJDUMP ?= @LIMINE_OBJDUMP@ +LIMINE_READELF ?= @LIMINE_READELF@ -ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(TOOLCHAIN_CC) ; ), ) -override TOOLCHAIN_CC := $(CC) +ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(LIMINE_CC) ; ), ) +override LIMINE_CC := $(CC) endif -ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(TOOLCHAIN_LD) ; ), ) -override TOOLCHAIN_LD := ld +ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(LIMINE_LD) ; ), ) +override LIMINE_LD := ld endif -ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(TOOLCHAIN_AR) ; ), ) -override TOOLCHAIN_AR := ar +ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(LIMINE_AR) ; ), ) +override LIMINE_AR := ar endif -ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(TOOLCHAIN_OBJCOPY) ; ), ) -override TOOLCHAIN_OBJCOPY := objcopy +ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(LIMINE_OBJCOPY) ; ), ) +override LIMINE_OBJCOPY := objcopy endif -ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(TOOLCHAIN_OBJDUMP) ; ), ) -override TOOLCHAIN_OBJDUMP := objdump +ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(LIMINE_OBJDUMP) ; ), ) +override LIMINE_OBJDUMP := objdump endif -ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(TOOLCHAIN_READELF) ; ), ) -override TOOLCHAIN_READELF := readelf +ifeq ($(shell PATH='$(call SHESCAPE,$(PATH))' command -v $(LIMINE_READELF) ; ), ) +override LIMINE_READELF := readelf endif -export TOOLCHAIN -export TOOLCHAIN_CC -export TOOLCHAIN_LD -export TOOLCHAIN_AR -export TOOLCHAIN_OBJCOPY -export TOOLCHAIN_OBJDUMP -export TOOLCHAIN_READELF +export LIMINE_CC +export LIMINE_LD +export LIMINE_AR +export LIMINE_OBJCOPY +export LIMINE_OBJDUMP +export LIMINE_READELF -override USING_CLANG := $(shell $(TOOLCHAIN_CC) --version | grep clang >/dev/null && echo 1) +override USING_CLANG := $(shell $(LIMINE_CC) --version | grep clang >/dev/null && echo 1) export USING_CLANG ifeq ($(USING_CLANG), 1) -override ORIG_TOOLCHAIN_CC := $(TOOLCHAIN_CC) -override TOOLCHAIN_CC += --target=x86_64-elf +override ORIG_LIMINE_CC := $(LIMINE_CC) +override LIMINE_CC += --target=x86_64-elf endif -override CC_MACHINE := $(shell PATH='$(call SHESCAPE,$(PATH))' $(TOOLCHAIN_CC) -dumpmachine | dd bs=6 count=1 2>/dev/null) +override CC_MACHINE := $(shell PATH='$(call SHESCAPE,$(PATH))' $(LIMINE_CC) -dumpmachine | dd bs=6 count=1 2>/dev/null) ifneq ($(MAKECMDGOALS), toolchain) ifneq ($(MAKECMDGOALS), distclean) @@ -86,7 +97,7 @@ endif endif ifeq ($(USING_CLANG), 1) -override TOOLCHAIN_CC := $(ORIG_TOOLCHAIN_CC) +override LIMINE_CC := $(ORIG_LIMINE_CC) endif override STAGE1_FILES := $(shell find -L '$(call SHESCAPE,$(SRCDIR))/stage1' -type f -name '*.asm') @@ -98,7 +109,7 @@ all: limine-uefi limine-bios limine-install: mkdir -p '$(call SHESCAPE,$(BINDIR))' cp '$(call SHESCAPE,$(SRCDIR))/limine-install/'* '$(call SHESCAPE,$(SRCDIR))/limine-install/.gitignore' '$(call SHESCAPE,$(BINDIR))/' - $(MAKE) -C '$(call SHESCAPE,$(BINDIR))' CC="$(CC)" + $(MAKE) -C '$(call SHESCAPE,$(BINDIR))' .PHONY: clean clean: limine-bios-clean limine-uefi32-clean limine-uefi64-clean @@ -124,9 +135,9 @@ uninstall: $(call MKESCAPE,$(BUILDDIR))/stage1.stamp: $(STAGE1_FILES) $(call MKESCAPE,$(BUILDDIR))/decompressor-build/decompressor.bin $(call MKESCAPE,$(BUILDDIR))/stage23-bios/stage2.bin.gz mkdir -p '$(call SHESCAPE,$(BINDIR))' - cd '$(call SHESCAPE,$(SRCDIR))/stage1/hdd' && nasm bootsect.asm -Werror -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-hdd.bin' - cd '$(call SHESCAPE,$(SRCDIR))/stage1/cd' && nasm bootsect.asm -Werror -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-cd.bin' - cd '$(call SHESCAPE,$(SRCDIR))/stage1/pxe' && nasm bootsect.asm -Werror -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-pxe.bin' + cd '$(call SHESCAPE,$(SRCDIR))/stage1/hdd' && nasm bootsect.asm @werror@ -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-hdd.bin' + cd '$(call SHESCAPE,$(SRCDIR))/stage1/cd' && nasm bootsect.asm @werror@ -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-cd.bin' + cd '$(call SHESCAPE,$(SRCDIR))/stage1/pxe' && nasm bootsect.asm @werror@ -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-pxe.bin' cp '$(call SHESCAPE,$(BUILDDIR))/stage23-bios/limine.sys' '$(call SHESCAPE,$(BINDIR))/' touch '$(call SHESCAPE,$(BUILDDIR))/stage1.stamp' diff --git a/configure.ac b/configure.ac index b7f0c09a..2527576e 100644 --- a/configure.ac +++ b/configure.ac @@ -2,33 +2,45 @@ AC_INIT([Limine], m4_esyscmd([./version.sh]), [https://github.com/limine-bootloa AC_PREREQ(2.69) -AC_PROG_CC - AC_SUBST(limine_version, m4_esyscmd([./version.sh])) -AC_ARG_VAR(CC, [C compiler command [cc]]) -test -z "$CC" && CC='cc' +AC_PROG_CC AC_ARG_VAR(TOOLCHAIN, [Alternative toolchain prefix [limine]]) -test -z "$TOOLCHAIN" && TOOLCHAIN='limine' +test "x$TOOLCHAIN" = "x" && TOOLCHAIN='limine' -AC_ARG_VAR(TOOLCHAIN_CC, [Toolchain C compiler command [$(TOOLCHAIN)-gcc]]) -test -z "$TOOLCHAIN_CC" && TOOLCHAIN_CC='$(TOOLCHAIN)-gcc' +AC_ARG_VAR(LIMINE_CFLAGS, [C flags for Limine [-O3 -pipe -Wall -Wextra]]) +test "x$LIMINE_CFLAGS" = "x" && LIMINE_CFLAGS='-O3 -pipe -Wall -Wextra' -AC_ARG_VAR(TOOLCHAIN_LD, [Toolchain linker command [$(TOOLCHAIN)-ld]]) -test -z "$TOOLCHAIN_LD" && TOOLCHAIN_LD='$(TOOLCHAIN)-ld' +AC_ARG_VAR(LIMINE_LDFLAGS, [Linker flags for Limine [ ]]) +test "x$LIMINE_LDFLAGS" = "x" && LIMINE_LDFLAGS=' ' -AC_ARG_VAR(TOOLCHAIN_AR, [Toolchain archiver command [$(TOOLCHAIN)-ar]]) -test -z "$TOOLCHAIN_AR" && TOOLCHAIN_AR='$(TOOLCHAIN)-ar' +AC_ARG_VAR(LIMINE_CC, [C compiler command for Limine [$(TOOLCHAIN)-gcc]]) +test "x$LIMINE_CC" = "x" && LIMINE_CC='$(TOOLCHAIN)-gcc' -AC_ARG_VAR(TOOLCHAIN_OBJCOPY, [Toolchain objcopy command [$(TOOLCHAIN)-objcopy]]) -test -z "$TOOLCHAIN_OBJCOPY" && TOOLCHAIN_OBJCOPY='$(TOOLCHAIN)-objcopy' +AC_ARG_VAR(LIMINE_LD, [Linker command for Limine [$(TOOLCHAIN)-ld]]) +test "x$LIMINE_LD" = "x" && LIMINE_LD='$(TOOLCHAIN)-ld' -AC_ARG_VAR(TOOLCHAIN_OBJDUMP, [Toolchain objdump command [$(TOOLCHAIN)-objdump]]) -test -z "$TOOLCHAIN_OBJDUMP" && TOOLCHAIN_OBJDUMP='$(TOOLCHAIN)-objdump' +AC_ARG_VAR(LIMINE_AR, [Archiver command for Limine [$(TOOLCHAIN)-ar]]) +test "x$LIMINE_AR" = "x" && LIMINE_AR='$(TOOLCHAIN)-ar' -AC_ARG_VAR(TOOLCHAIN_READELF, [Toolchain readelf command [$(TOOLCHAIN)-readelf]]) -test -z "$TOOLCHAIN_READELF" && TOOLCHAIN_READELF='$(TOOLCHAIN)-readelf' +AC_ARG_VAR(LIMINE_OBJCOPY, [Objcopy command for Limine [$(TOOLCHAIN)-objcopy]]) +test "x$LIMINE_OBJCOPY" = "x" && LIMINE_OBJCOPY='$(TOOLCHAIN)-objcopy' + +AC_ARG_VAR(LIMINE_OBJDUMP, [Objdump command for Limine [$(TOOLCHAIN)-objdump]]) +test "x$LIMINE_OBJDUMP" = "x" && LIMINE_OBJDUMP='$(TOOLCHAIN)-objdump' + +AC_ARG_VAR(LIMINE_READELF, [Readelf command for Limine [$(TOOLCHAIN)-readelf]]) +test "x$LIMINE_READELF" = "x" && LIMINE_READELF='$(TOOLCHAIN)-readelf' + +werror_state="yes" +AC_ARG_ENABLE([werror], + AS_HELP_STRING([--disable-werror], [do not treat warnings as errors]), + werror_state="$enableval") + +if test "$werror_state" = "yes"; then + AC_SUBST(werror, [-Werror]) +fi AC_PREFIX_DEFAULT(/usr/local) diff --git a/decompressor/GNUmakefile b/decompressor/GNUmakefile index 8852aa51..a3d9bee1 100644 --- a/decompressor/GNUmakefile +++ b/decompressor/GNUmakefile @@ -12,13 +12,11 @@ ifeq ($(call MKESCAPE,$(BUILDDIR)), ) endif ifeq ($(USING_CLANG), 1) -override TOOLCHAIN_CC += --target=i686-elf +override LIMINE_CC += --target=i686-elf endif -WERROR ?= -Werror -CFLAGS ?= -Os -pipe -Wall -Wextra $(WERROR) - override INTERNAL_CFLAGS := \ + $(WERROR) \ -m32 \ -march=i686 \ -mtune=generic \ @@ -39,8 +37,6 @@ override INTERNAL_CFLAGS := \ -I. \ -I'$(call SHESCAPE,$(BUILDDIR))/tinf' -LDFLAGS ?= - override INTERNAL_LDFLAGS := \ -melf_i386 \ -nostdlib \ @@ -57,8 +53,8 @@ override HEADER_DEPS := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c= all: $(call MKESCAPE,$(BUILDDIR))/decompressor.bin $(call MKESCAPE,$(BUILDDIR))/decompressor.bin: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o - $(TOOLCHAIN_LD) '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' - $(TOOLCHAIN_OBJCOPY) -O binary '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' '$(call SHESCAPE,$@)' + $(LIMINE_LD) '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' + $(LIMINE_OBJCOPY) -O binary '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/* rm -rf '$(call SHESCAPE,$(BUILDDIR))/tinf' @@ -68,13 +64,13 @@ $(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/* $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" - $(TOOLCHAIN_CC) $(CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)' + $(LIMINE_CC) $(LIMINE_CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)' -include $(HEADER_DEPS) $(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" - $(TOOLCHAIN_CC) $(CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' + $(LIMINE_CC) $(LIMINE_CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/%.o: %.asm mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" diff --git a/stage23/GNUmakefile b/stage23/GNUmakefile index f802c4c9..dff8bb3d 100644 --- a/stage23/GNUmakefile +++ b/stage23/GNUmakefile @@ -26,25 +26,24 @@ endif ifeq ($(USING_CLANG), 1) ifeq ($(TARGET), bios) -override TOOLCHAIN_CC += --target=i686-elf +override LIMINE_CC += --target=i686-elf endif ifeq ($(TARGET), uefi64) -override TOOLCHAIN_CC += --target=x86_64-elf +override LIMINE_CC += --target=x86_64-elf endif ifeq ($(TARGET), uefi32) -override TOOLCHAIN_CC += --target=i686-elf +override LIMINE_CC += --target=i686-elf endif endif COM_OUTPUT = false E9_OUTPUT = false -WERROR = -Werror -CFLAGS ?= -O3 -g -pipe -Wall -Wextra $(WERROR) - -override S2CFLAGS := $(CFLAGS) -Os +override S2CFLAGS := $(LIMINE_CFLAGS) -Os override INTERNAL_CFLAGS := \ + -g \ + $(WERROR) \ -std=gnu11 \ -ffreestanding \ -fno-stack-protector \ @@ -118,8 +117,6 @@ override INTERNAL_CFLAGS += \ -fpie endif -LDFLAGS ?= - override INTERNAL_LDFLAGS := \ -nostdlib \ -z max-page-size=0x1000 @@ -187,11 +184,11 @@ $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.bin: sys/smp_trampoline.real $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o: $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.bin mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" cd '$(call SHESCAPE,$(BUILDDIR))/sys' && \ - $(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) smp_trampoline.bin '$(call SHESCAPE,$@)' + $(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) smp_trampoline.bin '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/font.o: font.bin mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" - $(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) font.bin '$(call SHESCAPE,$@)' + $(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) font.bin '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/* rm -rf '$(call SHESCAPE,$(BUILDDIR))/tinf' @@ -201,7 +198,7 @@ $(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/* $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" - $(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)' + $(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)' ifeq ($(TARGET), bios) @@ -209,39 +206,39 @@ $(call MKESCAPE,$(BUILDDIR))/stage2.bin.gz: $(call MKESCAPE,$(BUILDDIR))/stage2. gzip -n -9 < '$(call SHESCAPE,$<)' > '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/stage2.bin: $(call MKESCAPE,$(BUILDDIR))/limine.sys - dd if='$(call SHESCAPE,$<)' bs=$$(( 0x$$($(TOOLCHAIN_READELF) -S '$(call SHESCAPE,$(BUILDDIR))/limine.elf' | grep .stage3.text | sed 's/^.*] //' | awk '{print $$3}' | sed 's/^0*//') - 0x8000 )) count=1 of='$(call SHESCAPE,$@)' + dd if='$(call SHESCAPE,$<)' bs=$$(( 0x$$("$(LIMINE_READELF)" -S '$(call SHESCAPE,$(BUILDDIR))/limine.elf' | grep .stage3.text | sed 's/^.*] //' | awk '{print $$3}' | sed 's/^0*//') - 0x8000 )) count=1 of='$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/stage2.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_stage2only.elf cd '$(call SHESCAPE,$(BUILDDIR))' && \ - '$(call SHESCAPE,$(SRCDIR))/gensyms.sh' $(TOOLCHAIN_OBJDUMP) '$(call SHESCAPE,$<)' stage2 32 + '$(call SHESCAPE,$(SRCDIR))/gensyms.sh' "$(LIMINE_OBJDUMP)" '$(call SHESCAPE,$<)' stage2 32 $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf cd '$(call SHESCAPE,$(BUILDDIR))' && \ - '$(call SHESCAPE,$(SRCDIR))/gensyms.sh' $(TOOLCHAIN_OBJDUMP) '$(call SHESCAPE,$<)' full 32 + '$(call SHESCAPE,$(SRCDIR))/gensyms.sh' "$(LIMINE_OBJDUMP)" '$(call SHESCAPE,$<)' full 32 $(call MKESCAPE,$(BUILDDIR))/limine.sys: $(call MKESCAPE,$(BUILDDIR))/limine.elf - $(TOOLCHAIN_OBJCOPY) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)' + $(LIMINE_OBJCOPY) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/limine_stage2only.elf: $(OBJ) - $(TOOLCHAIN_LD) '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_stage2only.ld -o '$(call SHESCAPE,$@)' || \ + $(LIMINE_LD) '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_stage2only.ld -o '$(call SHESCAPE,$@)' || \ ( echo "This error may mean that stage 2 was trying to use stage 3 symbols before loading stage 3" && \ false ) $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o $(call MKESCAPE,$(BUILDDIR))/stage2.map.o - $(TOOLCHAIN_LD) '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_nomap.ld -o '$(call SHESCAPE,$@)' + $(LIMINE_LD) '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_nomap.ld -o '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/full.map.o - $(TOOLCHAIN_LD) '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker.ld -o '$(call SHESCAPE,$@)' - $(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin' + $(LIMINE_LD) '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker.ld -o '$(call SHESCAPE,$@)' + $(LIMINE_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin' cd '$(call SHESCAPE,$(BUILDDIR))' && \ - $(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s2.bin build-id.s2.o - $(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.bin' + $(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s2.bin build-id.s2.o + $(LIMINE_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.bin' cd '$(call SHESCAPE,$(BUILDDIR))' && \ - $(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o - $(TOOLCHAIN_LD) '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.o' '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker.ld -o '$(call SHESCAPE,$@)' + $(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o + $(LIMINE_LD) '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.o' '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker.ld -o '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/limine_dbg.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/full.map.o - $(TOOLCHAIN_LD) '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_dbg.ld -o '$(call SHESCAPE,$@)' + $(LIMINE_LD) '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_dbg.ld -o '$(call SHESCAPE,$@)' endif @@ -253,23 +250,23 @@ ifeq ($(TARGET), uefi64) $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_efi_nomap.elf cd '$(call SHESCAPE,$(BUILDDIR))' && \ - '$(call SHESCAPE,$(SRCDIR))/gensyms.sh' $(TOOLCHAIN_OBJDUMP) '$(call SHESCAPE,$<)' full 64 + '$(call SHESCAPE,$(SRCDIR))/gensyms.sh' "$(LIMINE_OBJDUMP)" '$(call SHESCAPE,$<)' full 64 $(call MKESCAPE,$(BUILDDIR))/BOOTX64.EFI: $(call MKESCAPE,$(BUILDDIR))/limine_efi.elf - $(TOOLCHAIN_OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .reloc -j .sbat --target efi-app-x86_64 '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)' + $(LIMINE_OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .reloc -j .sbat --target efi-app-x86_64 '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/crt0-efi-x86_64.o $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/libgnuefi.a: $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi - $(MAKE) -C '$(call SHESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi' CC="$(TOOLCHAIN_CC) -m64 -march=x86-64 -mtune=generic" AR="$(TOOLCHAIN_AR)" ARCH=x86_64 + $(MAKE) -C '$(call SHESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi' CC="$(LIMINE_CC) -m64 -march=x86-64 -mtune=generic" AR="$(LIMINE_AR)" ARCH=x86_64 $(call MKESCAPE,$(BUILDDIR))/limine_efi_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/crt0-efi-x86_64.o $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o - $(TOOLCHAIN_LD) \ + $(LIMINE_LD) \ -Tlinker_uefi_nomap.ld \ - '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)' + '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/limine_efi.elf: $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/crt0-efi-x86_64.o $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o $(call MKESCAPE,$(BUILDDIR))/full.map.o - $(TOOLCHAIN_LD) \ + $(LIMINE_LD) \ -Tlinker_uefi.ld \ - '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)' + '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)' endif @@ -277,23 +274,23 @@ ifeq ($(TARGET), uefi32) $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_efi_nomap.elf cd '$(call SHESCAPE,$(BUILDDIR))' && \ - '$(call SHESCAPE,$(SRCDIR))/gensyms.sh' $(TOOLCHAIN_OBJDUMP) '$(call SHESCAPE,$<)' full 32 + '$(call SHESCAPE,$(SRCDIR))/gensyms.sh' "$(LIMINE_OBJDUMP)" '$(call SHESCAPE,$<)' full 32 $(call MKESCAPE,$(BUILDDIR))/BOOTIA32.EFI: $(call MKESCAPE,$(BUILDDIR))/limine_efi.elf - $(TOOLCHAIN_OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .reloc -j .sbat --target efi-app-ia32 '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)' + $(LIMINE_OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .reloc -j .sbat --target efi-app-ia32 '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/crt0-efi-ia32.o $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/libgnuefi.a: $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi - $(MAKE) -C '$(call SHESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi' CC="$(TOOLCHAIN_CC) -m32 -march=i686 -mtune=generic" AR="$(TOOLCHAIN_AR)" ARCH=ia32 + $(MAKE) -C '$(call SHESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi' CC="$(LIMINE_CC) -m32 -march=i686 -mtune=generic" AR="$(LIMINE_AR)" ARCH=ia32 $(call MKESCAPE,$(BUILDDIR))/limine_efi_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/crt0-efi-ia32.o $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o - $(TOOLCHAIN_LD) \ + $(LIMINE_LD) \ -Tlinker_uefi32_nomap.ld \ - '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)' + '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)' $(call MKESCAPE,$(BUILDDIR))/limine_efi.elf: $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/crt0-efi-ia32.o $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o $(call MKESCAPE,$(BUILDDIR))/full.map.o - $(TOOLCHAIN_LD) \ + $(LIMINE_LD) \ -Tlinker_uefi32.ld \ - '$(call OBJESCAPE,$^)' $(LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)' + '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)' endif @@ -302,19 +299,19 @@ endif ifeq ($(TARGET), uefi64) $(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" - $(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' + $(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' endif ifeq ($(TARGET), uefi32) $(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" - $(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' + $(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' endif ifeq ($(TARGET), bios) $(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" - $(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' + $(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' endif -include $(HEADER_DEPS) @@ -322,7 +319,7 @@ endif ifeq ($(TARGET), bios) $(call MKESCAPE,$(BUILDDIR))/%.s2.o: %.s2.c mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" - $(TOOLCHAIN_CC) $(S2CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' + $(LIMINE_CC) $(S2CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)' endif -include $(HEADER_DEPS) @@ -330,8 +327,8 @@ endif ifeq ($(TARGET), uefi64) $(call MKESCAPE,$(BUILDDIR))/%.32.o: %.32.c $(call MKESCAPE,$(BUILDDIR))/reduced-gnu-efi mkdir -p "$$(dirname '$(call SHESCAPE,$@)')" - $(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS32) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@).32' - $(TOOLCHAIN_OBJCOPY) -I elf32-i386 -O elf64-x86-64 '$(call SHESCAPE,$@).32' '$(call SHESCAPE,$@)' + $(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS32) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@).32' + $(LIMINE_OBJCOPY) -I elf32-i386 -O elf64-x86-64 '$(call SHESCAPE,$@).32' '$(call SHESCAPE,$@)' rm '$(call SHESCAPE,$@).32' endif