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 */
