From 1e9a42e7ceacb8a5b4aacab1a9398d5f559a5cdb Mon Sep 17 00:00:00 2001 From: mintsuki Date: Fri, 4 Aug 2023 09:54:24 -0500 Subject: [PATCH] test: General makefile updates --- test/.gitignore | 1 + test/GNUmakefile | 164 +++++++++++++++++++++++++++++------------------ test/limine.c | 2 +- test/linker.ld | 2 - 4 files changed, 102 insertions(+), 67 deletions(-) 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.. \ - -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 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 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 +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 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 + +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 */