:: commit 0d5f4b91e74c14cd787a4aeae37ee107b3478c8a

mintsuki <mintsuki@protonmail.com> — 2021-10-22 18:08

parents: 2a2582351a

build: De-symlink tinf

diff --git a/Makefile b/Makefile
index 7303aef0..f12bbfcf 100644
--- a/Makefile
+++ b/Makefile
@@ -57,6 +57,7 @@ bin/limine-install:
 .PHONY: clean
 clean: limine-bios-clean limine-uefi-clean limine-uefi32-clean
 	$(MAKE) -C limine-install clean
+	rm -rf bin build
 
 .PHONY: install
 install: all
@@ -122,7 +123,7 @@ limine-uefi32-clean: stage23-uefi32-clean
 
 .PHONY: distclean2
 distclean2: clean test-clean
-	rm -rf bin build toolchain ovmf* gnu-efi
+	rm -rf toolchain ovmf* gnu-efi
 
 .PHONY: distclean
 distclean: distclean2
diff --git a/decompressor/Makefile b/decompressor/Makefile
index bebfe471..51ba955f 100644
--- a/decompressor/Makefile
+++ b/decompressor/Makefile
@@ -45,7 +45,8 @@ INTERNAL_CFLAGS = \
 	-mno-sse \
 	-mno-sse2 \
 	-MMD \
-	-I.
+	-I. \
+	-I$(BUILDDIR)/tinf
 
 LDFLAGS ?=
 
@@ -70,13 +71,21 @@ all:
 builddir:
 	for i in $(OBJ); do mkdir -p `dirname $$i`; done
 
