:: commit c5da57552094b12fedc42027501f935807ff4de3

mintsuki <mintsuki@protonmail.com> — 2021-11-26 13:51

parents: 03fdd5a6d2

Revert "build: Support spaces in build directory"

This reverts commit d815c3d732399c264d8e8dc45cdd4a5ae802f307.
diff --git a/Makefile b/Makefile
index 8d0c1912..0fa3899c 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,6 @@ PREFIX ?= /usr/local
 DESTDIR ?=
 
 BUILDDIR ?= $(shell pwd)/build
-override BUILDDIR := $(shell echo '$(BUILDDIR)' | sed 's/ /\\ /g')
 BINDIR ?= $(BUILDDIR)/bin
 
 export PATH := $(shell pwd)/toolchain/bin:$(PATH)
@@ -58,7 +57,7 @@ all:
 
 .PHONY: limine-install
 limine-install:
-	$(MAKE) -C limine-install LIMINE_HDD_BIN=$(BINDIR)/limine-hdd.bin BUILDDIR=$(BINDIR)
+	$(MAKE) -C limine-install LIMINE_HDD_BIN="$(BINDIR)/limine-hdd.bin" BUILDDIR="$(BINDIR)"
 
 .PHONY: clean
 clean: limine-bios-clean limine-uefi-clean limine-uefi32-clean
@@ -79,9 +78,9 @@ install: all
 
 $(BUILDDIR)/stage1: $(STAGE1_FILES) $(BUILDDIR)/decompressor/decompressor.bin $(BUILDDIR)/stage23-bios/stage2.bin.gz
 	mkdir -p $(BINDIR)
-	cd stage1/hdd && nasm bootsect.asm -Werror -fbin -DBUILDDIR=\'$(BUILDDIR)\' -o $(BINDIR)/limine-hdd.bin
-	cd stage1/cd  && nasm bootsect.asm -Werror -fbin -DBUILDDIR=\'$(BUILDDIR)\' -o $(BINDIR)/limine-cd.bin
-	cd stage1/pxe && nasm bootsect.asm -Werror -fbin -DBUILDDIR=\'$(BUILDDIR)\' -o $(BINDIR)/limine-pxe.bin
+	cd stage1/hdd && nasm bootsect.asm -Werror -fbin -DBUILDDIR="'$(BUILDDIR)'" -o $(BINDIR)/limine-hdd.bin
+	cd stage1/cd  && nasm bootsect.asm -Werror -fbin -DBUILDDIR="'$(BUILDDIR)'" -o $(BINDIR)/limine-cd.bin
+	cd stage1/pxe && nasm bootsect.asm -Werror -fbin -DBUILDDIR="'$(BUILDDIR)'" -o $(BINDIR)/limine-pxe.bin
 	cp $(BUILDDIR)/stage23-bios/limine.sys $(BINDIR)/
 	touch $(BUILDDIR)/stage1
 
@@ -92,15 +91,15 @@ limine-bios: stage23-bios decompressor
 .PHONY: $(BINDIR)/limine-eltorito-efi.bin
 $(BINDIR)/limine-eltorito-efi.bin:
 	mkdir -p $(BINDIR)
-	dd if=/dev/zero of="$@" bs=512 count=2880
-	( mformat -i "$@" -f 1440 :: && \
-	  mmd -D s -i "$@" ::/EFI && \
-	  mmd -D s -i "$@" ::/EFI/BOOT && \
+	dd if=/dev/zero of=$@ bs=512 count=2880
+	( mformat -i $@ -f 1440 :: && \
+	  mmd -D s -i $@ ::/EFI && \
+	  mmd -D s -i $@ ::/EFI/BOOT && \
 	  ( ( [ -f $(BUILDDIR)/stage23-uefi/BOOTX64.EFI ] && \
-	      mcopy -D o -i "$@" $(BUILDDIR)/stage23-uefi/BOOTX64.EFI ::/EFI/BOOT ) || true ) && \
+	      mcopy -D o -i $@ $(BUILDDIR)/stage23-uefi/BOOTX64.EFI ::/EFI/BOOT ) || true ) && \
 	  ( ( [ -f $(BUILDDIR)/stage23-uefi32/BOOTIA32.EFI ] && \
-	      mcopy -D o -i "$@" $(BUILDDIR)/stage23-uefi32/BOOTIA32.EFI ::/EFI/BOOT ) || true ) \
-	) || rm -f "$@"
+	      mcopy -D o -i $@ $(BUILDDIR)/stage23-uefi32/BOOTIA32.EFI ::/EFI/BOOT ) || true ) \
+	) || rm -f $@
 
 .PHONY: limine-uefi
 limine-uefi:
