build: Get rid of freestanding-toolchain

And some other miscellaneous improvements.
This commit is contained in:
Mintsuki
2025-08-07 18:07:29 +02:00
parent 5f5dbbc9a1
commit 897b6ca909
8 changed files with 146 additions and 147 deletions

1
.gitignore vendored
View File

@@ -24,7 +24,6 @@
/bin
/build
/toolchain-files
/limine-protocol
/nyu-efi
/freestnd-c-hdrs

View File

@@ -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

View File

@@ -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 \

View File

@@ -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 \

View File

@@ -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([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])
AC_ARG_VAR([OBJDUMP_FOR_TARGET], [objdump command for Limine])
AC_ARG_VAR([READELF_FOR_TARGET], [readelf command for Limine])
AC_ARG_VAR([TOOLCHAIN_FOR_TARGET], [alternative toolchain prefix for Limine])
rm -rf toolchain-files
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"
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

View File

@@ -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 . \

24
test.mk
View File

@@ -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

View File

@@ -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