:: commit 99d7dbbd179d3e87b7ebb2dce1d17b21fb37134c

mintsuki <mintsuki@protonmail.com> — 2022-07-05 07:14

parents: 1309424346

build: Move to using external cross-detect package

diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
index 14d06ab8..3046a768 100644
--- a/.github/workflows/check.yml
+++ b/.github/workflows/check.yml
@@ -19,7 +19,7 @@ jobs:
         run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
 
       - name: Build the bootloader (LLVM)
-        run: ./bootstrap && ./configure TOOLCHAIN=llvm --enable-werror --enable-all && make all && make maintainer-clean
+        run: ./bootstrap && ./configure CROSS_TOOLCHAIN=llvm --enable-werror --enable-all && make all && make maintainer-clean
 
       - name: Build the bootloader (GCC)
-        run: ./bootstrap && ./configure LIMINE_CC=gcc LIMINE_LD=ld LIMINE_OBJCOPY=objcopy LIMINE_OBJDUMP=objdump LIMINE_READELF=readelf --enable-werror --enable-all && make all && make maintainer-clean
+        run: ./bootstrap && ./configure CROSS_CC=gcc CROSS_LD=ld CROSS_OBJCOPY=objcopy CROSS_OBJDUMP=objdump CROSS_READELF=readelf --enable-werror --enable-all && make all && make maintainer-clean
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 476582e1..4e27deb7 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -36,7 +36,7 @@ jobs:
         run: mkdir -p build
 
       - name: Configure
-        run: cd build && ../configure --enable-all TOOLCHAIN=llvm
+        run: cd build && ../configure --enable-all CROSS_TOOLCHAIN=llvm
 
       - name: Build the bootloader
         run: make -C build
diff --git a/.gitignore b/.gitignore
index 5ab8e676..16c809c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,7 @@
 /bin
 /build
 /toolchain
-/toolchain-files
+/cross-files
 /limine-efi
 /freestanding-headers
 /make_toolchain.sh
@@ -26,10 +26,7 @@
 /stivale
 /test_image
 !/common/font.bin
