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 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
218 qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
219 arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;;
221 case "$target_cpu" in
222 arm) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARM=1" ;;
223 arm64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARM64=1" ;;
224 mips |mipsel) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;;
225 sparc64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
227 if test x${target_cpu} = xmipsel ; then
228 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo mips_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
230 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,` -DGRUB_TARGET_CPU_`echo ${target_cpu} | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`=1"
233 case "${target_cpu}-$platform" in
235 TARGET_LINK_ADDR=0x88200000
236 TARGET_DECOMPRESSOR_LINK_ADDR=0x88100000
239 TARGET_LINK_ADDR=0x80700000
240 TARGET_DECOMPRESSOR_LINK_ADDR=0x80600000
242 mips*-qemu_mips | mips*-loongson)
243 TARGET_DECOMPRESSOR_LINK_ADDR=0x80100000
247 AC_SUBST(TARGET_LINK_ADDR)
248 AC_SUBST(TARGET_DECOMPRESSOR_LINK_ADDR)
250 TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
254 AC_SUBST(host_kernel)
259 # Define default variables
262 AC_ARG_WITH([bootdir],
263 AS_HELP_STRING([--with-bootdir=DIR],
264 [set the name of /boot directory [[guessed]]]),
265 [have_with_bootdir=y],
266 [have_with_bootdir=n])
267 if test x$have_with_bootdir = xy; then
268 bootdirname="$with_bootdir"
272 # Because /boot is used for the boot block in NetBSD and OpenBSD,
274 *) bootdirname='boot' ;;
278 AC_SUBST(bootdirname)
279 AC_DEFINE_UNQUOTED(GRUB_BOOT_DIR_NAME, "$bootdirname",
280 [Default boot directory name]")
282 AC_ARG_WITH([grubdir],
283 AS_HELP_STRING([--with-grubdir=DIR],
284 [set the name of grub directory [[guessed]]]),
285 [grubdirname="$with_grubdir"],
286 [grubdirname="$PACKAGE"])
288 AC_SUBST(grubdirname)
289 AC_DEFINE_UNQUOTED(GRUB_DIR_NAME, "$grubdirname",
290 [Default grub directory name])
293 # Checks for build programs.
296 # Although cmp is listed in the GNU Coding Standards as a command which
297 # can used directly, OpenBSD lacks cmp in the default installation.
298 AC_CHECK_PROGS([CMP], [cmp])
299 if test "x$CMP" = x; then
300 AC_MSG_ERROR([cmp is not found])
303 AC_CHECK_PROGS([YACC], [bison])
304 if test "x$YACC" = x; then
305 AC_MSG_ERROR([bison is not found])
317 if test "x$LEX" = "x:"; then
318 AC_MSG_ERROR([flex is not found])
320 version=`$LEX --version | $AWK '{ split($NF,x,"."); print x[[1]]*10000+x[[2]]*100+x[[3]]; }'`
321 if test -n "$version" -a "$version" -ge 20535; then
324 AC_MSG_ERROR([flex is too old. GRUB requires 2.5.35 or above])
328 # These are not a "must".
329 AC_PATH_PROGS(MAKEINFO, makeinfo true)
332 # Checks for host programs.
342 test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
344 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
347 AM_GNU_GETTEXT([external])
350 # Identify characteristics of the host architecture.
351 unset ac_cv_c_bigendian
353 if test x"$target_cpu-$platform" = xsparc64-emu ; then
354 CFLAGS="$CFLAGS -m64"
355 HOST_CFLAGS="$HOST_CFLAGS -m64"
359 AC_CHECK_SIZEOF(void *)
360 AC_CHECK_SIZEOF(long)
363 cygwin | windows* | mingw32*)
364 HOST_CPPFLAGS="$HOST_CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
365 CPPFLAGS="$CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
366 AC_CHECK_SIZEOF(TCHAR,,[#include <windows.h>])
370 if test x$USE_NLS = xno; then
371 HOST_CFLAGS="$HOST_CFLAGS -fno-builtin-gettext"
374 if test "x$cross_compiling" = xyes; then
375 AC_MSG_WARN([cannot generate manual pages while cross compiling])
377 AC_PATH_PROG(HELP2MAN, help2man)
380 # Check for functions and headers.
381 AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
382 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
384 AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
385 #include <sys/param.h>
386 #include <sys/mount.h>])
388 AC_CHECK_MEMBERS([struct statfs.f_mntfromname],,,[$ac_includes_default
389 #include <sys/param.h>
390 #include <sys/mount.h>])
392 # For opendisk() and getrawpartition() on NetBSD.
393 # Used in util/deviceiter.c and in util/hostdisk.c.
394 AC_CHECK_HEADER([util.h], [
395 AC_CHECK_LIB([util], [opendisk], [
397 AC_DEFINE(HAVE_OPENDISK, 1, [Define if opendisk() in -lutil can be used])
399 AC_CHECK_LIB([util], [getrawpartition], [
401 AC_DEFINE(HAVE_GETRAWPARTITION, 1, [Define if getrawpartition() in -lutil can be used])
406 AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_host_cc_wtrampolines], [
407 SAVED_CFLAGS="$CFLAGS"
408 CFLAGS="$HOST_CFLAGS -Wtrampolines -Werror"
409 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
410 int va_arg_func (int fixed, va_list args);]], [[]])],
411 [grub_cv_host_cc_wtrampolines=yes],
412 [grub_cv_host_cc_wtrampolines=no])
413 CFLAGS="$SAVED_CFLAGS"
416 if test x"$grub_host_cv_cc_wtrampolines" = xyes ; then
417 HOST_CFLAGS="$HOST_CFLAGS -Wtrampolines"
421 # Check for host and build compilers.
424 AC_CHECK_PROGS(BUILD_CC, [gcc egcs cc])
425 test -z "$BUILD_CC" && AC_MSG_ERROR([none of gcc, egcs and cc is found. set BUILD_CC manually.])
426 BUILD_CPP="$BUILD_CC -E"
429 haiku*) BUILD_LIBM= ;;
435 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 -Wpointer-arith -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wundef -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wnested-externs -Wstrict-prototypes"
436 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"
438 HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
440 AC_CACHE_CHECK([which extra warnings work], [grub_cv_cc_w_extra_flags], [
441 SAVED_CFLAGS="$CFLAGS"
442 grub_cv_cc_w_extra_flags=
443 for x in $EXTRA_WARN_FLAGS; do
444 CFLAGS="$HOST_CFLAGS $x -Werror"
445 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
446 if test x$flag = x1 ; then
447 grub_cv_cc_w_extra_flags="$grub_cv_cc_w_extra_flags $x"
450 CFLAGS="$SAVED_CFLAGS"
453 HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
456 # Check for target programs.
459 # Find tools for the target.
460 if test "x$target_alias" != x && test "x$host_alias" != "x$target_alias"; then
461 tmp_ac_tool_prefix="$ac_tool_prefix"
462 ac_tool_prefix=$target_alias-
464 AC_CHECK_TOOLS(TARGET_CC, [gcc egcs cc],
465 [AC_MSG_ERROR([none of gcc, egcs and cc is found. set TARGET_CC manually.])])
466 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
467 AC_CHECK_TOOL(TARGET_STRIP, strip)
468 AC_CHECK_TOOL(TARGET_NM, nm)
469 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
471 ac_tool_prefix="$tmp_ac_tool_prefix"
473 if test "x$TARGET_CC" = x; then
476 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
477 AC_CHECK_TOOL(TARGET_STRIP, strip)
478 AC_CHECK_TOOL(TARGET_NM, nm)
479 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
484 AC_SUBST(BUILD_CFLAGS)
485 AC_SUBST(BUILD_CPPFLAGS)
488 AC_SUBST(TARGET_RANLIB)
489 AC_SUBST(TARGET_STRIP)
490 AC_SUBST(TARGET_OBJCOPY)
492 # Test the C compiler for the target environment.
495 tmp_LDFLAGS="$LDFLAGS"
496 tmp_CPPFLAGS="$CPPFLAGS"
499 CFLAGS="$TARGET_CFLAGS"
500 CPPFLAGS="$TARGET_CPPFLAGS"
501 LDFLAGS="$TARGET_LDFLAGS"
505 TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations"
506 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
508 if test "x$target_cpu" != xi386 && test "x$target_cpu" != xx86_64; then
509 TARGET_CFLAGS="$TARGET_CFLAGS -Wcast-align"
512 AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [
513 LDFLAGS="$TARGET_LDFLAGS -nostdlib -static"
515 grub_cv_target_cc_w_extra_flags=
516 for x in $EXTRA_WARN_FLAGS; do
517 CFLAGS="$TARGET_CFLAGS $x -Werror"
518 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
519 asm (".globl start; start:");
521 void __main (void) {}
523 ]], [[]])], [flag=1], [flag=0])
524 if test x$flag = x1 ; then
525 grub_cv_target_cc_w_extra_flags="$grub_cv_target_cc_w_extra_flags $x"
530 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_w_extra_flags"
532 AC_CACHE_CHECK([if compiling with clang], [grub_cv_cc_target_clang]
534 CFLAGS="$TARGET_CFLAGS"
536 [AC_LANG_PROGRAM([], [[
541 [grub_cv_cc_target_clang=no], [grub_cv_cc_target_clang=yes])])
543 # on x86 clang doesn't support .code16
544 # on arm clang doesn't support .arch directive
545 # on mips clang doesn't support privilegied instructions, doubleword store/load
546 # and crashes with hand-written assembly
547 if test "x$grub_cv_cc_target_clang" = xyes && ( test "x$target_cpu" = xi386 \
548 || test "x$target_cpu" = xx86_64 || test "x$target_cpu" = xarm \
549 || test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ); then
550 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
553 if test "x$grub_cv_cc_target_clang" = xyes && test "x$target_cpu" = xpowerpc; then
554 AC_CACHE_CHECK([if clang can handle ame instruction], [grub_cv_cc_target_clang_ame]
556 CFLAGS="$TARGET_CFLAGS"
558 [AC_LANG_PROGRAM([], [[
559 unsigned int a = 0, b = 0;
560 asm volatile ("{ame|addme} %0,%1" : "=r" (a) : "r" (b));
564 [grub_cv_cc_target_clang_ame=yes], [grub_cv_cc_target_clang_ame=no])])
565 # clang <= 3.3 doesn't handle most of ppc assembly, not even inline assembly
567 if test x$grub_cv_cc_target_clang_ame = xno ; then
568 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
569 TARGET_CFLAGS="$TARGET_CFLAGS -no-integrated-as"
573 if test "x$target_cpu" = xi386 && test "x$platform" != xemu; then
574 TARGET_CFLAGS="$TARGET_CFLAGS -march=i386"
577 if test "x$target_m32" = x1; then
579 TARGET_CFLAGS="$TARGET_CFLAGS -m32"
580 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
581 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m32"
582 TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
583 TARGET_MODULE_FORMAT="elf32"
586 if test "x$target_m64" = x1; then
588 TARGET_CFLAGS="$TARGET_CFLAGS -m64"
589 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
590 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m64"
591 TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
592 TARGET_MODULE_FORMAT="elf64"
595 if test "x$grub_cv_cc_target_clang" = xno && test "x$target_cpu" = xi386 && test "x$platform" != xemu && test "x$platform" != xefi; then
596 TARGET_CFLAGS="$TARGET_CFLAGS -mrtd -mregparm=3"
599 # on mips redirect cache flushing function to non-existant one.
600 if test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ; then
601 AC_CACHE_CHECK([whether -mflush-func=grub_red_herring works], [grub_cv_cc_mflush_func], [
602 CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring -Werror"
603 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
604 [grub_cv_cc_mflush_func=yes],
605 [grub_cv_cc_mflush_func=no])
608 if test "x$grub_cv_cc_mflush_func" = xyes; then
609 TARGET_CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring"
614 # Force no alignment to save space on i386.
615 if test "x$target_cpu" = xi386; then
616 AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
617 CFLAGS="$TARGET_CFLAGS -falign-loops=1 -Werror"
618 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
619 [grub_cv_cc_falign_loop=yes],
620 [grub_cv_cc_falign_loop=no])
623 AC_CACHE_CHECK([whether -malign-loops works], [grub_cv_cc_malign_loop], [
624 CFLAGS="$TARGET_CFLAGS -malign-loops=1 -Werror"
625 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
626 [grub_cv_cc_malign_loop=yes],
627 [grub_cv_cc_malign_loop=no])
630 if test "x$grub_cv_cc_falign_loop" = xyes; then
631 TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
632 elif test "x$grub_cv_cc_malign_loop" = xyes; then
633 TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
637 AC_CACHE_CHECK([whether -freg-struct-return works], [grub_cv_cc_freg_struct_return], [
638 CFLAGS="$TARGET_CFLAGS -freg-struct-return -Werror"
639 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
640 [grub_cv_cc_freg_struct_return=yes],
641 [grub_cv_cc_freg_struct_return=no])
644 if test "x$grub_cv_cc_freg_struct_return" = xyes; then
645 TARGET_CFLAGS="$TARGET_CFLAGS -freg-struct-return"
648 if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
649 # Some toolchains enable these features by default, but they need
650 # registers that aren't set up properly in GRUB.
651 TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-3dnow"
654 # By default, GCC 4.4 generates .eh_frame sections containing unwind
655 # information in some cases where it previously did not. GRUB doesn't need
656 # these and they just use up vital space. Restore the old compiler
658 AC_CACHE_CHECK([whether -fno-dwarf2-cfi-asm works], [grub_cv_cc_fno_dwarf2_cfi_asm], [
659 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
660 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
661 [grub_cv_cc_fno_dwarf2_cfi_asm=yes],
662 [grub_cv_cc_fno_dwarf2_cfi_asm=no])
665 if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
666 TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
669 if test x"$target_os" = xcygwin; then
670 AC_CACHE_CHECK([whether option -fno-reorder-functions works], grub_cv_cc_no_reorder_functions, [
671 CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
672 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
673 [grub_cv_cc_no_reorder_functions=yes],
674 [grub_cv_cc_no_reorder_functions=no])
678 if test x"$target_os" = xcygwin && test "x$grub_cv_cc_no_reorder_functions" = xyes; then
679 TARGET_CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
682 # By default, GCC 4.6 generates .eh_frame sections containing unwind
683 # information in some cases where it previously did not. GRUB doesn't need
684 # these and they just use up vital space. Restore the old compiler
686 AC_CACHE_CHECK([whether -fno-asynchronous-unwind-tables works], [grub_cv_cc_fno_asynchronous_unwind_tables], [
687 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
688 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
689 [grub_cv_cc_fno_asynchronous_unwind_tables=yes],
690 [grub_cv_cc_fno_asynchronous_unwind_tables=no])
693 if test "x$grub_cv_cc_fno_asynchronous_unwind_tables" = xyes; then
694 TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
697 AC_ARG_ENABLE([efiemu],
698 [AS_HELP_STRING([--enable-efiemu],
699 [build and install the efiemu runtimes (default=guessed)])])
700 if test x"$enable_efiemu" = xno ; then
701 efiemu_excuse="explicitly disabled"
703 if test x"$grub_cv_target_cc_link_format" = x-mi386pe || test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
704 efiemu_excuse="not available on cygwin"
706 if test x"$target_cpu" != xi386 ; then
707 efiemu_excuse="only available on i386"
709 if test x"$platform" = xefi ; then
710 efiemu_excuse="not available on efi"
712 if test x"$efiemu_excuse" = x ; then
713 AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
714 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
715 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
716 [grub_cv_cc_efiemu=yes],
717 [grub_cv_cc_efiemu=no])
719 if test x$grub_cv_cc_efiemu = xno; then
720 efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
723 if test x"$efiemu_excuse" = x ; then
724 AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efiemu64_link_format], [
725 grub_cv_target_cc_efiemu64_link_format=unknown
726 for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -melf_x86_64_haiku -arch,x86_64; do
727 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
728 LDFLAGS="-m64 -Wl,$format -nostdlib -static"
729 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
730 asm (".globl start; start:");
731 asm (".globl _start; _start:");
732 asm (".globl __start; __start:");
734 void __main (void) {}
735 ]], [[]])], [flag=1], [flag=0])
736 if test x"$flag" = x1; then
737 grub_cv_target_cc_efiemu64_link_format="$format"
741 if test x"$grub_cv_target_cc_efiemu64_link_format" = xunknown; then
742 efiemu_excuse="no suitable link format for efiemu64 found"
744 EFIEMU64_LINK_FORMAT="-Wl,$grub_cv_target_cc_efiemu64_link_format"
747 if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
748 AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled ($efiemu_excuse)])
750 if test x"$efiemu_excuse" = x ; then
755 AC_SUBST([enable_efiemu])
756 AC_SUBST([EFIEMU64_LINK_FORMAT])
758 CFLAGS="$TARGET_CFLAGS"
760 if test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
761 AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
762 grub_cv_target_cc_link_format=unknown
763 for format in -melf_${target_cpu} -melf_${target_cpu}_fbsd -melf_${target_cpu}_obsd -melf_${target_cpu}_haiku -mi386pe -mi386pep -arch,${target_cpu}; do
764 if test x${target_cpu} != xi386 && test x$format = xi386pe; then
767 if test x${target_cpu} != xx86_64 && test x$format = xi386pep; then
770 CFLAGS="$TARGET_CFLAGS"
771 LDFLAGS="$TARGET_LDFLAGS -Wl,$format -nostdlib -static"
772 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
773 asm (".globl start; start:");
774 asm (".globl _start; _start:");
775 asm (".globl __start; __start:");
777 void __main (void) {}
778 ]], [[]])], [flag=1], [flag=0])
779 if test x"$flag" = x1; then
780 grub_cv_target_cc_link_format="$format"
784 if test x"$grub_cv_target_cc_link_format" = xunknown; then
785 AC_MSG_ERROR([no suitable link format found])
787 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
788 if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then
789 TARGET_OBJ2ELF='./build-grub-pe2elf';
791 if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
792 TARGET_OBJ2ELF='./build-grub-pep2elf';
796 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
797 TARGET_APPLE_LINKER=1
798 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [objconv], [])
799 if test "x$TARGET_OBJCONV" = x ; then
800 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [./objconv], [], [.])
802 if test "x$TARGET_OBJCONV" = x ; then
803 AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
806 TARGET_IMG_CFLAGS="-static"
807 TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
808 TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
809 TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
810 TARGET_LDFLAGS_OLDMAGIC=""
811 elif test x$grub_cv_target_cc_link_format = x-mi386pe || test x$grub_cv_target_cc_link_format = x-mi386pep ; then
812 TARGET_APPLE_LINKER=0
813 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
814 TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
815 TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
816 TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
817 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
820 TARGET_APPLE_LINKER=0
821 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
823 TARGET_IMG_LDFLAGS='-Wl,-N'
824 TARGET_IMG_LDFLAGS_AC='-Wl,-N'
825 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
829 AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
832 LDFLAGS="$TARGET_LDFLAGS"
834 if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then
835 # Use large model to support 4G memory
836 AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
837 CFLAGS="$TARGET_CFLAGS -m64 -mcmodel=large"
838 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
839 [grub_cv_cc_mcmodel=yes],
840 [grub_cv_cc_mcmodel=no])
842 if test "x$grub_cv_cc_mcmodel" = xyes; then
843 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
844 elif test "$target_cpu-$platform" = sparc64-emu; then
845 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
849 if test "$target_cpu"-"$platform" = x86_64-efi; then
850 # EFI writes to stack below %rsp, we must not use the red zone
851 AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
852 CFLAGS="$TARGET_CFLAGS -m64 -mno-red-zone"
853 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
854 [grub_cv_cc_no_red_zone=yes],
855 [grub_cv_cc_no_red_zone=no])
857 if test "x$grub_cv_cc_no_red_zone" = xno; then
858 AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
861 TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
864 if test "x$target_cpu" = xarm; then
865 AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
866 CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
867 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
868 [grub_cv_cc_mlong_calls=yes],
869 [grub_cv_cc_mlong_calls=no])
871 if test "x$grub_cv_cc_mlong_calls" = xyes; then
872 TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
874 AC_CACHE_CHECK([whether option -mthumb-interwork works], grub_cv_cc_mthumb_interwork, [
875 CFLAGS="$TARGET_CFLAGS -mthumb-interwork -Werror"
876 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
877 [grub_cv_cc_mthumb_interwork=yes],
878 [grub_cv_cc_mthumb_interwork=no])
880 if test "x$grub_cv_cc_mthumb_interwork" = xyes; then
881 TARGET_CFLAGS="$TARGET_CFLAGS -mthumb-interwork"
882 elif test "x$grub_cv_cc_target_clang" = xno ; then
883 AC_MSG_ERROR([your compiler doesn't support -mthumb-interwork])
885 CFLAGS="$TARGET_CFLAGS"
886 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
887 #if defined (__thumb__) && !defined (__thumb2__)
888 #error thumb without interworking
891 [no_interwork_ok=yes],
892 [no_interwork_ok=no])
893 if test x$no_interwork_ok = xno ; then
894 AC_MSG_ERROR([attempt to compile to thumb with no thumb interwork])
903 CFLAGS="$TARGET_CFLAGS"
905 # Position independent executable.
907 [# Need that, because some distributions ship compilers that include
908 # `-fPIE' in the default specs.
909 if [ x"$pie_possible" = xyes ]; then
910 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
913 CFLAGS="$TARGET_CFLAGS"
915 # Position independent executable.
917 [# On most platforms we don't want PIC as it only makes relocations harder
918 # and code less efficient. On mips we want to have one got table per module
919 # and reload $gp in every function.
920 # GCC implements it using symbol __gnu_local_gp in non-PIC as well.
921 # However with clang we need PIC for this reloading to happen.
922 # Since default varies across dictributions use either -fPIC or -fno-PIC
924 if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel ) && test "x$grub_cv_cc_target_clang" = xyes ; then
925 TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
926 elif [ x"$pic_possible" = xyes ]; then
927 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
930 CFLAGS="$TARGET_CFLAGS"
932 # Smashing stack protector.
933 grub_CHECK_STACK_PROTECTOR
934 # Need that, because some distributions ship compilers that include
935 # `-fstack-protector' in the default specs.
936 if test "x$ssp_possible" = xyes; then
937 TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
940 CFLAGS="$TARGET_CFLAGS"
942 grub_CHECK_STACK_ARG_PROBE
943 # Cygwin's GCC uses alloca() to probe the stackframe on static
944 # stack allocations above some threshold.
945 if test x"$sap_possible" = xyes; then
946 TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
949 CFLAGS="$TARGET_CFLAGS"
951 # -mno-unaligned-access -mstrict-align
952 if test "$target_cpu" = arm; then
953 AC_CACHE_CHECK([for compile options to get strict alignment], [grub_cv_target_cc_strict_align], [
954 grub_cv_target_cc_strict_align=
955 for arg in -mno-unaligned-access "-Xclang -mstrict-align" -mstrict-align; do
956 CFLAGS="$TARGET_CFLAGS $arg -Werror"
957 LDFLAGS="$TARGET_LDFLAGS"
958 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
959 if test x"$flag" = x1; then
960 grub_cv_target_cc_strict_align="$arg"
965 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_strict_align"
966 if test x"$grub_cv_target_cc_strict_align" = x"-Xclang -mstrict-align"; then
967 TARGET_LDFLAGS="$TARGET_LDFLAGS -Qunused-arguments"
969 AC_CACHE_CHECK([if compiler generates unaligned accesses], [grub_cv_cc_target_emits_unaligned],
970 [CFLAGS="$TARGET_CFLAGS"
971 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
972 #ifdef __ARM_FEATURE_UNALIGNED
976 [grub_cv_cc_target_emits_unaligned=no], [grub_cv_cc_target_emits_unaligned=yes])])
977 if test x$grub_cv_cc_target_emits_unaligned = xyes; then
978 AC_MSG_ERROR([compiler generates unaligned accesses])
982 # Set them to their new values for the tests below.
984 if test "x$TARGET_APPLE_LINKER" = x1 ; then
985 CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
987 CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
989 CPPFLAGS="$TARGET_CPPFLAGS"
990 if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
996 LIBS="$TARGET_LIBGCC"
999 if test "x$TARGET_APPLE_LINKER" = x0 ; then
1000 if test x$grub_cv_asm_uscore = xyes; then
1001 DEFSYM="-Wl,--defsym,_abort=_main -Wl,--defsym,__main=_main"
1003 DEFSYM="-Wl,--defsym,abort=main -Wl,--defsym,_main=main -Wl,--defsym,__main=main"
1005 CFLAGS="$TARGET_CFLAGS -nostdlib $DEFSYM"
1008 # Check for libgcc symbols
1009 AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __ucmpdi2 _restgpr_14_x)
1011 if test "x$TARGET_APPLE_LINKER" = x1 ; then
1012 CFLAGS="$TARGET_CFLAGS -nostdlib -static"
1014 CFLAGS="$TARGET_CFLAGS -nostdlib"
1018 # Defined in aclocal.m4.
1020 if test "x$TARGET_APPLE_LINKER" != x1 ; then
1021 grub_PROG_OBJCOPY_ABSOLUTE
1023 grub_PROG_LD_BUILD_ID_NONE
1024 if test "x$target_cpu" = xi386; then
1025 if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
1026 if test ! -z "$TARGET_IMG_LDSCRIPT"; then
1027 # Check symbols provided by linker script.
1028 CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000"
1030 grub_CHECK_BSS_START_SYMBOL
1031 grub_CHECK_END_SYMBOL
1033 CFLAGS="$TARGET_CFLAGS"
1034 grub_I386_ASM_PREFIX_REQUIREMENT
1035 grub_I386_ASM_ADDR32
1039 grub_PROG_NM_MINUS_P
1040 grub_PROG_NM_DEFINED_ONLY
1041 AC_SUBST(TARGET_NMFLAGS_MINUS_P)
1042 AC_SUBST(TARGET_NMFLAGS_DEFINED_ONLY)
1044 if test "$platform" != emu; then
1045 AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
1046 SAVED_CPPFLAGS="$CPPFLAGS"
1047 CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1048 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1050 int va_arg_func (int fixed, va_list args);]], [[]])],
1051 [grub_cv_cc_isystem=yes],
1052 [grub_cv_cc_isystem=no])
1053 CPPFLAGS="$SAVED_CPPFLAGS"
1056 if test x"$grub_cv_cc_isystem" = xyes ; then
1057 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1061 AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_cc_wtrampolines], [
1062 CFLAGS="$TARGET_CFLAGS -Wtrampolines -Werror"
1063 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1064 int va_arg_func (int fixed, va_list args);]], [[]])],
1065 [grub_cv_cc_wtrampolines=yes],
1066 [grub_cv_cc_wtrampolines=no])
1069 if test x"$grub_cv_cc_wtrampolines" = xyes ; then
1070 TARGET_CFLAGS="$TARGET_CFLAGS -Wtrampolines"
1073 # Restore the flags.
1075 CFLAGS="$tmp_CFLAGS"
1076 CPPFLAGS="$tmp_CPPFLAGS"
1077 LDFLAGS="$tmp_LDFLAGS"
1081 # Check for options.
1084 # Memory manager debugging.
1085 AC_ARG_ENABLE([mm-debug],
1086 AS_HELP_STRING([--enable-mm-debug],
1087 [include memory manager debugging]),
1088 [AC_DEFINE([MM_DEBUG], [1],
1089 [Define to 1 if you enable memory manager debugging.])])
1091 AC_ARG_ENABLE([cache-stats],
1092 AS_HELP_STRING([--enable-cache-stats],
1093 [enable disk cache statistics collection]))
1095 if test x$enable_cache_stats = xyes; then
1100 AC_SUBST([DISK_CACHE_STATS])
1102 AC_ARG_ENABLE([boot-time],
1103 AS_HELP_STRING([--enable-boot-time],
1104 [enable boot time statistics collection]))
1106 if test x$enable_boot_time = xyes; then
1111 AC_SUBST([BOOT_TIME_STATS])
1113 AC_ARG_ENABLE([grub-emu-usb],
1114 [AS_HELP_STRING([--enable-grub-emu-usb],
1115 [build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
1117 AC_ARG_ENABLE([grub-emu-sdl],
1118 [AS_HELP_STRING([--enable-grub-emu-sdl],
1119 [build and install the `grub-emu' debugging utility with SDL support (default=guessed)])])
1121 AC_ARG_ENABLE([grub-emu-pci],
1122 [AS_HELP_STRING([--enable-grub-emu-pci],
1123 [build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
1125 if test "$platform" = emu; then
1127 if test x"$enable_grub_emu_usb" != xyes ; then
1128 grub_emu_usb_excuse="not enabled"
1131 if test x"$enable_grub_emu_pci" = xyes ; then
1132 grub_emu_usb_excuse="conflicts with PCI support"
1135 [if [ x"$grub_emu_usb_excuse" = x ]; then
1136 # Check for libusb libraries.]
1137 AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
1138 [grub_emu_usb_excuse=["need libusb library"]])
1141 [if [ x"$grub_emu_usb_excuse" = x ]; then
1142 # Check for headers.]
1143 AC_CHECK_HEADERS([usb.h], [],
1144 [grub_emu_usb_excuse=["need libusb headers"]])
1146 if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
1147 AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled ($grub_emu_usb_excuse)])
1149 if test x"$grub_emu_usb_excuse" = x ; then
1150 enable_grub_emu_usb=yes
1152 enable_grub_emu_usb=no
1155 if test x"$enable_grub_emu_sdl" = xno ; then
1156 grub_emu_sdl_excuse="explicitely disabled"
1158 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1159 # Check for libSDL libraries.]
1160 AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
1161 [grub_emu_sdl_excuse=["libSDL libraries are required to build \`grub-emu' with SDL support"]])
1165 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1166 # Check for headers.]
1167 AC_CHECK_HEADERS([SDL/SDL.h], [],
1168 [grub_emu_sdl_excuse=["libSDL header file is required to build \`grub-emu' with SDL support"]])
1171 if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
1172 AC_MSG_ERROR([SDL support for grub-emu was explicitely requested but can't be compiled ($grub_emu_sdl_excuse)])
1174 if test x"$grub_emu_sdl_excuse" = x ; then
1175 enable_grub_emu_sdl=yes
1177 enable_grub_emu_sdl=no
1180 if test x"$enable_grub_emu_pci" != xyes ; then
1181 grub_emu_pci_excuse="not enabled"
1184 if test x"$enable_grub_emu_usb" = xyes ; then
1185 grub_emu_pci_excuse="conflicts with USB support"
1188 [if [ x"$grub_emu_pci_excuse" = x ]; then
1189 # Check for libpci libraries.]
1190 AC_CHECK_LIB([pciaccess], [pci_system_init], [LIBPCIACCESS="-lpciaccess"],
1191 [grub_emu_pci_excuse=["need libpciaccess library"]])
1192 AC_SUBST([LIBPCIACCESS])
1194 [if [ x"$grub_emu_pci_excuse" = x ]; then
1195 # Check for headers.]
1196 AC_CHECK_HEADERS([pci/pci.h], [],
1197 [grub_emu_pci_excuse=["need libpciaccess headers"]])
1200 if test x"$grub_emu_pci_excuse" = x ; then
1201 enable_grub_emu_pci=yes
1204 enable_grub_emu_pci=no
1207 AC_SUBST([enable_grub_emu_sdl])
1208 AC_SUBST([enable_grub_emu_usb])
1209 AC_SUBST([enable_grub_emu_pci])
1213 # Ignore --enable-emu-* if platform is not emu
1214 enable_grub_emu_sdl=no
1215 enable_grub_emu_usb=no
1216 enable_grub_emu_pci=no
1219 AC_ARG_ENABLE([grub-mkfont],
1220 [AS_HELP_STRING([--enable-grub-mkfont],
1221 [build and install the `grub-mkfont' utility (default=guessed)])])
1222 if test x"$enable_grub_mkfont" = xno ; then
1223 grub_mkfont_excuse="explicitly disabled"
1226 if test x"$grub_mkfont_excuse" = x ; then
1227 # Check for freetype libraries.
1228 AC_CHECK_TOOLS([FREETYPE], [freetype-config])
1229 if test "x$FREETYPE" = x ; then
1230 grub_mkfont_excuse=["need freetype2 library"]
1234 unset ac_cv_header_ft2build_h
1236 if test x"$grub_mkfont_excuse" = x ; then
1237 # Check for freetype libraries.
1238 freetype_cflags=`$FREETYPE --cflags`
1239 freetype_libs=`$FREETYPE --libs`
1240 SAVED_CPPFLAGS="$CPPFLAGS"
1242 CPPFLAGS="$CPPFLAGS $freetype_cflags"
1243 LIBS="$LIBS $freetype_libs"
1244 AC_CHECK_HEADERS([ft2build.h], [],
1245 [grub_mkfont_excuse=["need freetype2 headers"]])
1246 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
1247 CPPFLAGS="$SAVED_CPPFLAGS"
1251 if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
1252 AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled ($grub_mkfont_excuse)])
1254 if test x"$grub_mkfont_excuse" = x ; then
1255 enable_grub_mkfont=yes
1257 enable_grub_mkfont=no
1259 AC_SUBST([enable_grub_mkfont])
1260 AC_SUBST([freetype_cflags])
1261 AC_SUBST([freetype_libs])
1265 SAVED_CFLAGS="$CFLAGS"
1266 SAVED_CPPFLAGS="$CPPFLAGS"
1269 CFLAGS="$BUILD_CFLAGS"
1270 CPPFLAGS="$BUILD_CPPFLAGS"
1272 unset ac_cv_c_bigendian
1273 unset ac_cv_header_ft2build_h
1275 AC_COMPUTE_INT([BUILD_SIZEOF_VOID_P], [sizeof (void *)])
1276 AC_COMPUTE_INT([BUILD_SIZEOF_LONG], [sizeof (long)])
1277 AC_C_BIGENDIAN([BUILD_WORDS_BIGENDIAN=1], [BUILD_WORDS_BIGENDIAN=0], [BUILD_WORDS_BIGENDIAN=err], [BUILD_WORDS_BIGENDIAN=err])
1279 if test x$BUILD_WORDS_BIGENDIAN = xerr ; then
1280 AC_MSG_ERROR([couldnt determine build endianness])
1283 AC_SUBST([BUILD_SIZEOF_LONG])
1284 AC_SUBST([BUILD_SIZEOF_VOID_P])
1285 AC_SUBST([BUILD_WORDS_BIGENDIAN])
1287 if test x"$grub_build_mkfont_excuse" = x ; then
1288 # Check for freetype libraries.
1289 AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
1290 if test "x$BUILD_FREETYPE" = x ; then
1291 grub_build_mkfont_excuse=["need freetype2 library"]
1295 if test x"$grub_build_mkfont_excuse" = x ; then
1296 # Check for freetype libraries.
1297 build_freetype_cflags=`$BUILD_FREETYPE --cflags`
1298 build_freetype_libs=`$BUILD_FREETYPE --libs`
1299 SAVED_CPPFLAGS_2="$CPPFLAGS"
1301 CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
1302 LIBS="$LIBS $build_freetype_libs"
1303 AC_CHECK_HEADERS([ft2build.h], [],
1304 [grub_build_mkfont_excuse=["need freetype2 headers"]])
1305 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
1307 CPPFLAGS="$SAVED_CPPFLAGS_2"
1310 if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
1311 AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled ($grub_build_mkfont_excuse)])
1313 if test x"$grub_build_mkfont_excuse" = x ; then
1314 enable_build_grub_mkfont=yes
1316 enable_build_grub_mkfont=no
1318 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
1319 if test x"$grub_build_mkfont_excuse" = x ; then
1320 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
1322 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont ($grub_build_mkfont_excuse)])
1326 AC_SUBST([build_freetype_cflags])
1327 AC_SUBST([build_freetype_libs])
1331 CFLAGS="$SAVED_CFLAGS"
1332 CPPFLAGS="$SAVED_CPPFLAGS"
1339 AC_ARG_ENABLE([grub-themes],
1340 [AS_HELP_STRING([--enable-grub-themes],
1341 [build and install GRUB themes (default=guessed)])])
1342 if test x"$enable_grub_themes" = xno ; then
1343 starfield_excuse="explicitly disabled"
1346 if test x"$starfield_excuse" = x && test x"$enable_build_grub_mkfont" = xno ; then
1347 starfield_excuse="No build-time grub-mkfont"
1350 if test x"$starfield_excuse" = x; then
1351 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1352 for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do
1353 if test -f "$dir/DejaVuSans.$ext"; then
1354 DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
1360 if test "x$DJVU_FONT_SOURCE" = x; then
1361 starfield_excuse="No DejaVu found"
1365 if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then
1366 AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied ($starfield_excuse)])
1369 AC_SUBST([DJVU_FONT_SOURCE])
1373 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1374 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
1375 if test -f "$dir/unifont.$ext"; then
1376 md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')"
1377 # PCF and BDF from version 6.3 isn't hanled properly by libfreetype.
1378 if test "$md5" = 0a54834d2788c83886a3e1785a6a1e61 || test "$md5" = 28f2565c7a41d8d407e2551159385edb || test "$md5" = dae5e588461b3b92b87b6ffee734f936 || test "$md5" = 4a3d687aa5bb329ed05f4263a1016791 ; then
1381 FONT_SOURCE="$dir/unifont.$ext"
1387 if test x"$enable_build_grub_mkfont" = xno ; then
1391 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
1392 if test x"$grub_build_mkfont_excuse" = x ; then
1393 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
1395 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont ($grub_build_mkfont_excuse)])
1399 AC_SUBST([FONT_SOURCE])
1401 if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x && test x"$grub_build_mkfont_excuse" = x; then
1402 grub_build_mkfont_excuse="no fonts"
1406 AC_ARG_ENABLE([grub-mount],
1407 [AS_HELP_STRING([--enable-grub-mount],
1408 [build and install the `grub-mount' utility (default=guessed)])])
1409 if test x"$enable_grub_mount" = xno ; then
1410 grub_mount_excuse="explicitly disabled"
1413 if test x"$grub_mount_excuse" = x ; then
1414 AC_CHECK_LIB([fuse], [fuse_main_real], [],
1415 [grub_mount_excuse="need FUSE library"])
1418 if test x"$grub_mount_excuse" = x ; then
1419 # Check for fuse headers.
1420 SAVED_CPPFLAGS="$CPPFLAGS"
1421 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26"
1422 AC_CHECK_HEADERS([fuse/fuse.h], [],
1423 [grub_mount_excuse=["need FUSE headers"]])
1424 CPPFLAGS="$SAVED_CPPFLAGS"
1427 if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
1428 AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled ($grub_mount_excuse)])
1430 if test x"$grub_mount_excuse" = x ; then
1431 enable_grub_mount=yes
1433 enable_grub_mount=no
1435 AC_SUBST([enable_grub_mount])
1437 AC_ARG_ENABLE([device-mapper],
1438 [AS_HELP_STRING([--enable-device-mapper],
1439 [enable Linux device-mapper support (default=guessed)])])
1440 if test x"$enable_device_mapper" = xno ; then
1441 device_mapper_excuse="explicitly disabled"
1444 if test x"$device_mapper_excuse" = x ; then
1445 # Check for device-mapper header.
1446 AC_CHECK_HEADER([libdevmapper.h], [],
1447 [device_mapper_excuse="need libdevmapper header"])
1450 if test x"$device_mapper_excuse" = x ; then
1451 # Check for device-mapper library.
1452 AC_CHECK_LIB([devmapper], [dm_task_create], [],
1453 [device_mapper_excuse="need devmapper library"])
1456 if test x"$device_mapper_excuse" = x ; then
1457 # Check for device-mapper library.
1458 AC_CHECK_LIB([devmapper], [dm_log_with_errno_init],
1460 [device_mapper_excuse="need devmapper library"])
1463 if test x"$device_mapper_excuse" = x ; then
1464 LIBDEVMAPPER="-ldevmapper";
1465 AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
1466 [Define to 1 if you have the devmapper library.])
1469 AC_SUBST([LIBDEVMAPPER])
1472 if test x$host_kernel = xkfreebsd; then
1473 AC_CHECK_LIB([geom], [geom_gettree], [],
1474 [AC_MSG_ERROR([Your platform requires libgeom])])
1480 AC_ARG_ENABLE([liblzma],
1481 [AS_HELP_STRING([--enable-liblzma],
1482 [enable liblzma integration (default=guessed)])])
1483 if test x"$enable_liblzma" = xno ; then
1484 liblzma_excuse="explicitly disabled"
1487 if test x"$liblzma_excuse" = x ; then
1488 AC_CHECK_LIB([lzma], [lzma_code],
1489 [],[liblzma_excuse="need lzma library"])
1491 if test x"$liblzma_excuse" = x ; then
1492 AC_CHECK_HEADER([lzma.h], [], [liblzma_excuse="need lzma header"])
1495 if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then
1496 AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied ($liblzma_excuse)])
1500 if test x"$liblzma_excuse" = x ; then
1502 AC_DEFINE([USE_LIBLZMA], [1],
1503 [Define to 1 if you have the LZMA library.])
1508 AC_ARG_ENABLE([libzfs],
1509 [AS_HELP_STRING([--enable-libzfs],
1510 [enable libzfs integration (default=guessed)])])
1511 if test x"$enable_libzfs" = xno ; then
1512 libzfs_excuse="explicitly disabled"
1515 if test x"$libzfs_excuse" = x ; then
1516 # Only check for system headers if libzfs support has not been disabled.
1517 AC_CHECK_HEADERS(libzfs.h libnvpair.h)
1520 if test x"$libzfs_excuse" = x ; then
1521 AC_CHECK_LIB([zfs], [libzfs_init],
1523 [libzfs_excuse="need zfs library"])
1526 if test x"$libzfs_excuse" = x ; then
1527 AC_CHECK_LIB([nvpair], [nvlist_lookup_string],
1529 [libzfs_excuse="need nvpair library"])
1532 if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then
1533 AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied ($libzfs_excuse)])
1536 if test x"$libzfs_excuse" = x ; then
1537 # We need both libzfs and libnvpair for a successful build.
1539 AC_DEFINE([HAVE_LIBZFS], [1],
1540 [Define to 1 if you have the ZFS library.])
1541 LIBNVPAIR="-lnvpair"
1542 AC_DEFINE([HAVE_LIBNVPAIR], [1],
1543 [Define to 1 if you have the NVPAIR library.])
1547 AC_SUBST([LIBNVPAIR])
1551 AC_SUBST([FONT_SOURCE])
1552 AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
1553 [AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
1555 AC_SUBST(HAVE_ASM_USCORE)
1558 AC_SUBST(BSS_START_SYMBOL)
1559 AC_SUBST(END_SYMBOL)
1562 AC_SUBST(NEED_REGISTER_FRAME_INFO)
1564 AC_ARG_ENABLE([werror],
1565 [AS_HELP_STRING([--disable-werror],
1566 [do not use -Werror when building GRUB])])
1567 if test x"$enable_werror" != xno ; then
1568 TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
1569 HOST_CFLAGS="$HOST_CFLAGS -Werror"
1572 if test "x$grub_cv_cc_target_clang" = xno; then
1573 TARGET_LDFLAGS_STATIC_LIBGCC="-static-libgcc"
1575 TARGET_LDFLAGS_STATIC_LIBGCC=
1578 TARGET_CPP="$TARGET_CC -E"
1579 TARGET_CCAS=$TARGET_CC
1581 GRUB_TARGET_CPU="${target_cpu}"
1582 GRUB_PLATFORM="${platform}"
1584 AC_SUBST(GRUB_TARGET_CPU)
1585 AC_SUBST(GRUB_PLATFORM)
1587 AC_SUBST(TARGET_OBJCONV)
1588 AC_SUBST(TARGET_LIBGCC)
1589 AC_SUBST(TARGET_LDFLAGS_STATIC_LIBGCC)
1590 AC_SUBST(TARGET_CPP)
1591 AC_SUBST(TARGET_CCAS)
1592 AC_SUBST(TARGET_OBJ2ELF)
1593 AC_SUBST(TARGET_MODULE_FORMAT)
1595 AC_SUBST(TARGET_CFLAGS)
1596 AC_SUBST(TARGET_LDFLAGS)
1597 AC_SUBST(TARGET_CPPFLAGS)
1598 AC_SUBST(TARGET_CCASFLAGS)
1600 AC_SUBST(TARGET_IMG_LDFLAGS)
1601 AC_SUBST(TARGET_IMG_CFLAGS)
1602 AC_SUBST(TARGET_IMG_BASE_LDOPT)
1603 AC_SUBST(TARGET_APPLE_LINKER)
1605 AC_SUBST(HOST_CFLAGS)
1606 AC_SUBST(HOST_LDFLAGS)
1607 AC_SUBST(HOST_CPPFLAGS)
1608 AC_SUBST(HOST_CCASFLAGS)
1610 AC_SUBST(BUILD_LIBM)
1613 # Automake conditionals
1616 AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
1617 AM_CONDITIONAL([COND_clang], [test x$grub_cv_cc_target_clang = xyes])
1618 AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
1619 AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
1620 AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi])
1621 AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
1622 AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
1623 AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
1624 AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
1625 AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
1626 AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
1627 AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
1628 AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
1629 AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
1630 AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
1631 AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
1632 AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
1633 AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
1634 AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
1635 AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
1636 AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
1637 AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
1638 AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
1639 AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
1640 AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
1641 AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
1643 AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
1645 AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
1646 AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
1647 AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
1648 AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
1649 AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
1650 AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
1651 AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
1652 if test x$FONT_SOURCE != x ; then
1657 AC_SUBST(HAVE_FONT_SOURCE)
1658 AM_CONDITIONAL([COND_APPLE_LINKER], [test x$TARGET_APPLE_LINKER = x1])
1659 AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
1660 AM_CONDITIONAL([COND_ENABLE_CACHE_STATS], [test x$DISK_CACHE_STATS = x1])
1661 AM_CONDITIONAL([COND_ENABLE_BOOT_TIME_STATS], [test x$BOOT_TIME_STATS = x1])
1663 AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
1665 AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
1666 AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
1667 AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
1669 test "x$prefix" = xNONE && prefix="$ac_default_prefix"
1670 test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
1671 datarootdir="$(eval echo "$datarootdir")"
1672 grub_libdir="$(eval echo "$libdir")"
1673 grub_localedir="$(eval echo "$localedir")"
1674 grub_datadir="$(eval echo "$datadir")"
1675 grub_sysconfdir="$(eval echo "$sysconfdir")"
1676 AC_DEFINE_UNQUOTED(LOCALEDIR, "$grub_localedir", [Locale dir])
1677 AC_DEFINE_UNQUOTED(GRUB_LIBDIR, "$grub_libdir", [Library dir])
1678 AC_DEFINE_UNQUOTED(GRUB_DATADIR, "$grub_datadir", [Data dir])
1679 AC_DEFINE_UNQUOTED(GRUB_SYSCONFDIR, "$grub_sysconfdir", [Configuration dir])
1683 cpudir="${target_cpu}"
1684 if test x${cpudir} = xmipsel; then
1688 if test x"$link_dir" = xyes ; then
1689 AC_CONFIG_LINKS([include/grub/cpu:include/grub/$cpudir])
1690 if test "$platform" != emu ; then
1691 AC_CONFIG_LINKS([include/grub/machine:include/grub/$cpudir/$platform])
1694 mkdir -p include/grub 2>/dev/null
1695 rm -rf include/grub/cpu
1696 cp -rp $srcdir/include/grub/$cpudir include/grub/cpu 2>/dev/null
1697 if test "$platform" != emu ; then
1698 rm -rf include/grub/machine
1699 cp -rp $srcdir/include/grub/$cpudir/$platform include/grub/machine 2>/dev/null
1703 AC_CONFIG_FILES([Makefile])
1704 AC_CONFIG_FILES([grub-core/Makefile])
1705 AC_CONFIG_FILES([grub-core/gnulib/Makefile])
1706 AC_CONFIG_FILES([po/Makefile.in])
1707 AC_CONFIG_FILES([docs/Makefile])
1708 AC_CONFIG_FILES([util/bash-completion.d/Makefile])
1709 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
1710 AC_CONFIG_FILES([config.h])
1714 echo "*******************************************************"
1715 echo GRUB2 will be compiled with following components:
1716 echo Platform: "$target_cpu"-"$platform"
1717 if [ x"$platform" = xemu ]; then
1718 if [ x"$grub_emu_usb_excuse" = x ]; then
1719 echo USB support for grub-emu: Yes
1721 echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
1723 if [ x"$grub_emu_sdl_excuse" = x ]; then
1724 echo SDL support for grub-emu: Yes
1726 echo SDL support for grub-emu: No "($grub_emu_sdl_excuse)"
1728 if [ x"$grub_emu_pci_excuse" = x ]; then
1729 echo PCI support for grub-emu: Yes
1731 echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
1734 if test x"$device_mapper_excuse" = x ; then
1735 echo With devmapper support: Yes
1737 echo With devmapper support: No "($device_mapper_excuse)"
1739 if [ x"$enable_mm_debug" = xyes ]; then
1740 echo With memory debugging: Yes
1742 echo With memory debugging: No
1744 if [ x"$enable_cache_stats" = xyes ]; then
1745 echo With disk cache statistics: Yes
1747 echo With disk cache statistics: No
1750 if [ x"$enable_boot_time" = xyes ]; then
1751 echo With boot time statistics: Yes
1753 echo With boot time statistics: No
1756 if [ x"$efiemu_excuse" = x ]; then
1757 echo efiemu runtime: Yes
1759 echo efiemu runtime: No "($efiemu_excuse)"
1761 if [ x"$grub_mkfont_excuse" = x ]; then
1762 echo grub-mkfont: Yes
1764 echo grub-mkfont: No "($grub_mkfont_excuse)"
1766 if [ x"$grub_mount_excuse" = x ]; then
1767 echo grub-mount: Yes
1769 echo grub-mount: No "($grub_mount_excuse)"
1771 if [ x"$starfield_excuse" = x ]; then
1772 echo starfield theme: Yes
1774 echo starfield theme: No "($starfield_excuse)"
1776 if [ x"$libzfs_excuse" = x ]; then
1777 echo With libzfs support: Yes
1779 echo With libzfs support: No "($libzfs_excuse)"
1781 if [ x"$grub_build_mkfont_excuse" = x ]; then
1782 echo Build-time grub-mkfont: Yes
1783 if test "x$FONT_SOURCE" = x ; then
1784 echo "Without unifont"
1786 echo "With unifont from $FONT_SOURCE"
1789 echo Build-time grub-mkfont: No "($grub_build_mkfont_excuse)"
1790 echo "Without unifont (no build-time grub-mkfont)"
1792 if test x"$liblzma_excuse" != x ; then
1793 echo "Without liblzma (no support for XZ-compressed mips images) ($liblzma_excuse)"
1795 echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
1797 echo "*******************************************************"