:: commit 1e9a42e7ceacb8a5b4aacab1a9398d5f559a5cdb

mintsuki <mintsuki@protonmail.com> — 2023-08-04 14:54

parents: b8fff872de

test: General makefile updates

diff --git a/test/.gitignore b/test/.gitignore
index 7db6f164..45629d02 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -1,3 +1,4 @@
 test.o
 test.elf
 flanterm
+limine.h
diff --git a/test/GNUmakefile b/test/GNUmakefile
index 3fd3b44a..ae3f4b13 100644
--- a/test/GNUmakefile
+++ b/test/GNUmakefile
@@ -12,62 +12,93 @@ override LD := $(LD_FOR_TARGET)
 override QEMU := qemu-system-x86_64
 QEMUFLAGS = -m 1G -enable-kvm -cpu host
 
-override INTERNALLDFLAGS :=         \
-	-Tlinker.ld            \
-	-nostdlib              \
-	-zmax-page-size=0x1000 \
-	-static                \
-	-pie                   \
-	--no-dynamic-linker    \
-	-ztext
-
-override INTERNAL_LD_FLAGS_MULTIBOOT2 := \
-	-m elf_i386                 \
-	-Tmultiboot2.ld             \
-	-nostdlib                   \
-	-zmax-page-size=0x1000      \
-	-static
-
-override INTERNAL_LD_FLAGS_MULTIBOOT1 := \
-	-m elf_i386                 \
-	-Tmultiboot.ld              \
-	-nostdlib                   \
-	-zmax-page-size=0x1000      \
-	-static
-
-override INTERNALCFLAGS  :=       \
-	-std=c11             \
-	-ffreestanding       \
-	-fno-stack-protector \
-	-fno-stack-check     \
-	-fno-lto             \
-	-fPIE                \
-	-mgeneral-regs-only  \
-	-mno-red-zone        \
-	-I.                  \
-	-I..                 \
+ifneq ($(findstring x86_64,$(CC_FOR_TARGET)),)
+override LDFLAGS += \
+    -m elf_x86_64
+endif
+ifneq ($(findstring aarch64,$(CC_FOR_TARGET)),)
+override LDFLAGS += \
+    -m aarch64elf
+endif
+ifneq ($(findstring riscv64,$(CC_FOR_TARGET)),)
+override LDFLAGS += \
+    -m elf64lriscv
+endif
+
+override LDFLAGS += \
+    -Tlinker.ld \
+    -nostdlib \
+    -zmax-page-size=0x1000 \
+    -static \
+    -pie \
+    --no-dynamic-linker \
+    -ztext
+
+override LDFLAGS_MB2 := \
+    -m elf_i386 \
+    -Tmultiboot2.ld \
+    -nostdlib \
+    -zmax-page-size=0x1000 \
+    -static
+
+override LDFLAGS_MB1 := \
+    -m elf_i386 \
+    -Tmultiboot.ld \
+    -nostdlib \
+    -zmax-page-size=0x1000 \
+    -static
+
+override CFLAGS += \
+    -std=c11 \
+    -nostdinc \
+    -ffreestanding \
+    -fno-stack-protector \
+    -fno-stack-check \
+    -fno-lto \
+    -fPIE \
+    -I../freestanding-headers \
+    -I. \
     -D_LIMINE_PROTO
 
-ifneq ($(findstring riscv,$(CC_FOR_TARGET)),)
-override INTERNALCFLAGS += -march=rv64imac -mabi=lp64 -mno-relax
-override INTERNALLDFLAGS += --no-relax
+ifneq ($(findstring x86_64,$(CC_FOR_TARGET)),)
+override CFLAGS += \
+    -m64 \
+    -march=x86-64 \
+    -mabi=sysv \
+    -mgeneral-regs-only \
+    -mno-red-zone
+endif
+
+ifneq ($(findstring aarch64,$(CC_FOR_TARGET)),)
+override CFLAGS += \
+    -mgeneral-regs-only
 endif
 
