build: Get rid of freestanding-toolchain
And some other miscellaneous improvements.
diff --git a/.gitignore b/.gitignore
index 6d51ecb5..084fab6d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,7 +24,6 @@
/bin
/build
-/toolchain-files
/limine-protocol
/nyu-efi
/freestnd-c-hdrs
diff --git a/GNUmakefile.in b/GNUmakefile.in
index 22cfd0ef..50def39f 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -62,6 +62,17 @@ CFLAGS := @CFLAGS@
LDFLAGS := @LDFLAGS@
LIBS := @LIBS@
+CC_FOR_TARGET := @CC_FOR_TARGET@
+export CC_FOR_TARGET
+LD_FOR_TARGET := @LD_FOR_TARGET@
+export LD_FOR_TARGET
+OBJCOPY_FOR_TARGET := @OBJCOPY_FOR_TARGET@
+export OBJCOPY_FOR_TARGET
+OBJDUMP_FOR_TARGET := @OBJDUMP_FOR_TARGET@
+export OBJDUMP_FOR_TARGET
+READELF_FOR_TARGET := @READELF_FOR_TARGET@
+export READELF_FOR_TARGET
+
override WERROR_FLAG := @WERROR_FLAG@
export WERROR_FLAG
@@ -290,7 +301,6 @@ dist:
cp -r '$(call SHESCAPE,$(SRCDIR))'/.git '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)"/
cd '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)" && git checkout .
cd '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)" && ./bootstrap
- rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/build-aux/freestanding-toolchain/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/flanterm/.git"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/flanterm/.gitignore"
rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"$(DIST_OUTPUT)/freestnd-c-hdrs/.git"
@@ -323,7 +333,7 @@ dist:
.PHONY: distclean
distclean: clean
- rm -rf ovmf* config.log config.status GNUmakefile config.h toolchain-files man/man1/limine.1
+ rm -rf ovmf* config.log config.status GNUmakefile config.h man/man1/limine.1
.PHONY: maintainer-clean
maintainer-clean: distclean
@@ -331,7 +341,6 @@ maintainer-clean: distclean
.PHONY: common-uefi-x86-64
common-uefi-x86-64:
- TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk' \
TARGET=uefi-x86-64 \
BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64' \
$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
@@ -342,7 +351,6 @@ common-uefi-x86-64-clean:
.PHONY: common-uefi-aarch64
common-uefi-aarch64:
- TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-aarch64-toolchain.mk' \
TARGET=uefi-aarch64 \
BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-aarch64' \
$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
@@ -353,7 +361,6 @@ common-uefi-aarch64-clean:
.PHONY: common-uefi-riscv64
common-uefi-riscv64:
- TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-riscv64-toolchain.mk' \
TARGET=uefi-riscv64 \
BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-riscv64' \
$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
@@ -364,7 +371,6 @@ common-uefi-riscv64-clean:
.PHONY: common-uefi-loongarch64
common-uefi-loongarch64:
- TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-loongarch64-toolchain.mk' \
TARGET=uefi-loongarch64 \
BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-loongarch64' \
$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
@@ -375,7 +381,6 @@ common-uefi-loongarch64-clean:
.PHONY: common-uefi-ia32
common-uefi-ia32:
- TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-i686-toolchain.mk' \
TARGET=uefi-ia32 \
BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-uefi-ia32' \
$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
@@ -386,7 +391,6 @@ common-uefi-ia32-clean:
.PHONY: common-bios
common-bios:
- TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/bios-i686-toolchain.mk' \
TARGET=bios \
BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-bios' \
$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk
@@ -397,7 +401,6 @@ common-bios-clean:
.PHONY: decompressor
decompressor:
- TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/bios-i686-toolchain.mk' \
BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/decompressor-build' \
$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/decompressor' -f decompressor.mk
diff --git a/bootstrap b/bootstrap
index 7806b935..f3a45a52 100755
--- a/bootstrap
+++ b/bootstrap
@@ -82,11 +82,6 @@ if ! test -f version; then
cp cc-runtime/src/cc-runtime.c common/cc-runtime.s2.c
cp cc-runtime/src/cc-runtime.c decompressor/cc-runtime.c
- clone_repo_commit \
- https://codeberg.org/osdev/freestanding-toolchain.git \
- build-aux/freestanding-toolchain \
- 75fb06aae0fa3cd191f7013985dc55019f7a94d1
-
clone_repo_commit \
https://github.com/limine-bootloader/limine-protocol.git \
limine-protocol \
diff --git a/common/common.mk b/common/common.mk
index 3bee4cee..1cb04350 100644
--- a/common/common.mk
+++ b/common/common.mk
@@ -1,8 +1,5 @@
.SUFFIXES:
-include $(TOOLCHAIN_FILE)
-export OBJDUMP_FOR_TARGET
-
override SRCDIR := $(shell pwd -P)
override SPACE := $(subst ,, )
@@ -11,6 +8,8 @@ override MKESCAPE = $(subst $(SPACE),\ ,$(1))
override SHESCAPE = $(subst ','\'',$(1))
override OBJESCAPE = $(subst .a ,.a' ',$(subst .o ,.o' ',$(call SHESCAPE,$(1))))
+override CC_FOR_TARGET_IS_CLANG := $(shell ! $(CC_FOR_TARGET) --version 2>/dev/null | $(GREP) -q '^Target: '; echo $$?)
+
COM_OUTPUT := false
E9_OUTPUT := false
@@ -69,12 +68,17 @@ override NASMFLAGS_FOR_TARGET := \
$(patsubst -g,-g -F dwarf,$(NASMFLAGS_FOR_TARGET))
ifeq ($(TARGET),bios)
+ ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+ override CC_FOR_TARGET += \
+ -target i686-unknown-none-elf
+ endif
override CFLAGS_FOR_TARGET += \
-fno-PIC \
-m32 \
-march=i686 \
-mabi=sysv \
- -mno-80387
+ -mno-80387 \
+ -mno-mmx
override CPPFLAGS_FOR_TARGET := \
$(CPPFLAGS_FOR_TARGET) \
-DBIOS
@@ -86,6 +90,10 @@ ifeq ($(TARGET),bios)
endif
ifeq ($(TARGET),uefi-x86-64)
+ ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+ override CC_FOR_TARGET += \
+ -target x86_64-unknown-none-elf
+ endif
override CFLAGS_FOR_TARGET += \
-fPIE \
-fshort-wchar \
@@ -109,13 +117,18 @@ ifeq ($(TARGET),uefi-x86-64)
endif
ifeq ($(TARGET),uefi-ia32)
+ ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+ override CC_FOR_TARGET += \
+ -target i686-unknown-none-elf
+ endif
override CFLAGS_FOR_TARGET += \
-fPIE \
-fshort-wchar \
-m32 \
-march=i686 \
-mabi=sysv \
- -mno-80387
+ -mno-80387 \
+ -mno-mmx
override CPPFLAGS_FOR_TARGET := \
-I ../nyu-efi/inc \
$(CPPFLAGS_FOR_TARGET) \
@@ -128,6 +141,10 @@ ifeq ($(TARGET),uefi-ia32)
endif
ifeq ($(TARGET),uefi-aarch64)
+ ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+ override CC_FOR_TARGET += \
+ -target aarch64-unknown-none-elf
+ endif
override CFLAGS_FOR_TARGET += \
-fPIE \
-fshort-wchar \
@@ -141,16 +158,18 @@ ifeq ($(TARGET),uefi-aarch64)
endif
ifeq ($(TARGET),uefi-riscv64)
+ ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+ override CC_FOR_TARGET += \
+ -target riscv64-unknown-none-elf
+ endif
override CFLAGS_FOR_TARGET += \
-fPIE \
-fshort-wchar
-
- ifeq ($(CC_FOR_TARGET_IS_CLANG),yes)
+ ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
override CFLAGS_FOR_TARGET += -march=rv64imac
else
override CFLAGS_FOR_TARGET += -march=rv64imac_zicsr_zifencei
endif
-
override CFLAGS_FOR_TARGET += \
-mabi=lp64 \
-mno-relax
@@ -162,6 +181,10 @@ ifeq ($(TARGET),uefi-riscv64)
endif
ifeq ($(TARGET),uefi-loongarch64)
+ ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+ override CC_FOR_TARGET += \
+ -target loongarch64-unknown-none-elf
+ endif
override CFLAGS_FOR_TARGET += \
-fPIE \
-fshort-wchar \
diff --git a/configure.ac b/configure.ac
index cb88f626..3f9530b6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -113,14 +113,54 @@ GET_PROG_FROM_TOOLCHAIN([STRIP], [strip])
AC_CHECK_HEADERS([stdint.h stddef.h stdbool.h limits.h inttypes.h stdio.h stdlib.h string.h],
[], [AC_MSG_ERROR([required header not found])])
-AC_ARG_VAR([TOOLCHAIN_FOR_TARGET], [alternative toolchain prefix for Limine (or 'llvm', or 'gnu')])
+AC_ARG_VAR([TOOLCHAIN_FOR_TARGET], [alternative toolchain prefix for Limine])
+
AC_ARG_VAR([CC_FOR_TARGET], [C compiler command for Limine])
+if test "x${CC_FOR_TARGET+set}" = "x"; then
+ if test "x${TOOLCHAIN_FOR_TARGET}" = "x"; then
+ CC_FOR_TARGET="clang"
+ else
+ CC_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}gcc"
+ fi
+fi
AC_ARG_VAR([LD_FOR_TARGET], [linker command for Limine])
+if test "x${LD_FOR_TARGET+set}" = "x"; then
+ if test "x${TOOLCHAIN_FOR_TARGET}" = "x"; then
+ LD_FOR_TARGET="ld.lld"
+ else
+ LD_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}ld"
+ fi
+fi
+
+test "x${TOOLCHAIN_FOR_TARGET+set}" = "x" && TOOLCHAIN_FOR_TARGET=llvm-
+
AC_ARG_VAR([OBJCOPY_FOR_TARGET], [objcopy command for Limine])
+test "x${OBJCOPY_FOR_TARGET+set}" = "x" && OBJCOPY_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}objcopy"
AC_ARG_VAR([OBJDUMP_FOR_TARGET], [objdump command for Limine])
+test "x${OBJDUMP_FOR_TARGET+set}" = "x" && OBJDUMP_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}objdump"
AC_ARG_VAR([READELF_FOR_TARGET], [readelf command for Limine])
+test "x${READELF_FOR_TARGET+set}" = "x" && READELF_FOR_TARGET="${TOOLCHAIN_FOR_TARGET}readelf"
-rm -rf toolchain-files
+AC_CHECK_PROG([CC_FOR_TARGET_FOUND], [$CC_FOR_TARGET], [yes])
+if ! test "x$CC_FOR_TARGET_FOUND" = "xyes"; then
+ AC_MSG_ERROR([$CC_FOR_TARGET invalid, set CC_FOR_TARGET to a valid program])
+fi
+AC_CHECK_PROG([LD_FOR_TARGET_FOUND], [$LD_FOR_TARGET], [yes])
+if ! test "x$LD_FOR_TARGET_FOUND" = "xyes"; then
+ AC_MSG_ERROR([$LD_FOR_TARGET invalid, set LD_FOR_TARGET to a valid program])
+fi
+AC_CHECK_PROG([OBJCOPY_FOR_TARGET_FOUND], [$OBJCOPY_FOR_TARGET], [yes])
+if ! test "x$OBJCOPY_FOR_TARGET_FOUND" = "xyes"; then
+ AC_MSG_ERROR([$OBJCOPY_FOR_TARGET invalid, set OBJCOPY_FOR_TARGET to a valid program])
+fi
+AC_CHECK_PROG([OBJDUMP_FOR_TARGET_FOUND], [$OBJDUMP_FOR_TARGET], [yes])
+if ! test "x$OBJDUMP_FOR_TARGET_FOUND" = "xyes"; then
+ AC_MSG_ERROR([$OBJDUMP_FOR_TARGET invalid, set OBJDUMP_FOR_TARGET to a valid program])
+fi
+AC_CHECK_PROG([READELF_FOR_TARGET_FOUND], [$READELF_FOR_TARGET], [yes])
+if ! test "x$READELF_FOR_TARGET_FOUND" = "xyes"; then
+ AC_MSG_ERROR([$READELF_FOR_TARGET invalid, set READELF_FOR_TARGET to a valid program])
+fi
BUILD_ALL="no"
@@ -162,22 +202,6 @@ fi
if test "x$BUILD_BIOS" = "xno"; then
BUILD_BIOS=""
else
- $MKDIR_P toolchain-files
- CC="$CC" \
- ARCHITECTURE=i686 \
- FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
- FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
- WANT_FREESTANDING_CC=yes \
- FREESTANDING_CC="$CC_FOR_TARGET" \
- WANT_FREESTANDING_LD=yes \
- FREESTANDING_LD="$LD_FOR_TARGET" \
- WANT_FREESTANDING_OBJCOPY=yes \
- FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
- WANT_FREESTANDING_OBJDUMP=yes \
- FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
- WANT_FREESTANDING_READELF=yes \
- FREESTANDING_READELF="$READELF_FOR_TARGET" \
- "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 2>"toolchain-files/bios-i686-toolchain.mk" || exit 1
BUILD_BIOS="limine-bios"
NEED_NASM=yes
NEED_GZIP=yes
@@ -194,20 +218,6 @@ AC_ARG_ENABLE([uefi-ia32],
if test "x$BUILD_UEFI_IA32" = "xno"; then
BUILD_UEFI_IA32=""
else
- $MKDIR_P toolchain-files
- CC="$CC" \
- ARCHITECTURE=i686 \
- FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
- FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
- WANT_FREESTANDING_CC=yes \
- FREESTANDING_CC="$CC_FOR_TARGET" \
- WANT_FREESTANDING_LD=yes \
- FREESTANDING_LD="$LD_FOR_TARGET" \
- WANT_FREESTANDING_OBJCOPY=yes \
- FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
- WANT_FREESTANDING_OBJDUMP=yes \
- FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
- "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 2>"toolchain-files/uefi-i686-toolchain.mk" || exit 1
BUILD_UEFI_IA32="limine-uefi-ia32"
NEED_NASM=yes
fi
@@ -223,20 +233,6 @@ AC_ARG_ENABLE([uefi-x86-64],
if test "x$BUILD_UEFI_X86_64" = "xno"; then
BUILD_UEFI_X86_64=""
else
- $MKDIR_P toolchain-files
- CC="$CC" \
- ARCHITECTURE=x86_64 \
- FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
- FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
- WANT_FREESTANDING_CC=yes \
- FREESTANDING_CC="$CC_FOR_TARGET" \
- WANT_FREESTANDING_LD=yes \
- FREESTANDING_LD="$LD_FOR_TARGET" \
- WANT_FREESTANDING_OBJCOPY=yes \
- FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
- WANT_FREESTANDING_OBJDUMP=yes \
- FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
- "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 2>"toolchain-files/uefi-x86_64-toolchain.mk" || exit 1
BUILD_UEFI_X86_64="limine-uefi-x86-64"
NEED_NASM=yes
fi
@@ -252,20 +248,6 @@ AC_ARG_ENABLE([uefi-aarch64],
if test "x$BUILD_UEFI_AARCH64" = "xno"; then
BUILD_UEFI_AARCH64=""
else
- mkdir -p toolchain-files
- CC="$CC" \
- ARCHITECTURE=aarch64 \
- FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
- FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
- WANT_FREESTANDING_CC=yes \
- FREESTANDING_CC="$CC_FOR_TARGET" \
- WANT_FREESTANDING_LD=yes \
- FREESTANDING_LD="$LD_FOR_TARGET" \
- WANT_FREESTANDING_OBJCOPY=yes \
- FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
- WANT_FREESTANDING_OBJDUMP=yes \
- FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
- "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 2>"toolchain-files/uefi-aarch64-toolchain.mk" || exit 1
BUILD_UEFI_AARCH64="limine-uefi-aarch64"
fi
@@ -280,20 +262,6 @@ AC_ARG_ENABLE([uefi-riscv64],
if test "x$BUILD_UEFI_RISCV64" = "xno"; then
BUILD_UEFI_RISCV64=""
else
- mkdir -p toolchain-files
- CC="$CC" \
- ARCHITECTURE=riscv64 \
- FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
- FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
- WANT_FREESTANDING_CC=yes \
- FREESTANDING_CC="$CC_FOR_TARGET" \
- WANT_FREESTANDING_LD=yes \
- FREESTANDING_LD="$LD_FOR_TARGET" \
- WANT_FREESTANDING_OBJCOPY=yes \
- FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
- WANT_FREESTANDING_OBJDUMP=yes \
- FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
- "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 2>"toolchain-files/uefi-riscv64-toolchain.mk" || exit 1
BUILD_UEFI_RISCV64="limine-uefi-riscv64"
fi
@@ -308,20 +276,6 @@ AC_ARG_ENABLE([uefi-loongarch64],
if test "x$BUILD_UEFI_LOONGARCH64" = "xno"; then
BUILD_UEFI_LOONGARCH64=""
else
- mkdir -p toolchain-files
- CC="$CC" \
- ARCHITECTURE=loongarch64 \
- FREESTANDING_TOOLCHAIN_SUFFIX="_FOR_TARGET" \
- FREESTANDING_TOOLCHAIN="$TOOLCHAIN_FOR_TARGET" \
- WANT_FREESTANDING_CC=yes \
- FREESTANDING_CC="$CC_FOR_TARGET" \
- WANT_FREESTANDING_LD=yes \
- FREESTANDING_LD="$LD_FOR_TARGET" \
- WANT_FREESTANDING_OBJCOPY=yes \
- FREESTANDING_OBJCOPY="$OBJCOPY_FOR_TARGET" \
- WANT_FREESTANDING_OBJDUMP=yes \
- FREESTANDING_OBJDUMP="$OBJDUMP_FOR_TARGET" \
- "$SRCDIR/build-aux/freestanding-toolchain/freestanding-toolchain" 2>"toolchain-files/uefi-loongarch64-toolchain.mk" || exit 1
BUILD_UEFI_LOONGARCH64="limine-uefi-loongarch64"
fi
diff --git a/decompressor/decompressor.mk b/decompressor/decompressor.mk
index 4aae3ee9..5000a1fb 100644
--- a/decompressor/decompressor.mk
+++ b/decompressor/decompressor.mk
@@ -1,13 +1,18 @@
.SUFFIXES:
-include $(TOOLCHAIN_FILE)
-
override SPACE := $(subst ,, )
override MKESCAPE = $(subst $(SPACE),\ ,$(1))
override SHESCAPE = $(subst ','\'',$(1))
override OBJESCAPE = $(subst .a ,.a' ',$(subst .o ,.o' ',$(call SHESCAPE,$(1))))
+override CC_FOR_TARGET_IS_CLANG := $(shell ! $(CC_FOR_TARGET) --version 2>/dev/null | $(GREP) -q '^Target: '; echo $$?)
+
+ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
+ override CC_FOR_TARGET += \
+ -target i686-unknown-none-elf
+endif
+
override CFLAGS_FOR_TARGET += \
-Os \
-Wall \
@@ -29,7 +34,8 @@ override CFLAGS_FOR_TARGET += \
-m32 \
-march=i686 \
-mabi=sysv \
- -mno-80387
+ -mno-80387 \
+ -mno-mmx
override CPPFLAGS_FOR_TARGET := \
-I . \
diff --git a/test.mk b/test.mk
index 0eae9bbf..3703da9c 100644
--- a/test.mk
+++ b/test.mk
@@ -51,7 +51,7 @@ fat12-test:
$(MAKE) test.hdd
$(MAKE) limine-bios
$(MAKE) limine
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=x86
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show test.hdd > loopback_dev
@@ -74,7 +74,7 @@ fat16-test:
$(MAKE) test.hdd
$(MAKE) limine-bios
$(MAKE) limine
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=x86
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show test.hdd > loopback_dev
@@ -98,7 +98,7 @@ legacy-fat16-test:
fdisk -l mbrtest.hdd
$(MAKE) limine-bios
$(MAKE) limine
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=x86
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show mbrtest.hdd > loopback_dev
@@ -121,7 +121,7 @@ fat32-test:
$(MAKE) test.hdd
$(MAKE) limine-bios
$(MAKE) limine
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=x86
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show test.hdd > loopback_dev
@@ -143,7 +143,7 @@ iso9660-test:
$(MAKE) test-clean
$(MAKE) test.hdd
$(MAKE) limine-bios
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=x86
rm -rf test_image/
$(MKDIR_P) test_image/boot
cp -rv $(BINDIR)/* test_image/boot/
@@ -157,7 +157,7 @@ full-hybrid-test:
$(MAKE) ovmf-ia32
$(MAKE) test-clean
$(MAKE) all
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=x86
rm -rf test_image/
$(MKDIR_P) test_image/boot
cp -rv $(BINDIR)/* test_image/boot/
@@ -177,7 +177,7 @@ full-hybrid-test:
pxe-test:
$(MAKE) test-clean
$(MAKE) limine-bios
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=x86
rm -rf test_image/
$(MKDIR_P) test_image/boot
cp -rv $(BINDIR)/* test_image/boot/
@@ -190,7 +190,7 @@ uefi-x86-64-test:
$(MAKE) test-clean
$(MAKE) test.hdd
$(MAKE) limine-uefi-x86-64
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=x86
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show test.hdd > loopback_dev
@@ -214,7 +214,7 @@ uefi-aa64-test:
$(MAKE) test-clean
$(MAKE) test.hdd
$(MAKE) limine-uefi-aarch64
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-aarch64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=aarch64
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show test.hdd > loopback_dev
@@ -238,7 +238,7 @@ uefi-rv64-test:
$(MAKE) test-clean
$(MAKE) test.hdd
$(MAKE) limine-uefi-riscv64
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-riscv64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=riscv64
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show test.hdd > loopback_dev
@@ -262,7 +262,7 @@ uefi-loongarch64-test:
$(MAKE) test-clean
$(MAKE) test.hdd
$(MAKE) limine-uefi-loongarch64
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-loongarch64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=loongarch64
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show test.hdd > loopback_dev
@@ -286,7 +286,7 @@ uefi-ia32-test:
$(MAKE) test-clean
$(MAKE) test.hdd
$(MAKE) limine-uefi-ia32
- $(MAKE) -C test -f test.mk TOOLCHAIN_FILE='$(call SHESCAPE,$(BUILDDIR))/toolchain-files/uefi-x86_64-toolchain.mk'
+ $(MAKE) -C test -f test.mk ARCH=x86
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show test.hdd > loopback_dev
diff --git a/test/test.mk b/test/test.mk
index 23963385..d10c063a 100644
--- a/test/test.mk
+++ b/test/test.mk
@@ -1,25 +1,39 @@
-include $(TOOLCHAIN_FILE)
-
override CC := $(CC_FOR_TARGET)
-CFLAGS = -O2 -g -Wall -Wextra
-LDFLAGS =
+override CFLAGS := -O2 -g -Wall -Wextra
+override LDFLAGS :=
override LD := $(LD_FOR_TARGET)
-override QEMU := qemu-system-x86_64
-QEMUFLAGS = -m 1G -enable-kvm -cpu host
-ifneq ($(findstring x86_64,$(shell $(CC_FOR_TARGET) -dumpmachine)),)
+override CC_IS_CLANG := $(shell ! $(CC) --version 2>/dev/null | $(GREP) -q '^Target: '; echo $$?)
+
+ifeq ($(ARCH),x86)
+ifeq ($(CC_IS_CLANG),1)
+override CC += \
+ -target x86_64-unknown-none-elf
+endif
override LDFLAGS += \
-m elf_x86_64
endif
-ifneq ($(findstring aarch64,$(shell $(CC_FOR_TARGET) -dumpmachine)),)
+ifeq ($(ARCH),aarch64)
+ifeq ($(CC_IS_CLANG),1)
+override CC += \
+ -target aarch64-unknown-none-elf
+endif
override LDFLAGS += \
-m aarch64elf
endif
-ifneq ($(findstring riscv64,$(shell $(CC_FOR_TARGET) -dumpmachine)),)
+ifeq ($(ARCH),riscv64)
+ifeq ($(CC_IS_CLANG),1)
+override CC += \
+ -target riscv64-unknown-none-elf
+endif
override LDFLAGS += \
-m elf64lriscv
endif
-ifneq ($(findstring loongarch64,$(shell $(CC_FOR_TARGET) -dumpmachine)),)
+ifeq ($(ARCH),loongarch64)
+ifeq ($(CC_IS_CLANG),1)
+override CC += \
+ -target loongarch64-unknown-none-elf
+endif
override LDFLAGS += \
-m elf64loongarch
endif
@@ -60,7 +74,7 @@ override CFLAGS += \
-D_LIMINE_PROTO \
-DLIMINE_API_REVISION=3
-ifneq ($(findstring x86_64,$(shell $(CC_FOR_TARGET) -dumpmachine)),)
+ifeq ($(ARCH),x86)
override CFLAGS += \
-m64 \
-march=x86-64 \
@@ -69,12 +83,14 @@ override CFLAGS += \
-mno-red-zone
endif
-ifneq ($(findstring aarch64,$(shell $(CC_FOR_TARGET) -dumpmachine)),)
+ifeq ($(ARCH),aarch64)
override CFLAGS += \
+ -mcpu=generic \
+ -march=armv8-a+nofp+nosimd \
-mgeneral-regs-only
endif
-ifneq ($(findstring riscv64,$(shell $(CC_FOR_TARGET) -dumpmachine)),)
+ifeq ($(ARCH),riscv64)
override CFLAGS += \
-march=rv64imac \
-mabi=lp64 \
@@ -83,10 +99,13 @@ override LDFLAGS += \
--no-relax
endif
-ifneq ($(findstring loongarch64,$(shell $(CC_FOR_TARGET) -dumpmachine)),)
+ifeq ($(ARCH),loongarch64)
override CFLAGS += \
-march=loongarch64 \
- -mabi=lp64s
+ -mabi=lp64s \
+ -mfpu=none \
+ -msimd=none \
+ -mno-relax
override LDFLAGS += \
--no-relax
endif
@@ -107,7 +126,7 @@ override CFLAGS_MB := \
-I../common/protos \
-isystem ../freestnd-c-hdrs/include
-ifneq ($(findstring 86,$(shell $(CC_FOR_TARGET) -dumpmachine)),)
+ifeq ($(ARCH),x86)
all: test.elf multiboot2.elf multiboot.elf device_tree.dtb
else
all: test.elf device_tree.dtb