@@ -157,35 +156,35 @@ stivale:
 
 .PHONY: stage23-uefi
 stage23-uefi: stivale
-	$(MAKE) -C stage23 all TARGET=uefi BUILDDIR=$(BUILDDIR)/stage23-uefi
+	$(MAKE) -C stage23 all TARGET=uefi BUILDDIR="$(BUILDDIR)/stage23-uefi"
 
 .PHONY: stage23-uefi-clean
 stage23-uefi-clean:
-	$(MAKE) -C stage23 clean TARGET=uefi BUILDDIR=$(BUILDDIR)/stage23-uefi
+	$(MAKE) -C stage23 clean TARGET=uefi BUILDDIR="$(BUILDDIR)/stage23-uefi"
 
 .PHONY: stage23-uefi32
 stage23-uefi32: stivale
-	$(MAKE) -C stage23 all TARGET=uefi32 BUILDDIR=$(BUILDDIR)/stage23-uefi32
+	$(MAKE) -C stage23 all TARGET=uefi32 BUILDDIR="$(BUILDDIR)/stage23-uefi32"
 
 .PHONY: stage23-uefi32-clean
 stage23-uefi32-clean:
-	$(MAKE) -C stage23 clean TARGET=uefi32 BUILDDIR=$(BUILDDIR)/stage23-uefi32
+	$(MAKE) -C stage23 clean TARGET=uefi32 BUILDDIR="$(BUILDDIR)/stage23-uefi32"
 
 .PHONY: stage23-bios
 stage23-bios: stivale
-	$(MAKE) -C stage23 all TARGET=bios BUILDDIR=$(BUILDDIR)/stage23-bios
+	$(MAKE) -C stage23 all TARGET=bios BUILDDIR="$(BUILDDIR)/stage23-bios"
 
 .PHONY: stage23-bios-clean
 stage23-bios-clean:
-	$(MAKE) -C stage23 clean TARGET=bios BUILDDIR=$(BUILDDIR)/stage23-bios
+	$(MAKE) -C stage23 clean TARGET=bios BUILDDIR="$(BUILDDIR)/stage23-bios"
 
 .PHONY: decompressor
 decompressor:
-	$(MAKE) -C decompressor all BUILDDIR=$(BUILDDIR)/decompressor
+	$(MAKE) -C decompressor all BUILDDIR="$(BUILDDIR)/decompressor"
 
 .PHONY: decompressor-clean
 decompressor-clean:
-	$(MAKE) -C decompressor clean BUILDDIR=$(BUILDDIR)/decompressor
+	$(MAKE) -C decompressor clean BUILDDIR="$(BUILDDIR)/decompressor"
 
 .PHONY: test-clean
 test-clean:
@@ -197,7 +196,7 @@ toolchain:
 	MAKE="$(MAKE)" aux/make_toolchain.sh "`pwd`/toolchain" -j$(NCPUS)
 
 gnu-efi:
-	git clone https://github.com/limine-bootloader/gnu-efi.git --branch=3.0.14 --depth=1 "$@"
+	git clone https://github.com/limine-bootloader/gnu-efi.git --branch=3.0.14 --depth=1 $@
 	cp aux/elf/* gnu-efi/inc/
 
 ovmf-x64:
diff --git a/README.md b/README.md
index 77c3b45e..c5c82fbe 100644
--- a/README.md
+++ b/README.md
@@ -66,6 +66,9 @@ release.
 *These steps are not necessary if cloning a binary release. If so, skip to*
 *"Installing Limine binaries".*
 
+**Note that the build system does not support building from a directory whose**
+**full path contains spaces.**
+
 ### Building the toolchain
 
 This step can take a long time, but it will ensure that the toolchain will work
diff --git a/decompressor/Makefile b/decompressor/Makefile
index 6685175f..dc27a3ac 100644
--- a/decompressor/Makefile
+++ b/decompressor/Makefile
@@ -3,7 +3,6 @@ This makefile requires GNU Make.
 endif
 
 BUILDDIR =
-override BUILDDIR := $(shell echo '$(BUILDDIR)' | sed 's/ /\\ /g')
 
 ifeq ($(BUILDDIR), )
 	$(error BUILDDIR not specified)
@@ -70,11 +69,11 @@ all:
 	$(MAKE) $(BUILDDIR)/decompressor.bin
 
 builddir:
-	for i in $(OBJ); do mkdir -p "`dirname "$$i"`"; done
+	for i in $(OBJ); do mkdir -p `dirname $$i`; done
 
 $(BUILDDIR)/decompressor.bin: $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o
-	$(TOOLCHAIN_LD) $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $(BUILDDIR)/decompressor.elf
-	$(TOOLCHAIN_OBJCOPY) -O binary $(BUILDDIR)/decompressor.elf "$@"
+	$(TOOLCHAIN_LD) $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $(BUILDDIR)/decompressor.elf
+	$(TOOLCHAIN_OBJCOPY) -O binary $(BUILDDIR)/decompressor.elf $@
 
 $(BUILDDIR)/tinf-copied: ../tinf/*
 	rm -rf $(BUILDDIR)/tinf
@@ -82,15 +81,15 @@ $(BUILDDIR)/tinf-copied: ../tinf/*
 	touch $(BUILDDIR)/tinf-copied
 
 $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o: $(BUILDDIR)/tinf-copied
-	$(TOOLCHAIN_CC) $(CFLAGS) -Os $(INTERNAL_CFLAGS) -c "$(@:.o=.c)" -o "$@"
+	$(TOOLCHAIN_CC) $(CFLAGS) -Os $(INTERNAL_CFLAGS) -c $(@:.o=.c) -o $@
 
 -include $(HEADER_DEPS)
 
 $(BUILDDIR)/%.o: %.c $(BUILDDIR)/tinf-copied
-	$(TOOLCHAIN_CC) $(CFLAGS) -Os $(INTERNAL_CFLAGS) -c "$<" -o "$@"
+	$(TOOLCHAIN_CC) $(CFLAGS) -Os $(INTERNAL_CFLAGS) -c $< -o $@
 
 $(BUILDDIR)/%.o: %.asm
-	nasm "$<" -f elf32 -o "$@"
+	nasm $< -f elf32 -o $@
 
 clean:
 	rm -rf $(BUILDDIR)
diff --git a/limine-install/Makefile b/limine-install/Makefile
index d663a8f8..3237a53b 100644
--- a/limine-install/Makefile
+++ b/limine-install/Makefile
@@ -10,8 +10,7 @@ CFLAGS = -O2 -pipe -Wall -Wextra
 
 .PHONY: all install clean
 
-all:
-	$(CC) $(CFLAGS) -std=c11 -DLIMINE_HDD_BIN='"$(LIMINE_HDD_BIN)"' limine-install.c inc.S -o "$(BUILDDIR)/limine-install"
+all: $(BUILDDIR)/limine-install
 
 install: all
 	install -d "$(DESTDIR)$(PREFIX)/bin"
@@ -27,3 +26,6 @@ install: all
 
 clean:
 	rm -f "$(BUILDDIR)/limine-install" "$(BUILDDIR)/limine-install.exe"
+
+$(BUILDDIR)/limine-install: limine-install.c inc.S $(LIMINE_HDD_BIN)
+	$(CC) $(CFLAGS) -std=c11 -DLIMINE_HDD_BIN='"$(LIMINE_HDD_BIN)"' limine-install.c inc.S -o "$@"
diff --git a/stage23/Makefile b/stage23/Makefile
index ecdb8134..16ab52bd 100644
--- a/stage23/Makefile
+++ b/stage23/Makefile
@@ -4,7 +4,6 @@ endif
 
 TARGET =
 BUILDDIR =
-override BUILDDIR := $(shell echo '$(BUILDDIR)' | sed 's/ /\\ /g')
 
 ifeq ($(BUILDDIR), )
 	$(error BUILDDIR not specified)
@@ -199,18 +198,18 @@ all:
 endif
 
 builddir:
-	for i in $(OBJ); do mkdir -p "`dirname "$$i"`"; done
+	for i in $(OBJ); do mkdir -p `dirname $$i`; done
 
 $(BUILDDIR)/sys/smp_trampoline.bin: sys/smp_trampoline.real
-	nasm "$<" -f bin -o "$@"
+	nasm $< -f bin -o $@
 
 $(BUILDDIR)/sys/smp_trampoline.o: $(BUILDDIR)/sys/smp_trampoline.bin
-	cd "`dirname "$<"`" && \
-		$(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) "`basename "$<"`" "$@"
+	cd "`dirname $<`" && \
+		$(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) "`basename $<`" $@
 
 $(BUILDDIR)/font.o: font.bin
-	cd "`dirname "$<"`" && \
-		$(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) "`basename "$<"`" "$@"
+	cd "`dirname $<`" && \
+		$(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) "`basename $<`" $@
 
 $(BUILDDIR)/tinf-copied: ../tinf/*
 	rm -rf $(BUILDDIR)/tinf
@@ -218,70 +217,70 @@ $(BUILDDIR)/tinf-copied: ../tinf/*
 	touch $(BUILDDIR)/tinf-copied
 
 $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o: $(BUILDDIR)/tinf-copied
-	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c "$(@:.o=.c)" -o "$@"
+	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c $(@:.o=.c) -o $@
 
 ifeq ($(TARGET), bios)
 
 $(BUILDDIR)/stage2.bin.gz: $(BUILDDIR)/stage2.bin
-	gzip -n -9 < "$<" > "$@"
+	gzip -n -9 < $< > $@
 
 $(BUILDDIR)/stage2.bin: $(BUILDDIR)/limine.sys
-	dd if="$<" bs=$$(( 0x$$($(TOOLCHAIN_READELF) -S $(BUILDDIR)/limine.elf | grep .stage3.text | sed 's/^.*] //' | awk '{print $$3}' | sed 's/^0*//') - 0x8000 )) count=1 of="$@"
+	dd if=$< bs=$$(( 0x$$($(TOOLCHAIN_READELF) -S $(BUILDDIR)/limine.elf | grep .stage3.text | sed 's/^.*] //' | awk '{print $$3}' | sed 's/^0*//') - 0x8000 )) count=1 of=$@
 
 $(BUILDDIR)/stage2.map.o: $(BUILDDIR)/limine_stage2only.elf
 	GENSYMS="`pwd`/gensyms.sh" && \
