build: Get rid of freestanding-toolchain
And some other miscellaneous improvements.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -24,7 +24,6 @@
|
||||
|
||||
/bin
|
||||
/build
|
||||
/toolchain-files
|
||||
/limine-protocol
|
||||
/nyu-efi
|
||||
/freestnd-c-hdrs
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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 \
|
||||
|
||||
140
configure.ac
140
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([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
|
||||
|
||||
|
||||
@@ -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
24
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
|
||||
|
||||
51
test/test.mk
51
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
|
||||
|
||||
Reference in New Issue
Block a user