-/toolchain-detect/configure
-/toolchain-detect/configure.ac.save
-/toolchain-detect/*~
-/toolchain-detect/autom4te.cache
+/cross-detect
 /configure
 /configure.ac.save
 /build-aux
diff --git a/GNUmakefile.in b/GNUmakefile.in
index c775d63b..c6aa7f0e 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -52,23 +52,23 @@ export CFLAGS
 LDFLAGS ?= @LDFLAGS@
 export LDFLAGS
 
-LIMINE_CFLAGS ?= @LIMINE_CFLAGS@
-export LIMINE_CFLAGS
-LIMINE_LDFLAGS ?= @LIMINE_LDFLAGS@
-export LIMINE_LDFLAGS
-
-TOOLCHAIN ?= @TOOLCHAIN@
-export TOOLCHAIN
-LIMINE_CC ?= @LIMINE_CC@
-export LIMINE_CC
-LIMINE_LD ?= @LIMINE_LD@
-export LIMINE_LD
-LIMINE_OBJCOPY ?= @LIMINE_OBJCOPY@
-export LIMINE_OBJCOPY
-LIMINE_OBJDUMP ?= @LIMINE_OBJDUMP@
-export LIMINE_OBJDUMP
-LIMINE_READELF ?= @LIMINE_READELF@
-export LIMINE_READELF
+CROSS_CFLAGS ?= @CROSS_CFLAGS@
+export CROSS_CFLAGS
+CROSS_LDFLAGS ?= @CROSS_LDFLAGS@
+export CROSS_LDFLAGS
+
+CROSS_TOOLCHAIN ?= @CROSS_TOOLCHAIN@
+export CROSS_TOOLCHAIN
+CROSS_CC ?= @CROSS_CC@
+export CROSS_CC
+CROSS_LD ?= @CROSS_LD@
+export CROSS_LD
+CROSS_OBJCOPY ?= @CROSS_OBJCOPY@
+export CROSS_OBJCOPY
+CROSS_OBJDUMP ?= @CROSS_OBJDUMP@
+export CROSS_OBJDUMP
+CROSS_READELF ?= @CROSS_READELF@
+export CROSS_READELF
 
 override LIMINE_VERSION := @PACKAGE_VERSION@
 
@@ -193,11 +193,13 @@ dist:
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/limine-efi/.git"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/limine-efi/.gitignore"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/stivale/.git"
+	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/cross-detect/.git"
+	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/cross-detect/.gitignore"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/.git"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/.gitignore"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/.github"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/autom4te.cache"
-	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/toolchain-detect/autom4te.cache"
+	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/cross-detect/autom4te.cache"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/test"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/screenshot.png"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/bochsrc"
@@ -208,17 +210,16 @@ dist:
 
 .PHONY: distclean
 distclean: clean
-	rm -rf toolchain ovmf* config.log config.status GNUmakefile config.h toolchain-files
+	rm -rf toolchain ovmf* config.log config.status GNUmakefile config.h cross-files
 
 .PHONY: maintainer-clean
 maintainer-clean: distclean
-	cd '$(call SHESCAPE,$(SRCDIR))' && rm -rf freestanding-headers stivale libgcc-binaries make_toolchain.sh limine-efi configure build-aux *'~' autom4te.cache *.tar.xz *.tar.gz
-	cd '$(call SHESCAPE,$(SRCDIR))'/toolchain-detect && rm -rf configure *'~' autom4te.cache
+	cd '$(call SHESCAPE,$(SRCDIR))' && rm -rf freestanding-headers stivale libgcc-binaries make_toolchain.sh limine-efi cross-detect configure build-aux *'~' autom4te.cache *.tar.xz *.tar.gz
 
 .PHONY: common-uefi-x86-64
 common-uefi-x86-64:
 	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/x86_64-toolchain.mk' \
+		CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/x86_64-toolchain.mk' \
 		TARGET=uefi-x86-64 \
 		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64'
 
@@ -229,7 +230,7 @@ common-uefi-x86-64-clean:
 .PHONY: common-uefi-ia32
 common-uefi-ia32: $(call MKESCAPE,$(SRCDIR))/stivale
 	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/i686-toolchain.mk' \
+		CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/i686-toolchain.mk' \
 		TARGET=uefi-ia32 \
 		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-ia32'
 
@@ -240,7 +241,7 @@ common-uefi-ia32-clean:
 .PHONY: common-bios
 common-bios: $(call MKESCAPE,$(SRCDIR))/stivale
 	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/i686-toolchain.mk' \
+		CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/i686-toolchain.mk' \
 		TARGET=bios \
 		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-bios'
 
@@ -251,7 +252,7 @@ common-bios-clean:
 .PHONY: decompressor
 decompressor:
 	$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/decompressor' all \
-		TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/i686-toolchain.mk' \
+		CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/i686-toolchain.mk' \
 		BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/decompressor-build'
 
 .PHONY: decompressor-clean
diff --git a/bootstrap b/bootstrap
index 382fc67c..e833176d 100755
--- a/bootstrap
+++ b/bootstrap
@@ -7,6 +7,7 @@ test -z "$srcdir" && srcdir=.
 
 cd "$srcdir"
 
+[ -d cross-detect ] || git clone https://github.com/mintsuki/cross-detect.git
 [ -d freestanding-headers ] || git clone https://github.com/mintsuki/freestanding-headers.git
 [ -d stivale ] || git clone https://github.com/stivale/stivale.git
 [ -d libgcc-binaries ] || git clone https://github.com/mintsuki/libgcc-binaries.git
diff --git a/common/GNUmakefile b/common/GNUmakefile
index d23ae3cb..16e96534 100644
--- a/common/GNUmakefile
+++ b/common/GNUmakefile
@@ -1,4 +1,4 @@
-include $(TOOLCHAIN_FILE)
+include $(CROSS_FILE)
 
 TARGET ?=
 BUILDDIR ?=
@@ -28,7 +28,7 @@ endif
 COM_OUTPUT ?= false
 E9_OUTPUT ?= false
 
-override S2CFLAGS := $(LIMINE_CFLAGS) -Os
+override S2CFLAGS := $(CROSS_CFLAGS) -Os
 
 override INTERNAL_CFLAGS := \
 	-g \
@@ -181,11 +181,11 @@ $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.bin: sys/smp_trampoline.real
 $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o: $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.bin
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
 	cd '$(call SHESCAPE,$(BUILDDIR))/sys' && \
-		$(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) smp_trampoline.bin '$(call SHESCAPE,$@)'
+		$(CROSS_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) smp_trampoline.bin '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/font.o: font.bin
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) font.bin '$(call SHESCAPE,$@)'
+	$(CROSS_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) font.bin '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/*
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))/tinf'
@@ -195,11 +195,11 @@ $(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/*
 
 $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
 
 ifeq ($(TARGET), bios)
 
@@ -207,62 +207,62 @@ $(call MKESCAPE,$(BUILDDIR))/stage2.bin.gz: $(call MKESCAPE,$(BUILDDIR))/stage2.
 	gzip -n -9 < '$(call SHESCAPE,$<)' > '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/stage2.bin: $(call MKESCAPE,$(BUILDDIR))/limine.sys
-	dd if='$(call SHESCAPE,$<)' bs=$$(( 0x$$("$(LIMINE_READELF)" -S '$(call SHESCAPE,$(BUILDDIR))/limine.elf' | $(GREP) .text.stage3 | $(SED) 's/^.*] //' | $(AWK) '{print $$3}' | $(SED) 's/^0*//') - 0x8000 )) count=1 of='$(call SHESCAPE,$@)' 2>/dev/null
+	dd if='$(call SHESCAPE,$<)' bs=$$(( 0x$$("$(CROSS_READELF)" -S '$(call SHESCAPE,$(BUILDDIR))/limine.elf' | $(GREP) .text.stage3 | $(SED) 's/^.*] //' | $(AWK) '{print $$3}' | $(SED) 's/^0*//') - 0x8000 )) count=1 of='$(call SHESCAPE,$@)' 2>/dev/null
 
 $(call MKESCAPE,$(BUILDDIR))/stage2.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_stage2only.elf
 	cd '$(call SHESCAPE,$(BUILDDIR))' && \
 		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' stage2 32 '\.text'
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(BUILDDIR))/stage2.map.S' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(BUILDDIR))/stage2.map.S' -o '$(call SHESCAPE,$@)'
 	rm -f '$(call SHESCAPE,$(BUILDDIR))/stage2.map.S' '$(call SHESCAPE,$(BUILDDIR))/stage2.map.d'
 
 $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf
 	cd '$(call SHESCAPE,$(BUILDDIR))' && \
 		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' full 32 '\.text'
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
 	rm -f '$(call SHESCAPE,$(BUILDDIR))/full.map.S' '$(call SHESCAPE,$(BUILDDIR))/full.map.d'
 
 $(call MKESCAPE,$(BUILDDIR))/limine.sys: $(call MKESCAPE,$(BUILDDIR))/limine.elf
