diff --git a/Makefile b/Makefile index 94ed865d..5d7f71a5 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,7 @@ 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) @@ -57,7 +58,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 @@ -78,9 +79,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 @@ -91,15 +92,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: @@ -156,35 +157,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: @@ -196,7 +197,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 c5c82fbe..77c3b45e 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,6 @@ 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 dc27a3ac..6685175f 100644 --- a/decompressor/Makefile +++ b/decompressor/Makefile @@ -3,6 +3,7 @@ This makefile requires GNU Make. endif BUILDDIR = +override BUILDDIR := $(shell echo '$(BUILDDIR)' | sed 's/ /\\ /g') ifeq ($(BUILDDIR), ) $(error BUILDDIR not specified) @@ -69,11 +70,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) $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $(BUILDDIR)/decompressor.elf - $(TOOLCHAIN_OBJCOPY) -O binary $(BUILDDIR)/decompressor.elf $@ + $(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 "$@" $(BUILDDIR)/tinf-copied: ../tinf/* rm -rf $(BUILDDIR)/tinf @@ -81,15 +82,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 3237a53b..d663a8f8 100644 --- a/limine-install/Makefile +++ b/limine-install/Makefile @@ -10,7 +10,8 @@ CFLAGS = -O2 -pipe -Wall -Wextra .PHONY: all install clean -all: $(BUILDDIR)/limine-install +all: + $(CC) $(CFLAGS) -std=c11 -DLIMINE_HDD_BIN='"$(LIMINE_HDD_BIN)"' limine-install.c inc.S -o "$(BUILDDIR)/limine-install" install: all install -d "$(DESTDIR)$(PREFIX)/bin" @@ -26,6 +27,3 @@ 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 16ab52bd..ecdb8134 100644 --- a/stage23/Makefile +++ b/stage23/Makefile @@ -4,6 +4,7 @@ endif TARGET = BUILDDIR = +override BUILDDIR := $(shell echo '$(BUILDDIR)' | sed 's/ /\\ /g') ifeq ($(BUILDDIR), ) $(error BUILDDIR not specified) @@ -198,18 +199,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 @@ -217,70 +218,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) $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_stage2only.ld -o $@ || \ + $(TOOLCHAIN_LD) $(OBJ) $(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 $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_stage2only.ld -o $@ + $(TOOLCHAIN_LD) $(BUILDDIR)/build-id.s2.o $(BUILDDIR)/build-id.s3.o $(OBJ) $(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) $^ $(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) $(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_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 $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_nomap.ld -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 "$@" $(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) $^ $(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) $(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_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 $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker.ld -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 "$@" $(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) $^ $(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) $(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_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 $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -Tlinker_dbg.ld -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 "$@" endif @@ -288,18 +289,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 @@ -307,12 +308,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 \ - $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $@ + $(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 "$@" $(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 \ - $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $@ + $(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 "$@" endif @@ -320,11 +321,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 @@ -332,12 +333,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 \ - $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $@ + $(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 "$@" $(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 \ - $^ $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $@ + $(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 "$@" endif @@ -345,57 +346,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: