From 855c52a0300a3a74052ef0e2807cb49e73beefa3 Mon Sep 17 00:00:00 2001 From: mintsuki Date: Tue, 5 Nov 2024 23:47:33 +0100 Subject: [PATCH] build: Use new, non-packed, cc-runtime revisions --- .gitignore | 3 +-- GNUmakefile.in | 3 ++- bootstrap | 9 ++++----- common/common.mk | 39 +++++++++++++++++++++++------------- common/linker_bios.ld.in | 3 +++ configure.ac | 13 ++++++++++++ decompressor/decompressor.mk | 15 +++++++++++++- 7 files changed, 62 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index a21e0c69..b40afd1d 100644 --- a/.gitignore +++ b/.gitignore @@ -31,9 +31,8 @@ /common/libfdt /common/lib/stb_image.h.nopatch /common/lib/stb_image.h -/common/cc-runtime.s2.c +/cc-runtime /decompressor/tinf -/decompressor/cc-runtime.c /dtc /tinf /ovmf* diff --git a/GNUmakefile.in b/GNUmakefile.in index ef67c34b..78d3bb54 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -313,6 +313,7 @@ dist: rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/freestnd-c-hdrs-0bsd/.git" rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/nyu-efi/.git" rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/nyu-efi/.gitignore" + rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/cc-runtime/.git" rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/dtc" rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/tinf" rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/common/lib/stb_image.h.nopatch" @@ -342,7 +343,7 @@ distclean: clean .PHONY: maintainer-clean maintainer-clean: distclean - cd '$(call SHESCAPE,$(SRCDIR))' && rm -rf common/flanterm common/libfdt common/lib/stb_image.h.nopatch common/lib/stb_image.h decompressor/tinf tinf dtc freestnd-c-hdrs-0bsd common/cc-runtime.s2.c decompressor/cc-runtime.c nyu-efi configure timestamps build-aux *'~' autom4te.cache aclocal.m4 *.tar* + cd '$(call SHESCAPE,$(SRCDIR))' && rm -rf common/flanterm common/libfdt common/lib/stb_image.h.nopatch common/lib/stb_image.h decompressor/tinf tinf dtc freestnd-c-hdrs-0bsd cc-runtime nyu-efi configure timestamps build-aux *'~' autom4te.cache aclocal.m4 *.tar* .PHONY: common-uefi-x86-64 common-uefi-x86-64: diff --git a/bootstrap b/bootstrap index 089d6289..a03e3a6d 100755 --- a/bootstrap +++ b/bootstrap @@ -75,11 +75,10 @@ if ! test -f version; then freestnd-c-hdrs-0bsd \ 0353851fdebe0eb6a4d2c608c5393040d310bf35 - download_by_hash \ - https://github.com/osdev0/cc-runtime/raw/d5425655388977fa12ff9b903e554a20b20c426e/cc-runtime.c \ - decompressor/cc-runtime.c \ - 60bb1af4f6541077b736f19bf0f5a22b5dd8a2f3bed0d9d9d89846a33ef24b74 - cp decompressor/cc-runtime.c common/cc-runtime.s2.c + clone_repo_commit \ + https://github.com/osdev0/cc-runtime.git \ + cc-runtime \ + d662ff1ddb67cc44c202977b7bfe36928d26228c download_by_hash \ https://github.com/osdev0/freestanding-toolchain/raw/729281786413dc16529d87bd4ea13f03a71e004e/freestanding-toolchain \ diff --git a/common/common.mk b/common/common.mk index 901650e2..9db7673e 100644 --- a/common/common.mk +++ b/common/common.mk @@ -2,6 +2,7 @@ MAKEFLAGS += -rR .SUFFIXES: include $(TOOLCHAIN_FILE) +export AR_FOR_TARGET export CC_FOR_TARGET export LD_FOR_TARGET export OBJDUMP_FOR_TARGET @@ -284,6 +285,16 @@ ifeq ($(TARGET),uefi-loongarch64) all: $(call MKESCAPE,$(BUILDDIR))/BOOTLOONGARCH64.EFI endif +$(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a: ../cc-runtime/* + $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' + rm -rf '$(call SHESCAPE,$(BUILDDIR))/cc-runtime' + cp -r ../cc-runtime '$(call SHESCAPE,$(BUILDDIR))/' + $(MAKE) -C '$(call SHESCAPE,$(BUILDDIR))/cc-runtime' -f cc-runtime.mk \ + CC="$(CC_FOR_TARGET)" \ + AR="$(AR_FOR_TARGET)" \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CPPFLAGS='-nostdinc -isystem $(call SHESCAPE,$(SRCDIR))/../freestnd-c-hdrs-0bsd -DCC_RUNTIME_NO_FLOAT' + ifeq ($(TARGET),bios) $(call MKESCAPE,$(BUILDDIR))/stage2.bin.gz: $(call MKESCAPE,$(BUILDDIR))/stage2.bin @@ -312,7 +323,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_stage2only.ld: linker_bios.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_STAGE2ONLY linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld' -$(call MKESCAPE,$(BUILDDIR))/limine_stage2only.elf: $(OBJ_S2) +$(call MKESCAPE,$(BUILDDIR))/limine_stage2only.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(OBJ_S2) $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld' $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld' -o '$(call SHESCAPE,$@)' || \ ( echo "This error may mean that stage 2 was trying to use stage 3 symbols before loading stage 3" && \ @@ -325,7 +336,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nos2map.ld: linker_bios.ld.in $(call MKESCAPE,$(BUILDDIR))/empty: touch '$(call SHESCAPE,$@)' -$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ) +$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(OBJ) $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/empty' $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' -o '$(call SHESCAPE,$@)' @@ -343,7 +354,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_bios.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -$(call MKESCAPE,$(BUILDDIR))/limine_nos3map.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/stage2.map.o +$(call MKESCAPE,$(BUILDDIR))/limine_nos3map.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(OBJ) $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/empty' $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)' @@ -361,7 +372,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_bios.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld' -$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/full.map.o +$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(OBJ) $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/full.map.o $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/empty' $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld' $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)' @@ -410,7 +421,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_x86_64.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-x86_64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_x86_64.c.o $(OBJ) +$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-x86_64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_x86_64.c.o $(OBJ) $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \ @@ -420,7 +431,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_x86_64.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld' -$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-x86_64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_x86_64.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o +$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-x86_64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_x86_64.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \ @@ -457,7 +468,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_aarch64.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_aarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-aarch64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_aarch64.c.o $(OBJ) +$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-aarch64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_aarch64.c.o $(OBJ) $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \ @@ -467,7 +478,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_aarch64.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_aarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld' -$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-aarch64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_aarch64.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o +$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-aarch64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_aarch64.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \ @@ -503,7 +514,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_riscv64.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_riscv64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-riscv64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_riscv64.c.o $(OBJ) +$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-riscv64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_riscv64.c.o $(OBJ) $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \ @@ -513,7 +524,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_riscv64.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_riscv64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld' -$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-riscv64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_riscv64.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o +$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-riscv64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_riscv64.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \ @@ -549,7 +560,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_loongarch64.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_loongarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-loongarch64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_loongarch64.c.o $(OBJ) +$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-loongarch64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_loongarch64.c.o $(OBJ) $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \ @@ -559,7 +570,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_loongarch64.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_loongarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld' -$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-loongarch64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_loongarch64.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o +$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-loongarch64.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_loongarch64.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \ @@ -595,7 +606,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_ia32.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-ia32.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_ia32.c.o $(OBJ) +$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-ia32.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_ia32.c.o $(OBJ) $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \ @@ -605,7 +616,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_ia32.ld.in $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' $(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld' -$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-ia32.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_ia32.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o +$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/crt0-efi-ia32.S.o $(call MKESCAPE,$(BUILDDIR))/nyu-efi/src/reloc_ia32.c.o $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o $(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld' $(LD_FOR_TARGET) \ -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \ diff --git a/common/linker_bios.ld.in b/common/linker_bios.ld.in index 17b46b67..f177d1ba 100644 --- a/common/linker_bios.ld.in +++ b/common/linker_bios.ld.in @@ -18,10 +18,12 @@ SECTIONS .text.stage2 : { *(.entry) *(.realmode) + *cc-runtime.a:*(.text .text.*) *.s2.o(.text .text.*) } :text_s2 .rodata.stage2 : { + *cc-runtime.a:*(.rodata .rodata.*) *.s2.o(.rodata .rodata.*) build_id_s2 = .; @@ -55,6 +57,7 @@ SECTIONS .data.stage2 : { s2_data_begin = .; + *cc-runtime.a:*(.data .data.*) *.s2.o(.data .data.*) s2_data_end = .; diff --git a/configure.ac b/configure.ac index 7ebe764c..da553ce2 100644 --- a/configure.ac +++ b/configure.ac @@ -117,6 +117,7 @@ CPPFLAGS="$OLD_CPPFLAGS" LIBS="$OLD_LIBS" AC_ARG_VAR([TOOLCHAIN_FOR_TARGET], [alternative toolchain prefix for Limine (or 'llvm', or 'gnu')]) +AC_ARG_VAR([AR_FOR_TARGET], [archiver command for Limine]) AC_ARG_VAR([CC_FOR_TARGET], [C compiler command for Limine]) AC_ARG_VAR([LD_FOR_TARGET], [linker command for Limine]) AC_ARG_VAR([OBJCOPY_FOR_TARGET], [objcopy command for Limine]) @@ -170,6 +171,8 @@ else ARCHITECTURE=i686 \ FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \ FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \ + WANT_FREESTANDING_AR=yes \ + FREESTANDING_AR="$AR_FOR_TARGET" \ WANT_FREESTANDING_CC=yes \ FREESTANDING_CC="$CC_FOR_TARGET" \ WANT_FREESTANDING_LD=yes \ @@ -202,6 +205,8 @@ else ARCHITECTURE=i686 \ FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \ FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \ + WANT_FREESTANDING_AR=yes \ + FREESTANDING_AR="$AR_FOR_TARGET" \ WANT_FREESTANDING_CC=yes \ FREESTANDING_CC="$CC_FOR_TARGET" \ WANT_FREESTANDING_LD=yes \ @@ -231,6 +236,8 @@ else ARCHITECTURE=x86_64 \ FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \ FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \ + WANT_FREESTANDING_AR=yes \ + FREESTANDING_AR="$AR_FOR_TARGET" \ WANT_FREESTANDING_CC=yes \ FREESTANDING_CC="$CC_FOR_TARGET" \ WANT_FREESTANDING_LD=yes \ @@ -260,6 +267,8 @@ else ARCHITECTURE=aarch64 \ FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \ FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \ + WANT_FREESTANDING_AR=yes \ + FREESTANDING_AR="$AR_FOR_TARGET" \ WANT_FREESTANDING_CC=yes \ FREESTANDING_CC="$CC_FOR_TARGET" \ WANT_FREESTANDING_LD=yes \ @@ -288,6 +297,8 @@ else ARCHITECTURE=riscv64 \ FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \ FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \ + WANT_FREESTANDING_AR=yes \ + FREESTANDING_AR="$AR_FOR_TARGET" \ WANT_FREESTANDING_CC=yes \ FREESTANDING_CC="$CC_FOR_TARGET" \ WANT_FREESTANDING_LD=yes \ @@ -316,6 +327,8 @@ else ARCHITECTURE=loongarch64 \ FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \ FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \ + WANT_FREESTANDING_AR=yes \ + FREESTANDING_AR="$AR_FOR_TARGET" \ WANT_FREESTANDING_CC=yes \ FREESTANDING_CC="$CC_FOR_TARGET" \ WANT_FREESTANDING_LD=yes \ diff --git a/decompressor/decompressor.mk b/decompressor/decompressor.mk index 4d8da20c..e099d427 100644 --- a/decompressor/decompressor.mk +++ b/decompressor/decompressor.mk @@ -2,6 +2,7 @@ MAKEFLAGS += -rR .SUFFIXES: include $(TOOLCHAIN_FILE) +export AR_FOR_TARGET export CC_FOR_TARGET export LD_FOR_TARGET export OBJDUMP_FOR_TARGET @@ -10,6 +11,8 @@ export READELF_FOR_TARGET BUILDDIR ?= +override SRCDIR := $(shell pwd -P) + override SPACE := $(subst ,, ) override MKESCAPE = $(subst $(SPACE),\ ,$(1)) @@ -73,7 +76,17 @@ override HEADER_DEPS := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c= .PHONY: all all: $(call MKESCAPE,$(BUILDDIR))/decompressor.bin -$(call MKESCAPE,$(BUILDDIR))/decompressor.bin: $(OBJ) +$(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a: ../cc-runtime/* + $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))' + rm -rf '$(call SHESCAPE,$(BUILDDIR))/cc-runtime' + cp -r ../cc-runtime '$(call SHESCAPE,$(BUILDDIR))/' + $(MAKE) -C '$(call SHESCAPE,$(BUILDDIR))/cc-runtime' -f cc-runtime.mk \ + CC="$(CC_FOR_TARGET)" \ + AR="$(AR_FOR_TARGET)" \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CPPFLAGS='-nostdinc -isystem $(call SHESCAPE,$(SRCDIR))/../freestnd-c-hdrs-0bsd -DCC_RUNTIME_NO_FLOAT' + +$(call MKESCAPE,$(BUILDDIR))/decompressor.bin: $(call MKESCAPE,$(BUILDDIR))/cc-runtime/cc-runtime.a $(OBJ) $(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' $(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' '$(call SHESCAPE,$@)'