-	cd "`dirname "$<"`" && \
-	"$$GENSYMS" $(TOOLCHAIN_OBJDUMP) "$<" stage2 32
+	cd "`dirname $<`" && \
+	"$$GENSYMS" $(TOOLCHAIN_OBJDUMP) $< stage2 32
 
 $(BUILDDIR)/full.map.o: $(BUILDDIR)/limine_nomap.elf
 	GENSYMS="`pwd`/gensyms.sh" && \
-	cd "`dirname "$<"`" && \
-	"$$GENSYMS" $(TOOLCHAIN_OBJDUMP) "$<" full 32
+	cd "`dirname $<`" && \
+	"$$GENSYMS" $(TOOLCHAIN_OBJDUMP) $< full 32
 
 $(BUILDDIR)/limine.sys: $(BUILDDIR)/limine.elf
-	$(TOOLCHAIN_OBJCOPY) -O binary "$<" "$@"
+	$(TOOLCHAIN_OBJCOPY) -O binary $< $@
 
 $(BUILDDIR)/limine_stage2only.elf: $(OBJ)
-	$(TOOLCHAIN_LD) $(OBJ) $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_stage2only.ld -o "$@" || \
+	$(TOOLCHAIN_LD) $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_stage2only.ld -o $@ || \
 		( echo "This error may mean that stage 2 was trying to use stage 3 symbols before loading stage 3" && \
 		  false )
