diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d5867c7f..c9e520b9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -93,7 +93,6 @@ jobs: - name: Release uses: softprops/action-gh-release@v1 with: - prerelease: true body_path: rel_notes.txt files: | limine-*.tar.* diff --git a/GNUmakefile.in b/GNUmakefile.in index 710c2ef0..c8394751 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -152,7 +152,7 @@ ifneq ($(BUILD_LIMINE_DEPLOY),no) $(MAKE) limine-deploy endif -$(call MKESCAPE,$(BINDIR))/limine-cd-efi.bin: $(if @BUILD_UEFI_IA32@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-ia32/BOOTIA32.EFI) $(if @BUILD_UEFI_X86_64@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-x86-64/BOOTX64.EFI) +$(call MKESCAPE,$(BINDIR))/limine-cd-efi.bin: $(if @BUILD_UEFI_IA32@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-ia32/BOOTIA32.EFI) $(if @BUILD_UEFI_X86_64@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-x86-64/BOOTX64.EFI) $(if @BUILD_UEFI_AARCH64@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-aarch64/BOOTAA64.EFI) ifneq ($(BUILD_CD_EFI),no) $(MKDIR_P) '$(call SHESCAPE,$(BINDIR))' rm -f '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' @@ -160,6 +160,8 @@ ifneq ($(BUILD_CD_EFI),no) ( mformat -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' -f 1440 :: && \ mmd -D s -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' ::/EFI && \ mmd -D s -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' ::/EFI/BOOT && \ + ( ( [ -f '$(call SHESCAPE,$(BUILDDIR))/common-uefi-aarch64/BOOTAA64.EFI' ] && \ + mcopy -D o -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' '$(call SHESCAPE,$(BUILDDIR))/common-uefi-aarch64/BOOTAA64.EFI' ::/EFI/BOOT ) || true ) && \ ( ( [ -f '$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64/BOOTX64.EFI' ] && \ mcopy -D o -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' '$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64/BOOTX64.EFI' ::/EFI/BOOT ) || true ) && \ ( ( [ -f '$(call SHESCAPE,$(BUILDDIR))/common-uefi-ia32/BOOTIA32.EFI' ] && \ @@ -499,13 +501,13 @@ pxe-test: sudo cp -rv test/* test_image/boot/ qemu-system-x86_64 -smp 4 -netdev user,id=n0,tftp=./test_image,bootfile=boot/limine-pxe.bin -device rtl8139,netdev=n0,mac=00:00:00:11:11:11 -debugcon stdio -.PHONY: uefi-test -uefi-test: +.PHONY: uefi-x86-64-test +uefi-x86-64-test: $(MAKE) ovmf-x64 $(MAKE) test-clean $(MAKE) test.hdd $(MAKE) limine-uefi-x86-64 - $(MAKE) -C test + $(MAKE) -C test CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/x86_64-toolchain.mk' rm -rf test_image/ mkdir test_image sudo losetup -Pf --show test.hdd > loopback_dev @@ -529,7 +531,7 @@ uefi-aa64-test: $(MAKE) test-clean $(MAKE) test.hdd $(MAKE) limine-uefi-aarch64 - $(MAKE) -C test + $(MAKE) -C test CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/aarch64-toolchain.mk' rm -rf test_image/ mkdir test_image sudo losetup -Pf --show test.hdd > loopback_dev @@ -553,7 +555,7 @@ uefi-ia32-test: $(MAKE) test-clean $(MAKE) test.hdd $(MAKE) limine-uefi-ia32 - $(MAKE) -C test + $(MAKE) -C test CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/x86_64-toolchain.mk' rm -rf test_image/ mkdir test_image sudo losetup -Pf --show test.hdd > loopback_dev diff --git a/test/GNUmakefile b/test/GNUmakefile index 7e0dae45..406dcab6 100644 --- a/test/GNUmakefile +++ b/test/GNUmakefile @@ -1,11 +1,13 @@ -CC = cc -CFLAGS = -O2 -g -Wall -Wextra -Wpedantic -LDFLAGS = -LD = ld -QEMU = qemu-system-x86_64 -QEMUFLAGS = -m 1G -enable-kvm -cpu host +include $(CROSS_FILE) -INTERNALLDFLAGS := \ +override CC := $(CROSS_CC) +CFLAGS = -O2 -g -Wall -Wextra +LDFLAGS = +override LD := $(CROSS_LD) +override QEMU := qemu-system-x86_64 +QEMUFLAGS = -m 1G -enable-kvm -cpu host + +override INTERNALLDFLAGS := \ -Tlinker.ld \ -nostdlib \ -zmax-page-size=0x1000 \ @@ -14,51 +16,53 @@ INTERNALLDFLAGS := \ --no-dynamic-linker \ -ztext -INTERNAL_LD_FLAGS_MULTIBOOT2 := \ +override INTERNAL_LD_FLAGS_MULTIBOOT2 := \ + -m elf_i386 \ -Tmultiboot2.ld \ -nostdlib \ -zmax-page-size=0x1000 \ -static -INTERNAL_LD_FLAGS_MULTIBOOT1 := \ +override INTERNAL_LD_FLAGS_MULTIBOOT1 := \ + -m elf_i386 \ -Tmultiboot.ld \ -nostdlib \ -zmax-page-size=0x1000 \ -static -INTERNALCFLAGS := \ - -I. \ - -I.. \ +override INTERNALCFLAGS := \ -std=c11 \ - -g \ -ffreestanding \ -fno-stack-protector \ + -fno-stack-check \ + -fno-lto \ -fpie \ - -mabi=sysv \ - -mno-80387 \ - -mno-mmx \ - -mno-sse \ - -mno-sse2 \ - -mno-red-zone - -INTERNALCFLAGS_MB := \ + -mgeneral-regs-only \ + -mno-red-zone \ -I. \ - -I.. \ - -I../common/protos \ + -I.. + +override INTERNALCFLAGS_MB := \ -std=c11 \ - -m32 \ - -g \ -ffreestanding \ -fno-stack-protector \ + -fno-stack-check \ + -fno-lto \ -fno-pie \ -fno-pic \ + -m32 \ + -march=i686 \ -mabi=sysv \ -mno-80387 \ - -mno-mmx \ - -mno-sse \ - -mno-sse2 + -I. \ + -I.. \ + -I../common/protos +ifneq ($(findstring 86,$(CROSS_CC)),) all: test.elf multiboot2.elf multiboot.elf +else +all: test.elf +endif test.elf: limine.o e9print.o memory.o $(LD) $^ $(LDFLAGS) $(INTERNALLDFLAGS) -o $@ diff --git a/test/e9print.c b/test/e9print.c index 7e425a04..c77f1c03 100644 --- a/test/e9print.c +++ b/test/e9print.c @@ -9,7 +9,9 @@ static const char CONVERSION_TABLE[] = "0123456789abcdef"; void e9_putc(char c) { if (limine_print != NULL) limine_print(&c, 1); +#if defined (__x86_64__) || defined (__i386__) __asm__ __volatile__ ("outb %0, %1" :: "a" (c), "Nd" (0xe9) : "memory"); +#endif } void e9_print(const char *msg) { diff --git a/test/multiboot.ld b/test/multiboot.ld index 7bcdc517..c602227b 100644 --- a/test/multiboot.ld +++ b/test/multiboot.ld @@ -1,7 +1,7 @@ ENTRY(_start) SECTIONS { - . = 0x10000; + . = 1M; .boot : { @@ -18,7 +18,7 @@ SECTIONS { . = ALIGN(4K); .rodata : { - *(.rodata.*) + *(.rodata .rodata.*) } . = ALIGN(4K); diff --git a/test/multiboot2.ld b/test/multiboot2.ld index 22de8775..c602227b 100644 --- a/test/multiboot2.ld +++ b/test/multiboot2.ld @@ -18,7 +18,7 @@ SECTIONS { . = ALIGN(4K); .rodata : { - *(.rodata.*) + *(.rodata .rodata.*) } . = ALIGN(4K);