limine/configure.ac

232 lines
6.6 KiB
Plaintext
Raw Normal View History

2023-02-21 00:24:21 +03:00
AC_INIT([Limine], [m4_esyscmd([./version.sh])], [https://github.com/limine-bootloader/limine/issues], [limine], [https://limine-bootloader.org/])
2022-01-16 08:09:36 +03:00
2023-02-19 12:07:21 +03:00
AC_PREREQ([2.69])
2022-01-16 08:09:36 +03:00
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_SUBDIRS([cross-detect])
2022-02-11 22:46:57 +03:00
SRCDIR="$(cd "$srcdir" && pwd -P)"
BUILDDIR="$(pwd -P)"
2022-01-16 08:09:36 +03:00
2023-02-19 12:07:21 +03:00
AC_SUBST([SRCDIR])
AC_SUBST([BUILDDIR])
2022-02-11 22:46:57 +03:00
REGEN_DATE="m4_esyscmd([date '+%B %Y' | tr -d '\n'])"
AC_SUBST([REGEN_DATE])
2022-01-28 12:23:26 +03:00
test "x$CFLAGS" = "x" && CFLAGS='-g -O2 -pipe -Wall -Wextra'
2023-02-19 12:07:21 +03:00
AC_LANG([C])
AC_PROG_CC
2022-01-28 12:23:26 +03:00
2023-02-19 12:07:21 +03:00
AC_CHECK_HEADERS([stdint.h stddef.h stdbool.h limits.h inttypes.h stdio.h stdlib.h string.h],
2023-02-21 00:24:21 +03:00
[], [AC_MSG_ERROR([required header not found])])
2022-01-28 12:23:26 +03:00
werror_state="no"
AC_ARG_ENABLE([werror],
2023-02-21 00:24:21 +03:00
[AS_HELP_STRING([--enable-werror], [treat warnings as errors])],
[werror_state="$enableval"])
2022-01-28 12:23:26 +03:00
if test "$werror_state" = "yes"; then
2023-02-19 12:07:21 +03:00
AC_SUBST([WERROR], [-Werror])
2022-01-28 12:23:26 +03:00
CFLAGS="$CFLAGS -Werror"
fi
AC_PROG_MKDIR_P
2022-08-22 19:41:32 +03:00
case "$MKDIR_P" in
.*) MKDIR_P="$(cd "$(dirname "$MKDIR_P")" && pwd -P)/$(basename "$MKDIR_P")" ;;
esac
2022-01-22 05:46:48 +03:00
AC_PROG_INSTALL
2022-08-22 19:41:32 +03:00
case "$INSTALL" in
.*) INSTALL="$(cd "$(dirname "$INSTALL")" && pwd -P)/$(basename "$INSTALL")" ;;
esac
2022-02-01 10:04:55 +03:00
AC_PROG_SED
AC_PROG_GREP
2022-02-01 10:04:55 +03:00
AC_PROG_AWK
AC_CHECK_PROG([FIND_FOUND], [find], [yes])
if ! test "x$FIND_FOUND" = "xyes"; then
AC_MSG_ERROR([find not found, please install find before configuring])
fi
2022-01-16 08:09:36 +03:00
NATIVE_STRIP="$($CC -dumpmachine)"-strip
2023-02-19 12:07:21 +03:00
AC_CHECK_PROG([NATIVE_STRIP_FOUND], [$NATIVE_STRIP], [yes])
if ! test "x$NATIVE_STRIP_FOUND" = "xyes"; then
NATIVE_STRIP=strip
fi
2023-02-19 12:07:21 +03:00
AC_SUBST([NATIVE_STRIP])
rm -rf "$BUILDDIR/cross-files"
2022-07-04 10:09:46 +03:00
2022-06-15 06:01:22 +03:00
BUILD_ALL="no"
AC_ARG_ENABLE([all],
2023-02-21 00:24:21 +03:00
[AS_HELP_STRING([--enable-all], [enable ALL ports])],
[BUILD_ALL="$enableval"])
2022-06-15 06:01:22 +03:00
BUILD_CD="$BUILD_ALL"
AC_ARG_ENABLE([bios-cd],
2023-02-21 00:24:21 +03:00
[AS_HELP_STRING([--enable-bios-cd], [enable building the x86 BIOS CD image])],
[BUILD_CD="$enableval"])
2023-02-19 12:07:21 +03:00
AC_SUBST([BUILD_CD])
BUILD_PXE="$BUILD_ALL"
AC_ARG_ENABLE([bios-pxe],
2023-02-21 00:24:21 +03:00
[AS_HELP_STRING([--enable-bios-pxe], [enable building the x86 BIOS PXE image])],
[BUILD_PXE="$enableval"])
2023-02-19 12:07:21 +03:00
AC_SUBST([BUILD_PXE])
2022-06-15 06:01:22 +03:00
BUILD_BIOS="$BUILD_ALL"
AC_ARG_ENABLE([bios],
2023-02-21 00:24:21 +03:00
[AS_HELP_STRING([--enable-bios], [enable building the x86 BIOS port])],
[BUILD_BIOS="$enableval"])
BUILD_LIMINE_DEPLOY="$BUILD_BIOS"
if test "x$BUILD_BIOS" = "xno"; then
if test "x$BUILD_CD" = "xyes"; then
BUILD_BIOS="yes"
fi
if test "x$BUILD_PXE" = "xyes"; then
BUILD_BIOS="yes"
fi
fi
if test "x$BUILD_BIOS" = "xno"; then
BUILD_BIOS=""
else
(
$MKDIR_P "$BUILDDIR/cross-files"
cd "$BUILDDIR/cross-files"
2023-02-12 09:39:17 +03:00
CC="$CC" TRIPLET=i686-elf WANT_CROSS_LD=yes WANT_CROSS_OBJCOPY=yes WANT_CROSS_OBJDUMP=yes WANT_CROSS_READELF=yes "$SRCDIR/cross-detect/configure"
2022-06-20 01:22:02 +03:00
) || exit 1
BUILD_BIOS="limine-bios"
NEED_NASM=yes
NEED_GZIP=yes
fi
2023-02-19 12:07:21 +03:00
AC_SUBST([BUILD_BIOS])
AC_SUBST([BUILD_LIMINE_DEPLOY])
2022-06-15 06:01:22 +03:00
BUILD_UEFI_IA32="$BUILD_ALL"
AC_ARG_ENABLE([uefi-ia32],
2023-02-21 00:24:21 +03:00
[AS_HELP_STRING([--enable-uefi-ia32], [enable building the IA-32 UEFI port])],
[BUILD_UEFI_IA32="$enableval"])
if test "x$BUILD_UEFI_IA32" = "xno"; then
BUILD_UEFI_IA32=""
else
(
$MKDIR_P "$BUILDDIR/cross-files"
cd "$BUILDDIR/cross-files"
2023-02-12 09:39:17 +03:00
CC="$CC" TRIPLET=i686-elf WANT_CROSS_LD=yes WANT_CROSS_OBJCOPY=yes WANT_CROSS_OBJDUMP=yes "$SRCDIR/cross-detect/configure"
2022-06-20 01:22:02 +03:00
) || exit 1
BUILD_UEFI_IA32="limine-uefi-ia32"
NEED_NASM=yes
fi
2023-02-19 12:07:21 +03:00
AC_SUBST([BUILD_UEFI_IA32])
2022-06-15 06:01:22 +03:00
BUILD_UEFI_X86_64="$BUILD_ALL"
AC_ARG_ENABLE([uefi-x86-64],
2023-02-21 00:24:21 +03:00
[AS_HELP_STRING([--enable-uefi-x86-64], [enable building the x86-64 UEFI port])],
[BUILD_UEFI_X86_64="$enableval"])
if test "x$BUILD_UEFI_X86_64" = "xno"; then
BUILD_UEFI_X86_64=""
else
(
$MKDIR_P "$BUILDDIR/cross-files"
cd "$BUILDDIR/cross-files"
2023-02-12 09:39:17 +03:00
CC="$CC" TRIPLET=x86_64-elf WANT_CROSS_LD=yes WANT_CROSS_OBJCOPY=yes WANT_CROSS_OBJDUMP=yes "$SRCDIR/cross-detect/configure"
2022-06-20 01:22:02 +03:00
) || exit 1
BUILD_UEFI_X86_64="limine-uefi-x86-64"
NEED_NASM=yes
fi
2023-02-19 12:07:21 +03:00
AC_SUBST([BUILD_UEFI_X86_64])
BUILD_UEFI_AARCH64="$BUILD_ALL"
AC_ARG_ENABLE([uefi-aarch64],
2023-02-21 00:24:21 +03:00
[AS_HELP_STRING([--enable-uefi-aarch64], [enable building the aarch64 UEFI port])],
[BUILD_UEFI_AARCH64="$enableval"])
if test "x$BUILD_UEFI_AARCH64" = "xno"; then
BUILD_UEFI_AARCH64=""
else
(
mkdir -p "$BUILDDIR/cross-files"
cd "$BUILDDIR/cross-files"
2023-02-12 09:39:17 +03:00
CC="$CC" TRIPLET=aarch64-elf WANT_CROSS_LD=yes WANT_CROSS_OBJCOPY=yes WANT_CROSS_OBJDUMP=yes "$SRCDIR/cross-detect/configure"
) || exit 1
BUILD_UEFI_AARCH64="limine-uefi-aarch64"
fi
2023-02-19 12:07:21 +03:00
AC_SUBST([BUILD_UEFI_AARCH64])
2022-06-15 06:01:22 +03:00
BUILD_CD_EFI="$BUILD_ALL"
AC_ARG_ENABLE([uefi-cd],
2023-02-21 00:24:21 +03:00
[AS_HELP_STRING([--enable-uefi-cd], [enable building limine-cd-efi.bin])],
[BUILD_CD_EFI="$enableval"])
if ! test "x$BUILD_CD_EFI" = "xno"; then
AC_CHECK_PROG([MTOOLS_FOUND], [mcopy], [yes])
if ! test "x$MTOOLS_FOUND" = "xyes"; then
if test "x$BUILD_CD_EFI" = "xyes"; then
AC_MSG_ERROR([mtools not found, install mtools to build limine-cd-efi.bin])
fi
AC_MSG_WARN([mtools not found, install mtools to build limine-cd-efi.bin])
BUILD_CD_EFI="no"
fi
fi
2023-02-19 12:07:21 +03:00
AC_SUBST([BUILD_CD_EFI])
if test "x$NEED_NASM" = "xyes"; then
AC_CHECK_PROG([NASM_FOUND], [nasm], [yes])
if ! test "x$NASM_FOUND" = "xyes"; then
AC_MSG_ERROR([nasm not found, please install nasm before configuring])
fi
fi
if test "x$NEED_GZIP" = "xyes"; then
AC_CHECK_PROG([GZIP_FOUND], [gzip], [yes])
if ! test "x$GZIP_FOUND" = "xyes"; then
AC_MSG_ERROR([gzip not found, please install gzip before configuring])
fi
fi
2023-02-19 12:07:21 +03:00
AC_ARG_VAR([CROSS_TOOLCHAIN], [alternative toolchain prefix for Limine (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])
2022-02-01 10:04:55 +03:00
m4_define([DEFAULT_CROSS_CFLAGS], [-g -O2 -pipe -Wall -Wextra])
2023-02-19 12:07:21 +03:00
AC_ARG_VAR([CROSS_CFLAGS], [C flags for Limine @<:@default: ]DEFAULT_CROSS_CFLAGS[@:>@])
test "x$CROSS_CFLAGS" = "x" && CROSS_CFLAGS="DEFAULT_CROSS_CFLAGS"
2023-02-21 00:24:21 +03:00
if test "$werror_state" = "yes"; then
CROSS_CFLAGS="$CROSS_CFLAGS -Werror"
fi
2022-02-01 10:04:55 +03:00
m4_define([DEFAULT_CROSS_LDFLAGS], [])
2023-02-19 12:07:21 +03:00
AC_ARG_VAR([CROSS_LDFLAGS], [Linker flags for Limine @<:@default: ]DEFAULT_CROSS_LDFLAGS[@:>@])
test "x$CROSS_LDFLAGS" = "x" && CROSS_LDFLAGS="DEFAULT_CROSS_LDFLAGS"
2022-01-16 08:09:36 +03:00
LIMINE_COPYRIGHT=$($GREP Copyright "$SRCDIR/LICENSE.md")
2023-02-19 12:07:21 +03:00
AC_SUBST([LIMINE_COPYRIGHT])
2023-02-19 12:07:21 +03:00
AC_PREFIX_DEFAULT([/usr/local])
2022-01-16 08:09:36 +03:00
AC_CONFIG_FILES([man/man1/limine-version.1 man/man1/limine-deploy.1 man/man1/limine-enroll-config.1 GNUmakefile config.h])
2022-01-16 08:09:36 +03:00
AC_OUTPUT