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.00],[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])
73 # Optimization flag. Allow user to override.
74 if test "x$TARGET_CFLAGS" = x; then
75 TARGET_CFLAGS="$TARGET_CFLAGS -Os"
78 # Default HOST_CPPFLAGS
79 HOST_CPPFLAGS="$HOST_CPPFLAGS -Wall -W"
80 HOST_CPPFLAGS="$HOST_CPPFLAGS -I\$(top_builddir)/include"
81 HOST_CPPFLAGS="$HOST_CPPFLAGS -DGRUB_UTIL=1"
83 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -Wall -W"
84 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_srcdir)/include"
85 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_builddir)/include"
88 i[[3456]]86) target_cpu=i386 ;;
89 amd64) target_cpu=x86_64 ;;
90 sparc) target_cpu=sparc64 ;;
93 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPSEL=1";
97 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPS=1";
107 # Specify the platform (such as firmware).
108 AC_ARG_WITH([platform],
109 AS_HELP_STRING([--with-platform=PLATFORM],
110 [select the host platform [[guessed]]]))
112 # Guess the platform if not specified.
113 if test "x$with_platform" = x; then
114 case "$target_cpu"-"$target_vendor" in
115 i386-apple) platform=efi ;;
116 i386-*) platform=pc ;;
117 x86_64-apple) platform=efi ;;
118 x86_64-*) platform=pc ;;
119 powerpc-*) platform=ieee1275 ;;
120 powerpc64-*) platform=ieee1275 ;;
121 sparc64-*) platform=ieee1275 ;;
122 mipsel-*) platform=loongson ;;
123 mips-*) platform=arc ;;
124 ia64-*) platform=efi ;;
125 arm-*) platform=uboot ;;
126 arm64-*) platform=efi ;;
127 *) AC_MSG_ERROR([unsupported CPU: "$target_cpu"]) ;;
130 platform="$with_platform"
133 case "$target_cpu"-"$platform" in
137 x86_64-*) target_cpu=i386 ;;
138 powerpc64-ieee1275) target_cpu=powerpc ;;
141 # Check if the platform is supported, make final adjustments.
142 case "$target_cpu"-"$platform" in
150 i386-linuxbios) platform=coreboot ;;
157 mips-qemu-mips) platform=qemu_mips;;
161 mipsel-qemu-mips) platform=qemu_mips;;
162 mipsel-yeeloong) platform=loongson ;;
163 mipsel-fuloong) platform=loongson ;;
169 *) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
172 if test x$platform != xemu ; then
173 case "$target_cpu" in
174 i386 | powerpc) target_m32=1 ;;
175 x86_64 | sparc64) target_m64=1 ;;
179 if test x"$target_cpu-$platform" = xsparc64-emu ; then
184 windows* | mingw32*) target_os=cygwin ;;
187 # This normalizes the names, and creates a new variable ("host_kernel")
188 # while at it, since the mapping is not always 1:1 (e.g. different OSes
189 # using the same kernel type).
191 gnu*) host_kernel=hurd ;;
192 linux*) host_kernel=linux ;;
193 freebsd* | kfreebsd*-gnu) host_kernel=kfreebsd ;;
194 netbsd*) host_kernel=netbsd ;;
195 solaris*) host_kernel=illumos ;;
196 darwin*) host_kernel=xnu ;;
197 cygwin | windows* | mingw32*) host_kernel=windows ;;
201 cygwin | windows* | mingw32*) have_exec=n ;;
202 aros*) have_exec=n ;;
207 coreboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_COREBOOT=1" ;;
208 multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
209 efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
210 xen) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_XEN=1" ;;
211 ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
212 uboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_UBOOT=1" ;;
213 qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
214 pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;;
215 emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
216 loongson) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_LOONGSON=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
217 qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
218 arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;;
220 case "$target_cpu" in
221 arm) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARM=1" ;;
222 arm64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARM64=1" ;;
223 mips |mipsel) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;;
224 sparc64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
226 if test x${target_cpu} = xmipsel ; then
227 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo mips_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
229 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"
232 case "${target_cpu}-$platform" in
234 TARGET_LINK_ADDR=0x88200000
235 TARGET_DECOMPRESSOR_LINK_ADDR=0x88100000
238 TARGET_LINK_ADDR=0x80700000
239 TARGET_DECOMPRESSOR_LINK_ADDR=0x80600000
241 mips*-qemu_mips | mips*-loongson)
242 TARGET_DECOMPRESSOR_LINK_ADDR=0x80100000
246 AC_SUBST(TARGET_LINK_ADDR)
247 AC_SUBST(TARGET_DECOMPRESSOR_LINK_ADDR)
249 TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
253 AC_SUBST(host_kernel)
258 # Define default variables
261 AC_ARG_WITH([bootdir],
262 AS_HELP_STRING([--with-bootdir=DIR],
263 [set the name of /boot directory [[guessed]]]),
264 [have_with_bootdir=y],
265 [have_with_bootdir=n])
266 if test x$have_with_bootdir = xy; then
267 bootdirname="$with_bootdir"
271 # Because /boot is used for the boot block in NetBSD and OpenBSD,
273 *) bootdirname='boot' ;;
277 AC_SUBST(bootdirname)
278 AC_DEFINE_UNQUOTED(GRUB_BOOT_DIR_NAME, "$bootdirname",
279 [Default boot directory name]")
281 AC_ARG_WITH([grubdir],
282 AS_HELP_STRING([--with-grubdir=DIR],
283 [set the name of grub directory [[guessed]]]),
284 [grubdirname="$with_grubdir"],
285 [grubdirname="$PACKAGE"])
287 AC_SUBST(grubdirname)
288 AC_DEFINE_UNQUOTED(GRUB_DIR_NAME, "$grubdirname",
289 [Default grub directory name])
292 # Checks for build programs.
295 # Although cmp is listed in the GNU Coding Standards as a command which
296 # can used directly, OpenBSD lacks cmp in the default installation.
297 AC_CHECK_PROGS([CMP], [cmp])
298 if test "x$CMP" = x; then
299 AC_MSG_ERROR([cmp is not found])
302 AC_CHECK_PROGS([YACC], [bison])
303 if test "x$YACC" = x; then
304 AC_MSG_ERROR([bison is not found])
316 if test "x$LEX" = "x:"; then
317 AC_MSG_ERROR([flex is not found])
319 version=`$LEX --version | $AWK '{ split($NF,x,"."); print x[[1]]*10000+x[[2]]*100+x[[3]]; }'`
320 if test -n "$version" -a "$version" -ge 20535; then
323 AC_MSG_ERROR([flex is too old. GRUB requires 2.5.35 or above])
327 # These are not a "must".
328 AC_PATH_PROGS(MAKEINFO, makeinfo true)
331 # Checks for host programs.
341 test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
343 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
346 AM_GNU_GETTEXT([external])
349 # Identify characteristics of the host architecture.
350 unset ac_cv_c_bigendian
352 if test x"$target_cpu-$platform" = xsparc64-emu ; then
353 CFLAGS="$CFLAGS -m64"
354 HOST_CFLAGS="$HOST_CFLAGS -m64"
358 AC_CHECK_SIZEOF(void *)
359 AC_CHECK_SIZEOF(long)
362 cygwin | windows* | mingw32*)
363 HOST_CPPFLAGS="$HOST_CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
364 CPPFLAGS="$CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
365 AC_CHECK_SIZEOF(TCHAR,,[#include <windows.h>])
369 if test x$USE_NLS = xno; then
370 HOST_CFLAGS="$HOST_CFLAGS -fno-builtin-gettext"
373 if test "x$cross_compiling" = xyes; then
374 AC_MSG_WARN([cannot generate manual pages while cross compiling])
376 AC_PATH_PROG(HELP2MAN, help2man)
379 # Check for functions and headers.
380 AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
381 AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
383 AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
384 #include <sys/param.h>
385 #include <sys/mount.h>])
387 AC_CHECK_MEMBERS([struct statfs.f_mntfromname],,,[$ac_includes_default
388 #include <sys/param.h>
389 #include <sys/mount.h>])
391 # For opendisk() and getrawpartition() on NetBSD.
392 # Used in util/deviceiter.c and in util/hostdisk.c.
393 AC_CHECK_HEADER([util.h], [
394 AC_CHECK_LIB([util], [opendisk], [
396 AC_DEFINE(HAVE_OPENDISK, 1, [Define if opendisk() in -lutil can be used])
398 AC_CHECK_LIB([util], [getrawpartition], [
400 AC_DEFINE(HAVE_GETRAWPARTITION, 1, [Define if getrawpartition() in -lutil can be used])
405 AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_host_cc_wtrampolines], [
406 SAVED_CFLAGS="$CFLAGS"
407 CFLAGS="$HOST_CFLAGS -Wtrampolines -Werror"
408 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
409 int va_arg_func (int fixed, va_list args);]], [[]])],
410 [grub_cv_host_cc_wtrampolines=yes],
411 [grub_cv_host_cc_wtrampolines=no])
412 CFLAGS="$SAVED_CFLAGS"
415 if test x"$grub_host_cv_cc_wtrampolines" = xyes ; then
416 HOST_CFLAGS="$HOST_CFLAGS -Wtrampolines"
420 # Check for host and build compilers.
423 AC_CHECK_PROGS(BUILD_CC, [gcc egcs cc])
424 test -z "$BUILD_CC" && AC_MSG_ERROR([none of gcc, egcs and cc is found. set BUILD_CC manually.])
425 BUILD_CPP="$BUILD_CC -E"
428 haiku*) BUILD_LIBM= ;;
434 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"
435 EXTRA_WARN_FLAGS="-Wold-style-definition -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"
437 HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
439 AC_CACHE_CHECK([which extra warnings work], [grub_cv_cc_w_extra_flags], [
440 SAVED_CFLAGS="$CFLAGS"
441 grub_cv_cc_w_extra_flags=
442 for x in $EXTRA_WARN_FLAGS; do
443 CFLAGS="$HOST_CFLAGS $x -Werror"
444 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
445 if test x$flag = x1 ; then
446 grub_cv_cc_w_extra_flags="$grub_cv_cc_w_extra_flags $x"
449 CFLAGS="$SAVED_CFLAGS"
452 HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
455 # Check for target programs.
458 # Find tools for the target.
459 if test "x$target_alias" != x && test "x$host_alias" != "x$target_alias"; then
460 tmp_ac_tool_prefix="$ac_tool_prefix"
461 ac_tool_prefix=$target_alias-
463 AC_CHECK_TOOLS(TARGET_CC, [gcc egcs cc],
464 [AC_MSG_ERROR([none of gcc, egcs and cc is found. set TARGET_CC manually.])])
465 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
466 AC_CHECK_TOOL(TARGET_STRIP, strip)
467 AC_CHECK_TOOL(TARGET_NM, nm)
468 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
470 ac_tool_prefix="$tmp_ac_tool_prefix"
472 if test "x$TARGET_CC" = x; then
475 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
476 AC_CHECK_TOOL(TARGET_STRIP, strip)
477 AC_CHECK_TOOL(TARGET_NM, nm)
478 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
483 AC_SUBST(BUILD_CFLAGS)
484 AC_SUBST(BUILD_CPPFLAGS)
487 AC_SUBST(TARGET_RANLIB)
488 AC_SUBST(TARGET_STRIP)
489 AC_SUBST(TARGET_OBJCOPY)
491 # Test the C compiler for the target environment.
494 tmp_LDFLAGS="$LDFLAGS"
495 tmp_CPPFLAGS="$CPPFLAGS"
498 CFLAGS="$TARGET_CFLAGS"
499 CPPFLAGS="$TARGET_CPPFLAGS"
500 LDFLAGS="$TARGET_LDFLAGS"
504 TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations"
505 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
507 if test "x$target_cpu" != xi386 && test "x$target_cpu" != xx86_64; then
508 TARGET_CFLAGS="$TARGET_CFLAGS -Wcast-align"
511 AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [
512 LDFLAGS="$TARGET_LDFLAGS -nostdlib -static"
514 grub_cv_target_cc_w_extra_flags=
515 for x in $EXTRA_WARN_FLAGS; do
516 CFLAGS="$TARGET_CFLAGS $x -Werror"
517 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [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 # For platforms where ELF is not the default link format.
692 case "${target_os}" in
694 # FIXME: put proper test here
695 NEED_REGISTER_FRAME_INFO=1
697 *) NEED_REGISTER_FRAME_INFO=0 ;;
701 AC_ARG_ENABLE([efiemu],
702 [AS_HELP_STRING([--enable-efiemu],
703 [build and install the efiemu runtimes (default=guessed)])])
704 if test x"$enable_efiemu" = xno ; then
705 efiemu_excuse="explicitly disabled"
707 if test x"$target_os" = xcygwin ; then
708 efiemu_excuse="not available on cygwin"
710 if test x"$target_cpu" != xi386 ; then
711 efiemu_excuse="only available on i386"
713 if test x"$platform" = xefi ; then
714 efiemu_excuse="not available on efi"
716 if test x"$efiemu_excuse" = x ; then
717 AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
718 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
719 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
720 [grub_cv_cc_efiemu=yes],
721 [grub_cv_cc_efiemu=no])
723 if test x$grub_cv_cc_efiemu = xno; then
724 efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
727 if test x"$efiemu_excuse" = x ; then
728 AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efiemu64_link_format], [
729 grub_cv_target_cc_efiemu64_link_format=unknown
730 for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -melf_x86_64_haiku -arch,x86_64; do
731 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
732 LDFLAGS="-m64 -Wl,$format -nostdlib -static"
733 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
734 asm (".globl start; start:");
735 asm (".globl _start; _start:");
736 asm (".globl __start; __start:");
738 void __main (void) {}
739 ]], [[]])], [flag=1], [flag=0])
740 if test x"$flag" = x1; then
741 grub_cv_target_cc_efiemu64_link_format="$format"
745 if test x"$grub_cv_target_cc_efiemu64_link_format" = xunknown; then
746 efiemu_excuse="no suitable link format for efiemu64 found"
748 EFIEMU64_LINK_FORMAT="-Wl,$grub_cv_target_cc_efiemu64_link_format"
751 if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
752 AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled])
754 if test x"$efiemu_excuse" = x ; then
759 AC_SUBST([enable_efiemu])
760 AC_SUBST([EFIEMU64_LINK_FORMAT])
762 CFLAGS="$TARGET_CFLAGS"
764 if test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
765 AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
766 grub_cv_target_cc_link_format=unknown
767 for format in -melf_${target_cpu} -melf_${target_cpu}_fbsd -melf_${target_cpu}_obsd -melf_${target_cpu}_haiku -m${target_cpu}pe -arch,${target_cpu}; do
768 if test x${target_cpu} != xi386 && test x$format = x${target_cpu}pe; then
771 CFLAGS="$TARGET_CFLAGS"
772 LDFLAGS="$TARGET_LDFLAGS -Wl,$format -nostdlib -static"
773 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
774 asm (".globl start; start:");
775 asm (".globl _start; _start:");
776 asm (".globl __start; __start:");
778 void __main (void) {}
779 ]], [[]])], [flag=1], [flag=0])
780 if test x"$flag" = x1; then
781 grub_cv_target_cc_link_format="$format"
785 if test x"$grub_cv_target_cc_link_format" = xunknown; then
786 AC_MSG_ERROR([no suitable link format found])
788 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
789 if test x"$grub_cv_target_cc_link_format" = x-mi386pe; then
790 TARGET_OBJ2ELF='./build-grub-pe2elf';
794 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
795 TARGET_APPLE_LINKER=1
796 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [objconv], [])
797 if test "x$TARGET_OBJCONV" = x ; then
798 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [./objconv], [], [.])
800 if test "x$TARGET_OBJCONV" = x ; then
801 AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
804 TARGET_IMG_CFLAGS="-static"
805 TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
806 TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
807 TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
808 TARGET_LDFLAGS_OLDMAGIC=""
809 elif test x$grub_cv_target_cc_link_format = x-mi386pe && test x$platform = xpc; then
810 TARGET_APPLE_LINKER=0
811 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
812 TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-pc-cygwin-img-ld.sc"
813 TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
814 TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-pc-cygwin-img-ld.sc"
815 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
818 TARGET_APPLE_LINKER=0
819 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
821 TARGET_IMG_LDFLAGS='-Wl,-N'
822 TARGET_IMG_LDFLAGS_AC='-Wl,-N'
823 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
827 AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
830 LDFLAGS="$TARGET_LDFLAGS"
832 if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then
833 # Use large model to support 4G memory
834 AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
835 CFLAGS="$TARGET_CFLAGS -m64 -mcmodel=large"
836 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
837 [grub_cv_cc_mcmodel=yes],
838 [grub_cv_cc_mcmodel=no])
840 if test "x$grub_cv_cc_mcmodel" = xyes; then
841 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
842 elif test "$target_cpu-$platform" = sparc64-emu; then
843 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
847 if test "$target_cpu"-"$platform" = x86_64-efi; then
848 # EFI writes to stack below %rsp, we must not use the red zone
849 AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
850 CFLAGS="$TARGET_CFLAGS -m64 -mno-red-zone"
851 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
852 [grub_cv_cc_no_red_zone=yes],
853 [grub_cv_cc_no_red_zone=no])
855 if test "x$grub_cv_cc_no_red_zone" = xno; then
856 AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
859 TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
862 if test "x$target_cpu" = xarm; then
863 AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
864 CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
865 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
866 [grub_cv_cc_mlong_calls=yes],
867 [grub_cv_cc_mlong_calls=no])
869 if test "x$grub_cv_cc_mlong_calls" = xyes; then
870 TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
878 CFLAGS="$TARGET_CFLAGS"
880 # Position independent executable.
882 [# Need that, because some distributions ship compilers that include
883 # `-fPIE' in the default specs.
884 if [ x"$pie_possible" = xyes ]; then
885 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
888 CFLAGS="$TARGET_CFLAGS"
890 # Position independent executable.
892 [# On most platforms we don't want PIC as it only makes relocations harder
893 # and code less efficient. On mips we want to have one got table per module
894 # and reload $gp in every function.
895 # GCC implements it using symbol __gnu_local_gp in non-PIC as well.
896 # However with clang we need PIC for this reloading to happen.
897 # Since default varies across dictributions use either -fPIC or -fno-PIC
899 if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel ) && test "x$grub_cv_cc_target_clang" = xyes ; then
900 TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
901 elif [ x"$pic_possible" = xyes ]; then
902 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
905 CFLAGS="$TARGET_CFLAGS"
907 # Smashing stack protector.
908 grub_CHECK_STACK_PROTECTOR
909 # Need that, because some distributions ship compilers that include
910 # `-fstack-protector' in the default specs.
911 if test "x$ssp_possible" = xyes; then
912 TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
915 CFLAGS="$TARGET_CFLAGS"
917 grub_CHECK_STACK_ARG_PROBE
918 # Cygwin's GCC uses alloca() to probe the stackframe on static
919 # stack allocations above some threshold.
920 if test x"$sap_possible" = xyes; then
921 TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
924 CFLAGS="$TARGET_CFLAGS"
926 # -mno-unaligned-access -mstrict-align
927 if test "$target_cpu" = arm; then
928 AC_CACHE_CHECK([for compile options to get strict alignment], [grub_cv_target_cc_strict_align], [
929 grub_cv_target_cc_strict_align=
930 for arg in -mno-unaligned-access "-Xclang -mstrict-align" -mstrict-align; do
931 CFLAGS="$TARGET_CFLAGS $arg -Werror"
932 LDFLAGS="$TARGET_LDFLAGS"
933 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
934 if test x"$flag" = x1; then
935 grub_cv_target_cc_strict_align="$arg"
940 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_strict_align"
941 if test x"$grub_cv_target_cc_strict_align" = x"-Xclang -mstrict-align"; then
942 TARGET_LDFLAGS="$TARGET_LDFLAGS -Qunused-arguments"
944 AC_CACHE_CHECK([if compiler generates unaligned accesses], [grub_cv_cc_target_emits_unaligned],
945 [CFLAGS="$TARGET_CFLAGS"
946 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
947 #ifdef __ARM_FEATURE_UNALIGNED
951 [grub_cv_cc_target_emits_unaligned=no], [grub_cv_cc_target_emits_unaligned=yes])])
952 if test x$grub_cv_cc_target_emits_unaligned = xyes; then
953 AC_MSG_ERROR([compiler generates unaligned accesses])
957 # Set them to their new values for the tests below.
959 if test "x$TARGET_APPLE_LINKER" = x1 ; then
960 CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
962 CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100 -Wno-error"
964 CPPFLAGS="$TARGET_CPPFLAGS"
965 if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
971 LIBS="$TARGET_LIBGCC"
974 if test "x$TARGET_APPLE_LINKER" = x0 ; then
975 if test x$grub_cv_asm_uscore = xyes; then
976 CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,_abort=_main"
978 CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,abort=main"
982 # Check for libgcc symbols
983 AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __ucmpdi2 _restgpr_14_x)
985 if test "x$TARGET_APPLE_LINKER" = x1 ; then
986 CFLAGS="$TARGET_CFLAGS -nostdlib -static"
988 CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100"
992 # Defined in aclocal.m4.
994 if test "x$TARGET_APPLE_LINKER" != x1 ; then
995 grub_PROG_OBJCOPY_ABSOLUTE
997 grub_PROG_LD_BUILD_ID_NONE
998 if test "x$target_cpu" = xi386; then
999 if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
1000 if test ! -z "$TARGET_IMG_LDSCRIPT"; then
1001 # Check symbols provided by linker script.
1002 CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000 -Wl,--defsym,___main=0x8100"
1004 grub_CHECK_BSS_START_SYMBOL
1005 grub_CHECK_END_SYMBOL
1007 CFLAGS="$TARGET_CFLAGS"
1008 grub_I386_ASM_PREFIX_REQUIREMENT
1009 grub_I386_ASM_ADDR32
1013 grub_PROG_NM_MINUS_P
1014 grub_PROG_NM_DEFINED_ONLY
1015 AC_SUBST(TARGET_NMFLAGS_MINUS_P)
1016 AC_SUBST(TARGET_NMFLAGS_DEFINED_ONLY)
1018 if test "$platform" != emu; then
1019 AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
1020 SAVED_CPPFLAGS="$CPPFLAGS"
1021 CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1022 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1024 int va_arg_func (int fixed, va_list args);]], [[]])],
1025 [grub_cv_cc_isystem=yes],
1026 [grub_cv_cc_isystem=no])
1027 CPPFLAGS="$SAVED_CPPFLAGS"
1030 if test x"$grub_cv_cc_isystem" = xyes ; then
1031 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1035 AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_cc_wtrampolines], [
1036 CFLAGS="$TARGET_CFLAGS -Wtrampolines -Werror"
1037 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1038 int va_arg_func (int fixed, va_list args);]], [[]])],
1039 [grub_cv_cc_wtrampolines=yes],
1040 [grub_cv_cc_wtrampolines=no])
1043 if test x"$grub_cv_cc_wtrampolines" = xyes ; then
1044 TARGET_CFLAGS="$TARGET_CFLAGS -Wtrampolines"
1047 # Restore the flags.
1049 CFLAGS="$tmp_CFLAGS"
1050 CPPFLAGS="$tmp_CPPFLAGS"
1051 LDFLAGS="$tmp_LDFLAGS"
1055 # Check for options.
1058 # Memory manager debugging.
1059 AC_ARG_ENABLE([mm-debug],
1060 AS_HELP_STRING([--enable-mm-debug],
1061 [include memory manager debugging]),
1062 [AC_DEFINE([MM_DEBUG], [1],
1063 [Define to 1 if you enable memory manager debugging.])])
1065 AC_ARG_ENABLE([cache-stats],
1066 AS_HELP_STRING([--enable-cache-stats],
1067 [enable disk cache statistics collection]))
1069 if test x$enable_cache_stats = xyes; then
1074 AC_SUBST([DISK_CACHE_STATS])
1076 AC_ARG_ENABLE([boot-time],
1077 AS_HELP_STRING([--enable-boot-time],
1078 [enable boot time statistics collection]))
1080 if test x$enable_boot_time = xyes; then
1085 AC_SUBST([BOOT_TIME_STATS])
1087 AC_ARG_ENABLE([grub-emu-usb],
1088 [AS_HELP_STRING([--enable-grub-emu-usb],
1089 [build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
1091 AC_ARG_ENABLE([grub-emu-sdl],
1092 [AS_HELP_STRING([--enable-grub-emu-sdl],
1093 [build and install the `grub-emu' debugging utility with SDL support (default=guessed)])])
1095 AC_ARG_ENABLE([grub-emu-pci],
1096 [AS_HELP_STRING([--enable-grub-emu-pci],
1097 [build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
1099 if test "$platform" = emu; then
1101 if test x"$enable_grub_emu_usb" != xyes ; then
1102 grub_emu_usb_excuse="not enabled"
1105 if test x"$enable_grub_emu_pci" = xyes ; then
1106 grub_emu_usb_excuse="conflicts with PCI support"
1109 [if [ x"$grub_emu_usb_excuse" = x ]; then
1110 # Check for libusb libraries.]
1111 AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
1112 [grub_emu_usb_excuse=["need libusb library"]])
1115 [if [ x"$grub_emu_usb_excuse" = x ]; then
1116 # Check for headers.]
1117 AC_CHECK_HEADERS([usb.h], [],
1118 [grub_emu_usb_excuse=["need libusb headers"]])
1120 if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
1121 AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled])
1123 if test x"$grub_emu_usb_excuse" = x ; then
1124 enable_grub_emu_usb=yes
1126 enable_grub_emu_usb=no
1129 if test x"$enable_grub_emu_sdl" = xno ; then
1130 grub_emu_sdl_excuse="explicitely disabled"
1132 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1133 # Check for libSDL libraries.]
1134 AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
1135 [grub_emu_sdl_excuse=["libSDL libraries are required to build \`grub-emu' with SDL support"]])
1139 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1140 # Check for headers.]
1141 AC_CHECK_HEADERS([SDL/SDL.h], [],
1142 [grub_emu_sdl_excuse=["libSDL header file is required to build \`grub-emu' with SDL support"]])
1145 if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
1146 AC_MSG_ERROR([SDL support for grub-emu was explicitely requested but can't be compiled])
1148 if test x"$grub_emu_sdl_excuse" = x ; then
1149 enable_grub_emu_sdl=yes
1151 enable_grub_emu_sdl=no
1154 if test x"$enable_grub_emu_pci" != xyes ; then
1155 grub_emu_pci_excuse="not enabled"
1158 if test x"$enable_grub_emu_usb" = xyes ; then
1159 grub_emu_pci_excuse="conflicts with USB support"
1162 [if [ x"$grub_emu_pci_excuse" = x ]; then
1163 # Check for libpci libraries.]
1164 AC_CHECK_LIB([pciaccess], [pci_system_init], [LIBPCIACCESS="-lpciaccess"],
1165 [grub_emu_pci_excuse=["need libpciaccess library"]])
1166 AC_SUBST([LIBPCIACCESS])
1168 [if [ x"$grub_emu_pci_excuse" = x ]; then
1169 # Check for headers.]
1170 AC_CHECK_HEADERS([pci/pci.h], [],
1171 [grub_emu_pci_excuse=["need libpciaccess headers"]])
1174 if test x"$grub_emu_pci_excuse" = x ; then
1175 enable_grub_emu_pci=yes
1178 enable_grub_emu_pci=no
1181 AC_SUBST([enable_grub_emu_sdl])
1182 AC_SUBST([enable_grub_emu_usb])
1183 AC_SUBST([enable_grub_emu_pci])
1187 # Ignore --enable-emu-* if platform is not emu
1188 enable_grub_emu_sdl=no
1189 enable_grub_emu_usb=no
1190 enable_grub_emu_pci=no
1193 AC_ARG_ENABLE([grub-mkfont],
1194 [AS_HELP_STRING([--enable-grub-mkfont],
1195 [build and install the `grub-mkfont' utility (default=guessed)])])
1196 if test x"$enable_grub_mkfont" = xno ; then
1197 grub_mkfont_excuse="explicitly disabled"
1200 if test x"$grub_mkfont_excuse" = x ; then
1201 # Check for freetype libraries.
1202 AC_CHECK_TOOLS([FREETYPE], [freetype-config])
1203 if test "x$FREETYPE" = x ; then
1204 grub_mkfont_excuse=["need freetype2 library"]
1208 unset ac_cv_header_ft2build_h
1210 if test x"$grub_mkfont_excuse" = x ; then
1211 # Check for freetype libraries.
1212 freetype_cflags=`$FREETYPE --cflags`
1213 freetype_libs=`$FREETYPE --libs`
1214 SAVED_CPPFLAGS="$CPPFLAGS"
1216 CPPFLAGS="$CPPFLAGS $freetype_cflags"
1217 LIBS="$LIBS $freetype_libs"
1218 AC_CHECK_HEADERS([ft2build.h], [],
1219 [grub_mkfont_excuse=["need freetype2 headers"]])
1220 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
1221 CPPFLAGS="$SAVED_CPPFLAGS"
1225 if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
1226 AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled])
1228 if test x"$grub_mkfont_excuse" = x ; then
1229 enable_grub_mkfont=yes
1231 enable_grub_mkfont=no
1233 AC_SUBST([enable_grub_mkfont])
1234 AC_SUBST([freetype_cflags])
1235 AC_SUBST([freetype_libs])
1239 SAVED_CFLAGS="$CFLAGS"
1240 SAVED_CPPFLAGS="$CPPFLAGS"
1243 CFLAGS="$BUILD_CFLAGS"
1244 CPPFLAGS="$BUILD_CPPFLAGS"
1246 unset ac_cv_c_bigendian
1247 unset ac_cv_header_ft2build_h
1249 AC_COMPUTE_INT([BUILD_SIZEOF_VOID_P], [sizeof (void *)])
1250 AC_COMPUTE_INT([BUILD_SIZEOF_LONG], [sizeof (long)])
1251 AC_C_BIGENDIAN([BUILD_WORDS_BIGENDIAN=1], [BUILD_WORDS_BIGENDIAN=0], [BUILD_WORDS_BIGENDIAN=err], [BUILD_WORDS_BIGENDIAN=err])
1253 if test x$BUILD_WORDS_BIGENDIAN = xerr ; then
1254 AC_MSG_ERROR([couldnt determine build endianness])
1257 AC_SUBST([BUILD_SIZEOF_LONG])
1258 AC_SUBST([BUILD_SIZEOF_VOID_P])
1259 AC_SUBST([BUILD_WORDS_BIGENDIAN])
1261 if test x"$grub_build_mkfont_excuse" = x ; then
1262 # Check for freetype libraries.
1263 AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
1264 if test "x$BUILD_FREETYPE" = x ; then
1265 grub_build_mkfont_excuse=["need freetype2 library"]
1269 if test x"$grub_build_mkfont_excuse" = x ; then
1270 # Check for freetype libraries.
1271 build_freetype_cflags=`$BUILD_FREETYPE --cflags`
1272 build_freetype_libs=`$BUILD_FREETYPE --libs`
1273 SAVED_CPPFLAGS_2="$CPPFLAGS"
1275 CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
1276 LIBS="$LIBS $build_freetype_libs"
1277 AC_CHECK_HEADERS([ft2build.h], [],
1278 [grub_build_mkfont_excuse=["need freetype2 headers"]])
1279 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
1281 CPPFLAGS="$SAVED_CPPFLAGS_2"
1284 if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
1285 AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled])
1287 if test x"$grub_build_mkfont_excuse" = x ; then
1288 enable_build_grub_mkfont=yes
1290 enable_build_grub_mkfont=no
1292 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
1293 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
1296 AC_SUBST([build_freetype_cflags])
1297 AC_SUBST([build_freetype_libs])
1301 CFLAGS="$SAVED_CFLAGS"
1302 CPPFLAGS="$SAVED_CPPFLAGS"
1309 AC_ARG_ENABLE([grub-themes],
1310 [AS_HELP_STRING([--enable-grub-themes],
1311 [build and install GRUB themes (default=guessed)])])
1312 if test x"$enable_grub_themes" = xno ; then
1313 starfield_excuse="explicitly disabled"
1316 if test x"$starfield_excuse" = x && test x"$enable_build_grub_mkfont" = xno ; then
1317 starfield_excuse="No build-time grub-mkfont"
1320 if test x"$starfield_excuse" = x; then
1321 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1322 for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do
1323 if test -f "$dir/DejaVuSans.$ext"; then
1324 DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
1330 if test "x$DJVU_FONT_SOURCE" = x; then
1331 starfield_excuse="No DejaVu found"
1335 if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then
1336 AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied])
1339 AC_SUBST([DJVU_FONT_SOURCE])
1343 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1344 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
1345 if test -f "$dir/unifont.$ext"; then
1346 md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')"
1347 # PCF and BDF from version 6.3 isn't hanled properly by libfreetype.
1348 if test "$md5" = 0a54834d2788c83886a3e1785a6a1e61 || test "$md5" = 28f2565c7a41d8d407e2551159385edb || test "$md5" = dae5e588461b3b92b87b6ffee734f936 || test "$md5" = 4a3d687aa5bb329ed05f4263a1016791 ; then
1351 FONT_SOURCE="$dir/unifont.$ext"
1357 if test x"$enable_build_grub_mkfont" = xno ; then
1361 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
1362 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
1365 AC_SUBST([FONT_SOURCE])
1367 if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x && test x"$grub_build_mkfont_excuse" = x; then
1368 grub_build_mkfont_excuse="no fonts"
1372 AC_ARG_ENABLE([grub-mount],
1373 [AS_HELP_STRING([--enable-grub-mount],
1374 [build and install the `grub-mount' utility (default=guessed)])])
1375 if test x"$enable_grub_mount" = xno ; then
1376 grub_mount_excuse="explicitly disabled"
1379 if test x"$grub_mount_excuse" = x ; then
1380 AC_CHECK_LIB([fuse], [fuse_main_real], [],
1381 [grub_mount_excuse="need FUSE library"])
1384 if test x"$grub_mount_excuse" = x ; then
1385 # Check for fuse headers.
1386 SAVED_CPPFLAGS="$CPPFLAGS"
1387 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26"
1388 AC_CHECK_HEADERS([fuse/fuse.h], [],
1389 [grub_mount_excuse=["need FUSE headers"]])
1390 CPPFLAGS="$SAVED_CPPFLAGS"
1393 if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
1394 AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled])
1396 if test x"$grub_mount_excuse" = x ; then
1397 enable_grub_mount=yes
1399 enable_grub_mount=no
1401 AC_SUBST([enable_grub_mount])
1403 AC_ARG_ENABLE([device-mapper],
1404 [AS_HELP_STRING([--enable-device-mapper],
1405 [enable Linux device-mapper support (default=guessed)])])
1406 if test x"$enable_device_mapper" = xno ; then
1407 device_mapper_excuse="explicitly disabled"
1410 if test x"$device_mapper_excuse" = x ; then
1411 # Check for device-mapper header.
1412 AC_CHECK_HEADER([libdevmapper.h], [],
1413 [device_mapper_excuse="need libdevmapper header"])
1416 if test x"$device_mapper_excuse" = x ; then
1417 # Check for device-mapper library.
1418 AC_CHECK_LIB([devmapper], [dm_task_create], [],
1419 [device_mapper_excuse="need devmapper library"])
1422 if test x"$device_mapper_excuse" = x ; then
1423 # Check for device-mapper library.
1424 AC_CHECK_LIB([devmapper], [dm_log_with_errno_init],
1426 [device_mapper_excuse="need devmapper library"])
1429 if test x"$device_mapper_excuse" = x ; then
1430 LIBDEVMAPPER="-ldevmapper";
1431 AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
1432 [Define to 1 if you have the devmapper library.])
1435 AC_SUBST([LIBDEVMAPPER])
1438 if test x$host_kernel = xkfreebsd; then
1439 AC_CHECK_LIB([geom], [geom_gettree], [],
1440 [AC_MSG_ERROR([Your platform requires libgeom])])
1446 AC_ARG_ENABLE([liblzma],
1447 [AS_HELP_STRING([--enable-liblzma],
1448 [enable liblzma integration (default=guessed)])])
1449 if test x"$enable_liblzma" = xno ; then
1450 liblzma_excuse="explicitly disabled"
1453 if test x"$liblzma_excuse" = x ; then
1454 AC_CHECK_LIB([lzma], [lzma_code],
1455 [],[liblzma_excuse="need lzma library"])
1457 if test x"$liblzma_excuse" = x ; then
1458 AC_CHECK_HEADER([lzma.h], [], [liblzma_excuse="need lzma header"])
1461 if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then
1462 AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied])
1466 if test x"$liblzma_excuse" = x ; then
1468 AC_DEFINE([USE_LIBLZMA], [1],
1469 [Define to 1 if you have the LZMA library.])
1474 AC_ARG_ENABLE([libzfs],
1475 [AS_HELP_STRING([--enable-libzfs],
1476 [enable libzfs integration (default=guessed)])])
1477 if test x"$enable_libzfs" = xno ; then
1478 libzfs_excuse="explicitly disabled"
1481 if test x"$libzfs_excuse" = x ; then
1482 # Only check for system headers if libzfs support has not been disabled.
1483 AC_CHECK_HEADERS(libzfs.h libnvpair.h)
1486 if test x"$libzfs_excuse" = x ; then
1487 AC_CHECK_LIB([zfs], [libzfs_init],
1489 [libzfs_excuse="need zfs library"])
1492 if test x"$libzfs_excuse" = x ; then
1493 AC_CHECK_LIB([nvpair], [nvlist_lookup_string],
1495 [libzfs_excuse="need nvpair library"])
1498 if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then
1499 AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied])
1502 if test x"$libzfs_excuse" = x ; then
1503 # We need both libzfs and libnvpair for a successful build.
1505 AC_DEFINE([HAVE_LIBZFS], [1],
1506 [Define to 1 if you have the ZFS library.])
1507 LIBNVPAIR="-lnvpair"
1508 AC_DEFINE([HAVE_LIBNVPAIR], [1],
1509 [Define to 1 if you have the NVPAIR library.])
1513 AC_SUBST([LIBNVPAIR])
1517 AC_SUBST([FONT_SOURCE])
1518 AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
1519 [AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
1521 AC_SUBST(HAVE_ASM_USCORE)
1524 AC_SUBST(BSS_START_SYMBOL)
1525 AC_SUBST(END_SYMBOL)
1528 AC_SUBST(NEED_REGISTER_FRAME_INFO)
1530 AC_ARG_ENABLE([werror],
1531 [AS_HELP_STRING([--disable-werror],
1532 [do not use -Werror when building GRUB])])
1533 if test x"$enable_werror" != xno ; then
1534 TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
1535 HOST_CFLAGS="$HOST_CFLAGS -Werror"
1538 if test "x$grub_cv_cc_target_clang" = xno; then
1539 TARGET_LDFLAGS_STATIC_LIBGCC="-static-libgcc"
1541 TARGET_LDFLAGS_STATIC_LIBGCC=
1544 TARGET_CPP="$TARGET_CC -E"
1545 TARGET_CCAS=$TARGET_CC
1547 GRUB_TARGET_CPU="${target_cpu}"
1548 GRUB_PLATFORM="${platform}"
1550 AC_SUBST(GRUB_TARGET_CPU)
1551 AC_SUBST(GRUB_PLATFORM)
1553 AC_SUBST(TARGET_OBJCONV)
1554 AC_SUBST(TARGET_LIBGCC)
1555 AC_SUBST(TARGET_LDFLAGS_STATIC_LIBGCC)
1556 AC_SUBST(TARGET_CPP)
1557 AC_SUBST(TARGET_CCAS)
1558 AC_SUBST(TARGET_OBJ2ELF)
1559 AC_SUBST(TARGET_MODULE_FORMAT)
1561 AC_SUBST(TARGET_CFLAGS)
1562 AC_SUBST(TARGET_LDFLAGS)
1563 AC_SUBST(TARGET_CPPFLAGS)
1564 AC_SUBST(TARGET_CCASFLAGS)
1566 AC_SUBST(TARGET_IMG_LDSCRIPT)
1567 AC_SUBST(TARGET_IMG_LDFLAGS)
1568 AC_SUBST(TARGET_IMG_CFLAGS)
1569 AC_SUBST(TARGET_IMG_BASE_LDOPT)
1570 AC_SUBST(TARGET_APPLE_LINKER)
1572 AC_SUBST(HOST_CFLAGS)
1573 AC_SUBST(HOST_LDFLAGS)
1574 AC_SUBST(HOST_CPPFLAGS)
1575 AC_SUBST(HOST_CCASFLAGS)
1577 AC_SUBST(BUILD_LIBM)
1580 # Automake conditionals
1583 AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
1584 AM_CONDITIONAL([COND_clang], [test x$grub_cv_cc_target_clang = xyes])
1585 AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
1586 AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
1587 AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi])
1588 AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
1589 AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
1590 AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
1591 AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
1592 AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
1593 AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
1594 AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
1595 AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
1596 AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
1597 AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
1598 AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
1599 AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
1600 AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
1601 AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
1602 AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
1603 AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
1604 AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
1605 AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
1606 AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
1607 AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
1608 AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
1610 AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
1611 AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
1612 AM_CONDITIONAL([COND_HOST_NETBSD], [test x$host_kernel = xnetbsd])
1613 AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
1614 AM_CONDITIONAL([COND_HOST_KFREEBSD], [test x$host_kernel = xkfreebsd])
1615 AM_CONDITIONAL([COND_HOST_XNU], [test x$host_kernel = xxnu])
1616 AM_CONDITIONAL([COND_HOST_ILLUMOS], [test x$host_kernel = xillumos])
1618 AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
1619 AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
1620 AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
1621 AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
1622 AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
1623 AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
1624 AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
1625 if test x$FONT_SOURCE != x ; then
1630 AC_SUBST(HAVE_FONT_SOURCE)
1631 AM_CONDITIONAL([COND_APPLE_LINKER], [test x$TARGET_APPLE_LINKER = x1])
1632 AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
1633 AM_CONDITIONAL([COND_ENABLE_CACHE_STATS], [test x$DISK_CACHE_STATS = x1])
1634 AM_CONDITIONAL([COND_ENABLE_BOOT_TIME_STATS], [test x$BOOT_TIME_STATS = x1])
1636 AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
1638 AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
1639 AM_CONDITIONAL([COND_CYGWIN], [test x$target_os = xcygwin])
1640 AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
1641 AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
1643 test "x$prefix" = xNONE && prefix="$ac_default_prefix"
1644 test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
1645 datarootdir="$(eval echo "$datarootdir")"
1646 grub_libdir="$(eval echo "$libdir")"
1647 grub_localedir="$(eval echo "$localedir")"
1648 grub_datadir="$(eval echo "$datadir")"
1649 grub_sysconfdir="$(eval echo "$sysconfdir")"
1650 AC_DEFINE_UNQUOTED(LOCALEDIR, "$grub_localedir", [Locale dir])
1651 AC_DEFINE_UNQUOTED(GRUB_LIBDIR, "$grub_libdir", [Library dir])
1652 AC_DEFINE_UNQUOTED(GRUB_DATADIR, "$grub_datadir", [Data dir])
1653 AC_DEFINE_UNQUOTED(GRUB_SYSCONFDIR, "$grub_sysconfdir", [Configuration dir])
1657 cpudir="${target_cpu}"
1658 if test x${cpudir} = xmipsel; then
1662 if test x"$link_dir" = xyes ; then
1663 AC_CONFIG_LINKS([include/grub/cpu:include/grub/$cpudir])
1664 if test "$platform" != emu ; then
1665 AC_CONFIG_LINKS([include/grub/machine:include/grub/$cpudir/$platform])
1668 mkdir -p include/grub 2>/dev/null
1669 rm -rf include/grub/cpu
1670 cp -rp $srcdir/include/grub/$cpudir include/grub/cpu 2>/dev/null
1671 if test "$platform" != emu ; then
1672 rm -rf include/grub/machine
1673 cp -rp $srcdir/include/grub/$cpudir/$platform include/grub/machine 2>/dev/null
1677 AC_CONFIG_FILES([Makefile])
1678 AC_CONFIG_FILES([grub-core/Makefile])
1679 AC_CONFIG_FILES([grub-core/gnulib/Makefile])
1680 AC_CONFIG_FILES([po/Makefile.in])
1681 AC_CONFIG_FILES([docs/Makefile])
1682 AC_CONFIG_FILES([util/bash-completion.d/Makefile])
1683 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
1684 AC_CONFIG_FILES([config.h])
1688 echo "*******************************************************"
1689 echo GRUB2 will be compiled with following components:
1690 echo Platform: "$target_cpu"-"$platform"
1691 if [ x"$platform" = xemu ]; then
1692 if [ x"$grub_emu_usb_excuse" = x ]; then
1693 echo USB support for grub-emu: Yes
1695 echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
1697 if [ x"$grub_emu_sdl_excuse" = x ]; then
1698 echo SDL support for grub-emu: Yes
1700 echo SDL support for grub-emu: No "($grub_emu_sdl_excuse)"
1702 if [ x"$grub_emu_pci_excuse" = x ]; then
1703 echo PCI support for grub-emu: Yes
1705 echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
1708 if test x"$device_mapper_excuse" = x ; then
1709 echo With devmapper support: Yes
1711 echo With devmapper support: No "($device_mapper_excuse)"
1713 if [ x"$enable_mm_debug" = xyes ]; then
1714 echo With memory debugging: Yes
1716 echo With memory debugging: No
1718 if [ x"$enable_cache_stats" = xyes ]; then
1719 echo With disk cache statistics: Yes
1721 echo With disk cache statistics: No
1724 if [ x"$enable_boot_time" = xyes ]; then
1725 echo With boot time statistics: Yes
1727 echo With boot time statistics: No
1730 if [ x"$efiemu_excuse" = x ]; then
1731 echo efiemu runtime: Yes
1733 echo efiemu runtime: No "($efiemu_excuse)"
1735 if [ x"$grub_mkfont_excuse" = x ]; then
1736 echo grub-mkfont: Yes
1738 echo grub-mkfont: No "($grub_mkfont_excuse)"
1740 if [ x"$grub_mount_excuse" = x ]; then
1741 echo grub-mount: Yes
1743 echo grub-mount: No "($grub_mount_excuse)"
1745 if [ x"$starfield_excuse" = x ]; then
1746 echo starfield theme: Yes
1748 echo starfield theme: No "($starfield_excuse)"
1750 if [ x"$libzfs_excuse" = x ]; then
1751 echo With libzfs support: Yes
1753 echo With libzfs support: No "($libzfs_excuse)"
1755 if [ x"$grub_build_mkfont_excuse" = x ]; then
1756 echo Build-time grub-mkfont: Yes
1757 if test "x$FONT_SOURCE" = x ; then
1758 echo "Without unifont"
1760 echo "With unifont from $FONT_SOURCE"
1763 echo Build-time grub-mkfont: No "($grub_build_mkfont_excuse)"
1764 echo "Without unifont (no build-time grub-mkfont)"
1766 if test x"$liblzma_excuse" != x ; then
1767 echo "Without liblzma (no support for XZ-compressed mips images) ($liblzma_excuse)"
1769 echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
1771 echo "*******************************************************"