-	$(LIMINE_OBJCOPY) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
+	$(CROSS_OBJCOPY) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker_stage2only.ld: linker_bios.ld.in
 	mkdir -p '$(call SHESCAPE,$(BUILDDIR))'
-	$(LIMINE_CC) -x c -E -P -undef -DLINKER_STAGE2ONLY linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld'
+	$(CROSS_CC) -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) ../libgcc-binaries/libgcc-i686.a
 	$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld'
-	$(LIMINE_LD) '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -T'$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld' -o '$(call SHESCAPE,$@)' || \
+	$(CROSS_LD) '$(call OBJESCAPE,$^)' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -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" && \
 		  false )
 
 $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_bios.ld.in
 	mkdir -p '$(call SHESCAPE,$(BUILDDIR))'
-	$(LIMINE_CC) -x c -E -P -undef -DLINKER_NOMAP linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
+	$(CROSS_CC) -x c -E -P -undef -DLINKER_NOMAP linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
 
 $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o $(call MKESCAPE,$(BUILDDIR))/stage2.map.o
 	$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
-	$(LIMINE_LD) '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
-	$(LIMINE_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
+	$(CROSS_LD) '$(call OBJESCAPE,$^)' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
+	$(CROSS_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
 	cd '$(call SHESCAPE,$(BUILDDIR))' && \
-		$(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s2.bin build-id.s2.o
-	$(LIMINE_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.bin'
+		$(CROSS_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s2.bin build-id.s2.o
+	$(CROSS_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.bin'
 	cd '$(call SHESCAPE,$(BUILDDIR))' && \
-		$(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o
-	$(LIMINE_LD) '$(call OBJESCAPE,$^)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.o' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
+		$(CROSS_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o
+	$(CROSS_LD) '$(call OBJESCAPE,$^)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.o' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_bios.ld.in
 	mkdir -p '$(call SHESCAPE,$(BUILDDIR))'
-	$(LIMINE_CC) -x c -E -P -undef linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
+	$(CROSS_CC) -x c -E -P -undef linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
 
 $(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/full.map.o
 	$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
-	$(LIMINE_LD) '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
-	$(LIMINE_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
+	$(CROSS_LD) '$(call OBJESCAPE,$^)' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
+	$(CROSS_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
 	cd '$(call SHESCAPE,$(BUILDDIR))' && \
-		$(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s2.bin build-id.s2.o
-	$(LIMINE_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.bin'
+		$(CROSS_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s2.bin build-id.s2.o
+	$(CROSS_OBJCOPY) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.bin'
 	cd '$(call SHESCAPE,$(BUILDDIR))' && \
-		$(LIMINE_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o
-	$(LIMINE_LD) '$(call OBJESCAPE,$^)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.o' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
+		$(CROSS_OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) build-id.s3.bin build-id.s3.o
+	$(CROSS_LD) '$(call OBJESCAPE,$^)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.o' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
 
 endif
 
@@ -275,11 +275,11 @@ ifeq ($(TARGET), uefi-x86-64)
 $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf
 	cd '$(call SHESCAPE,$(BUILDDIR))' && \
 		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' full 64 '\.text'
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
 	rm -f '$(call SHESCAPE,$(BUILDDIR))/full.map.S' '$(call SHESCAPE,$(BUILDDIR))/full.map.d'
 
 $(call MKESCAPE,$(BUILDDIR))/BOOTX64.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
-	$(LIMINE_OBJCOPY) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
+	$(CROSS_OBJCOPY) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-x86_64.o: limine-efi
 	true
@@ -291,30 +291,30 @@ $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_x86_64.o: limine-efi
 limine-efi: $(call MKESCAPE,$(BUILDDIR))/limine-efi
 	unset CPPFLAGS; \
 	$(MAKE) -C '$(call SHESCAPE,$(BUILDDIR))/limine-efi/gnuefi' \
-		CC="$(LIMINE_CC) -m64 -march=x86-64 -mtune=generic" \
+		CC="$(CROSS_CC) -m64 -march=x86-64 -mtune=generic" \
 		CFLAGS='-nostdinc' \
 		INCDIR='-I$(call SHESCAPE,$(SRCDIR))/../freestanding-headers' \
 		ARCH=x86_64
 
 $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_x86_64.ld.in
 	mkdir -p '$(call SHESCAPE,$(BUILDDIR))'
-	$(LIMINE_CC) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
+	$(CROSS_CC) -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))/limine-efi/gnuefi/crt0-efi-x86_64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_x86_64.o $(OBJ) ../libgcc-binaries/libgcc-x86_64-no-red-zone.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o
 	$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
-	$(LIMINE_LD) \
+	$(CROSS_LD) \
 		-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
-		'$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)'
+		'$(call OBJESCAPE,$^)' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_x86_64.ld.in
 	mkdir -p '$(call SHESCAPE,$(BUILDDIR))'
-	$(LIMINE_CC) -x c -E -P -undef linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
+	$(CROSS_CC) -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))/limine-efi/gnuefi/crt0-efi-x86_64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_x86_64.o $(OBJ) ../libgcc-binaries/libgcc-x86_64-no-red-zone.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o $(call MKESCAPE,$(BUILDDIR))/full.map.o
 	$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
-	$(LIMINE_LD) \
+	$(CROSS_LD) \
 		-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
-		'$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)'
+		'$(call OBJESCAPE,$^)' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)'
 
 endif
 
@@ -323,11 +323,11 @@ ifeq ($(TARGET), uefi-ia32)
 $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf
 	cd '$(call SHESCAPE,$(BUILDDIR))' && \
 		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' full 32 '\.text'
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
 	rm -f '$(call SHESCAPE,$(BUILDDIR))/full.map.S' '$(call SHESCAPE,$(BUILDDIR))/full.map.d'
 
 $(call MKESCAPE,$(BUILDDIR))/BOOTIA32.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
-	$(LIMINE_OBJCOPY) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
+	$(CROSS_OBJCOPY) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-ia32.o: limine-efi
 	true
@@ -339,30 +339,30 @@ $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_ia32.o: limine-efi
 limine-efi: $(call MKESCAPE,$(BUILDDIR))/limine-efi
 	unset CPPFLAGS; \
 	$(MAKE) -C '$(call SHESCAPE,$(BUILDDIR))/limine-efi/gnuefi' \
-		CC="$(LIMINE_CC) -m32 -march=i686 -mtune=generic" \
+		CC="$(CROSS_CC) -m32 -march=i686 -mtune=generic" \
 		CFLAGS='-nostdinc' \
 		INCDIR='-I$(call SHESCAPE,$(SRCDIR))/../freestanding-headers' \
 		ARCH=ia32
 
 $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_ia32.ld.in
 	mkdir -p '$(call SHESCAPE,$(BUILDDIR))'
-	$(LIMINE_CC) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
+	$(CROSS_CC) -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))/limine-efi/gnuefi/crt0-efi-ia32.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_ia32.o $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o
 	$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
-	$(LIMINE_LD) \
+	$(CROSS_LD) \
 		-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
-		'$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)'
+		'$(call OBJESCAPE,$^)' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_ia32.ld.in
 	mkdir -p '$(call SHESCAPE,$(BUILDDIR))'
-	$(LIMINE_CC) -x c -E -P -undef linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
+	$(CROSS_CC) -x c -E -P -undef linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
 
 $(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-ia32.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_ia32.o $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o $(call MKESCAPE,$(BUILDDIR))/font.o $(call MKESCAPE,$(BUILDDIR))/sys/smp_trampoline.o $(call MKESCAPE,$(BUILDDIR))/full.map.o
 	$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
-	$(LIMINE_LD) \
+	$(CROSS_LD) \
 		-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
-		'$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)'
+		'$(call OBJESCAPE,$^)' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$@)'
 
 endif
 
@@ -371,19 +371,19 @@ endif
 ifeq ($(TARGET), uefi-x86-64)
 $(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied $(call MKESCAPE,$(BUILDDIR))/limine-efi
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
 endif
 
 ifeq ($(TARGET), uefi-ia32)
 $(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied $(call MKESCAPE,$(BUILDDIR))/limine-efi
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
 endif
 
 ifeq ($(TARGET), bios)
 $(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
 endif
 
 -include $(HEADER_DEPS)
@@ -391,7 +391,7 @@ endif
 ifeq ($(TARGET), bios)
 $(call MKESCAPE,$(BUILDDIR))/%.s2.o: %.s2.c
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(S2CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(S2CFLAGS) $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
 endif
 
 -include $(HEADER_DEPS)
@@ -399,8 +399,8 @@ endif
 ifeq ($(TARGET), uefi-x86-64)
 $(call MKESCAPE,$(BUILDDIR))/%.32.o: %.32.c $(call MKESCAPE,$(BUILDDIR))/limine-efi
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(LIMINE_CFLAGS) $(INTERNAL_CFLAGS32) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@).32'
-	$(LIMINE_OBJCOPY) -I elf32-i386 -O elf64-x86-64 '$(call SHESCAPE,$@).32' '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) $(INTERNAL_CFLAGS32) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@).32'
+	$(CROSS_OBJCOPY) -I elf32-i386 -O elf64-x86-64 '$(call SHESCAPE,$@).32' '$(call SHESCAPE,$@)'
 	rm '$(call SHESCAPE,$@).32'
 endif
 
diff --git a/common/gensyms.sh b/common/gensyms.sh
index d79a710a..55ec0f69 100755
--- a/common/gensyms.sh
+++ b/common/gensyms.sh
@@ -28,7 +28,7 @@ TMP4="$(mktemp)"
 
 trap "rm -f '$TMP1' '$TMP2' '$TMP3' '$TMP4'; trap - EXIT; exit" EXIT INT TERM QUIT HUP
 
-"$LIMINE_OBJDUMP" -t "$1" | ( "$SED" '/[[:<:]]d[[:>:]]/d' 2>/dev/null || "$SED" '/\bd\b/d' ) | sort > "$TMP1"
+"$CROSS_OBJDUMP" -t "$1" | ( "$SED" '/[[:<:]]d[[:>:]]/d' 2>/dev/null || "$SED" '/\bd\b/d' ) | sort > "$TMP1"
 "$GREP" "$4" < "$TMP1" | cut -d' ' -f1 > "$TMP2"
 "$GREP" "$4" < "$TMP1" | "$AWK" 'NF{ print $NF }' > "$TMP3"
 
diff --git a/configure.ac b/configure.ac
index 908df8bc..3b339971 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ AC_INIT([Limine], m4_esyscmd([./version.sh]), [https://github.com/limine-bootloa
 AC_PREREQ(2.69)
 
 AC_CONFIG_AUX_DIR([build-aux])
-AC_CONFIG_SUBDIRS([toolchain-detect])
+AC_CONFIG_SUBDIRS([cross-detect])
 
 SRCDIR="$(cd "$srcdir" && pwd -P)"
 BUILDDIR="$(pwd -P)"
@@ -47,7 +47,7 @@ if ! test "x$GZIP_FOUND" = "xyes"; then
     AC_MSG_ERROR([gzip not found, please install gzip before configuring])
 fi
 
-rm -rf "$BUILDDIR/toolchain-files"
+rm -rf "$BUILDDIR/cross-files"
 
 BUILD_ALL="no"
 
@@ -65,9 +65,9 @@ if test "x$BUILD_BIOS" = "xno"; then
     BUILD_BIOS=""
 else
     (
-    mkdir -p "$BUILDDIR/toolchain-files"
-    cd "$BUILDDIR/toolchain-files"
-    ARCHITECTURE=i686 "$SRCDIR/toolchain-detect/configure"
+    mkdir -p "$BUILDDIR/cross-files"
+    cd "$BUILDDIR/cross-files"
+    TRIPLET=i686-elf "$SRCDIR/cross-detect/configure"
     ) || exit 1
     BUILD_BIOS="limine-bios"
 fi
@@ -108,9 +108,9 @@ if test "x$BUILD_UEFI_IA32" = "xno"; then
     BUILD_UEFI_IA32=""
 else
     (
-    mkdir -p "$BUILDDIR/toolchain-files"
-    cd "$BUILDDIR/toolchain-files"
-    ARCHITECTURE=i686 "$SRCDIR/toolchain-detect/configure"
+    mkdir -p "$BUILDDIR/cross-files"
+    cd "$BUILDDIR/cross-files"
+    TRIPLET=i686-elf "$SRCDIR/cross-detect/configure"
     ) || exit 1
     BUILD_UEFI_IA32="limine-uefi-ia32"
 fi
@@ -127,9 +127,9 @@ if test "x$BUILD_UEFI_X86_64" = "xno"; then
     BUILD_UEFI_X86_64=""
 else
     (
-    mkdir -p "$BUILDDIR/toolchain-files"
-    cd "$BUILDDIR/toolchain-files"
-    ARCHITECTURE=x86_64 "$SRCDIR/toolchain-detect/configure"
+    mkdir -p "$BUILDDIR/cross-files"
+    cd "$BUILDDIR/cross-files"
+    TRIPLET=x86_64-elf "$SRCDIR/cross-detect/configure"
     ) || exit 1
     BUILD_UEFI_X86_64="limine-uefi-x86-64"
 fi
@@ -155,20 +155,20 @@ fi
 
 AC_SUBST(BUILD_CD_EFI, [$BUILD_CD_EFI])
 
-AC_ARG_VAR(TOOLCHAIN, [alternative toolchain prefix (or 'llvm')])
-AC_ARG_VAR(LIMINE_CC, [C compiler command for Limine])
-AC_ARG_VAR(LIMINE_LD, [linker command for Limine])
-AC_ARG_VAR(LIMINE_OBJCOPY, [objcopy command for Limine])
-AC_ARG_VAR(LIMINE_OBJDUMP, [objdump command for Limine])
-AC_ARG_VAR(LIMINE_READELF, [readelf command for Limine])
+AC_ARG_VAR(CROSS_TOOLCHAIN, [alternative toolchain prefix (or 'llvm')])
+AC_ARG_VAR(CROSS_CC, [C compiler command for Limine])
+AC_ARG_VAR(CROSS_LD, [linker command for Limine])
+AC_ARG_VAR(CROSS_OBJCOPY, [objcopy command for Limine])
+AC_ARG_VAR(CROSS_OBJDUMP, [objdump command for Limine])
+AC_ARG_VAR(CROSS_READELF, [readelf command for Limine])
 
-m4_define([DEFAULT_LIMINE_CFLAGS], [-O3 -pipe -Wall -Wextra])
-AC_ARG_VAR(LIMINE_CFLAGS, [C flags for Limine @<:@default: ]DEFAULT_LIMINE_CFLAGS[@:>@])
-test "x$LIMINE_CFLAGS" = "x" && LIMINE_CFLAGS="DEFAULT_LIMINE_CFLAGS"
+m4_define([DEFAULT_CROSS_CFLAGS], [-O3 -pipe -Wall -Wextra])
+AC_ARG_VAR(CROSS_CFLAGS, [C flags for Limine @<:@default: ]DEFAULT_CROSS_CFLAGS[@:>@])
+test "x$CROSS_CFLAGS" = "x" && CROSS_CFLAGS="DEFAULT_CROSS_CFLAGS"
 
-m4_define([DEFAULT_LIMINE_LDFLAGS], [])
-AC_ARG_VAR(LIMINE_LDFLAGS, [Linker flags for Limine @<:@default: ]DEFAULT_LIMINE_LDFLAGS[@:>@])
-test "x$LIMINE_LDFLAGS" = "x" && LIMINE_LDFLAGS="DEFAULT_LIMINE_LDFLAGS"
+m4_define([DEFAULT_CROSS_LDFLAGS], [])
+AC_ARG_VAR(CROSS_LDFLAGS, [Linker flags for Limine @<:@default: ]DEFAULT_CROSS_LDFLAGS[@:>@])
+test "x$CROSS_LDFLAGS" = "x" && CROSS_LDFLAGS="DEFAULT_CROSS_LDFLAGS"
 
 LIMINE_COPYRIGHT=$($GREP Copyright "$SRCDIR/LICENSE.md")
 AC_SUBST(LIMINE_COPYRIGHT, [$LIMINE_COPYRIGHT])
diff --git a/decompressor/GNUmakefile b/decompressor/GNUmakefile
index e963aad1..7468593e 100644
--- a/decompressor/GNUmakefile
+++ b/decompressor/GNUmakefile
@@ -1,4 +1,4 @@
-include $(TOOLCHAIN_FILE)
+include $(CROSS_FILE)
 
 BUILDDIR ?=
 
@@ -57,8 +57,8 @@ override HEADER_DEPS := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=
 all: $(call MKESCAPE,$(BUILDDIR))/decompressor.bin
 
 $(call MKESCAPE,$(BUILDDIR))/decompressor.bin: $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
-	$(LIMINE_LD) '$(call OBJESCAPE,$^)' $(LIMINE_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf'
-	$(LIMINE_OBJCOPY) -O binary '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' '$(call SHESCAPE,$@)'
+	$(CROSS_LD) '$(call OBJESCAPE,$^)' $(CROSS_LDFLAGS) $(INTERNAL_LDFLAGS) -o '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf'
+	$(CROSS_OBJCOPY) -O binary '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/*
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))/tinf'
@@ -68,17 +68,17 @@ $(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/*
 
 $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(LIMINE_CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(LIMINE_CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
 
 -include $(HEADER_DEPS)
 
 $(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
-	$(LIMINE_CC) $(LIMINE_CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
+	$(CROSS_CC) $(CROSS_CFLAGS) -Os $(INTERNAL_CFLAGS) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
 
 $(call MKESCAPE,$(BUILDDIR))/%.o: %.asm
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
diff --git a/toolchain-detect/configure.ac b/toolchain-detect/configure.ac
deleted file mode 100644
index 84f1a25f..00000000
--- a/toolchain-detect/configure.ac
+++ /dev/null
@@ -1,135 +0,0 @@
-AC_INIT([Limine], m4_esyscmd([../version.sh]), [https://github.com/limine-bootloader/limine/issues], [limine], [https://limine-bootloader.org/])
-
-AC_PREREQ(2.69)
-
-BUILDDIR="$(pwd -P)"
-
-if test -f "$BUILDDIR/$ARCHITECTURE-toolchain.mk"; then
-    exit 0
-fi
-
-AC_PROG_GREP
-AC_PROG_SED
-
-ENFORCE_TOOLCHAIN=no
-if test "x$TOOLCHAIN" = "x"; then
-    TOOLCHAIN=$ARCHITECTURE-elf
-else
-    ENFORCE_TOOLCHAIN=yes
-fi
-
-AC_DEFUN([CC_ERROR_MSG], [
-    AC_MSG_ERROR([no suitable LIMINE_CC found, run $srcdir/make_toolchain.sh or install the appropriate GCC/Clang])
-])
-
-if ! test "x$LIMINE_CC" = "x"; then
-    AC_CHECK_PROG([LIMINE_CC_0], [$LIMINE_CC], [yes])
-    if ! test "x$LIMINE_CC_0" = "xyes"; then
-        AC_MSG_ERROR([LIMINE_CC ($LIMINE_CC) not found])
-    fi
-else
-    if test "$TOOLCHAIN" = 'llvm'; then
-        LIMINE_CC='clang'
-    else
-        LIMINE_CC="$TOOLCHAIN-gcc"
-    fi
-    AC_CHECK_PROG([LIMINE_CC_1], [$LIMINE_CC], [yes])
-    if ! test "x$LIMINE_CC_1" = "xyes"; then
-        if test "x$ENFORCE_TOOLCHAIN" = "xyes"; then
-            CC_ERROR_MSG
-        fi
-        LIMINE_CC="clang"
-        AC_CHECK_PROG([LIMINE_CC_2], [$LIMINE_CC], [yes])
-        if ! test "x$LIMINE_CC_2" = "xyes"; then
-            LIMINE_CC="gcc"
-            AC_CHECK_PROG([LIMINE_CC_3], [$LIMINE_CC], [yes])
-            if ! test "x$LIMINE_CC_3" = "xyes"; then
-                LIMINE_CC="cc"
-                AC_CHECK_PROG([LIMINE_CC_4], [$LIMINE_CC], [yes])
-                if ! test "x$LIMINE_CC_4" = "xyes"; then
-                    CC_ERROR_MSG
-                fi
-            fi
-        fi
-    fi
-fi
-AC_SUBST(LIMINE_CC, $LIMINE_CC)
-
-if ! $LIMINE_CC --version >/dev/null 2>&1; then
-    CC_ERROR_MSG
-fi
-
-if $LIMINE_CC --version | $GREP clang >/dev/null 2>&1; then
-    LIMINE_CC="$LIMINE_CC --target=$ARCHITECTURE-elf"
-elif $LIMINE_CC --version | $GREP 'Free Software Foundation' >/dev/null 2>&1; then
-    true
-else
-    CC_ERROR_MSG
-fi
-
-if ! $LIMINE_CC -dumpmachine >/dev/null 2>&1; then
-    CC_ERROR_MSG
-fi
-
-CC_MACHINE="$($LIMINE_CC -dumpmachine | $SED 's/-.*//g')"
-
-if test "x$CC_MACHINE" = "xamd64"; then
-    CC_MACHINE=x86_64
-fi
-
-if test "x$CC_MACHINE" = "xx86_64"; then
-    case "$ARCHITECTURE" in
-        i?86)
-            CC_MACHINE="$ARCHITECTURE"
-            ;;
-        *)
-            ;;
-    esac
-fi
-
-if ! test "x$CC_MACHINE" = "x$ARCHITECTURE"; then
-    CC_ERROR_MSG
-fi
-
-AC_DEFUN([GET_BINUTILS_PROG], [
-    if ! test "x$LIMINE_$1" = "x"; then
-        AC_CHECK_PROG([LIMINE_$1_0], [$LIMINE_$1], [yes])
-        if ! test "x$LIMINE_$1_0" = "xyes"; then
-            AC_MSG_ERROR([LIMINE_$1 ($LIMINE_$1) not found])
-        fi
-    else
-        if test "$TOOLCHAIN" = 'llvm' && test '$2' = 'ld'; then
-            LIMINE_$1='ld.lld'
-        else
-            LIMINE_$1="$TOOLCHAIN-$2"
-        fi
-        AC_CHECK_PROG([LIMINE_$1_1], [$LIMINE_$1], [yes])
-        if ! test "x$LIMINE_$1_1" = "xyes"; then
-            if test "x$ENFORCE_TOOLCHAIN" = "xyes"; then
-                AC_MSG_ERROR([LIMINE_$1 ($LIMINE_$1) not found])
-            fi
-            if test '$2' = 'ld'; then
-                LIMINE_$1='ld.lld'
-            else
-                LIMINE_$1='llvm-$2'
-            fi
-            AC_CHECK_PROG([LIMINE_$1_2], [$LIMINE_$1], [yes])
-            if ! test "x$LIMINE_$1_2" = "xyes"; then
-                LIMINE_$1='$2'
-                AC_CHECK_PROG([LIMINE_$1_3], [$LIMINE_$1], [yes])
-                if ! test "x$LIMINE_$1_3" = "xyes"; then
-                    AC_MSG_ERROR([no suitable LIMINE_$1 found, run $srcdir/make_toolchain.sh or install the appropriate LLVM/GNU binutils])
-                fi
-            fi
-        fi
-    fi
-    AC_SUBST(LIMINE_$1, $LIMINE_$1)
-])
-
-GET_BINUTILS_PROG(LD, ld, linker)
-GET_BINUTILS_PROG(OBJCOPY, objcopy, objcopy)
-GET_BINUTILS_PROG(OBJDUMP, objdump, objdump)
-GET_BINUTILS_PROG(READELF, readelf, readelf)
-
-AC_CONFIG_FILES([$ARCHITECTURE-toolchain.mk:toolchain.mk.in])
-AC_OUTPUT
diff --git a/toolchain-detect/configure.gnu b/toolchain-detect/configure.gnu
deleted file mode 100644
index a3c4c486..00000000
--- a/toolchain-detect/configure.gnu
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /bin/sh
-
-exit 0
diff --git a/toolchain-detect/toolchain.mk.in b/toolchain-detect/toolchain.mk.in
deleted file mode 100644
index 7aed92bd..00000000
--- a/toolchain-detect/toolchain.mk.in
+++ /dev/null
@@ -1,10 +0,0 @@
-override LIMINE_CC := @LIMINE_CC@
-export LIMINE_CC
-override LIMINE_LD := @LIMINE_LD@
-export LIMINE_LD
-override LIMINE_OBJCOPY := @LIMINE_OBJCOPY@
-export LIMINE_OBJCOPY
-override LIMINE_OBJDUMP := @LIMINE_OBJDUMP@
-export LIMINE_OBJDUMP
-override LIMINE_READELF := @LIMINE_READELF@
-export LIMINE_READELF
tab: 248 wrap: offon