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~beta1],[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 sparc64-*) platform=ieee1275 ;;
123 mipsel-*) platform=loongson ;;
124 mips-*) platform=arc ;;
125 ia64-*) platform=efi ;;
126 arm-*) platform=uboot ;;
127 arm64-*) platform=efi ;;
128 *) AC_MSG_ERROR([unsupported CPU: "$target_cpu"]) ;;
131 platform="$with_platform"
134 case "$target_cpu"-"$platform" in
138 x86_64-*) target_cpu=i386 ;;
139 powerpc64-ieee1275) target_cpu=powerpc ;;
142 # Check if the platform is supported, make final adjustments.
143 case "$target_cpu"-"$platform" in
151 i386-linuxbios) platform=coreboot ;;
158 mips-qemu-mips) platform=qemu_mips;;
162 mipsel-qemu-mips) platform=qemu_mips;;
163 mipsel-yeeloong) platform=loongson ;;
164 mipsel-fuloong) platform=loongson ;;
170 *) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
173 if test x$platform != xemu ; then
174 case "$target_cpu" in
175 i386 | powerpc) target_m32=1 ;;
176 x86_64 | sparc64) target_m64=1 ;;
180 if test x"$target_cpu-$platform" = xsparc64-emu ; then
185 windows* | mingw32*) target_os=cygwin ;;
188 # This normalizes the names, and creates a new variable ("host_kernel")
189 # while at it, since the mapping is not always 1:1 (e.g. different OSes
190 # using the same kernel type).
192 gnu*) host_kernel=hurd ;;
193 linux*) host_kernel=linux ;;
194 freebsd* | kfreebsd*-gnu) host_kernel=kfreebsd ;;
195 netbsd*) host_kernel=netbsd ;;
196 solaris*) host_kernel=illumos ;;
197 darwin*) host_kernel=xnu ;;
198 cygwin | windows* | mingw32*) host_kernel=windows ;;
202 cygwin | windows* | mingw32*) have_exec=n ;;
203 aros*) have_exec=n ;;
208 coreboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_COREBOOT=1" ;;
209 multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
210 efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
211 xen) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_XEN=1" ;;
212 ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
213 uboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_UBOOT=1" ;;
214 qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
215 pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;;
216 emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
217 loongson) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_LOONGSON=1" ;;
218 qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1" ;;
219 arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;;
221 if test x${target_cpu} = xmipsel ; then
222 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo mips_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
224 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
227 case "${target_cpu}-$platform" in
229 TARGET_LINK_ADDR=0x88200000
230 TARGET_DECOMPRESSOR_LINK_ADDR=0x88100000
233 TARGET_LINK_ADDR=0x80700000
234 TARGET_DECOMPRESSOR_LINK_ADDR=0x80600000
236 mips*-qemu_mips | mips*-loongson)
237 TARGET_DECOMPRESSOR_LINK_ADDR=0x80100000
241 AC_SUBST(TARGET_LINK_ADDR)
242 AC_SUBST(TARGET_DECOMPRESSOR_LINK_ADDR)
244 TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
248 AC_SUBST(host_kernel)
253 # Define default variables
256 AC_ARG_WITH([bootdir],
257 AS_HELP_STRING([--with-bootdir=DIR],
258 [set the name of /boot directory [[guessed]]]),
259 [have_with_bootdir=y],
260 [have_with_bootdir=n])
261 if test x$have_with_bootdir = xy; then
262 bootdirname="$with_bootdir"
266 # Because /boot is used for the boot block in NetBSD and OpenBSD,
268 *) bootdirname='boot' ;;
272 AC_SUBST(bootdirname)
273 AC_DEFINE_UNQUOTED(GRUB_BOOT_DIR_NAME, "$bootdirname",
274 [Default boot directory name]")
276 AC_ARG_WITH([grubdir],
277 AS_HELP_STRING([--with-grubdir=DIR],
278 [set the name of grub directory [[guessed]]]),
279 [grubdirname="$with_grubdir"],
280 [grubdirname="$PACKAGE"])
282 AC_SUBST(grubdirname)
283 AC_DEFINE_UNQUOTED(GRUB_DIR_NAME, "$grubdirname",
284 [Default grub directory name])
287 # Checks for build programs.
290 # Although cmp is listed in the GNU Coding Standards as a command which
291 # can used directly, OpenBSD lacks cmp in the default installation.
292 AC_CHECK_PROGS([CMP], [cmp])
293 if test "x$CMP" = x; then
294 AC_MSG_ERROR([cmp is not found])
297 AC_CHECK_PROGS([YACC], [bison])
298 if test "x$YACC" = x; then
299 AC_MSG_ERROR([bison is not found])
311 if test "x$LEX" = "x:"; then
312 AC_MSG_ERROR([flex is not found])
314 version=`$LEX --version | $AWK '{ split($NF,x,"."); print x[[1]]*10000+x[[2]]*100+x[[3]]; }'`
315 if test -n "$version" -a "$version" -ge 20535; then
318 AC_MSG_ERROR([flex is too old. GRUB requires 2.5.35 or above])
322 # These are not a "must".
323 AC_PATH_PROGS(MAKEINFO, makeinfo true)
326 # Checks for host programs.
336 test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
338 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
341 AM_GNU_GETTEXT([external])
344 # Identify characteristics of the host architecture.
345 unset ac_cv_c_bigendian
347 if test x"$target_cpu-$platform" = xsparc64-emu ; then
348 CFLAGS="$CFLAGS -m64"
349 HOST_CFLAGS="$HOST_CFLAGS -m64"
353 AC_CHECK_SIZEOF(void *)
354 AC_CHECK_SIZEOF(long)
357 cygwin | windows* | mingw32*)
358 HOST_CPPFLAGS="$HOST_CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
359 CPPFLAGS="$CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
360 AC_CHECK_SIZEOF(TCHAR,,[#include <windows.h>])
364 if test x$USE_NLS = xno; then
365 HOST_CFLAGS="$HOST_CFLAGS -fno-builtin-gettext"
368 if test "x$cross_compiling" = xyes; then
369 AC_MSG_WARN([cannot generate manual pages while cross compiling])
371 AC_PATH_PROG(HELP2MAN, help2man)
374 # Check for functions and headers.
375 AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
376 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
378 AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
379 #include <sys/param.h>
380 #include <sys/mount.h>])
382 AC_CHECK_MEMBERS([struct statfs.f_mntfromname],,,[$ac_includes_default
383 #include <sys/param.h>
384 #include <sys/mount.h>])
386 # For opendisk() and getrawpartition() on NetBSD.
387 # Used in util/deviceiter.c and in util/hostdisk.c.
388 AC_CHECK_HEADER([util.h], [
389 AC_CHECK_LIB([util], [opendisk], [
391 AC_DEFINE(HAVE_OPENDISK, 1, [Define if opendisk() in -lutil can be used])
393 AC_CHECK_LIB([util], [getrawpartition], [
395 AC_DEFINE(HAVE_GETRAWPARTITION, 1, [Define if getrawpartition() in -lutil can be used])
400 AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_host_cc_wtrampolines], [
401 SAVED_CFLAGS="$CFLAGS"
402 CFLAGS="$HOST_CFLAGS -Wtrampolines -Werror"
403 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
404 int va_arg_func (int fixed, va_list args);]], [[]])],
405 [grub_cv_host_cc_wtrampolines=yes],
406 [grub_cv_host_cc_wtrampolines=no])
407 CFLAGS="$SAVED_CFLAGS"
410 if test x"$grub_host_cv_cc_wtrampolines" = xyes ; then
411 HOST_CFLAGS="$HOST_CFLAGS -Wtrampolines"
415 # Check for host and build compilers.
418 AC_CHECK_PROGS(BUILD_CC, [gcc egcs cc])
419 test -z "$BUILD_CC" && AC_MSG_ERROR([none of gcc, egcs and cc is found. set BUILD_CC manually.])
420 BUILD_CPP="$BUILD_CC -E"
423 haiku*) BUILD_LIBM= ;;
429 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"
430 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"
432 HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
434 AC_CACHE_CHECK([which extra warnings work], [grub_cv_cc_w_extra_flags], [
435 SAVED_CFLAGS="$CFLAGS"
436 grub_cv_cc_w_extra_flags=
437 for x in $EXTRA_WARN_FLAGS; do
438 CFLAGS="$HOST_CFLAGS $x -Werror"
439 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
440 if test x$flag = x1 ; then
441 grub_cv_cc_w_extra_flags="$grub_cv_cc_w_extra_flags $x"
444 CFLAGS="$SAVED_CFLAGS"
447 HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
450 # Check for target programs.
453 # Find tools for the target.
454 if test "x$target_alias" != x && test "x$host_alias" != "x$target_alias"; then
455 tmp_ac_tool_prefix="$ac_tool_prefix"
456 ac_tool_prefix=$target_alias-
458 AC_CHECK_TOOLS(TARGET_CC, [gcc egcs cc],
459 [AC_MSG_ERROR([none of gcc, egcs and cc is found. set TARGET_CC manually.])])
460 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
461 AC_CHECK_TOOL(TARGET_STRIP, strip)
462 AC_CHECK_TOOL(TARGET_NM, nm)
463 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
465 ac_tool_prefix="$tmp_ac_tool_prefix"
467 if test "x$TARGET_CC" = x; then
470 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
471 AC_CHECK_TOOL(TARGET_STRIP, strip)
472 AC_CHECK_TOOL(TARGET_NM, nm)
473 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
478 AC_SUBST(BUILD_CFLAGS)
479 AC_SUBST(BUILD_CPPFLAGS)
482 AC_SUBST(TARGET_RANLIB)
483 AC_SUBST(TARGET_STRIP)
484 AC_SUBST(TARGET_OBJCOPY)
486 # Test the C compiler for the target environment.
489 tmp_LDFLAGS="$LDFLAGS"
490 tmp_CPPFLAGS="$CPPFLAGS"
493 CFLAGS="$TARGET_CFLAGS"
494 CPPFLAGS="$TARGET_CPPFLAGS"
495 LDFLAGS="$TARGET_LDFLAGS"
499 TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations"
500 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
502 if test "x$target_cpu" != xi386 && test "x$target_cpu" != xx86_64; then
503 TARGET_CFLAGS="$TARGET_CFLAGS -Wcast-align"
506 AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [
507 LDFLAGS="$TARGET_LDFLAGS -nostdlib -static"
509 grub_cv_target_cc_w_extra_flags=
510 for x in $EXTRA_WARN_FLAGS; do
511 CFLAGS="$TARGET_CFLAGS $x -Werror"
512 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
513 asm (".globl start; start:");
515 void __main (void) {}
517 ]], [[]])], [flag=1], [flag=0])
518 if test x$flag = x1 ; then
519 grub_cv_target_cc_w_extra_flags="$grub_cv_target_cc_w_extra_flags $x"
524 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_w_extra_flags"
526 AC_CACHE_CHECK([if compiling with clang], [grub_cv_cc_target_clang]
528 CFLAGS="$TARGET_CFLAGS"
530 [AC_LANG_PROGRAM([], [[
535 [grub_cv_cc_target_clang=no], [grub_cv_cc_target_clang=yes])])
537 # on x86 clang doesn't support .code16
538 # on arm clang doesn't support .arch directive
539 # on mips clang doesn't support privilegied instructions, doubleword store/load
540 # and crashes with hand-written assembly
541 if test "x$grub_cv_cc_target_clang" = xyes && ( test "x$target_cpu" = xi386 \
542 || test "x$target_cpu" = xx86_64 || test "x$target_cpu" = xarm \
543 || test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ); then
544 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
547 if test "x$grub_cv_cc_target_clang" = xyes && test "x$target_cpu" = xpowerpc; then
548 AC_CACHE_CHECK([if clang can handle ame instruction], [grub_cv_cc_target_clang_ame]
550 CFLAGS="$TARGET_CFLAGS"
552 [AC_LANG_PROGRAM([], [[
553 unsigned int a = 0, b = 0;
554 asm volatile ("{ame|addme} %0,%1" : "=r" (a) : "r" (b));
558 [grub_cv_cc_target_clang_ame=yes], [grub_cv_cc_target_clang_ame=no])])
559 # clang <= 3.3 doesn't handle most of ppc assembly, not even inline assembly
561 if test x$grub_cv_cc_target_clang_ame = xno ; then
562 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
563 TARGET_CFLAGS="$TARGET_CFLAGS -no-integrated-as"
567 if test "x$target_cpu" = xi386 && test "x$platform" != xemu; then
568 TARGET_CFLAGS="$TARGET_CFLAGS -march=i386"
571 if test "x$target_m32" = x1; then
573 TARGET_CFLAGS="$TARGET_CFLAGS -m32"
574 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
575 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m32"
576 TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
577 TARGET_MODULE_FORMAT="elf32"
580 if test "x$target_m64" = x1; then
582 TARGET_CFLAGS="$TARGET_CFLAGS -m64"
583 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
584 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m64"
585 TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
586 TARGET_MODULE_FORMAT="elf64"
589 if test "x$grub_cv_cc_target_clang" = xno && test "x$target_cpu" = xi386 && test "x$platform" != xemu && test "x$platform" != xefi; then
590 TARGET_CFLAGS="$TARGET_CFLAGS -mrtd -mregparm=3"
593 # on mips redirect cache flushing function to non-existant one.
594 if test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ; then
595 AC_CACHE_CHECK([whether -mflush-func=grub_red_herring works], [grub_cv_cc_mflush_func], [
596 CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring -Werror"
597 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
598 [grub_cv_cc_mflush_func=yes],
599 [grub_cv_cc_mflush_func=no])
602 if test "x$grub_cv_cc_mflush_func" = xyes; then
603 TARGET_CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring"
608 # Force no alignment to save space on i386.
609 if test "x$target_cpu" = xi386; then
610 AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
611 CFLAGS="$TARGET_CFLAGS -falign-loops=1 -Werror"
612 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
613 [grub_cv_cc_falign_loop=yes],
614 [grub_cv_cc_falign_loop=no])
617 AC_CACHE_CHECK([whether -malign-loops works], [grub_cv_cc_malign_loop], [
618 CFLAGS="$TARGET_CFLAGS -malign-loops=1 -Werror"
619 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
620 [grub_cv_cc_malign_loop=yes],
621 [grub_cv_cc_malign_loop=no])
624 if test "x$grub_cv_cc_falign_loop" = xyes; then
625 TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
626 elif test "x$grub_cv_cc_malign_loop" = xyes; then
627 TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
631 AC_CACHE_CHECK([whether -freg-struct-return works], [grub_cv_cc_freg_struct_return], [
632 CFLAGS="$TARGET_CFLAGS -freg-struct-return -Werror"
633 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
634 [grub_cv_cc_freg_struct_return=yes],
635 [grub_cv_cc_freg_struct_return=no])
638 if test "x$grub_cv_cc_freg_struct_return" = xyes; then
639 TARGET_CFLAGS="$TARGET_CFLAGS -freg-struct-return"
642 if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
643 # Some toolchains enable these features by default, but they need
644 # registers that aren't set up properly in GRUB.
645 TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-3dnow"
648 # By default, GCC 4.4 generates .eh_frame sections containing unwind
649 # information in some cases where it previously did not. GRUB doesn't need
650 # these and they just use up vital space. Restore the old compiler
652 AC_CACHE_CHECK([whether -fno-dwarf2-cfi-asm works], [grub_cv_cc_fno_dwarf2_cfi_asm], [
653 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
654 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
655 [grub_cv_cc_fno_dwarf2_cfi_asm=yes],
656 [grub_cv_cc_fno_dwarf2_cfi_asm=no])
659 if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
660 TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
663 if test x"$target_os" = xcygwin; then
664 AC_CACHE_CHECK([whether option -fno-reorder-functions works], grub_cv_cc_no_reorder_functions, [
665 CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
666 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
667 [grub_cv_cc_no_reorder_functions=yes],
668 [grub_cv_cc_no_reorder_functions=no])
672 if test x"$target_os" = xcygwin && test "x$grub_cv_cc_no_reorder_functions" = xyes; then
673 TARGET_CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
676 # By default, GCC 4.6 generates .eh_frame sections containing unwind
677 # information in some cases where it previously did not. GRUB doesn't need
678 # these and they just use up vital space. Restore the old compiler
680 AC_CACHE_CHECK([whether -fno-asynchronous-unwind-tables works], [grub_cv_cc_fno_asynchronous_unwind_tables], [
681 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
682 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
683 [grub_cv_cc_fno_asynchronous_unwind_tables=yes],
684 [grub_cv_cc_fno_asynchronous_unwind_tables=no])
687 if test "x$grub_cv_cc_fno_asynchronous_unwind_tables" = xyes; then
688 TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
691 AC_ARG_ENABLE([efiemu],
692 [AS_HELP_STRING([--enable-efiemu],
693 [build and install the efiemu runtimes (default=guessed)])])
694 if test x"$enable_efiemu" = xno ; then
695 efiemu_excuse="explicitly disabled"
697 if test x"$grub_cv_target_cc_link_format" = x-mi386pe || test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
698 efiemu_excuse="not available on cygwin"
700 if test x"$target_cpu" != xi386 ; then
701 efiemu_excuse="only available on i386"
703 if test x"$platform" = xefi ; then
704 efiemu_excuse="not available on efi"
706 if test x"$efiemu_excuse" = x ; then
707 AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
708 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
709 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
710 [grub_cv_cc_efiemu=yes],
711 [grub_cv_cc_efiemu=no])
713 if test x$grub_cv_cc_efiemu = xno; then
714 efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
717 if test x"$efiemu_excuse" = x ; then
718 AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efiemu64_link_format], [
719 grub_cv_target_cc_efiemu64_link_format=unknown
720 for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -melf_x86_64_haiku -arch,x86_64; do
721 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
722 LDFLAGS="-m64 -Wl,$format -nostdlib -static"
723 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
724 asm (".globl start; start:");
725 asm (".globl _start; _start:");
726 asm (".globl __start; __start:");
728 void __main (void) {}
729 ]], [[]])], [flag=1], [flag=0])
730 if test x"$flag" = x1; then
731 grub_cv_target_cc_efiemu64_link_format="$format"
735 if test x"$grub_cv_target_cc_efiemu64_link_format" = xunknown; then
736 efiemu_excuse="no suitable link format for efiemu64 found"
738 EFIEMU64_LINK_FORMAT="-Wl,$grub_cv_target_cc_efiemu64_link_format"
741 if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
742 AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled ($efiemu_excuse)])
744 if test x"$efiemu_excuse" = x ; then
749 AC_SUBST([enable_efiemu])
750 AC_SUBST([EFIEMU64_LINK_FORMAT])
752 CFLAGS="$TARGET_CFLAGS"
755 if test x"$platform" = xemu ; then
757 grub_cv_target_cc_link_format=
760 grub_cv_target_cc_link_format="-arch,${target_cpu}"
761 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
763 *windows* | *cygwin* | *mingw*)
764 if test x${target_cpu} = xi386 ; then
765 grub_cv_target_cc_link_format=-mi386pe;
766 TARGET_OBJ2ELF='./build-grub-pe2elf';
768 if test x${target_cpu} = xx86_64 ; then
769 grub_cv_target_cc_link_format=-mi386pep;
770 TARGET_OBJ2ELF='./build-grub-pep2elf';
772 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
775 elif test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
776 AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
777 grub_cv_target_cc_link_format=unknown
778 for format in -melf_${target_cpu} -melf_${target_cpu}_fbsd -melf_${target_cpu}_obsd -melf_${target_cpu}_haiku -mi386pe -mi386pep -arch,${target_cpu}; do
779 if test x${target_cpu} != xi386 && test x$format = x-mi386pe; then
782 if test x${target_cpu} != xx86_64 && test x$format = x-mi386pep; then
785 CFLAGS="$TARGET_CFLAGS"
786 LDFLAGS="$TARGET_LDFLAGS -Wl,$format -nostdlib -static"
787 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
788 asm (".globl start; start:");
789 asm (".globl _start; _start:");
790 asm (".globl __start; __start:");
792 void __main (void) {}
793 ]], [[]])], [flag=1], [flag=0])
794 if test x"$flag" = x1; then
795 grub_cv_target_cc_link_format="$format"
799 if test x"$grub_cv_target_cc_link_format" = xunknown; then
800 AC_MSG_ERROR([no suitable link format found])
802 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
803 if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then
804 TARGET_OBJ2ELF='./build-grub-pe2elf';
806 if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
807 TARGET_OBJ2ELF='./build-grub-pep2elf';
811 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
812 TARGET_APPLE_LINKER=1
813 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [objconv], [])
814 if test "x$TARGET_OBJCONV" = x ; then
815 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [./objconv], [], [.])
817 if test "x$TARGET_OBJCONV" = x ; then
818 AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
821 TARGET_IMG_CFLAGS="-static"
822 TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
823 TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
824 TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
825 TARGET_LDFLAGS_OLDMAGIC=""
826 elif test x$grub_cv_target_cc_link_format = x-mi386pe || test x$grub_cv_target_cc_link_format = x-mi386pep ; then
827 TARGET_APPLE_LINKER=0
828 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
829 TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
830 TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
831 TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
832 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
835 TARGET_APPLE_LINKER=0
836 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
838 TARGET_IMG_LDFLAGS='-Wl,-N'
839 TARGET_IMG_LDFLAGS_AC='-Wl,-N'
840 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
844 AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
847 LDFLAGS="$TARGET_LDFLAGS"
849 if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then
850 # Use large model to support 4G memory
851 AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
852 CFLAGS="$TARGET_CFLAGS -m64 -mcmodel=large"
853 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
854 [grub_cv_cc_mcmodel=yes],
855 [grub_cv_cc_mcmodel=no])
857 if test "x$grub_cv_cc_mcmodel" = xyes; then
858 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
859 elif test "$target_cpu-$platform" = sparc64-emu; then
860 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
864 if test "$target_cpu"-"$platform" = x86_64-efi; then
865 # EFI writes to stack below %rsp, we must not use the red zone
866 AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
867 CFLAGS="$TARGET_CFLAGS -m64 -mno-red-zone"
868 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
869 [grub_cv_cc_no_red_zone=yes],
870 [grub_cv_cc_no_red_zone=no])
872 if test "x$grub_cv_cc_no_red_zone" = xno; then
873 AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
876 TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
879 if test "x$target_cpu" = xarm; then
880 AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
881 CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
882 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
883 [grub_cv_cc_mlong_calls=yes],
884 [grub_cv_cc_mlong_calls=no])
886 if test "x$grub_cv_cc_mlong_calls" = xyes; then
887 TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
889 AC_CACHE_CHECK([whether option -mthumb-interwork works], grub_cv_cc_mthumb_interwork, [
890 CFLAGS="$TARGET_CFLAGS -mthumb-interwork -Werror"
891 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
892 [grub_cv_cc_mthumb_interwork=yes],
893 [grub_cv_cc_mthumb_interwork=no])
895 if test "x$grub_cv_cc_mthumb_interwork" = xyes; then
896 TARGET_CFLAGS="$TARGET_CFLAGS -mthumb-interwork"
897 elif test "x$grub_cv_cc_target_clang" = xno ; then
898 AC_MSG_ERROR([your compiler doesn't support -mthumb-interwork])
900 CFLAGS="$TARGET_CFLAGS"
901 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
902 #if defined (__thumb__) && !defined (__thumb2__)
903 #error thumb without interworking
906 [no_interwork_ok=yes],
907 [no_interwork_ok=no])
908 if test x$no_interwork_ok = xno ; then
909 AC_MSG_ERROR([attempt to compile to thumb with no thumb interwork])
918 CFLAGS="$TARGET_CFLAGS"
920 # Position independent executable.
922 [# Need that, because some distributions ship compilers that include
923 # `-fPIE' in the default specs.
924 if [ x"$pie_possible" = xyes ]; then
925 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
928 CFLAGS="$TARGET_CFLAGS"
930 # Position independent executable.
932 [# On most platforms we don't want PIC as it only makes relocations harder
933 # and code less efficient. On mips we want to have one got table per module
934 # and reload $gp in every function.
935 # GCC implements it using symbol __gnu_local_gp in non-PIC as well.
936 # However with clang we need PIC for this reloading to happen.
937 # Since default varies across dictributions use either -fPIC or -fno-PIC
939 if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel ) && test "x$grub_cv_cc_target_clang" = xyes ; then
940 TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
941 elif [ x"$pic_possible" = xyes ]; then
942 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
945 CFLAGS="$TARGET_CFLAGS"
947 # Smashing stack protector.
948 grub_CHECK_STACK_PROTECTOR
949 # Need that, because some distributions ship compilers that include
950 # `-fstack-protector' in the default specs.
951 if test "x$ssp_possible" = xyes; then
952 TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
955 CFLAGS="$TARGET_CFLAGS"
957 grub_CHECK_STACK_ARG_PROBE
958 # Cygwin's GCC uses alloca() to probe the stackframe on static
959 # stack allocations above some threshold.
960 if test x"$sap_possible" = xyes; then
961 TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
964 CFLAGS="$TARGET_CFLAGS"
966 # -mno-unaligned-access -mstrict-align
967 if test "$target_cpu" = arm; then
968 AC_CACHE_CHECK([for compile options to get strict alignment], [grub_cv_target_cc_strict_align], [
969 grub_cv_target_cc_strict_align=
970 for arg in -mno-unaligned-access "-Xclang -mstrict-align" -mstrict-align; do
971 CFLAGS="$TARGET_CFLAGS $arg -Werror"
972 LDFLAGS="$TARGET_LDFLAGS"
973 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
974 if test x"$flag" = x1; then
975 grub_cv_target_cc_strict_align="$arg"
980 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_strict_align"
981 if test x"$grub_cv_target_cc_strict_align" = x"-Xclang -mstrict-align"; then
982 TARGET_LDFLAGS="$TARGET_LDFLAGS -Qunused-arguments"
984 AC_CACHE_CHECK([if compiler generates unaligned accesses], [grub_cv_cc_target_emits_unaligned],
985 [CFLAGS="$TARGET_CFLAGS"
986 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
987 #ifdef __ARM_FEATURE_UNALIGNED
991 [grub_cv_cc_target_emits_unaligned=no], [grub_cv_cc_target_emits_unaligned=yes])])
992 if test x$grub_cv_cc_target_emits_unaligned = xyes; then
993 AC_MSG_ERROR([compiler generates unaligned accesses])
997 # Set them to their new values for the tests below.
999 if test "x$TARGET_APPLE_LINKER" = x1 ; then
1000 CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
1002 CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
1004 CPPFLAGS="$TARGET_CPPFLAGS"
1005 if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
1011 LIBS="$TARGET_LIBGCC"
1014 if test "x$TARGET_APPLE_LINKER" = x0 ; then
1015 if test x$grub_cv_asm_uscore = xyes; then
1016 DEFSYM="-Wl,--defsym,_abort=_main -Wl,--defsym,__main=_main"
1018 DEFSYM="-Wl,--defsym,abort=main -Wl,--defsym,_main=main -Wl,--defsym,__main=main"
1020 CFLAGS="$TARGET_CFLAGS -nostdlib $DEFSYM"
1023 # Check for libgcc symbols
1024 AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __ucmpdi2 _restgpr_14_x)
1026 if test "x$TARGET_APPLE_LINKER" = x1 ; then
1027 CFLAGS="$TARGET_CFLAGS -nostdlib -static"
1029 CFLAGS="$TARGET_CFLAGS -nostdlib"
1033 # Defined in aclocal.m4.
1035 if test "x$TARGET_APPLE_LINKER" != x1 ; then
1036 grub_PROG_OBJCOPY_ABSOLUTE
1038 grub_PROG_LD_BUILD_ID_NONE
1039 if test "x$target_cpu" = xi386; then
1040 if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
1041 if test ! -z "$TARGET_IMG_LDSCRIPT"; then
1042 # Check symbols provided by linker script.
1043 CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000"
1045 grub_CHECK_BSS_START_SYMBOL
1046 grub_CHECK_END_SYMBOL
1048 CFLAGS="$TARGET_CFLAGS"
1049 grub_I386_ASM_PREFIX_REQUIREMENT
1050 grub_I386_ASM_ADDR32
1054 grub_PROG_NM_MINUS_P
1055 grub_PROG_NM_DEFINED_ONLY
1056 AC_SUBST(TARGET_NMFLAGS_MINUS_P)
1057 AC_SUBST(TARGET_NMFLAGS_DEFINED_ONLY)
1059 if test "$platform" != emu; then
1060 AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
1061 SAVED_CPPFLAGS="$CPPFLAGS"
1062 CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1063 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1065 int va_arg_func (int fixed, va_list args);]], [[]])],
1066 [grub_cv_cc_isystem=yes],
1067 [grub_cv_cc_isystem=no])
1068 CPPFLAGS="$SAVED_CPPFLAGS"
1071 if test x"$grub_cv_cc_isystem" = xyes ; then
1072 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1076 AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_cc_wtrampolines], [
1077 CFLAGS="$TARGET_CFLAGS -Wtrampolines -Werror"
1078 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1079 int va_arg_func (int fixed, va_list args);]], [[]])],
1080 [grub_cv_cc_wtrampolines=yes],
1081 [grub_cv_cc_wtrampolines=no])
1084 if test x"$grub_cv_cc_wtrampolines" = xyes ; then
1085 TARGET_CFLAGS="$TARGET_CFLAGS -Wtrampolines"
1088 # Restore the flags.
1090 CFLAGS="$tmp_CFLAGS"
1091 CPPFLAGS="$tmp_CPPFLAGS"
1092 LDFLAGS="$tmp_LDFLAGS"
1096 # Check for options.
1099 # Memory manager debugging.
1100 AC_ARG_ENABLE([mm-debug],
1101 AS_HELP_STRING([--enable-mm-debug],
1102 [include memory manager debugging]),
1103 [AC_DEFINE([MM_DEBUG], [1],
1104 [Define to 1 if you enable memory manager debugging.])])
1106 AC_ARG_ENABLE([cache-stats],
1107 AS_HELP_STRING([--enable-cache-stats],
1108 [enable disk cache statistics collection]))
1110 if test x$enable_cache_stats = xyes; then
1115 AC_SUBST([DISK_CACHE_STATS])
1117 AC_ARG_ENABLE([boot-time],
1118 AS_HELP_STRING([--enable-boot-time],
1119 [enable boot time statistics collection]))
1121 if test x$enable_boot_time = xyes; then
1126 AC_SUBST([BOOT_TIME_STATS])
1128 AC_ARG_ENABLE([grub-emu-usb],
1129 [AS_HELP_STRING([--enable-grub-emu-usb],
1130 [build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
1132 AC_ARG_ENABLE([grub-emu-sdl],
1133 [AS_HELP_STRING([--enable-grub-emu-sdl],
1134 [build and install the `grub-emu' debugging utility with SDL support (default=guessed)])])
1136 AC_ARG_ENABLE([grub-emu-pci],
1137 [AS_HELP_STRING([--enable-grub-emu-pci],
1138 [build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
1140 if test "$platform" = emu; then
1142 if test x"$enable_grub_emu_usb" != xyes ; then
1143 grub_emu_usb_excuse="not enabled"
1146 if test x"$enable_grub_emu_pci" = xyes ; then
1147 grub_emu_usb_excuse="conflicts with PCI support"
1150 [if [ x"$grub_emu_usb_excuse" = x ]; then
1151 # Check for libusb libraries.]
1152 AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
1153 [grub_emu_usb_excuse=["need libusb library"]])
1156 [if [ x"$grub_emu_usb_excuse" = x ]; then
1157 # Check for headers.]
1158 AC_CHECK_HEADERS([usb.h], [],
1159 [grub_emu_usb_excuse=["need libusb headers"]])
1161 if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
1162 AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled ($grub_emu_usb_excuse)])
1164 if test x"$grub_emu_usb_excuse" = x ; then
1165 enable_grub_emu_usb=yes
1167 enable_grub_emu_usb=no
1170 if test x"$enable_grub_emu_sdl" = xno ; then
1171 grub_emu_sdl_excuse="explicitely disabled"
1173 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1174 # Check for libSDL libraries.]
1175 AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
1176 [grub_emu_sdl_excuse=["libSDL libraries are required to build \`grub-emu' with SDL support"]])
1180 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1181 # Check for headers.]
1182 AC_CHECK_HEADERS([SDL/SDL.h], [],
1183 [grub_emu_sdl_excuse=["libSDL header file is required to build \`grub-emu' with SDL support"]])
1186 if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
1187 AC_MSG_ERROR([SDL support for grub-emu was explicitely requested but can't be compiled ($grub_emu_sdl_excuse)])
1189 if test x"$grub_emu_sdl_excuse" = x ; then
1190 enable_grub_emu_sdl=yes
1192 enable_grub_emu_sdl=no
1195 if test x"$enable_grub_emu_pci" != xyes ; then
1196 grub_emu_pci_excuse="not enabled"
1199 if test x"$enable_grub_emu_usb" = xyes ; then
1200 grub_emu_pci_excuse="conflicts with USB support"
1203 [if [ x"$grub_emu_pci_excuse" = x ]; then
1204 # Check for libpci libraries.]
1205 AC_CHECK_LIB([pciaccess], [pci_system_init], [LIBPCIACCESS="-lpciaccess"],
1206 [grub_emu_pci_excuse=["need libpciaccess library"]])
1207 AC_SUBST([LIBPCIACCESS])
1209 [if [ x"$grub_emu_pci_excuse" = x ]; then
1210 # Check for headers.]
1211 AC_CHECK_HEADERS([pci/pci.h], [],
1212 [grub_emu_pci_excuse=["need libpciaccess headers"]])
1215 if test x"$grub_emu_pci_excuse" = x ; then
1216 enable_grub_emu_pci=yes
1219 enable_grub_emu_pci=no
1222 AC_SUBST([enable_grub_emu_sdl])
1223 AC_SUBST([enable_grub_emu_usb])
1224 AC_SUBST([enable_grub_emu_pci])
1228 # Ignore --enable-emu-* if platform is not emu
1229 enable_grub_emu_sdl=no
1230 enable_grub_emu_usb=no
1231 enable_grub_emu_pci=no
1234 AC_ARG_ENABLE([grub-mkfont],
1235 [AS_HELP_STRING([--enable-grub-mkfont],
1236 [build and install the `grub-mkfont' utility (default=guessed)])])
1237 if test x"$enable_grub_mkfont" = xno ; then
1238 grub_mkfont_excuse="explicitly disabled"
1241 if test x"$grub_mkfont_excuse" = x ; then
1242 # Check for freetype libraries.
1243 AC_CHECK_TOOLS([FREETYPE], [freetype-config])
1244 if test "x$FREETYPE" = x ; then
1245 grub_mkfont_excuse=["need freetype2 library"]
1249 unset ac_cv_header_ft2build_h
1251 if test x"$grub_mkfont_excuse" = x ; then
1252 # Check for freetype libraries.
1253 freetype_cflags=`$FREETYPE --cflags`
1254 freetype_libs=`$FREETYPE --libs`
1255 SAVED_CPPFLAGS="$CPPFLAGS"
1257 CPPFLAGS="$CPPFLAGS $freetype_cflags"
1258 LIBS="$LIBS $freetype_libs"
1259 AC_CHECK_HEADERS([ft2build.h], [],
1260 [grub_mkfont_excuse=["need freetype2 headers"]])
1261 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
1262 CPPFLAGS="$SAVED_CPPFLAGS"
1266 if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
1267 AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled ($grub_mkfont_excuse)])
1269 if test x"$grub_mkfont_excuse" = x ; then
1270 enable_grub_mkfont=yes
1272 enable_grub_mkfont=no
1274 AC_SUBST([enable_grub_mkfont])
1275 AC_SUBST([freetype_cflags])
1276 AC_SUBST([freetype_libs])
1280 SAVED_CFLAGS="$CFLAGS"
1281 SAVED_CPPFLAGS="$CPPFLAGS"
1284 CFLAGS="$BUILD_CFLAGS"
1285 CPPFLAGS="$BUILD_CPPFLAGS"
1287 unset ac_cv_c_bigendian
1288 unset ac_cv_header_ft2build_h
1290 AC_COMPUTE_INT([BUILD_SIZEOF_VOID_P], [sizeof (void *)])
1291 AC_COMPUTE_INT([BUILD_SIZEOF_LONG], [sizeof (long)])
1292 AC_C_BIGENDIAN([BUILD_WORDS_BIGENDIAN=1], [BUILD_WORDS_BIGENDIAN=0], [BUILD_WORDS_BIGENDIAN=err], [BUILD_WORDS_BIGENDIAN=err])
1294 if test x$BUILD_WORDS_BIGENDIAN = xerr ; then
1295 AC_MSG_ERROR([couldnt determine build endianness])
1298 AC_SUBST([BUILD_SIZEOF_LONG])
1299 AC_SUBST([BUILD_SIZEOF_VOID_P])
1300 AC_SUBST([BUILD_WORDS_BIGENDIAN])
1302 if test x"$grub_build_mkfont_excuse" = x ; then
1303 # Check for freetype libraries.
1304 AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
1305 if test "x$BUILD_FREETYPE" = x ; then
1306 grub_build_mkfont_excuse=["need freetype2 library"]
1310 if test x"$grub_build_mkfont_excuse" = x ; then
1311 # Check for freetype libraries.
1312 build_freetype_cflags=`$BUILD_FREETYPE --cflags`
1313 build_freetype_libs=`$BUILD_FREETYPE --libs`
1314 SAVED_CPPFLAGS_2="$CPPFLAGS"
1316 CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
1317 LIBS="$LIBS $build_freetype_libs"
1318 AC_CHECK_HEADERS([ft2build.h], [],
1319 [grub_build_mkfont_excuse=["need freetype2 headers"]])
1320 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
1322 CPPFLAGS="$SAVED_CPPFLAGS_2"
1325 if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
1326 AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled ($grub_build_mkfont_excuse)])
1328 if test x"$grub_build_mkfont_excuse" = x ; then
1329 enable_build_grub_mkfont=yes
1331 enable_build_grub_mkfont=no
1333 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
1334 if test x"$grub_build_mkfont_excuse" = x ; then
1335 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
1337 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont ($grub_build_mkfont_excuse)])
1341 AC_SUBST([build_freetype_cflags])
1342 AC_SUBST([build_freetype_libs])
1346 CFLAGS="$SAVED_CFLAGS"
1347 CPPFLAGS="$SAVED_CPPFLAGS"
1354 AC_ARG_ENABLE([grub-themes],
1355 [AS_HELP_STRING([--enable-grub-themes],
1356 [build and install GRUB themes (default=guessed)])])
1357 if test x"$enable_grub_themes" = xno ; then
1358 starfield_excuse="explicitly disabled"
1361 if test x"$starfield_excuse" = x && test x"$enable_build_grub_mkfont" = xno ; then
1362 starfield_excuse="No build-time grub-mkfont"
1365 if test x"$starfield_excuse" = x; then
1366 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1367 for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do
1368 if test -f "$dir/DejaVuSans.$ext"; then
1369 DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
1375 if test "x$DJVU_FONT_SOURCE" = x; then
1376 starfield_excuse="No DejaVu found"
1380 if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then
1381 AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied ($starfield_excuse)])
1384 AC_SUBST([DJVU_FONT_SOURCE])
1388 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1389 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
1390 if test -f "$dir/unifont.$ext"; then
1391 md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')"
1392 # PCF and BDF from version 6.3 isn't hanled properly by libfreetype.
1393 if test "$md5" = 0a54834d2788c83886a3e1785a6a1e61 || test "$md5" = 28f2565c7a41d8d407e2551159385edb || test "$md5" = dae5e588461b3b92b87b6ffee734f936 || test "$md5" = 4a3d687aa5bb329ed05f4263a1016791 ; then
1396 FONT_SOURCE="$dir/unifont.$ext"
1402 if test x"$enable_build_grub_mkfont" = xno ; then
1406 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
1407 if test x"$grub_build_mkfont_excuse" = x ; then
1408 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
1410 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont ($grub_build_mkfont_excuse)])
1414 AC_SUBST([FONT_SOURCE])
1416 if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x && test x"$grub_build_mkfont_excuse" = x; then
1417 grub_build_mkfont_excuse="no fonts"
1421 AC_ARG_ENABLE([grub-mount],
1422 [AS_HELP_STRING([--enable-grub-mount],
1423 [build and install the `grub-mount' utility (default=guessed)])])
1424 if test x"$enable_grub_mount" = xno ; then
1425 grub_mount_excuse="explicitly disabled"
1428 if test x"$grub_mount_excuse" = x ; then
1429 AC_CHECK_LIB([fuse], [fuse_main_real], [],
1430 [grub_mount_excuse="need FUSE library"])
1433 if test x"$grub_mount_excuse" = x ; then
1434 # Check for fuse headers.
1435 SAVED_CPPFLAGS="$CPPFLAGS"
1436 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26"
1437 AC_CHECK_HEADERS([fuse/fuse.h], [],
1438 [grub_mount_excuse=["need FUSE headers"]])
1439 CPPFLAGS="$SAVED_CPPFLAGS"
1442 if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
1443 AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled ($grub_mount_excuse)])
1445 if test x"$grub_mount_excuse" = x ; then
1446 enable_grub_mount=yes
1448 enable_grub_mount=no
1450 AC_SUBST([enable_grub_mount])
1452 AC_ARG_ENABLE([device-mapper],
1453 [AS_HELP_STRING([--enable-device-mapper],
1454 [enable Linux device-mapper support (default=guessed)])])
1455 if test x"$enable_device_mapper" = xno ; then
1456 device_mapper_excuse="explicitly disabled"
1459 if test x"$device_mapper_excuse" = x ; then
1460 # Check for device-mapper header.
1461 AC_CHECK_HEADER([libdevmapper.h], [],
1462 [device_mapper_excuse="need libdevmapper header"])
1465 if test x"$device_mapper_excuse" = x ; then
1466 # Check for device-mapper library.
1467 AC_CHECK_LIB([devmapper], [dm_task_create], [],
1468 [device_mapper_excuse="need devmapper library"])
1471 if test x"$device_mapper_excuse" = x ; then
1472 # Check for device-mapper library.
1473 AC_CHECK_LIB([devmapper], [dm_log_with_errno_init],
1475 [device_mapper_excuse="need devmapper library"])
1478 if test x"$device_mapper_excuse" = x ; then
1479 LIBDEVMAPPER="-ldevmapper";
1480 AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
1481 [Define to 1 if you have the devmapper library.])
1484 AC_SUBST([LIBDEVMAPPER])
1487 if test x$host_kernel = xkfreebsd; then
1488 AC_CHECK_LIB([geom], [geom_gettree], [],
1489 [AC_MSG_ERROR([Your platform requires libgeom])])
1495 AC_ARG_ENABLE([liblzma],
1496 [AS_HELP_STRING([--enable-liblzma],
1497 [enable liblzma integration (default=guessed)])])
1498 if test x"$enable_liblzma" = xno ; then
1499 liblzma_excuse="explicitly disabled"
1502 if test x"$liblzma_excuse" = x ; then
1503 AC_CHECK_LIB([lzma], [lzma_code],
1504 [],[liblzma_excuse="need lzma library"])
1506 if test x"$liblzma_excuse" = x ; then
1507 AC_CHECK_HEADER([lzma.h], [], [liblzma_excuse="need lzma header"])
1510 if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then
1511 AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied ($liblzma_excuse)])
1515 if test x"$liblzma_excuse" = x ; then
1517 AC_DEFINE([USE_LIBLZMA], [1],
1518 [Define to 1 if you have the LZMA library.])
1523 AC_ARG_ENABLE([libzfs],
1524 [AS_HELP_STRING([--enable-libzfs],
1525 [enable libzfs integration (default=guessed)])])
1526 if test x"$enable_libzfs" = xno ; then
1527 libzfs_excuse="explicitly disabled"
1530 if test x"$libzfs_excuse" = x ; then
1531 # Only check for system headers if libzfs support has not been disabled.
1532 AC_CHECK_HEADERS(libzfs.h libnvpair.h)
1535 if test x"$libzfs_excuse" = x ; then
1536 AC_CHECK_LIB([zfs], [libzfs_init],
1538 [libzfs_excuse="need zfs library"])
1541 if test x"$libzfs_excuse" = x ; then
1542 AC_CHECK_LIB([nvpair], [nvlist_lookup_string],
1544 [libzfs_excuse="need nvpair library"])
1547 if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then
1548 AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied ($libzfs_excuse)])
1551 if test x"$libzfs_excuse" = x ; then
1552 # We need both libzfs and libnvpair for a successful build.
1554 AC_DEFINE([HAVE_LIBZFS], [1],
1555 [Define to 1 if you have the ZFS library.])
1556 LIBNVPAIR="-lnvpair"
1557 AC_DEFINE([HAVE_LIBNVPAIR], [1],
1558 [Define to 1 if you have the NVPAIR library.])
1562 AC_SUBST([LIBNVPAIR])
1566 AC_SUBST([FONT_SOURCE])
1567 AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
1568 [AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
1570 AC_SUBST(HAVE_ASM_USCORE)
1573 AC_SUBST(BSS_START_SYMBOL)
1574 AC_SUBST(END_SYMBOL)
1578 AC_ARG_ENABLE([werror],
1579 [AS_HELP_STRING([--disable-werror],
1580 [do not use -Werror when building GRUB])])
1581 if test x"$enable_werror" != xno ; then
1582 TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
1583 HOST_CFLAGS="$HOST_CFLAGS -Werror"
1586 if test "x$grub_cv_cc_target_clang" = xno; then
1587 TARGET_LDFLAGS_STATIC_LIBGCC="-static-libgcc"
1589 TARGET_LDFLAGS_STATIC_LIBGCC=
1592 TARGET_CPP="$TARGET_CC -E"
1593 TARGET_CCAS=$TARGET_CC
1595 GRUB_TARGET_CPU="${target_cpu}"
1596 GRUB_PLATFORM="${platform}"
1598 AC_SUBST(GRUB_TARGET_CPU)
1599 AC_SUBST(GRUB_PLATFORM)
1601 AC_SUBST(TARGET_OBJCONV)
1602 AC_SUBST(TARGET_LIBGCC)
1603 AC_SUBST(TARGET_LDFLAGS_STATIC_LIBGCC)
1604 AC_SUBST(TARGET_CPP)
1605 AC_SUBST(TARGET_CCAS)
1606 AC_SUBST(TARGET_OBJ2ELF)
1607 AC_SUBST(TARGET_MODULE_FORMAT)
1609 AC_SUBST(TARGET_CFLAGS)
1610 AC_SUBST(TARGET_LDFLAGS)
1611 AC_SUBST(TARGET_CPPFLAGS)
1612 AC_SUBST(TARGET_CCASFLAGS)
1614 AC_SUBST(TARGET_IMG_LDFLAGS)
1615 AC_SUBST(TARGET_IMG_CFLAGS)
1616 AC_SUBST(TARGET_IMG_BASE_LDOPT)
1617 AC_SUBST(TARGET_APPLE_LINKER)
1619 AC_SUBST(HOST_CFLAGS)
1620 AC_SUBST(HOST_LDFLAGS)
1621 AC_SUBST(HOST_CPPFLAGS)
1622 AC_SUBST(HOST_CCASFLAGS)
1624 AC_SUBST(BUILD_LIBM)
1627 # Automake conditionals
1630 AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
1631 AM_CONDITIONAL([COND_clang], [test x$grub_cv_cc_target_clang = xyes])
1632 AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
1633 AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
1634 AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi])
1635 AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
1636 AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
1637 AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
1638 AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
1639 AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
1640 AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
1641 AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
1642 AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
1643 AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
1644 AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
1645 AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
1646 AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
1647 AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
1648 AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
1649 AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
1650 AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
1651 AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
1652 AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
1653 AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
1654 AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
1655 AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
1657 AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
1659 AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
1660 AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
1661 AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
1662 AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
1663 AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
1664 AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
1665 AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
1666 if test x$FONT_SOURCE != x ; then
1671 AC_SUBST(HAVE_FONT_SOURCE)
1672 AM_CONDITIONAL([COND_APPLE_LINKER], [test x$TARGET_APPLE_LINKER = x1])
1673 AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
1674 AM_CONDITIONAL([COND_ENABLE_CACHE_STATS], [test x$DISK_CACHE_STATS = x1])
1675 AM_CONDITIONAL([COND_ENABLE_BOOT_TIME_STATS], [test x$BOOT_TIME_STATS = x1])
1677 AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
1679 AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
1680 AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
1681 AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
1683 test "x$prefix" = xNONE && prefix="$ac_default_prefix"
1684 test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
1685 datarootdir="$(eval echo "$datarootdir")"
1686 grub_libdir="$(eval echo "$libdir")"
1687 grub_localedir="$(eval echo "$localedir")"
1688 grub_datadir="$(eval echo "$datadir")"
1689 grub_sysconfdir="$(eval echo "$sysconfdir")"
1690 AC_DEFINE_UNQUOTED(LOCALEDIR, "$grub_localedir", [Locale dir])
1691 AC_DEFINE_UNQUOTED(GRUB_LIBDIR, "$grub_libdir", [Library dir])
1692 AC_DEFINE_UNQUOTED(GRUB_DATADIR, "$grub_datadir", [Data dir])
1693 AC_DEFINE_UNQUOTED(GRUB_SYSCONFDIR, "$grub_sysconfdir", [Configuration dir])
1697 cpudir="${target_cpu}"
1698 if test x${cpudir} = xmipsel; then
1702 if test x"$link_dir" = xyes ; then
1703 AC_CONFIG_LINKS([include/grub/cpu:include/grub/$cpudir])
1704 if test "$platform" != emu ; then
1705 AC_CONFIG_LINKS([include/grub/machine:include/grub/$cpudir/$platform])
1708 mkdir -p include/grub 2>/dev/null
1709 rm -rf include/grub/cpu
1710 cp -rp $srcdir/include/grub/$cpudir include/grub/cpu 2>/dev/null
1711 if test "$platform" != emu ; then
1712 rm -rf include/grub/machine
1713 cp -rp $srcdir/include/grub/$cpudir/$platform include/grub/machine 2>/dev/null
1717 AC_CONFIG_FILES([Makefile])
1718 AC_CONFIG_FILES([grub-core/Makefile])
1719 AC_CONFIG_FILES([grub-core/gnulib/Makefile])
1720 AC_CONFIG_FILES([po/Makefile.in])
1721 AC_CONFIG_FILES([docs/Makefile])
1722 AC_CONFIG_FILES([util/bash-completion.d/Makefile])
1723 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
1724 AC_CONFIG_FILES([config.h])
1728 echo "*******************************************************"
1729 echo GRUB2 will be compiled with following components:
1730 echo Platform: "$target_cpu"-"$platform"
1731 if [ x"$platform" = xemu ]; then
1732 if [ x"$grub_emu_usb_excuse" = x ]; then
1733 echo USB support for grub-emu: Yes
1735 echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
1737 if [ x"$grub_emu_sdl_excuse" = x ]; then
1738 echo SDL support for grub-emu: Yes
1740 echo SDL support for grub-emu: No "($grub_emu_sdl_excuse)"
1742 if [ x"$grub_emu_pci_excuse" = x ]; then
1743 echo PCI support for grub-emu: Yes
1745 echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
1748 if test x"$device_mapper_excuse" = x ; then
1749 echo With devmapper support: Yes
1751 echo With devmapper support: No "($device_mapper_excuse)"
1753 if [ x"$enable_mm_debug" = xyes ]; then
1754 echo With memory debugging: Yes
1756 echo With memory debugging: No
1758 if [ x"$enable_cache_stats" = xyes ]; then
1759 echo With disk cache statistics: Yes
1761 echo With disk cache statistics: No
1764 if [ x"$enable_boot_time" = xyes ]; then
1765 echo With boot time statistics: Yes
1767 echo With boot time statistics: No
1770 if [ x"$efiemu_excuse" = x ]; then
1771 echo efiemu runtime: Yes
1773 echo efiemu runtime: No "($efiemu_excuse)"
1775 if [ x"$grub_mkfont_excuse" = x ]; then
1776 echo grub-mkfont: Yes
1778 echo grub-mkfont: No "($grub_mkfont_excuse)"
1780 if [ x"$grub_mount_excuse" = x ]; then
1781 echo grub-mount: Yes
1783 echo grub-mount: No "($grub_mount_excuse)"
1785 if [ x"$starfield_excuse" = x ]; then
1786 echo starfield theme: Yes
1788 echo starfield theme: No "($starfield_excuse)"
1790 if [ x"$libzfs_excuse" = x ]; then
1791 echo With libzfs support: Yes
1793 echo With libzfs support: No "($libzfs_excuse)"
1795 if [ x"$grub_build_mkfont_excuse" = x ]; then
1796 echo Build-time grub-mkfont: Yes
1797 if test "x$FONT_SOURCE" = x ; then
1798 echo "Without unifont"
1800 echo "With unifont from $FONT_SOURCE"
1803 echo Build-time grub-mkfont: No "($grub_build_mkfont_excuse)"
1804 echo "Without unifont (no build-time grub-mkfont)"
1806 if test x"$liblzma_excuse" != x ; then
1807 echo "Without liblzma (no support for XZ-compressed mips images) ($liblzma_excuse)"
1809 echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
1811 echo "*******************************************************"