3 # Process this file with autoconf to produce a configure script.
5 # Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
7 # This configure.ac is free software; the author
8 # gives unlimited permission to copy and/or distribute it,
9 # with or without modifications, as long as this notice is preserved.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
13 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
16 dnl This configure script is complicated, because GRUB needs to deal
17 dnl with three potentially different types:
19 dnl build -- the environment for building GRUB
20 dnl host -- the environment for running utilities
21 dnl target -- the environment for running GRUB
23 dnl In addition, GRUB needs to deal with a platform specification
24 dnl which specifies the system running GRUB, such as firmware.
25 dnl This is necessary because the target type in autoconf does not
26 dnl describe such a system very well.
28 dnl The current strategy is to use variables with no prefix (such as
29 dnl CC, CFLAGS, etc.) for the host type as well as the build type,
30 dnl because GRUB does not need to use those variables for the build
31 dnl type, so there is no conflict. Variables with the prefix "TARGET_"
32 dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
35 AC_INIT([GRUB],[2.02~beta2],[bug-grub@gnu.org])
37 AC_CONFIG_AUX_DIR([build-aux])
39 # We don't want -g -O2 by default in CFLAGS
42 # Checks for host and target systems.
44 save_program_prefix="${program_prefix}"
46 program_prefix="${save_program_prefix}"
48 AM_INIT_AUTOMAKE([1.10.1])
50 AC_CONFIG_SRCDIR([include/grub/dl.h])
51 AC_CONFIG_HEADER([config-util.h])
53 # Program name transformations
55 grub_TRANSFORM([grub-bios-setup])
56 grub_TRANSFORM([grub-editenv])
57 grub_TRANSFORM([grub-install])
58 grub_TRANSFORM([grub-mkconfig])
59 grub_TRANSFORM([grub-mkfont])
60 grub_TRANSFORM([grub-mkimage])
61 grub_TRANSFORM([grub-glue-efi])
62 grub_TRANSFORM([grub-mklayout])
63 grub_TRANSFORM([grub-mkpasswd-pbkdf2])
64 grub_TRANSFORM([grub-mkrelpath])
65 grub_TRANSFORM([grub-mkrescue])
66 grub_TRANSFORM([grub-probe])
67 grub_TRANSFORM([grub-reboot])
68 grub_TRANSFORM([grub-script-check])
69 grub_TRANSFORM([grub-set-default])
70 grub_TRANSFORM([grub-sparc64-setup])
71 grub_TRANSFORM([grub-render-label])
72 grub_TRANSFORM([grub-file])
74 # Optimization flag. Allow user to override.
75 if test "x$TARGET_CFLAGS" = x; then
76 TARGET_CFLAGS="$TARGET_CFLAGS -Os"
79 # Default HOST_CPPFLAGS
80 HOST_CPPFLAGS="$HOST_CPPFLAGS -Wall -W"
81 HOST_CPPFLAGS="$HOST_CPPFLAGS -I\$(top_builddir)/include"
82 HOST_CPPFLAGS="$HOST_CPPFLAGS -DGRUB_UTIL=1"
84 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -Wall -W"
85 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_srcdir)/include"
86 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_builddir)/include"
89 i[[3456]]86) target_cpu=i386 ;;
90 amd64) target_cpu=x86_64 ;;
91 sparc) target_cpu=sparc64 ;;
94 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPSEL=1";
98 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPS=1";
108 # Specify the platform (such as firmware).
109 AC_ARG_WITH([platform],
110 AS_HELP_STRING([--with-platform=PLATFORM],
111 [select the host platform [[guessed]]]))
113 # Guess the platform if not specified.
114 if test "x$with_platform" = x; then
115 case "$target_cpu"-"$target_vendor" in
116 i386-apple) platform=efi ;;
117 i386-*) platform=pc ;;
118 x86_64-apple) platform=efi ;;
119 x86_64-*) platform=pc ;;
120 powerpc-*) platform=ieee1275 ;;
121 powerpc64-*) platform=ieee1275 ;;
122 powerpc64le-*) platform=ieee1275 ;;
123 sparc64-*) platform=ieee1275 ;;
124 mipsel-*) platform=loongson ;;
125 mips-*) platform=arc ;;
126 ia64-*) platform=efi ;;
127 arm-*) platform=uboot ;;
128 arm64-*) platform=efi ;;
130 AC_MSG_WARN([unsupported CPU: "$target_cpu" - only building utilities])
135 platform="$with_platform"
138 case "$target_cpu"-"$platform" in
143 x86_64-*) target_cpu=i386 ;;
144 powerpc64-ieee1275) target_cpu=powerpc ;;
145 powerpc64le-ieee1275) target_cpu=powerpc ;;
148 # Check if the platform is supported, make final adjustments.
149 case "$target_cpu"-"$platform" in
157 i386-linuxbios) platform=coreboot ;;
164 mips-qemu-mips) platform=qemu_mips;;
168 mipsel-qemu-mips) platform=qemu_mips;;
169 mipsel-yeeloong) platform=loongson ;;
170 mipsel-fuloong) platform=loongson ;;
177 *) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
180 if test x$platform != xemu ; then
181 case "$target_cpu" in
182 i386 | powerpc) target_m32=1 ;;
183 x86_64 | sparc64) target_m64=1 ;;
187 if test x"$target_cpu-$platform" = xsparc64-emu ; then
192 windows* | mingw32*) target_os=cygwin ;;
195 # This normalizes the names, and creates a new variable ("host_kernel")
196 # while at it, since the mapping is not always 1:1 (e.g. different OSes
197 # using the same kernel type).
199 gnu*) host_kernel=hurd ;;
200 linux*) host_kernel=linux ;;
201 freebsd* | kfreebsd*-gnu) host_kernel=kfreebsd ;;
202 netbsd*) host_kernel=netbsd ;;
203 solaris*) host_kernel=illumos ;;
204 darwin*) host_kernel=xnu ;;
205 cygwin | windows* | mingw32*) host_kernel=windows ;;
209 cygwin | windows* | mingw32*) have_exec=n ;;
210 aros*) have_exec=n ;;
215 coreboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_COREBOOT=1" ;;
216 multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
217 efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
218 xen) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_XEN=1" ;;
219 ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
220 uboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_UBOOT=1" ;;
221 qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
222 pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;;
223 emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
224 loongson) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_LOONGSON=1" ;;
225 qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1" ;;
226 arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;;
228 if test x${target_cpu} = xmipsel ; then
229 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo mips_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
231 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
234 case "${target_cpu}-$platform" in
236 TARGET_LINK_ADDR=0x88200000
237 TARGET_DECOMPRESSOR_LINK_ADDR=0x88100000
240 TARGET_LINK_ADDR=0x80700000
241 TARGET_DECOMPRESSOR_LINK_ADDR=0x80600000
243 mips*-qemu_mips | mips*-loongson)
244 TARGET_DECOMPRESSOR_LINK_ADDR=0x80100000
248 AC_SUBST(TARGET_LINK_ADDR)
249 AC_SUBST(TARGET_DECOMPRESSOR_LINK_ADDR)
251 TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
255 AC_SUBST(host_kernel)
260 # Define default variables
263 AC_ARG_WITH([bootdir],
264 AS_HELP_STRING([--with-bootdir=DIR],
265 [set the name of /boot directory [[guessed]]]),
266 [have_with_bootdir=y],
267 [have_with_bootdir=n])
268 if test x$have_with_bootdir = xy; then
269 bootdirname="$with_bootdir"
273 # Because /boot is used for the boot block in NetBSD and OpenBSD,
275 *) bootdirname='boot' ;;
279 AC_SUBST(bootdirname)
280 AC_DEFINE_UNQUOTED(GRUB_BOOT_DIR_NAME, "$bootdirname",
281 [Default boot directory name]")
283 AC_ARG_WITH([grubdir],
284 AS_HELP_STRING([--with-grubdir=DIR],
285 [set the name of grub directory [[guessed]]]),
286 [grubdirname="$with_grubdir"],
287 [grubdirname="$PACKAGE"])
289 AC_SUBST(grubdirname)
290 AC_DEFINE_UNQUOTED(GRUB_DIR_NAME, "$grubdirname",
291 [Default grub directory name])
294 # Checks for build programs.
297 # Although cmp is listed in the GNU Coding Standards as a command which
298 # can used directly, OpenBSD lacks cmp in the default installation.
299 AC_CHECK_PROGS([CMP], [cmp])
300 if test "x$CMP" = x; then
301 AC_MSG_ERROR([cmp is not found])
304 AC_CHECK_PROGS([YACC], [bison])
305 if test "x$YACC" = x; then
306 AC_MSG_ERROR([bison is not found])
318 if test "x$LEX" = "x:"; then
319 AC_MSG_ERROR([flex is not found])
321 version=`$LEX --version | $AWK '{ split($NF,x,"."); print x[[1]]*10000+x[[2]]*100+x[[3]]; }'`
322 if test -n "$version" -a "$version" -ge 20535; then
325 AC_MSG_ERROR([flex is too old. GRUB requires 2.5.35 or above])
329 # These are not a "must".
330 AC_PATH_PROGS(MAKEINFO, makeinfo true)
333 # Checks for host programs.
343 test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
345 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
348 AM_GNU_GETTEXT([external])
351 # Identify characteristics of the host architecture.
352 unset ac_cv_c_bigendian
354 if test x"$target_cpu-$platform" = xsparc64-emu ; then
355 CFLAGS="$CFLAGS -m64"
356 HOST_CFLAGS="$HOST_CFLAGS -m64"
360 AC_CHECK_SIZEOF(void *)
361 AC_CHECK_SIZEOF(long)
364 cygwin | windows* | mingw32*)
365 HOST_CPPFLAGS="$HOST_CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
366 CPPFLAGS="$CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
367 AC_CHECK_SIZEOF(TCHAR,,[#include <windows.h>])
371 if test x$USE_NLS = xno; then
372 HOST_CFLAGS="$HOST_CFLAGS -fno-builtin-gettext"
375 if test "x$cross_compiling" = xyes; then
376 AC_MSG_WARN([cannot generate manual pages while cross compiling])
378 AC_PATH_PROG(HELP2MAN, help2man)
381 # Check for functions and headers.
382 AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
383 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
385 AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
386 #include <sys/param.h>
387 #include <sys/mount.h>])
389 AC_CHECK_MEMBERS([struct statfs.f_mntfromname],,,[$ac_includes_default
390 #include <sys/param.h>
391 #include <sys/mount.h>])
393 # For opendisk() and getrawpartition() on NetBSD.
394 # Used in util/deviceiter.c and in util/hostdisk.c.
395 AC_CHECK_HEADER([util.h], [
396 AC_CHECK_LIB([util], [opendisk], [
398 AC_DEFINE(HAVE_OPENDISK, 1, [Define if opendisk() in -lutil can be used])
400 AC_CHECK_LIB([util], [getrawpartition], [
402 AC_DEFINE(HAVE_GETRAWPARTITION, 1, [Define if getrawpartition() in -lutil can be used])
407 AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_host_cc_wtrampolines], [
408 SAVED_CFLAGS="$CFLAGS"
409 CFLAGS="$HOST_CFLAGS -Wtrampolines -Werror"
410 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
411 int va_arg_func (int fixed, va_list args);]], [[]])],
412 [grub_cv_host_cc_wtrampolines=yes],
413 [grub_cv_host_cc_wtrampolines=no])
414 CFLAGS="$SAVED_CFLAGS"
417 if test x"$grub_host_cv_cc_wtrampolines" = xyes ; then
418 HOST_CFLAGS="$HOST_CFLAGS -Wtrampolines"
422 # Check for host and build compilers.
425 AC_CHECK_PROGS(BUILD_CC, [gcc egcs cc])
426 test -z "$BUILD_CC" && AC_MSG_ERROR([none of gcc, egcs and cc is found. set BUILD_CC manually.])
427 BUILD_CPP="$BUILD_CC -E"
430 haiku*) BUILD_LIBM= ;;
436 WARN_FLAGS="-Wall -W -Wshadow -Wpointer-arith -Wundef -Wchar-subscripts -Wcomment -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wfloat-equal -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-braces -Wmissing-format-attribute -Wmultichar -Wparentheses -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wnested-externs -Wstrict-prototypes"
437 EXTRA_WARN_FLAGS="-Wextra -Wattributes -Wendif-labels -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers -Wnonnull -Woverflow -Wvla -Wpointer-to-int-cast -Wstrict-aliasing -Wvariadic-macros -Wvolatile-register-var -Wpointer-sign -Wmissing-include-dirs -Wmissing-prototypes -Wmissing-declarations -Wformat=2"
439 HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
441 AC_CACHE_CHECK([which extra warnings work], [grub_cv_cc_w_extra_flags], [
442 SAVED_CFLAGS="$CFLAGS"
443 grub_cv_cc_w_extra_flags=
444 for x in $EXTRA_WARN_FLAGS; do
445 CFLAGS="$HOST_CFLAGS $x -Werror"
446 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
447 if test x$flag = x1 ; then
448 grub_cv_cc_w_extra_flags="$grub_cv_cc_w_extra_flags $x"
451 CFLAGS="$SAVED_CFLAGS"
454 HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
457 # Check for target programs.
460 # Find tools for the target.
461 if test "x$target_alias" != x && test "x$host_alias" != "x$target_alias"; then
462 tmp_ac_tool_prefix="$ac_tool_prefix"
463 ac_tool_prefix=$target_alias-
465 AC_CHECK_TOOLS(TARGET_CC, [gcc egcs cc],
466 [AC_MSG_ERROR([none of gcc, egcs and cc is found. set TARGET_CC manually.])])
467 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
468 AC_CHECK_TOOL(TARGET_STRIP, strip)
469 AC_CHECK_TOOL(TARGET_NM, nm)
470 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
472 ac_tool_prefix="$tmp_ac_tool_prefix"
474 if test "x$TARGET_CC" = x; then
477 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
478 AC_CHECK_TOOL(TARGET_STRIP, strip)
479 AC_CHECK_TOOL(TARGET_NM, nm)
480 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
485 AC_SUBST(BUILD_CFLAGS)
486 AC_SUBST(BUILD_CPPFLAGS)
489 AC_SUBST(TARGET_RANLIB)
490 AC_SUBST(TARGET_STRIP)
491 AC_SUBST(TARGET_OBJCOPY)
493 # Test the C compiler for the target environment.
496 tmp_LDFLAGS="$LDFLAGS"
497 tmp_CPPFLAGS="$CPPFLAGS"
500 CFLAGS="$TARGET_CFLAGS"
501 CPPFLAGS="$TARGET_CPPFLAGS"
502 LDFLAGS="$TARGET_LDFLAGS"
506 TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations"
507 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
509 if test "x$target_cpu" != xi386 && test "x$target_cpu" != xx86_64; then
510 TARGET_CFLAGS="$TARGET_CFLAGS -Wcast-align"
513 TARGET_CC_VERSION="$(LC_ALL=C $TARGET_CC --version | head -n1)"
515 AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [
516 LDFLAGS="$TARGET_LDFLAGS -nostdlib -static"
518 grub_cv_target_cc_w_extra_flags=
519 for x in $EXTRA_WARN_FLAGS; do
520 CFLAGS="$TARGET_CFLAGS $x -Werror"
521 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
522 asm (".globl start; start:");
524 void __main (void) {}
526 ]], [[]])], [flag=1], [flag=0])
527 if test x$flag = x1 ; then
528 grub_cv_target_cc_w_extra_flags="$grub_cv_target_cc_w_extra_flags $x"
533 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_w_extra_flags"
535 AC_CACHE_CHECK([if compiling with clang], [grub_cv_cc_target_clang]
537 CFLAGS="$TARGET_CFLAGS"
539 [AC_LANG_PROGRAM([], [[
544 [grub_cv_cc_target_clang=no], [grub_cv_cc_target_clang=yes])])
546 # on x86 clang doesn't support .code16
547 # on arm clang doesn't support .arch directive
548 # on mips clang doesn't support privilegied instructions, doubleword store/load
549 # and crashes with hand-written assembly
550 if test "x$grub_cv_cc_target_clang" = xyes && ( test "x$target_cpu" = xi386 \
551 || test "x$target_cpu" = xx86_64 || test "x$target_cpu" = xarm \
552 || test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ); then
553 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
556 if test "x$grub_cv_cc_target_clang" = xyes && test "x$target_cpu" = xpowerpc; then
557 AC_CACHE_CHECK([if clang can handle ame instruction], [grub_cv_cc_target_clang_ame]
559 CFLAGS="$TARGET_CFLAGS"
561 [AC_LANG_PROGRAM([], [[
562 unsigned int a = 0, b = 0;
563 asm volatile ("{ame|addme} %0,%1" : "=r" (a) : "r" (b));
567 [grub_cv_cc_target_clang_ame=yes], [grub_cv_cc_target_clang_ame=no])])
568 # clang <= 3.3 doesn't handle most of ppc assembly, not even inline assembly
570 if test x$grub_cv_cc_target_clang_ame = xno ; then
571 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
572 TARGET_CFLAGS="$TARGET_CFLAGS -no-integrated-as"
576 if test "x$target_cpu" = xi386 && test "x$platform" != xemu; then
577 TARGET_CFLAGS="$TARGET_CFLAGS -march=i386"
580 if test x$target_cpu = xpowerpc && test x$ac_cv_c_bigendian = xno; then
582 TARGET_CFLAGS="$TARGET_CFLAGS -mbig-endian"
583 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -mbig-endian"
584 TARGET_LDFLAGS="$TARGET_LDFLAGS -static -mbig-endian"
587 if test "x$target_m32" = x1; then
589 TARGET_CFLAGS="$TARGET_CFLAGS -m32"
590 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
591 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m32"
592 TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
593 TARGET_MODULE_FORMAT="elf32"
596 if test "x$target_m64" = x1; then
598 TARGET_CFLAGS="$TARGET_CFLAGS -m64"
599 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
600 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m64"
601 TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
602 TARGET_MODULE_FORMAT="elf64"
605 if test "x$grub_cv_cc_target_clang" = xno && test "x$target_cpu" = xi386 && test "x$platform" != xemu && test "x$platform" != xefi; then
606 TARGET_CFLAGS="$TARGET_CFLAGS -mrtd -mregparm=3"
609 # on mips redirect cache flushing function to non-existant one.
610 if test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ; then
611 AC_CACHE_CHECK([whether -mflush-func=grub_red_herring works], [grub_cv_cc_mflush_func], [
612 CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring -Werror"
613 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
614 [grub_cv_cc_mflush_func=yes],
615 [grub_cv_cc_mflush_func=no])
618 if test "x$grub_cv_cc_mflush_func" = xyes; then
619 TARGET_CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring"
624 # Force no alignment to save space on i386.
625 if test "x$target_cpu" = xi386; then
626 AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
627 CFLAGS="$TARGET_CFLAGS -falign-loops=1 -Werror"
628 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
629 [grub_cv_cc_falign_loop=yes],
630 [grub_cv_cc_falign_loop=no])
633 AC_CACHE_CHECK([whether -malign-loops works], [grub_cv_cc_malign_loop], [
634 CFLAGS="$TARGET_CFLAGS -malign-loops=1 -Werror"
635 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
636 [grub_cv_cc_malign_loop=yes],
637 [grub_cv_cc_malign_loop=no])
640 if test "x$grub_cv_cc_falign_loop" = xyes; then
641 TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
642 elif test "x$grub_cv_cc_malign_loop" = xyes; then
643 TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
647 AC_CACHE_CHECK([whether -freg-struct-return works], [grub_cv_cc_freg_struct_return], [
648 CFLAGS="$TARGET_CFLAGS -freg-struct-return -Werror"
649 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
650 [grub_cv_cc_freg_struct_return=yes],
651 [grub_cv_cc_freg_struct_return=no])
654 if test "x$grub_cv_cc_freg_struct_return" = xyes; then
655 TARGET_CFLAGS="$TARGET_CFLAGS -freg-struct-return"
658 if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
659 # Some toolchains enable these features by default, but they need
660 # registers that aren't set up properly in GRUB.
661 TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-3dnow"
664 # By default, GCC 4.4 generates .eh_frame sections containing unwind
665 # information in some cases where it previously did not. GRUB doesn't need
666 # these and they just use up vital space. Restore the old compiler
668 AC_CACHE_CHECK([whether -fno-dwarf2-cfi-asm works], [grub_cv_cc_fno_dwarf2_cfi_asm], [
669 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
670 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
671 [grub_cv_cc_fno_dwarf2_cfi_asm=yes],
672 [grub_cv_cc_fno_dwarf2_cfi_asm=no])
675 if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
676 TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
679 if test x"$target_os" = xcygwin; then
680 AC_CACHE_CHECK([whether option -fno-reorder-functions works], grub_cv_cc_no_reorder_functions, [
681 CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
682 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
683 [grub_cv_cc_no_reorder_functions=yes],
684 [grub_cv_cc_no_reorder_functions=no])
688 if test x"$target_os" = xcygwin && test "x$grub_cv_cc_no_reorder_functions" = xyes; then
689 TARGET_CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
692 # By default, GCC 4.6 generates .eh_frame sections containing unwind
693 # information in some cases where it previously did not. GRUB doesn't need
694 # these and they just use up vital space. Restore the old compiler
696 AC_CACHE_CHECK([whether -fno-asynchronous-unwind-tables works], [grub_cv_cc_fno_asynchronous_unwind_tables], [
697 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
698 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
699 [grub_cv_cc_fno_asynchronous_unwind_tables=yes],
700 [grub_cv_cc_fno_asynchronous_unwind_tables=no])
703 if test "x$grub_cv_cc_fno_asynchronous_unwind_tables" = xyes; then
704 TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
707 AC_ARG_ENABLE([efiemu],
708 [AS_HELP_STRING([--enable-efiemu],
709 [build and install the efiemu runtimes (default=guessed)])])
710 if test x"$enable_efiemu" = xno ; then
711 efiemu_excuse="explicitly disabled"
713 if test x"$grub_cv_target_cc_link_format" = x-mi386pe || test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
714 efiemu_excuse="not available on cygwin"
716 if test x"$target_cpu" != xi386 ; then
717 efiemu_excuse="only available on i386"
719 if test x"$platform" = xefi ; then
720 efiemu_excuse="not available on efi"
722 if test x"$efiemu_excuse" = x ; then
723 AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
724 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
725 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
726 [grub_cv_cc_efiemu=yes],
727 [grub_cv_cc_efiemu=no])
729 if test x$grub_cv_cc_efiemu = xno; then
730 efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
733 if test x"$efiemu_excuse" = x ; then
734 AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efiemu64_link_format], [
735 grub_cv_target_cc_efiemu64_link_format=unknown
736 for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -melf_x86_64_haiku -arch,x86_64; do
737 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
738 LDFLAGS="-m64 -Wl,$format -nostdlib -static"
739 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
740 asm (".globl start; start:");
741 asm (".globl _start; _start:");
742 asm (".globl __start; __start:");
744 void __main (void) {}
745 ]], [[]])], [flag=1], [flag=0])
746 if test x"$flag" = x1; then
747 grub_cv_target_cc_efiemu64_link_format="$format"
751 if test x"$grub_cv_target_cc_efiemu64_link_format" = xunknown; then
752 efiemu_excuse="no suitable link format for efiemu64 found"
754 EFIEMU64_LINK_FORMAT="-Wl,$grub_cv_target_cc_efiemu64_link_format"
757 if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
758 AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled ($efiemu_excuse)])
760 if test x"$efiemu_excuse" = x ; then
765 AC_SUBST([enable_efiemu])
766 AC_SUBST([EFIEMU64_LINK_FORMAT])
768 CFLAGS="$TARGET_CFLAGS"
771 if test x"$platform" = xemu ; then
773 grub_cv_target_cc_link_format=
776 grub_cv_target_cc_link_format="-arch,${target_cpu}"
777 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
779 *windows* | *cygwin* | *mingw*)
780 if test x${target_cpu} = xi386 ; then
781 grub_cv_target_cc_link_format=-mi386pe;
782 TARGET_OBJ2ELF='./build-grub-pe2elf';
784 if test x${target_cpu} = xx86_64 ; then
785 grub_cv_target_cc_link_format=-mi386pep;
786 TARGET_OBJ2ELF='./build-grub-pep2elf';
788 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
791 elif test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
792 AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
793 grub_cv_target_cc_link_format=unknown
794 for format in -melf_${target_cpu} -melf_${target_cpu}_fbsd -melf_${target_cpu}_obsd -melf_${target_cpu}_haiku -mi386pe -mi386pep -arch,${target_cpu}; do
795 if test x${target_cpu} != xi386 && test x$format = x-mi386pe; then
798 if test x${target_cpu} != xx86_64 && test x$format = x-mi386pep; then
801 CFLAGS="$TARGET_CFLAGS"
802 LDFLAGS="$TARGET_LDFLAGS -Wl,$format -nostdlib -static"
803 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
804 asm (".globl start; start:");
805 asm (".globl _start; _start:");
806 asm (".globl __start; __start:");
808 void __main (void) {}
809 ]], [[]])], [flag=1], [flag=0])
810 if test x"$flag" = x1; then
811 grub_cv_target_cc_link_format="$format"
815 if test x"$grub_cv_target_cc_link_format" = xunknown; then
816 AC_MSG_ERROR([no suitable link format found])
818 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
819 if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then
820 TARGET_OBJ2ELF='./build-grub-pe2elf';
822 if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
823 TARGET_OBJ2ELF='./build-grub-pep2elf';
827 if test x$grub_cv_target_cc_link_format = x-arch,i386 || test x$grub_cv_target_cc_link_format = x-arch,x86_64; then
828 TARGET_APPLE_LINKER=1
829 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [objconv], [])
830 if test "x$TARGET_OBJCONV" = x ; then
831 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [./objconv], [], [.])
833 if test "x$TARGET_OBJCONV" = x ; then
834 AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
837 TARGET_IMG_CFLAGS="-static"
838 TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
839 TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
840 TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
841 TARGET_LDFLAGS_OLDMAGIC=""
842 elif test x$grub_cv_target_cc_link_format = x-mi386pe || test x$grub_cv_target_cc_link_format = x-mi386pep ; then
843 TARGET_APPLE_LINKER=0
844 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
845 TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
846 TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
847 TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
848 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
851 TARGET_APPLE_LINKER=0
852 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
854 TARGET_IMG_LDFLAGS='-Wl,-N'
855 TARGET_IMG_LDFLAGS_AC='-Wl,-N'
856 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
860 AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
863 LDFLAGS="$TARGET_LDFLAGS"
865 if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then
866 # Use large model to support 4G memory
867 AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
868 CFLAGS="$TARGET_CFLAGS -mcmodel=large"
869 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
870 [grub_cv_cc_mcmodel=yes],
871 [grub_cv_cc_mcmodel=no])
873 if test "x$grub_cv_cc_mcmodel" = xyes; then
874 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
875 elif test "$target_cpu-$platform" = sparc64-emu; then
876 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
880 if test "$target_cpu"-"$platform" = x86_64-efi; then
881 # EFI writes to stack below %rsp, we must not use the red zone
882 AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
883 CFLAGS="$TARGET_CFLAGS -mno-red-zone"
884 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
885 [grub_cv_cc_no_red_zone=yes],
886 [grub_cv_cc_no_red_zone=no])
888 if test "x$grub_cv_cc_no_red_zone" = xno; then
889 AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
892 TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
895 if test "x$target_cpu" = xarm; then
896 AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
897 CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
898 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
899 [grub_cv_cc_mlong_calls=yes],
900 [grub_cv_cc_mlong_calls=no])
902 if test "x$grub_cv_cc_mlong_calls" = xyes; then
903 TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
905 AC_CACHE_CHECK([whether option -mthumb-interwork works], grub_cv_cc_mthumb_interwork, [
906 CFLAGS="$TARGET_CFLAGS -mthumb-interwork -Werror"
907 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
908 [grub_cv_cc_mthumb_interwork=yes],
909 [grub_cv_cc_mthumb_interwork=no])
911 if test "x$grub_cv_cc_mthumb_interwork" = xyes; then
912 TARGET_CFLAGS="$TARGET_CFLAGS -mthumb-interwork"
913 elif test "x$grub_cv_cc_target_clang" = xno ; then
914 AC_MSG_ERROR([your compiler doesn't support -mthumb-interwork])
916 CFLAGS="$TARGET_CFLAGS"
917 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
918 #if defined (__thumb__) && !defined (__thumb2__)
919 #error thumb without interworking
922 [no_interwork_ok=yes],
923 [no_interwork_ok=no])
924 if test x$no_interwork_ok = xno ; then
925 AC_MSG_ERROR([attempt to compile to thumb with no thumb interwork])
930 AC_CACHE_CHECK([whether option -Qn works], grub_cv_target_cc_qn, [
931 CFLAGS="$TARGET_CFLAGS -Qn -Werror"
932 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
933 [grub_cv_target_cc_qn=yes],
934 [grub_cv_target_cc_qn=no])])
935 if test "x$grub_cv_target_cc_qn" = xyes; then
936 TARGET_CFLAGS="$TARGET_CFLAGS -Qn"
943 CFLAGS="$TARGET_CFLAGS"
945 # Position independent executable.
947 [# Need that, because some distributions ship compilers that include
948 # `-fPIE' in the default specs.
949 if [ x"$pie_possible" = xyes ]; then
950 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
953 CFLAGS="$TARGET_CFLAGS"
955 # Position independent executable.
957 [# On most platforms we don't want PIC as it only makes relocations harder
958 # and code less efficient. On mips we want to have one got table per module
959 # and reload $gp in every function.
960 # GCC implements it using symbol __gnu_local_gp in non-PIC as well.
961 # However with clang we need PIC for this reloading to happen.
962 # Since default varies across dictributions use either -fPIC or -fno-PIC
964 if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel ) && test "x$grub_cv_cc_target_clang" = xyes ; then
965 TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
966 elif [ x"$pic_possible" = xyes ]; then
967 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
970 CFLAGS="$TARGET_CFLAGS"
972 # Smashing stack protector.
973 grub_CHECK_STACK_PROTECTOR
974 # Need that, because some distributions ship compilers that include
975 # `-fstack-protector' in the default specs.
976 if test "x$ssp_possible" = xyes; then
977 TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
980 CFLAGS="$TARGET_CFLAGS"
982 grub_CHECK_STACK_ARG_PROBE
983 # Cygwin's GCC uses alloca() to probe the stackframe on static
984 # stack allocations above some threshold.
985 if test x"$sap_possible" = xyes; then
986 TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
989 CFLAGS="$TARGET_CFLAGS"
991 # -mno-unaligned-access -mstrict-align
992 if test "$target_cpu" = arm; then
993 AC_CACHE_CHECK([for compile options to get strict alignment], [grub_cv_target_cc_strict_align], [
994 grub_cv_target_cc_strict_align=
995 for arg in -mno-unaligned-access "-Xclang -mstrict-align" -mstrict-align; do
996 CFLAGS="$TARGET_CFLAGS $arg -Werror"
997 LDFLAGS="$TARGET_LDFLAGS"
998 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
999 if test x"$flag" = x1; then
1000 grub_cv_target_cc_strict_align="$arg"
1005 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_strict_align"
1006 if test x"$grub_cv_target_cc_strict_align" = x"-Xclang -mstrict-align"; then
1007 TARGET_LDFLAGS="$TARGET_LDFLAGS -Qunused-arguments"
1009 AC_CACHE_CHECK([if compiler generates unaligned accesses], [grub_cv_cc_target_emits_unaligned],
1010 [CFLAGS="$TARGET_CFLAGS"
1011 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
1012 #ifdef __ARM_FEATURE_UNALIGNED
1016 [grub_cv_cc_target_emits_unaligned=no], [grub_cv_cc_target_emits_unaligned=yes])])
1017 if test x$grub_cv_cc_target_emits_unaligned = xyes; then
1018 AC_MSG_ERROR([compiler generates unaligned accesses])
1022 # Set them to their new values for the tests below.
1024 if test "x$TARGET_APPLE_LINKER" = x1 ; then
1025 CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
1027 CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
1029 CPPFLAGS="$TARGET_CPPFLAGS"
1030 if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test x$target_cpu = xpowerpc || test "x$grub_cv_cc_target_clang" = xyes; then
1036 LIBS="$TARGET_LIBGCC"
1039 if test "x$TARGET_APPLE_LINKER" = x0 ; then
1040 if test x$grub_cv_asm_uscore = xyes; then
1041 DEFSYM="-Wl,--defsym,_abort=_main -Wl,--defsym,__main=_main"
1043 DEFSYM="-Wl,--defsym,abort=main -Wl,--defsym,_main=main -Wl,--defsym,__main=main"
1045 CFLAGS="$TARGET_CFLAGS -nostdlib $DEFSYM"
1048 if ! test x$target_cpu = xpowerpc; then
1049 # Check for libgcc symbols
1050 AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __ucmpdi2 _restgpr_14_x)
1053 if test "x$TARGET_APPLE_LINKER" = x1 ; then
1054 CFLAGS="$TARGET_CFLAGS -nostdlib -static"
1056 CFLAGS="$TARGET_CFLAGS -nostdlib"
1060 # Defined in aclocal.m4.
1062 if test "x$TARGET_APPLE_LINKER" != x1 ; then
1063 grub_PROG_OBJCOPY_ABSOLUTE
1065 grub_PROG_LD_BUILD_ID_NONE
1066 if test "x$target_cpu" = xi386; then
1067 if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
1068 if test ! -z "$TARGET_IMG_LDSCRIPT"; then
1069 # Check symbols provided by linker script.
1070 CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000"
1072 grub_CHECK_BSS_START_SYMBOL
1073 grub_CHECK_END_SYMBOL
1075 CFLAGS="$TARGET_CFLAGS"
1076 grub_I386_ASM_PREFIX_REQUIREMENT
1077 grub_I386_ASM_ADDR32
1081 grub_PROG_NM_MINUS_P
1082 grub_PROG_NM_DEFINED_ONLY
1083 AC_SUBST(TARGET_NMFLAGS_MINUS_P)
1084 AC_SUBST(TARGET_NMFLAGS_DEFINED_ONLY)
1086 if test "$platform" != emu; then
1087 AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
1088 SAVED_CPPFLAGS="$CPPFLAGS"
1089 CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1090 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1092 int va_arg_func (int fixed, va_list args);]], [[]])],
1093 [grub_cv_cc_isystem=yes],
1094 [grub_cv_cc_isystem=no])
1095 CPPFLAGS="$SAVED_CPPFLAGS"
1098 if test x"$grub_cv_cc_isystem" = xyes ; then
1099 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1103 AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_cc_wtrampolines], [
1104 CFLAGS="$TARGET_CFLAGS -Wtrampolines -Werror"
1105 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1106 int va_arg_func (int fixed, va_list args);]], [[]])],
1107 [grub_cv_cc_wtrampolines=yes],
1108 [grub_cv_cc_wtrampolines=no])
1111 if test x"$grub_cv_cc_wtrampolines" = xyes ; then
1112 TARGET_CFLAGS="$TARGET_CFLAGS -Wtrampolines"
1115 # Restore the flags.
1117 CFLAGS="$tmp_CFLAGS"
1118 CPPFLAGS="$tmp_CPPFLAGS"
1119 LDFLAGS="$tmp_LDFLAGS"
1123 # Check for options.
1126 # Memory manager debugging.
1127 AC_ARG_ENABLE([mm-debug],
1128 AS_HELP_STRING([--enable-mm-debug],
1129 [include memory manager debugging]),
1130 [AC_DEFINE([MM_DEBUG], [1],
1131 [Define to 1 if you enable memory manager debugging.])])
1133 AC_ARG_ENABLE([cache-stats],
1134 AS_HELP_STRING([--enable-cache-stats],
1135 [enable disk cache statistics collection]))
1137 if test x$enable_cache_stats = xyes; then
1142 AC_SUBST([DISK_CACHE_STATS])
1144 AC_ARG_ENABLE([boot-time],
1145 AS_HELP_STRING([--enable-boot-time],
1146 [enable boot time statistics collection]))
1148 if test x$enable_boot_time = xyes; then
1153 AC_SUBST([BOOT_TIME_STATS])
1155 AC_ARG_ENABLE([grub-emu-usb],
1156 [AS_HELP_STRING([--enable-grub-emu-usb],
1157 [build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
1159 AC_ARG_ENABLE([grub-emu-sdl],
1160 [AS_HELP_STRING([--enable-grub-emu-sdl],
1161 [build and install the `grub-emu' debugging utility with SDL support (default=guessed)])])
1163 AC_ARG_ENABLE([grub-emu-pci],
1164 [AS_HELP_STRING([--enable-grub-emu-pci],
1165 [build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
1167 if test "$platform" = emu; then
1169 if test x"$enable_grub_emu_usb" != xyes ; then
1170 grub_emu_usb_excuse="not enabled"
1173 if test x"$enable_grub_emu_pci" = xyes ; then
1174 grub_emu_usb_excuse="conflicts with PCI support"
1177 [if [ x"$grub_emu_usb_excuse" = x ]; then
1178 # Check for libusb libraries.]
1179 AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
1180 [grub_emu_usb_excuse=["need libusb library"]])
1183 [if [ x"$grub_emu_usb_excuse" = x ]; then
1184 # Check for headers.]
1185 AC_CHECK_HEADERS([usb.h], [],
1186 [grub_emu_usb_excuse=["need libusb headers"]])
1188 if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
1189 AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled ($grub_emu_usb_excuse)])
1191 if test x"$grub_emu_usb_excuse" = x ; then
1192 enable_grub_emu_usb=yes
1194 enable_grub_emu_usb=no
1197 if test x"$enable_grub_emu_sdl" = xno ; then
1198 grub_emu_sdl_excuse="explicitly disabled"
1200 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1201 # Check for libSDL libraries.]
1202 AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
1203 [grub_emu_sdl_excuse=["libSDL libraries are required to build \`grub-emu' with SDL support"]])
1207 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1208 # Check for headers.]
1209 AC_CHECK_HEADERS([SDL/SDL.h], [],
1210 [grub_emu_sdl_excuse=["libSDL header file is required to build \`grub-emu' with SDL support"]])
1213 if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
1214 AC_MSG_ERROR([SDL support for grub-emu was explicitly requested but can't be compiled ($grub_emu_sdl_excuse)])
1216 if test x"$grub_emu_sdl_excuse" = x ; then
1217 enable_grub_emu_sdl=yes
1219 enable_grub_emu_sdl=no
1222 if test x"$enable_grub_emu_pci" != xyes ; then
1223 grub_emu_pci_excuse="not enabled"
1226 if test x"$enable_grub_emu_usb" = xyes ; then
1227 grub_emu_pci_excuse="conflicts with USB support"
1230 [if [ x"$grub_emu_pci_excuse" = x ]; then
1231 # Check for libpci libraries.]
1232 AC_CHECK_LIB([pciaccess], [pci_system_init], [LIBPCIACCESS="-lpciaccess"],
1233 [grub_emu_pci_excuse=["need libpciaccess library"]])
1234 AC_SUBST([LIBPCIACCESS])
1236 [if [ x"$grub_emu_pci_excuse" = x ]; then
1237 # Check for headers.]
1238 AC_CHECK_HEADERS([pci/pci.h], [],
1239 [grub_emu_pci_excuse=["need libpciaccess headers"]])
1242 if test x"$grub_emu_pci_excuse" = x ; then
1243 enable_grub_emu_pci=yes
1246 enable_grub_emu_pci=no
1249 AC_SUBST([enable_grub_emu_sdl])
1250 AC_SUBST([enable_grub_emu_usb])
1251 AC_SUBST([enable_grub_emu_pci])
1255 # Ignore --enable-emu-* if platform is not emu
1256 enable_grub_emu_sdl=no
1257 enable_grub_emu_usb=no
1258 enable_grub_emu_pci=no
1261 AC_ARG_ENABLE([grub-mkfont],
1262 [AS_HELP_STRING([--enable-grub-mkfont],
1263 [build and install the `grub-mkfont' utility (default=guessed)])])
1264 if test x"$enable_grub_mkfont" = xno ; then
1265 grub_mkfont_excuse="explicitly disabled"
1268 if test x"$grub_mkfont_excuse" = x ; then
1269 # Check for freetype libraries.
1270 AC_CHECK_TOOLS([FREETYPE], [freetype-config])
1271 if test "x$FREETYPE" = x ; then
1272 grub_mkfont_excuse=["need freetype2 library"]
1276 unset ac_cv_header_ft2build_h
1278 if test x"$grub_mkfont_excuse" = x ; then
1279 # Check for freetype libraries.
1280 freetype_cflags=`$FREETYPE --cflags`
1281 freetype_libs=`$FREETYPE --libs`
1282 SAVED_CPPFLAGS="$CPPFLAGS"
1284 CPPFLAGS="$CPPFLAGS $freetype_cflags"
1285 LIBS="$LIBS $freetype_libs"
1286 AC_CHECK_HEADERS([ft2build.h], [],
1287 [grub_mkfont_excuse=["need freetype2 headers"]])
1288 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
1289 CPPFLAGS="$SAVED_CPPFLAGS"
1293 if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
1294 AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled ($grub_mkfont_excuse)])
1296 if test x"$grub_mkfont_excuse" = x ; then
1297 enable_grub_mkfont=yes
1299 enable_grub_mkfont=no
1301 AC_SUBST([enable_grub_mkfont])
1302 AC_SUBST([freetype_cflags])
1303 AC_SUBST([freetype_libs])
1307 SAVED_CFLAGS="$CFLAGS"
1308 SAVED_CPPFLAGS="$CPPFLAGS"
1311 CFLAGS="$BUILD_CFLAGS"
1312 CPPFLAGS="$BUILD_CPPFLAGS"
1314 unset ac_cv_c_bigendian
1315 unset ac_cv_header_ft2build_h
1317 AC_COMPUTE_INT([BUILD_SIZEOF_VOID_P], [sizeof (void *)])
1318 AC_COMPUTE_INT([BUILD_SIZEOF_LONG], [sizeof (long)])
1319 AC_C_BIGENDIAN([BUILD_WORDS_BIGENDIAN=1], [BUILD_WORDS_BIGENDIAN=0], [BUILD_WORDS_BIGENDIAN=err], [BUILD_WORDS_BIGENDIAN=err])
1321 if test x$BUILD_WORDS_BIGENDIAN = xerr ; then
1322 AC_MSG_ERROR([couldnt determine build endianness])
1325 AC_SUBST([BUILD_SIZEOF_LONG])
1326 AC_SUBST([BUILD_SIZEOF_VOID_P])
1327 AC_SUBST([BUILD_WORDS_BIGENDIAN])
1329 if test x"$grub_build_mkfont_excuse" = x ; then
1330 # Check for freetype libraries.
1331 AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
1332 if test "x$BUILD_FREETYPE" = x ; then
1333 grub_build_mkfont_excuse=["need freetype2 library"]
1337 if test x"$grub_build_mkfont_excuse" = x ; then
1338 # Check for freetype libraries.
1339 build_freetype_cflags=`$BUILD_FREETYPE --cflags`
1340 build_freetype_libs=`$BUILD_FREETYPE --libs`
1341 SAVED_CPPFLAGS_2="$CPPFLAGS"
1343 CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
1344 LIBS="$LIBS $build_freetype_libs"
1345 AC_CHECK_HEADERS([ft2build.h], [],
1346 [grub_build_mkfont_excuse=["need freetype2 headers"]])
1347 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
1349 CPPFLAGS="$SAVED_CPPFLAGS_2"
1352 if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
1353 AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled ($grub_build_mkfont_excuse)])
1355 if test x"$grub_build_mkfont_excuse" = x ; then
1356 enable_build_grub_mkfont=yes
1358 enable_build_grub_mkfont=no
1360 if test x"$enable_build_grub_mkfont" = xno && ( test "x$platform" = xqemu || test "x$platform" = xloongson || test "x$platform" = xqemu_mips || test "x$target_cpu"-"$platform" = xpowerpc-ieee1275 || test "x$platform" = xcoreboot ); then
1361 if test x"$grub_build_mkfont_excuse" = x ; then
1362 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
1364 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont ($grub_build_mkfont_excuse)])
1368 AC_SUBST([build_freetype_cflags])
1369 AC_SUBST([build_freetype_libs])
1373 CFLAGS="$SAVED_CFLAGS"
1374 CPPFLAGS="$SAVED_CPPFLAGS"
1381 AC_ARG_ENABLE([grub-themes],
1382 [AS_HELP_STRING([--enable-grub-themes],
1383 [build and install GRUB themes (default=guessed)])])
1384 if test x"$enable_grub_themes" = xno ; then
1385 starfield_excuse="explicitly disabled"
1388 if test x"$starfield_excuse" = x && test x"$enable_build_grub_mkfont" = xno ; then
1389 starfield_excuse="No build-time grub-mkfont"
1392 if test x"$starfield_excuse" = x; then
1393 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1394 for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do
1395 if test -f "$dir/DejaVuSans.$ext"; then
1396 DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
1402 if test "x$DJVU_FONT_SOURCE" = x; then
1403 starfield_excuse="No DejaVu found"
1407 if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then
1408 AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied ($starfield_excuse)])
1411 AC_SUBST([DJVU_FONT_SOURCE])
1415 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1416 for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont /usr/share/fonts/uni /usr/share/fonts/truetype/unifont /usr/share/fonts/misc; do
1417 if test -f "$dir/unifont.$ext"; then
1418 md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')"
1419 # PCF and BDF from version 6.3 isn't hanled properly by libfreetype.
1420 if test "$md5" = 0a54834d2788c83886a3e1785a6a1e61 || test "$md5" = 28f2565c7a41d8d407e2551159385edb || test "$md5" = dae5e588461b3b92b87b6ffee734f936 || test "$md5" = 4a3d687aa5bb329ed05f4263a1016791 ; then
1423 FONT_SOURCE="$dir/unifont.$ext"
1429 if test x"$enable_build_grub_mkfont" = xno ; then
1433 if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test "x$platform" = xloongson || test "x$platform" = xqemu_mips || test "x$target_cpu"-"$platform" = xpowerpc-ieee1275 || test "x$platform" = xcoreboot ); then
1434 if test x"$grub_build_mkfont_excuse" = x ; then
1435 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
1437 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont ($grub_build_mkfont_excuse)])
1441 AC_SUBST([FONT_SOURCE])
1443 if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x && test x"$grub_build_mkfont_excuse" = x; then
1444 grub_build_mkfont_excuse="no fonts"
1448 AC_ARG_ENABLE([grub-mount],
1449 [AS_HELP_STRING([--enable-grub-mount],
1450 [build and install the `grub-mount' utility (default=guessed)])])
1451 if test x"$enable_grub_mount" = xno ; then
1452 grub_mount_excuse="explicitly disabled"
1455 if test x"$grub_mount_excuse" = x ; then
1456 AC_CHECK_LIB([fuse], [fuse_main_real], [],
1457 [grub_mount_excuse="need FUSE library"])
1460 if test x"$grub_mount_excuse" = x ; then
1461 # Check for fuse headers.
1462 SAVED_CPPFLAGS="$CPPFLAGS"
1463 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26"
1464 AC_CHECK_HEADERS([fuse/fuse.h], [],
1465 [grub_mount_excuse=["need FUSE headers"]])
1466 CPPFLAGS="$SAVED_CPPFLAGS"
1469 if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
1470 AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled ($grub_mount_excuse)])
1472 if test x"$grub_mount_excuse" = x ; then
1473 enable_grub_mount=yes
1475 enable_grub_mount=no
1477 AC_SUBST([enable_grub_mount])
1479 AC_ARG_ENABLE([device-mapper],
1480 [AS_HELP_STRING([--enable-device-mapper],
1481 [enable Linux device-mapper support (default=guessed)])])
1482 if test x"$enable_device_mapper" = xno ; then
1483 device_mapper_excuse="explicitly disabled"
1486 if test x"$device_mapper_excuse" = x ; then
1487 # Check for device-mapper header.
1488 AC_CHECK_HEADER([libdevmapper.h], [],
1489 [device_mapper_excuse="need libdevmapper header"])
1492 if test x"$device_mapper_excuse" = x ; then
1493 # Check for device-mapper library.
1494 AC_CHECK_LIB([devmapper], [dm_task_create], [],
1495 [device_mapper_excuse="need devmapper library"])
1498 if test x"$device_mapper_excuse" = x ; then
1499 # Check for device-mapper library.
1500 AC_CHECK_LIB([devmapper], [dm_log_with_errno_init],
1502 [device_mapper_excuse="need devmapper library"])
1505 if test x"$device_mapper_excuse" = x ; then
1506 LIBDEVMAPPER="-ldevmapper";
1507 AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
1508 [Define to 1 if you have the devmapper library.])
1511 AC_SUBST([LIBDEVMAPPER])
1514 if test x$host_kernel = xkfreebsd; then
1515 AC_CHECK_LIB([geom], [geom_gettree], [],
1516 [AC_MSG_ERROR([Your platform requires libgeom])])
1522 AC_ARG_ENABLE([liblzma],
1523 [AS_HELP_STRING([--enable-liblzma],
1524 [enable liblzma integration (default=guessed)])])
1525 if test x"$enable_liblzma" = xno ; then
1526 liblzma_excuse="explicitly disabled"
1529 if test x"$liblzma_excuse" = x ; then
1530 AC_CHECK_LIB([lzma], [lzma_code],
1531 [],[liblzma_excuse="need lzma library"])
1533 if test x"$liblzma_excuse" = x ; then
1534 AC_CHECK_HEADER([lzma.h], [], [liblzma_excuse="need lzma header"])
1537 if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then
1538 AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied ($liblzma_excuse)])
1542 if test x"$liblzma_excuse" = x ; then
1544 AC_DEFINE([USE_LIBLZMA], [1],
1545 [Define to 1 if you have the LZMA library.])
1550 AC_ARG_ENABLE([libzfs],
1551 [AS_HELP_STRING([--enable-libzfs],
1552 [enable libzfs integration (default=guessed)])])
1553 if test x"$enable_libzfs" = xno ; then
1554 libzfs_excuse="explicitly disabled"
1557 if test x"$libzfs_excuse" = x ; then
1558 # Only check for system headers if libzfs support has not been disabled.
1559 AC_CHECK_HEADERS(libzfs.h libnvpair.h)
1562 if test x"$libzfs_excuse" = x ; then
1563 AC_CHECK_LIB([zfs], [libzfs_init],
1565 [libzfs_excuse="need zfs library"])
1568 if test x"$libzfs_excuse" = x ; then
1569 AC_CHECK_LIB([nvpair], [nvlist_lookup_string],
1571 [libzfs_excuse="need nvpair library"])
1574 if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then
1575 AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied ($libzfs_excuse)])
1578 if test x"$libzfs_excuse" = x ; then
1579 # We need both libzfs and libnvpair for a successful build.
1581 AC_DEFINE([HAVE_LIBZFS], [1],
1582 [Define to 1 if you have the ZFS library.])
1583 LIBNVPAIR="-lnvpair"
1584 AC_DEFINE([HAVE_LIBNVPAIR], [1],
1585 [Define to 1 if you have the NVPAIR library.])
1589 AC_SUBST([LIBNVPAIR])
1591 AC_ARG_ENABLE([ubuntu-recovery],
1592 [AS_HELP_STRING([--enable-ubuntu-recovery],
1593 [adjust boot options for the Ubuntu recovery mode (default=no)])],
1594 [], [enable_ubuntu_recovery=no])
1595 if test x"$enable_ubuntu_recovery" = xyes ; then
1600 AC_SUBST([UBUNTU_RECOVERY])
1602 AC_ARG_ENABLE([quiet-boot],
1603 [AS_HELP_STRING([--enable-quiet-boot],
1604 [emit fewer messages at boot time (default=no)])],
1605 [], [enable_quiet_boot=no])
1606 if test x"$enable_quiet_boot" = xyes ; then
1611 AC_SUBST([QUIET_BOOT])
1613 AC_ARG_ENABLE([quick-boot],
1614 [AS_HELP_STRING([--enable-quick-boot],
1615 [bypass boot menu if possible (default=no)])],
1616 [], [enable_quick_boot=no])
1617 if test x"$enable_quick_boot" = xyes ; then
1622 AC_SUBST([QUICK_BOOT])
1624 AC_ARG_ENABLE([gfxpayload-dynamic],
1625 [AS_HELP_STRING([--enable-gfxpayload-dynamic],
1626 [use GRUB_GFXPAYLOAD_LINUX=keep unless explicitly unsupported on current hardware (default=no)])],
1627 [], [enable_gfxpayload_dynamic=no])
1628 if test x"$enable_gfxpayload_dynamic" = xyes ; then
1629 GFXPAYLOAD_DYNAMIC=1
1631 GFXPAYLOAD_DYNAMIC=0
1633 AC_SUBST([GFXPAYLOAD_DYNAMIC])
1635 AC_ARG_ENABLE([vt-handoff],
1636 [AS_HELP_STRING([--enable-vt-handoff],
1637 [use Linux vt.handoff option for flicker-free booting (default=no)])],
1638 [], [enable_vt_handoff=no])
1639 if test x"$enable_vt_handoff" = xyes ; then
1644 AC_SUBST([VT_HANDOFF])
1648 AC_SUBST([FONT_SOURCE])
1649 AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
1650 [AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
1652 AC_SUBST(HAVE_ASM_USCORE)
1655 AC_SUBST(BSS_START_SYMBOL)
1656 AC_SUBST(END_SYMBOL)
1660 AC_ARG_ENABLE([werror],
1661 [AS_HELP_STRING([--disable-werror],
1662 [do not use -Werror when building GRUB])])
1663 if test x"$enable_werror" != xno ; then
1664 TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
1665 HOST_CFLAGS="$HOST_CFLAGS -Werror"
1668 if test "x$grub_cv_cc_target_clang" = xno && test x$target_cpu != xpowerpc; then
1669 TARGET_LDFLAGS_STATIC_LIBGCC="-static-libgcc"
1671 TARGET_LDFLAGS_STATIC_LIBGCC=
1674 TARGET_CPP="$TARGET_CC -E"
1675 TARGET_CCAS=$TARGET_CC
1677 GRUB_TARGET_CPU="${target_cpu}"
1678 GRUB_PLATFORM="${platform}"
1680 AC_SUBST(GRUB_TARGET_CPU)
1681 AC_SUBST(GRUB_PLATFORM)
1683 AC_SUBST(TARGET_OBJCONV)
1684 AC_SUBST(TARGET_LIBGCC)
1685 AC_SUBST(TARGET_LDFLAGS_STATIC_LIBGCC)
1686 AC_SUBST(TARGET_CPP)
1687 AC_SUBST(TARGET_CCAS)
1688 AC_SUBST(TARGET_OBJ2ELF)
1689 AC_SUBST(TARGET_MODULE_FORMAT)
1690 AC_SUBST(TARGET_CC_VERSION)
1692 AC_SUBST(TARGET_CFLAGS)
1693 AC_SUBST(TARGET_LDFLAGS)
1694 AC_SUBST(TARGET_CPPFLAGS)
1695 AC_SUBST(TARGET_CCASFLAGS)
1697 AC_SUBST(TARGET_IMG_LDFLAGS)
1698 AC_SUBST(TARGET_IMG_CFLAGS)
1699 AC_SUBST(TARGET_IMG_BASE_LDOPT)
1700 AC_SUBST(TARGET_APPLE_LINKER)
1702 AC_SUBST(HOST_CFLAGS)
1703 AC_SUBST(HOST_LDFLAGS)
1704 AC_SUBST(HOST_CPPFLAGS)
1705 AC_SUBST(HOST_CCASFLAGS)
1707 AC_SUBST(BUILD_LIBM)
1710 # Automake conditionals
1713 AM_CONDITIONAL([COND_real_platform], [test x$platform != xnone])
1714 AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
1715 AM_CONDITIONAL([COND_clang], [test x$grub_cv_cc_target_clang = xyes])
1716 AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
1717 AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
1718 AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi])
1719 AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
1720 AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
1721 AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
1722 AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
1723 AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
1724 AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
1725 AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
1726 AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
1727 AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
1728 AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
1729 AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
1730 AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
1731 AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
1732 AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
1733 AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
1734 AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
1735 AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
1736 AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
1737 AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
1738 AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
1739 AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
1741 AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
1742 AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
1743 AM_CONDITIONAL([COND_HOST_NETBSD], [test x$host_kernel = xnetbsd])
1744 AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
1745 AM_CONDITIONAL([COND_HOST_KFREEBSD], [test x$host_kernel = xkfreebsd])
1746 AM_CONDITIONAL([COND_HOST_XNU], [test x$host_kernel = xxnu])
1747 AM_CONDITIONAL([COND_HOST_ILLUMOS], [test x$host_kernel = xillumos])
1749 AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
1750 AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
1751 AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
1752 AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
1753 AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
1754 AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
1755 AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
1756 if test x$FONT_SOURCE != x ; then
1761 AC_SUBST(HAVE_FONT_SOURCE)
1762 AM_CONDITIONAL([COND_APPLE_LINKER], [test x$TARGET_APPLE_LINKER = x1])
1763 AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
1764 AM_CONDITIONAL([COND_ENABLE_CACHE_STATS], [test x$DISK_CACHE_STATS = x1])
1765 AM_CONDITIONAL([COND_ENABLE_BOOT_TIME_STATS], [test x$BOOT_TIME_STATS = x1])
1767 AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
1769 AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
1770 AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
1771 AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
1773 test "x$prefix" = xNONE && prefix="$ac_default_prefix"
1774 test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
1775 datarootdir="$(eval echo "$datarootdir")"
1776 grub_libdir="$(eval echo "$libdir")"
1777 grub_localedir="$(eval echo "$localedir")"
1778 grub_datadir="$(eval echo "$datadir")"
1779 grub_sysconfdir="$(eval echo "$sysconfdir")"
1780 AC_DEFINE_UNQUOTED(LOCALEDIR, "$grub_localedir", [Locale dir])
1781 AC_DEFINE_UNQUOTED(GRUB_LIBDIR, "$grub_libdir", [Library dir])
1782 AC_DEFINE_UNQUOTED(GRUB_DATADIR, "$grub_datadir", [Data dir])
1783 AC_DEFINE_UNQUOTED(GRUB_SYSCONFDIR, "$grub_sysconfdir", [Configuration dir])
1787 if test "$platform" != none; then
1788 cpudir="${target_cpu}"
1789 if test x${cpudir} = xmipsel; then
1793 if test x"$link_dir" = xyes ; then
1794 AC_CONFIG_LINKS([include/grub/cpu:include/grub/$cpudir])
1795 if test "$platform" != emu ; then
1796 AC_CONFIG_LINKS([include/grub/machine:include/grub/$cpudir/$platform])
1799 mkdir -p include/grub 2>/dev/null
1800 rm -rf include/grub/cpu
1801 cp -rp $srcdir/include/grub/$cpudir include/grub/cpu 2>/dev/null
1802 if test "$platform" != emu ; then
1803 rm -rf include/grub/machine
1804 cp -rp $srcdir/include/grub/$cpudir/$platform include/grub/machine 2>/dev/null
1808 # Just enough to stop the compiler failing with -I$(srcdir)/include.
1809 mkdir -p include 2>/dev/null
1810 rm -rf include/grub/cpu include/grub/machine
1813 AC_CONFIG_FILES([Makefile])
1814 AC_CONFIG_FILES([grub-core/Makefile])
1815 AC_CONFIG_FILES([grub-core/gnulib/Makefile])
1816 AC_CONFIG_FILES([po/Makefile.in])
1817 AC_CONFIG_FILES([docs/Makefile])
1818 AC_CONFIG_FILES([util/bash-completion.d/Makefile])
1819 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
1820 AC_CONFIG_FILES([config.h])
1824 echo "*******************************************************"
1825 echo GRUB2 will be compiled with following components:
1826 echo Platform: "$target_cpu"-"$platform"
1827 if [ x"$platform" = xemu ]; then
1828 if [ x"$grub_emu_usb_excuse" = x ]; then
1829 echo USB support for grub-emu: Yes
1831 echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
1833 if [ x"$grub_emu_sdl_excuse" = x ]; then
1834 echo SDL support for grub-emu: Yes
1836 echo SDL support for grub-emu: No "($grub_emu_sdl_excuse)"
1838 if [ x"$grub_emu_pci_excuse" = x ]; then
1839 echo PCI support for grub-emu: Yes
1841 echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
1844 if test x"$device_mapper_excuse" = x ; then
1845 echo With devmapper support: Yes
1847 echo With devmapper support: No "($device_mapper_excuse)"
1849 if [ x"$enable_mm_debug" = xyes ]; then
1850 echo With memory debugging: Yes
1852 echo With memory debugging: No
1854 if [ x"$enable_cache_stats" = xyes ]; then
1855 echo With disk cache statistics: Yes
1857 echo With disk cache statistics: No
1860 if [ x"$enable_boot_time" = xyes ]; then
1861 echo With boot time statistics: Yes
1863 echo With boot time statistics: No
1866 if [ x"$efiemu_excuse" = x ]; then
1867 echo efiemu runtime: Yes
1869 echo efiemu runtime: No "($efiemu_excuse)"
1871 if [ x"$grub_mkfont_excuse" = x ]; then
1872 echo grub-mkfont: Yes
1874 echo grub-mkfont: No "($grub_mkfont_excuse)"
1876 if [ x"$grub_mount_excuse" = x ]; then
1877 echo grub-mount: Yes
1879 echo grub-mount: No "($grub_mount_excuse)"
1881 if [ x"$starfield_excuse" = x ]; then
1882 echo starfield theme: Yes
1884 echo starfield theme: No "($starfield_excuse)"
1886 if [ x"$libzfs_excuse" = x ]; then
1887 echo With libzfs support: Yes
1889 echo With libzfs support: No "($libzfs_excuse)"
1891 if [ x"$grub_build_mkfont_excuse" = x ]; then
1892 echo Build-time grub-mkfont: Yes
1893 if test "x$FONT_SOURCE" = x ; then
1894 echo "Without unifont"
1896 echo "With unifont from $FONT_SOURCE"
1899 echo Build-time grub-mkfont: No "($grub_build_mkfont_excuse)"
1900 echo "Without unifont (no build-time grub-mkfont)"
1902 if test x"$liblzma_excuse" != x ; then
1903 echo "Without liblzma (no support for XZ-compressed mips images) ($liblzma_excuse)"
1905 echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
1907 if [ x"$enable_quiet_boot" = xyes ]; then
1908 echo With quiet boot: Yes
1910 echo With quiet boot: No
1912 echo "*******************************************************"