-	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id "$@" $(BUILDDIR)/build-id.s2.bin
-	cd $(BUILDDIR) && \
+	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id $@ $(BUILDDIR)/build-id.s2.bin
+	cd "$(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 "$@" $(BUILDDIR)/build-id.s3.bin
-	cd $(BUILDDIR) && \
+	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id $@ $(BUILDDIR)/build-id.s3.bin
+	cd "$(BUILDDIR)" && \
 		$(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o
-	$(TOOLCHAIN_LD) $(BUILDDIR)/build-id.s2.o $(BUILDDIR)/build-id.s3.o $(OBJ) $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_stage2only.ld -o "$@"
+	$(TOOLCHAIN_LD) $(BUILDDIR)/build-id.s2.o $(BUILDDIR)/build-id.s3.o $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_stage2only.ld -o $@
 
 $(BUILDDIR)/limine_nomap.elf: $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o
-	$(TOOLCHAIN_LD) $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_nomap.ld -o "$@"
-	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id "$@" $(BUILDDIR)/build-id.s2.bin
-	cd $(BUILDDIR) && \
+	$(TOOLCHAIN_LD) $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_nomap.ld -o $@
+	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id $@ $(BUILDDIR)/build-id.s2.bin
+	cd "$(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 "$@" $(BUILDDIR)/build-id.s3.bin
-	cd $(BUILDDIR) && \
+	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id $@ $(BUILDDIR)/build-id.s3.bin
+	cd "$(BUILDDIR)" && \
 		$(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o
-	$(TOOLCHAIN_LD) $(BUILDDIR)/build-id.s2.o $(BUILDDIR)/build-id.s3.o $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_nomap.ld -o "$@"
+	$(TOOLCHAIN_LD) $(BUILDDIR)/build-id.s2.o $(BUILDDIR)/build-id.s3.o $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_nomap.ld -o $@
 
 $(BUILDDIR)/limine.elf: $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(BUILDDIR)/full.map.o
-	$(TOOLCHAIN_LD) $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(BUILDDIR)/full.map.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker.ld -o "$@"
-	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id "$@" $(BUILDDIR)/build-id.s2.bin
-	cd $(BUILDDIR) && \
+	$(TOOLCHAIN_LD) $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker.ld -o $@
+	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id $@ $(BUILDDIR)/build-id.s2.bin
+	cd "$(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 "$@" $(BUILDDIR)/build-id.s3.bin
-	cd $(BUILDDIR) && \
+	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id $@ $(BUILDDIR)/build-id.s3.bin
+	cd "$(BUILDDIR)" && \
 		$(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o
-	$(TOOLCHAIN_LD) $(BUILDDIR)/build-id.s2.o $(BUILDDIR)/build-id.s3.o $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(BUILDDIR)/full.map.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker.ld -o "$@"
+	$(TOOLCHAIN_LD) $(BUILDDIR)/build-id.s2.o $(BUILDDIR)/build-id.s3.o $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker.ld -o $@
 
 $(BUILDDIR)/limine_dbg.elf: $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(BUILDDIR)/full.map.o
-	$(TOOLCHAIN_LD) $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(BUILDDIR)/full.map.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_dbg.ld -o "$@"
-	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id "$@" $(BUILDDIR)/build-id.s2.bin
-	cd $(BUILDDIR) && \
+	$(TOOLCHAIN_LD) $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_dbg.ld -o $@
+	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id $@ $(BUILDDIR)/build-id.s2.bin
+	cd "$(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 "$@" $(BUILDDIR)/build-id.s3.bin
-	cd $(BUILDDIR) && \
+	$(TOOLCHAIN_OBJCOPY) -O binary --only-section=.note.gnu.build-id $@ $(BUILDDIR)/build-id.s3.bin
+	cd "$(BUILDDIR)" && \
 		$(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o
-	$(TOOLCHAIN_LD) $(BUILDDIR)/build-id.s2.o $(BUILDDIR)/build-id.s3.o $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(BUILDDIR)/full.map.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_dbg.ld -o "$@"
+	$(TOOLCHAIN_LD) $(BUILDDIR)/build-id.s2.o $(BUILDDIR)/build-id.s3.o $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_dbg.ld -o $@
 
 endif
 
@@ -289,18 +288,18 @@ $(BUILDDIR)/gnu-efi:
 	cp -r ../gnu-efi $(BUILDDIR)/
 	# gnu-efi's build system is broken and fails to actually detect clang.
 	# This is a workaround.
-	sed 's/-maccumulate-outgoing-args//g' < $(BUILDDIR)/gnu-efi/Make.defaults > sed.tmp
-	mv sed.tmp $(BUILDDIR)/gnu-efi/Make.defaults
+	sed 's/-maccumulate-outgoing-args//g' < "$(BUILDDIR)/gnu-efi/Make.defaults" > sed.tmp
+	mv sed.tmp "$(BUILDDIR)/gnu-efi/Make.defaults"
 
 ifeq ($(TARGET), uefi)
 
 $(BUILDDIR)/full.map.o: $(BUILDDIR)/limine_efi_nomap.elf
 	GENSYMS="`pwd`/gensyms.sh" && \
-	cd "`dirname "$<"`" && \
-	"$$GENSYMS" $(TOOLCHAIN_OBJDUMP) "$<" full 64
+	cd "`dirname $<`" && \
+	"$$GENSYMS" $(TOOLCHAIN_OBJDUMP) $< full 64
 
 $(BUILDDIR)/BOOTX64.EFI: $(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 --subsystem=10 "$<" "$@"
+	$(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 --subsystem=10 $< $@
 
 $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-x86_64.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a: $(BUILDDIR)/gnu-efi
 	$(MAKE) -C $(BUILDDIR)/gnu-efi/gnuefi CC="$(TOOLCHAIN_CC) -m64 -march=x86-64 -mtune=generic" AR="$(TOOLCHAIN_AR)" ARCH=x86_64
@@ -308,12 +307,12 @@ $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-x86_64.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuef
 $(BUILDDIR)/limine_efi_nomap.elf: $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-x86_64.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o
 	$(TOOLCHAIN_LD) \
 		-Tlinker_uefi_nomap.ld \
-		$(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-x86_64.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -o "$@"
+		$^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $@
 
 $(BUILDDIR)/limine_efi.elf: $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-x86_64.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/full.map.o
 	$(TOOLCHAIN_LD) \
 		-Tlinker_uefi.ld \
-		$(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-x86_64.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/full.map.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -o "$@"
+		$^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $@
 
 endif
 
@@ -321,11 +320,11 @@ ifeq ($(TARGET), uefi32)
 
 $(BUILDDIR)/full.map.o: $(BUILDDIR)/limine_efi_nomap.elf
 	GENSYMS="`pwd`/gensyms.sh" && \
-	cd "`dirname "$<"`" && \
-	"$$GENSYMS" $(TOOLCHAIN_OBJDUMP) "$<" full 32
+	cd "`dirname $<`" && \
+	"$$GENSYMS" $(TOOLCHAIN_OBJDUMP) $< full 32
 
 $(BUILDDIR)/BOOTIA32.EFI: $(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 --subsystem=10 "$<" "$@"
+	$(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 --subsystem=10 $< $@
 
 $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-ia32.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a: $(BUILDDIR)/gnu-efi
 	$(MAKE) -C $(BUILDDIR)/gnu-efi/gnuefi CC="$(TOOLCHAIN_CC) -m32 -march=i686 -mtune=generic" AR="$(TOOLCHAIN_AR)" ARCH=ia32
@@ -333,12 +332,12 @@ $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-ia32.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.
 $(BUILDDIR)/limine_efi_nomap.elf: $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-ia32.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o
 	$(TOOLCHAIN_LD) \
 		-Tlinker_uefi32_nomap.ld \
-		$(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-ia32.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -o "$@"
+		$^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $@
 
 $(BUILDDIR)/limine_efi.elf: $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-ia32.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/full.map.o
 	$(TOOLCHAIN_LD) \
 		-Tlinker_uefi32.ld \
-		$(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-ia32.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/full.map.o $(LDFLAGS) $(INTERNAL_LDFLAGS) -o "$@"
+		$^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $@
 
 endif
 
@@ -346,57 +345,57 @@ endif
 
 ifeq ($(TARGET), uefi)
 $(BUILDDIR)/%.o: %.c $(BUILDDIR)/tinf-copied $(BUILDDIR)/gnu-efi
-	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c "$<" -o "$@"
+	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c $< -o $@
 endif
 
 ifeq ($(TARGET), uefi32)
 $(BUILDDIR)/%.o: %.c $(BUILDDIR)/tinf-copied $(BUILDDIR)/gnu-efi
-	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c "$<" -o "$@"
+	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c $< -o $@
 endif
 
 ifeq ($(TARGET), bios)
 $(BUILDDIR)/%.o: %.c $(BUILDDIR)/tinf-copied
-	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c "$<" -o "$@"
+	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c $< -o $@
 endif
 
 -include $(HEADER_DEPS)
 
 ifeq ($(TARGET), bios)
 $(BUILDDIR)/%.s2.o: %.s2.c
-	$(TOOLCHAIN_CC) $(S2CFLAGS) $(INTERNAL_CFLAGS) -c "$<" -o "$@"
+	$(TOOLCHAIN_CC) $(S2CFLAGS) $(INTERNAL_CFLAGS) -c $< -o $@
 endif
 
 -include $(HEADER_DEPS)
 
 ifeq ($(TARGET), uefi)
 $(BUILDDIR)/%.32.o: %.32.c $(BUILDDIR)/gnu-efi
-	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS32) -c "$<" -o "$@".32
-	$(TOOLCHAIN_OBJCOPY) -I elf32-i386 -O elf64-x86-64 "$@".32 "$@"
-	rm "$@".32
+	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS32) -c $< -o $@.32
+	$(TOOLCHAIN_OBJCOPY) -I elf32-i386 -O elf64-x86-64 $@.32 $@
+	rm $@.32
 endif
 
 ifeq ($(TARGET), bios)
 $(BUILDDIR)/%.o: %.asm32
-	nasm "$<" -F dwarf -g -Werror -f elf32 -o "$@"
+	nasm $< -F dwarf -g -Werror -f elf32 -o $@
 
 $(BUILDDIR)/%.o: %.asmb
-	nasm "$<" -F dwarf -g -Werror -f elf32 -o "$@"
+	nasm $< -F dwarf -g -Werror -f elf32 -o $@
 endif
 
 ifeq ($(TARGET), uefi)
 $(BUILDDIR)/%.o: %.asm64
-	nasm "$<" -F dwarf -g -Werror -f elf64 -o "$@"
+	nasm $< -F dwarf -g -Werror -f elf64 -o $@
 
 $(BUILDDIR)/%.o: %.asm64u
-	nasm "$<" -F dwarf -g -Werror -f elf64 -o "$@"
+	nasm $< -F dwarf -g -Werror -f elf64 -o $@
 endif
 
 ifeq ($(TARGET), uefi32)
 $(BUILDDIR)/%.o: %.asm32
-	nasm "$<" -F dwarf -g -Werror -f elf32 -o "$@"
+	nasm $< -F dwarf -g -Werror -f elf32 -o $@
 
 $(BUILDDIR)/%.o: %.asm32u
-	nasm "$<" -F dwarf -g -Werror -f elf32 -o "$@"
+	nasm $< -F dwarf -g -Werror -f elf32 -o $@
 endif
 
 clean:
tab: 248 wrap: offon