-override INTERNALCFLAGS_MB  :=    \
-	-std=c11             \
-	-ffreestanding       \
-	-fno-stack-protector \
-	-fno-stack-check     \
-	-fno-lto             \
-	-fno-PIE             \
-	-fno-PIC             \
-	-m32                 \
-	-march=i686          \
-	-mabi=sysv           \
-	-mno-80387           \
-	-I.                  \
-	-I..                 \
-	-I../common/protos
+ifneq ($(findstring riscv64,$(CC_FOR_TARGET)),)
+override CFLAGS += \
+    -march=rv64imac \
+    -mabi=lp64 \
+    -mno-relax
+override LDFLAGS += \
+    --no-relax
+endif
+
+override CFLAGS_MB := \
+    -std=c11 \
+    -nostdinc \
+    -ffreestanding \
+    -fno-stack-protector \
+    -fno-stack-check \
+    -fno-lto \
+    -fno-PIE \
+    -fno-PIC \
+    -m32 \
+    -march=i686 \
+    -mabi=sysv \
+    -mgeneral-regs-only \
+    -I../freestanding-headers \
+    -I. \
+    -I../common/protos
 
 ifneq ($(findstring 86,$(CC_FOR_TARGET)),)
 all: test.elf multiboot2.elf multiboot.elf
@@ -79,21 +110,26 @@ flanterm:
 	mkdir -p flanterm
 	cp -rv ../common/flanterm/* ./flanterm/
 
+limine.h:
+	cp -v ../limine.h ./
+
 test.elf: limine.o e9print.o memory.o flanterm/flanterm.o flanterm/backends/fb.o
-	$(LD) $^ $(LDFLAGS) $(INTERNALLDFLAGS) -o $@
+	$(LD) $^ $(LDFLAGS) -o $@
 
 multiboot2.elf: multiboot2_trampoline.o
-	$(CC) $(CFLAGS) $(INTERNALCFLAGS_MB) -c multiboot2.c -o multiboot2.o
-	$(CC) $(CFLAGS) $(INTERNALCFLAGS_MB) -c e9print.c -o e9print.o
-	$(LD) $^ multiboot2.o e9print.o $(LDFLAGS) $(INTERNAL_LD_FLAGS_MULTIBOOT2) -m elf_i386 -o $@
+	$(CC) $(CFLAGS_MB) -c memory.c -o memory.o
+	$(CC) $(CFLAGS_MB) -c multiboot2.c -o multiboot2.o
+	$(CC) $(CFLAGS_MB) -c e9print.c -o e9print.o
+	$(LD) $^ memory.o multiboot2.o e9print.o $(LDFLAGS_MB2) -o $@
 
 multiboot.elf: multiboot_trampoline.o
-	$(CC) $(CFLAGS) $(INTERNALCFLAGS_MB) -c multiboot.c -o multiboot.o
-	$(CC) $(CFLAGS) $(INTERNALCFLAGS_MB) -c e9print.c -o e9print.o
-	$(LD) $^ multiboot.o e9print.o $(LDFLAGS) $(INTERNAL_LD_FLAGS_MULTIBOOT1) -m elf_i386 -o $@
+	$(CC) $(CFLAGS_MB) -c memory.c -o memory.o
+	$(CC) $(CFLAGS_MB) -c multiboot.c -o multiboot.o
+	$(CC) $(CFLAGS_MB) -c e9print.c -o e9print.o
+	$(LD) $^ memory.o multiboot.o e9print.o $(LDFLAGS_MB1) -o $@
 
-%.o: %.c flanterm
-	$(CC) $(CFLAGS) $(INTERNALCFLAGS) -c $< -o $@
+%.o: %.c flanterm limine.h
+	$(CC) $(CFLAGS) -c $< -o $@
 
 %.o: %.asm
 	nasm -felf32 -F dwarf -g $< -o $@
@@ -102,4 +138,4 @@ clean:
 	rm -rf test.elf limine.o e9print.o memory.o
 	rm -rf multiboot2.o multiboot2.elf multiboot2_trampoline.o
 	rm -rf multiboot.o multiboot_trampoline.o multiboot.elf
-	rm -rf flanterm
+	rm -rf flanterm limine.h
diff --git a/test/limine.c b/test/limine.c
index 3a74fbcf..bf59148a 100644
--- a/test/limine.c
+++ b/test/limine.c
@@ -236,7 +236,7 @@ extern char kernel_start[];
 
 struct flanterm_context *ft_ctx = NULL;
 
-void limine_main(void) {
+static void limine_main(void) {
     e9_printf("\nWe're alive");
 
     struct limine_framebuffer *fb = framebuffer_request.response->framebuffers[0];
diff --git a/test/linker.ld b/test/linker.ld
index a3cae318..684ebaff 100644
--- a/test/linker.ld
+++ b/test/linker.ld
@@ -1,5 +1,3 @@
-ENTRY(limine_main)
-
 PHDRS
 {
     text    PT_LOAD    FLAGS((1 << 0) | (1 << 2)) ; /* Execute + Read */
tab: 248 wrap: offon