test: General makefile updates

This commit is contained in:
mintsuki 2023-08-04 09:54:24 -05:00
parent 2831ef370c
commit 49b27fc47b
4 changed files with 87 additions and 58 deletions

1
test/.gitignore vendored
View File

@ -1,2 +1,3 @@
test.o test.o
test.elf test.elf
limine.h

View File

@ -12,56 +12,80 @@ override LD := $(LD_FOR_TARGET)
override QEMU := qemu-system-x86_64 override QEMU := qemu-system-x86_64
QEMUFLAGS = -m 1G -enable-kvm -cpu host QEMUFLAGS = -m 1G -enable-kvm -cpu host
override INTERNALLDFLAGS := \ ifneq ($(findstring x86_64,$(CC_FOR_TARGET)),)
-Tlinker.ld \ override LDFLAGS += \
-nostdlib \ -m elf_x86_64
-zmax-page-size=0x1000 \ endif
-static \ ifneq ($(findstring aarch64,$(CC_FOR_TARGET)),)
-pie \ override LDFLAGS += \
--no-dynamic-linker \ -m aarch64elf
-ztext endif
override INTERNAL_LD_FLAGS_MULTIBOOT2 := \ override LDFLAGS += \
-m elf_i386 \ -Tlinker.ld \
-Tmultiboot2.ld \ -nostdlib \
-nostdlib \ -zmax-page-size=0x1000 \
-zmax-page-size=0x1000 \ -static \
-static -pie \
--no-dynamic-linker \
-ztext
override INTERNAL_LD_FLAGS_MULTIBOOT1 := \ override LDFLAGS_MB2 := \
-m elf_i386 \ -m elf_i386 \
-Tmultiboot.ld \ -Tmultiboot2.ld \
-nostdlib \ -nostdlib \
-zmax-page-size=0x1000 \ -zmax-page-size=0x1000 \
-static -static
override INTERNALCFLAGS := \ override LDFLAGS_MB1 := \
-std=c11 \ -m elf_i386 \
-ffreestanding \ -Tmultiboot.ld \
-fno-stack-protector \ -nostdlib \
-fno-stack-check \ -zmax-page-size=0x1000 \
-fno-lto \ -static
-fPIE \
-mgeneral-regs-only \
-mno-red-zone \
-I. \
-I..
override INTERNALCFLAGS_MB := \ override CFLAGS += \
-std=c11 \ -std=c11 \
-ffreestanding \ -nostdinc \
-fno-stack-protector \ -ffreestanding \
-fno-stack-check \ -fno-stack-protector \
-fno-lto \ -fno-stack-check \
-fno-PIE \ -fno-lto \
-fno-PIC \ -fPIE \
-m32 \ -I../freestanding-headers \
-march=i686 \ -I. \
-mabi=sysv \ -D_LIMINE_PROTO
-mno-80387 \
-I. \ ifneq ($(findstring x86_64,$(CC_FOR_TARGET)),)
-I.. \ override CFLAGS += \
-I../common/protos -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 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)),) ifneq ($(findstring 86,$(CC_FOR_TARGET)),)
all: test.elf multiboot2.elf multiboot.elf all: test.elf multiboot2.elf multiboot.elf
@ -69,21 +93,26 @@ else
all: test.elf all: test.elf
endif endif
limine.h:
cp -v ../limine.h ./
test.elf: limine.o e9print.o memory.o test.elf: limine.o e9print.o memory.o
$(LD) $^ $(LDFLAGS) $(INTERNALLDFLAGS) -o $@ $(LD) $^ $(LDFLAGS) -o $@
multiboot2.elf: multiboot2_trampoline.o multiboot2.elf: multiboot2_trampoline.o
$(CC) $(CFLAGS) $(INTERNALCFLAGS_MB) -c multiboot2.c -o multiboot2.o $(CC) $(CFLAGS_MB) -c memory.c -o memory.o
$(CC) $(CFLAGS) $(INTERNALCFLAGS_MB) -c e9print.c -o e9print.o $(CC) $(CFLAGS_MB) -c multiboot2.c -o multiboot2.o
$(LD) $^ multiboot2.o e9print.o $(LDFLAGS) $(INTERNAL_LD_FLAGS_MULTIBOOT2) -m elf_i386 -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 multiboot.elf: multiboot_trampoline.o
$(CC) $(CFLAGS) $(INTERNALCFLAGS_MB) -c multiboot.c -o multiboot.o $(CC) $(CFLAGS_MB) -c memory.c -o memory.o
$(CC) $(CFLAGS) $(INTERNALCFLAGS_MB) -c e9print.c -o e9print.o $(CC) $(CFLAGS_MB) -c multiboot.c -o multiboot.o
$(LD) $^ multiboot.o e9print.o $(LDFLAGS) $(INTERNAL_LD_FLAGS_MULTIBOOT1) -m elf_i386 -o $@ $(CC) $(CFLAGS_MB) -c e9print.c -o e9print.o
$(LD) $^ memory.o multiboot.o e9print.o $(LDFLAGS_MB1) -o $@
%.o: %.c %.o: %.c limine.h
$(CC) $(CFLAGS) $(INTERNALCFLAGS) -c $< -o $@ $(CC) $(CFLAGS) -c $< -o $@
%.o: %.asm %.o: %.asm
nasm -felf32 -F dwarf -g $< -o $@ nasm -felf32 -F dwarf -g $< -o $@
@ -92,3 +121,4 @@ clean:
rm -rf test.elf limine.o e9print.o memory.o rm -rf test.elf limine.o e9print.o memory.o
rm -rf multiboot2.o multiboot2.elf multiboot2_trampoline.o rm -rf multiboot2.o multiboot2.elf multiboot2_trampoline.o
rm -rf multiboot.o multiboot_trampoline.o multiboot.elf rm -rf multiboot.o multiboot_trampoline.o multiboot.elf
rm -rf limine.h

View File

@ -244,7 +244,7 @@ static void write_shim(const char *s, uint64_t l) {
_terminal_request.response->write(terminal, s, l); _terminal_request.response->write(terminal, s, l);
} }
void limine_main(void) { static void limine_main(void) {
if (_terminal_request.response) { if (_terminal_request.response) {
limine_print = write_shim; limine_print = write_shim;
} }

View File

@ -1,5 +1,3 @@
ENTRY(limine_main)
PHDRS PHDRS
{ {
text PT_LOAD FLAGS((1 << 0) | (1 << 2)) ; /* Execute + Read */ text PT_LOAD FLAGS((1 << 0) | (1 << 2)) ; /* Execute + Read */