-$(BUILDDIR)/decompressor.bin: $(OBJ)
-	$(TOOLCHAIN_LD) $(OBJ) $(LDFLAGS) $(INTERNAL_LDFLAGS) -o $(BUILDDIR)/decompressor.elf
+$(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 $@
 
+$(BUILDDIR)/tinf-copied: ../tinf/*
+	rm -rf $(BUILDDIR)/tinf
+	cp -r ../tinf $(BUILDDIR)/
+	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 $@
+
 -include $(HEADER_DEPS)
 
-$(BUILDDIR)/%.o: %.c
+$(BUILDDIR)/%.o: %.c $(BUILDDIR)/tinf-copied
 	$(TOOLCHAIN_CC) $(CFLAGS) -Os $(INTERNAL_CFLAGS) -c $< -o $@
 
 $(BUILDDIR)/%.o: %.asm
diff --git a/decompressor/main.c b/decompressor/main.c
index c2770ae6..1efb2b6e 100644
--- a/decompressor/main.c
+++ b/decompressor/main.c
@@ -1,6 +1,6 @@
 #include <stdint.h>
 #include <stddef.h>
-#include <tinf/tinf.h>
+#include <tinf.h>
 
 __attribute__((noreturn))
 void entry(uint8_t *compressed_stage2, size_t stage2_size, uint8_t boot_drive, int pxe) {
diff --git a/decompressor/tinf b/decompressor/tinf
deleted file mode 120000
index fded5ef1..00000000
--- a/decompressor/tinf
+++ /dev/null
@@ -1 +0,0 @@
-../tinf/
\ No newline at end of file
diff --git a/stage23/Makefile b/stage23/Makefile
index 352de1e7..75af2a8a 100644
--- a/stage23/Makefile
+++ b/stage23/Makefile
@@ -79,7 +79,8 @@ INTERNAL_CFLAGS := \
 	-DCOM_OUTPUT=$(COM_OUTPUT) \
 	-DE9_OUTPUT=$(E9_OUTPUT) \
 	-I. \
-	-I..
+	-I../stivale \
+	-I$(BUILDDIR)/tinf
 
 ifeq ($(TARGET), bios)
 	INTERNAL_CFLAGS += \
@@ -113,8 +114,8 @@ ifeq ($(TARGET), uefi)
 		-mtune=generic \
 		-mabi=sysv \
 		-DGNU_EFI_USE_MS_ABI \
-		-I../gnu-efi/inc \
-		-I../gnu-efi/inc/x86_64 \
+		-I$(BUILDDIR)/gnu-efi/inc \
+		-I$(BUILDDIR)/gnu-efi/inc/x86_64 \
 		-fpie \
 		-mno-red-zone
 endif
@@ -128,8 +129,8 @@ ifeq ($(TARGET), uefi32)
 		-mtune=generic \
 		-mabi=sysv \
 		-DGNU_EFI_USE_MS_ABI \
-		-I../gnu-efi/inc \
-		-I../gnu-efi/inc/ia32 \
+		-I$(BUILDDIR)/gnu-efi/inc \
+		-I$(BUILDDIR)/gnu-efi/inc/ia32 \
 		-fpie
 endif
 
@@ -214,6 +215,14 @@ $(BUILDDIR)/font.o: font.bin
 	cd "`dirname $<`" && \
 		$(TOOLCHAIN_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) "`basename $<`" $@
 
+$(BUILDDIR)/tinf-copied: ../tinf/*
+	rm -rf $(BUILDDIR)/tinf
+	cp -r ../tinf $(BUILDDIR)/
+	touch $(BUILDDIR)/tinf-copied
+
+$(BUILDDIR)/tinf/tinfgzip.o $(BUILDDIR)/tinf/tinflate.o: $(BUILDDIR)/tinf-copied
+	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c $(@:.o=.c) -o $@
+
 ifeq ($(TARGET), bios)
 
 $(BUILDDIR)/stage2.bin.gz: $(BUILDDIR)/stage2.bin
@@ -240,13 +249,13 @@ $(BUILDDIR)/limine_stage2only.elf: $(OBJ)
 		( echo "This error may mean that stage 2 was trying to use stage 3 symbols before loading stage 3" && \
 		  false )
 
-$(BUILDDIR)/limine_nomap.elf: $(OBJ) $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.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 $@
 
-$(BUILDDIR)/limine.elf: $(OBJ) $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(BUILDDIR)/full.map.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 $@
 
-$(BUILDDIR)/limine_dbg.elf: $(OBJ) $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/stage2.map.o $(BUILDDIR)/full.map.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 $@
 
 endif
@@ -271,12 +280,12 @@ $(BUILDDIR)/BOOTX64.EFI: $(BUILDDIR)/limine_efi.elf
 $(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
 
-$(BUILDDIR)/limine_efi_nomap.elf: $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-x86_64.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o
+$(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)/limine_efi.elf: $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-x86_64.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/full.map.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 $@
@@ -296,12 +305,12 @@ $(BUILDDIR)/BOOTIA32.EFI: $(BUILDDIR)/limine_efi.elf
 $(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=i386 -mtune=generic" AR="$(TOOLCHAIN_AR)" ARCH=ia32
 
-$(BUILDDIR)/limine_efi_nomap.elf: $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-ia32.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o
+$(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)/limine_efi.elf: $(BUILDDIR)/gnu-efi/gnuefi/crt0-efi-ia32.o $(BUILDDIR)/gnu-efi/gnuefi/libgnuefi.a $(OBJ) $(BUILDDIR)/font.o $(BUILDDIR)/sys/smp_trampoline.o $(BUILDDIR)/full.map.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 $@
@@ -311,17 +320,17 @@ endif
 -include $(HEADER_DEPS)
 
 ifeq ($(TARGET), uefi)
-$(BUILDDIR)/%.o: %.c $(BUILDDIR)/gnu-efi
+$(BUILDDIR)/%.o: %.c $(BUILDDIR)/tinf-copied $(BUILDDIR)/gnu-efi
 	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c $< -o $@
 endif
 
 ifeq ($(TARGET), uefi32)
-$(BUILDDIR)/%.o: %.c $(BUILDDIR)/gnu-efi
+$(BUILDDIR)/%.o: %.c $(BUILDDIR)/tinf-copied $(BUILDDIR)/gnu-efi
 	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c $< -o $@
 endif
 
 ifeq ($(TARGET), bios)
-$(BUILDDIR)/%.o: %.c
+$(BUILDDIR)/%.o: %.c $(BUILDDIR)/tinf-copied
 	$(TOOLCHAIN_CC) $(CFLAGS) $(INTERNAL_CFLAGS) -c $< -o $@
 endif
 
diff --git a/stage23/lib/uri.c b/stage23/lib/uri.c
index 4d9c2b33..da172831 100644
--- a/stage23/lib/uri.c
+++ b/stage23/lib/uri.c
@@ -8,7 +8,7 @@
 #include <mm/pmm.h>
 #include <lib/print.h>
 #include <pxe/tftp.h>
-#include <tinf/tinf.h>
+#include <tinf.h>
 
 // A URI takes the form of: resource://root/path
 // The following function splits up a URI into its componenets
diff --git a/stage23/protos/stivale.c b/stage23/protos/stivale.c
index 25aa23eb..a29ca68b 100644
--- a/stage23/protos/stivale.c
+++ b/stage23/protos/stivale.c
@@ -21,7 +21,7 @@
 #include <fs/file.h>
 #include <mm/vmm.h>
 #include <mm/pmm.h>
-#include <stivale/stivale.h>
+#include <stivale.h>
 #include <drivers/vga_textmode.h>
 
 #define REPORTED_ADDR(PTR) \
diff --git a/stage23/protos/stivale2.c b/stage23/protos/stivale2.c
index 197476c6..90675f56 100644
--- a/stage23/protos/stivale2.c
+++ b/stage23/protos/stivale2.c
@@ -21,7 +21,7 @@
 #include <sys/lapic.h>
 #include <fs/file.h>
 #include <mm/pmm.h>
-#include <stivale/stivale2.h>
+#include <stivale2.h>
 #include <pxe/tftp.h>
 #include <drivers/edid.h>
 #include <drivers/vga_textmode.h>
diff --git a/stage23/tinf b/stage23/tinf
deleted file mode 120000
index fded5ef1..00000000
--- a/stage23/tinf
+++ /dev/null
@@ -1 +0,0 @@
-../tinf/
\ No newline at end of file
tab: 248 wrap: offon