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([[
518 asm (".globl start; start:");
520 void __main (void) {}
522 ]], [[]])], [flag=1], [flag=0])
523 if test x$flag = x1 ; then
524 grub_cv_target_cc_w_extra_flags="$grub_cv_target_cc_w_extra_flags $x"
529 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_w_extra_flags"
531 AC_CACHE_CHECK([if compiling with clang], [grub_cv_cc_target_clang]
533 CFLAGS="$TARGET_CFLAGS"
535 [AC_LANG_PROGRAM([], [[
540 [grub_cv_cc_target_clang=no], [grub_cv_cc_target_clang=yes])])
542 # on x86 clang doesn't support .code16
543 # on arm clang doesn't support .arch directive
544 # on mips clang doesn't support privilegied instructions, doubleword store/load
545 # and crashes with hand-written assembly
546 if test "x$grub_cv_cc_target_clang" = xyes && ( test "x$target_cpu" = xi386 \
547 || test "x$target_cpu" = xx86_64 || test "x$target_cpu" = xarm \
548 || test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ); then
549 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
552 if test "x$grub_cv_cc_target_clang" = xyes && test "x$target_cpu" = xpowerpc; then
553 AC_CACHE_CHECK([if clang can handle ame instruction], [grub_cv_cc_target_clang_ame]
555 CFLAGS="$TARGET_CFLAGS"
557 [AC_LANG_PROGRAM([], [[
558 unsigned int a = 0, b = 0;
559 asm volatile ("{ame|addme} %0,%1" : "=r" (a) : "r" (b));
563 [grub_cv_cc_target_clang_ame=yes], [grub_cv_cc_target_clang_ame=no])])
564 # clang <= 3.3 doesn't handle most of ppc assembly, not even inline assembly
566 if test x$grub_cv_cc_target_clang_ame = xno ; then
567 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
568 TARGET_CFLAGS="$TARGET_CFLAGS -no-integrated-as"
572 if test "x$target_cpu" = xi386 && test "x$platform" != xemu; then
573 TARGET_CFLAGS="$TARGET_CFLAGS -march=i386"
576 if test "x$target_m32" = x1; then
578 TARGET_CFLAGS="$TARGET_CFLAGS -m32"
579 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
580 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m32"
581 TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
582 TARGET_MODULE_FORMAT="elf32"
585 if test "x$target_m64" = x1; then
587 TARGET_CFLAGS="$TARGET_CFLAGS -m64"
588 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
589 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m64"
590 TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
591 TARGET_MODULE_FORMAT="elf64"
594 if test "x$grub_cv_cc_target_clang" = xno && test "x$target_cpu" = xi386 && test "x$platform" != xemu && test "x$platform" != xefi; then
595 TARGET_CFLAGS="$TARGET_CFLAGS -mrtd -mregparm=3"
598 # on mips redirect cache flushing function to non-existant one.
599 if test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ; then
600 AC_CACHE_CHECK([whether -mflush-func=grub_red_herring works], [grub_cv_cc_mflush_func], [
601 CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring -Werror"
602 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
603 [grub_cv_cc_mflush_func=yes],
604 [grub_cv_cc_mflush_func=no])
607 if test "x$grub_cv_cc_mflush_func" = xyes; then
608 TARGET_CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring"
613 # Force no alignment to save space on i386.
614 if test "x$target_cpu" = xi386; then
615 AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
616 CFLAGS="$TARGET_CFLAGS -falign-loops=1 -Werror"
617 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
618 [grub_cv_cc_falign_loop=yes],
619 [grub_cv_cc_falign_loop=no])
622 AC_CACHE_CHECK([whether -malign-loops works], [grub_cv_cc_malign_loop], [
623 CFLAGS="$TARGET_CFLAGS -malign-loops=1 -Werror"
624 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
625 [grub_cv_cc_malign_loop=yes],
626 [grub_cv_cc_malign_loop=no])
629 if test "x$grub_cv_cc_falign_loop" = xyes; then
630 TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
631 elif test "x$grub_cv_cc_malign_loop" = xyes; then
632 TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
636 AC_CACHE_CHECK([whether -freg-struct-return works], [grub_cv_cc_freg_struct_return], [
637 CFLAGS="$TARGET_CFLAGS -freg-struct-return -Werror"
638 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
639 [grub_cv_cc_freg_struct_return=yes],
640 [grub_cv_cc_freg_struct_return=no])
643 if test "x$grub_cv_cc_freg_struct_return" = xyes; then
644 TARGET_CFLAGS="$TARGET_CFLAGS -freg-struct-return"
647 if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
648 # Some toolchains enable these features by default, but they need
649 # registers that aren't set up properly in GRUB.
650 TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-3dnow"
653 # By default, GCC 4.4 generates .eh_frame sections containing unwind
654 # information in some cases where it previously did not. GRUB doesn't need
655 # these and they just use up vital space. Restore the old compiler
657 AC_CACHE_CHECK([whether -fno-dwarf2-cfi-asm works], [grub_cv_cc_fno_dwarf2_cfi_asm], [
658 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
659 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
660 [grub_cv_cc_fno_dwarf2_cfi_asm=yes],
661 [grub_cv_cc_fno_dwarf2_cfi_asm=no])
664 if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
665 TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
668 if test x"$target_os" = xcygwin; then
669 AC_CACHE_CHECK([whether option -fno-reorder-functions works], grub_cv_cc_no_reorder_functions, [
670 CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
671 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
672 [grub_cv_cc_no_reorder_functions=yes],
673 [grub_cv_cc_no_reorder_functions=no])
677 if test x"$target_os" = xcygwin && test "x$grub_cv_cc_no_reorder_functions" = xyes; then
678 TARGET_CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
681 # By default, GCC 4.6 generates .eh_frame sections containing unwind
682 # information in some cases where it previously did not. GRUB doesn't need
683 # these and they just use up vital space. Restore the old compiler
685 AC_CACHE_CHECK([whether -fno-asynchronous-unwind-tables works], [grub_cv_cc_fno_asynchronous_unwind_tables], [
686 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
687 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
688 [grub_cv_cc_fno_asynchronous_unwind_tables=yes],
689 [grub_cv_cc_fno_asynchronous_unwind_tables=no])
692 if test "x$grub_cv_cc_fno_asynchronous_unwind_tables" = xyes; then
693 TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
696 # For platforms where ELF is not the default link format.
697 case "${target_os}" in
699 # FIXME: put proper test here
700 NEED_REGISTER_FRAME_INFO=1
702 *) NEED_REGISTER_FRAME_INFO=0 ;;
706 AC_ARG_ENABLE([efiemu],
707 [AS_HELP_STRING([--enable-efiemu],
708 [build and install the efiemu runtimes (default=guessed)])])
709 if test x"$enable_efiemu" = xno ; then
710 efiemu_excuse="explicitly disabled"
712 if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then
713 efiemu_excuse="not available on cygwin"
715 if test x"$target_cpu" != xi386 ; then
716 efiemu_excuse="only available on i386"
718 if test x"$platform" = xefi ; then
719 efiemu_excuse="not available on efi"
721 if test x"$efiemu_excuse" = x ; then
722 AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
723 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
724 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
725 [grub_cv_cc_efiemu=yes],
726 [grub_cv_cc_efiemu=no])
728 if test x$grub_cv_cc_efiemu = xno; then
729 efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
732 if test x"$efiemu_excuse" = x ; then
733 AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efiemu64_link_format], [
734 grub_cv_target_cc_efiemu64_link_format=unknown
735 for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -melf_x86_64_haiku -arch,x86_64; do
736 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
737 LDFLAGS="-m64 -Wl,$format -nostdlib -static"
738 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
739 asm (".globl start; start:");
740 asm (".globl _start; _start:");
741 asm (".globl __start; __start:");
743 void __main (void) {}
744 ]], [[]])], [flag=1], [flag=0])
745 if test x"$flag" = x1; then
746 grub_cv_target_cc_efiemu64_link_format="$format"
750 if test x"$grub_cv_target_cc_efiemu64_link_format" = xunknown; then
751 efiemu_excuse="no suitable link format for efiemu64 found"
753 EFIEMU64_LINK_FORMAT="-Wl,$grub_cv_target_cc_efiemu64_link_format"
756 if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
757 AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled])
759 if test x"$efiemu_excuse" = x ; then
764 AC_SUBST([enable_efiemu])
765 AC_SUBST([EFIEMU64_LINK_FORMAT])
767 CFLAGS="$TARGET_CFLAGS"
769 if test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
770 AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
771 grub_cv_target_cc_link_format=unknown
772 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
773 if test x${target_cpu} != xi386 && test x$format = x${target_cpu}pe; then
776 CFLAGS="$TARGET_CFLAGS"
777 LDFLAGS="$TARGET_LDFLAGS -Wl,$format -nostdlib -static"
778 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
779 asm (".globl start; start:");
780 asm (".globl _start; _start:");
781 asm (".globl __start; __start:");
783 void __main (void) {}
784 ]], [[]])], [flag=1], [flag=0])
785 if test x"$flag" = x1; then
786 grub_cv_target_cc_link_format="$format"
790 if test x"$grub_cv_target_cc_link_format" = xunknown; then
791 AC_MSG_ERROR([no suitable link format found])
793 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
794 if test x"$grub_cv_target_cc_link_format" = x-mi386pe; then
795 TARGET_OBJ2ELF='./build-grub-pe2elf';
799 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
800 TARGET_APPLE_LINKER=1
801 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [objconv], [])
802 if test "x$TARGET_OBJCONV" = x ; then
803 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [./objconv], [], [.])
805 if test "x$TARGET_OBJCONV" = x ; then
806 AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
809 TARGET_IMG_CFLAGS="-static"
810 TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
811 TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
812 TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
813 TARGET_LDFLAGS_OLDMAGIC=""
814 elif test x$grub_cv_target_cc_link_format = x-mi386pe; then
815 TARGET_APPLE_LINKER=0
816 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
817 TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
818 TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
819 TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
820 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
823 TARGET_APPLE_LINKER=0
824 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
826 TARGET_IMG_LDFLAGS='-Wl,-N'
827 TARGET_IMG_LDFLAGS_AC='-Wl,-N'
828 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
832 AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
835 LDFLAGS="$TARGET_LDFLAGS"
837 if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then
838 # Use large model to support 4G memory
839 AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
840 CFLAGS="$TARGET_CFLAGS -m64 -mcmodel=large"
841 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
842 [grub_cv_cc_mcmodel=yes],
843 [grub_cv_cc_mcmodel=no])
845 if test "x$grub_cv_cc_mcmodel" = xyes; then
846 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
847 elif test "$target_cpu-$platform" = sparc64-emu; then
848 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
852 if test "$target_cpu"-"$platform" = x86_64-efi; then
853 # EFI writes to stack below %rsp, we must not use the red zone
854 AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
855 CFLAGS="$TARGET_CFLAGS -m64 -mno-red-zone"
856 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
857 [grub_cv_cc_no_red_zone=yes],
858 [grub_cv_cc_no_red_zone=no])
860 if test "x$grub_cv_cc_no_red_zone" = xno; then
861 AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
864 TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
867 if test "x$target_cpu" = xarm; then
868 AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
869 CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
870 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
871 [grub_cv_cc_mlong_calls=yes],
872 [grub_cv_cc_mlong_calls=no])
874 if test "x$grub_cv_cc_mlong_calls" = xyes; then
875 TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
883 CFLAGS="$TARGET_CFLAGS"
885 # Position independent executable.
887 [# Need that, because some distributions ship compilers that include
888 # `-fPIE' in the default specs.
889 if [ x"$pie_possible" = xyes ]; then
890 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
893 CFLAGS="$TARGET_CFLAGS"
895 # Position independent executable.
897 [# On most platforms we don't want PIC as it only makes relocations harder
898 # and code less efficient. On mips we want to have one got table per module
899 # and reload $gp in every function.
900 # GCC implements it using symbol __gnu_local_gp in non-PIC as well.
901 # However with clang we need PIC for this reloading to happen.
902 # Since default varies across dictributions use either -fPIC or -fno-PIC
904 if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel ) && test "x$grub_cv_cc_target_clang" = xyes ; then
905 TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
906 elif [ x"$pic_possible" = xyes ]; then
907 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
910 CFLAGS="$TARGET_CFLAGS"
912 # Smashing stack protector.
913 grub_CHECK_STACK_PROTECTOR
914 # Need that, because some distributions ship compilers that include
915 # `-fstack-protector' in the default specs.
916 if test "x$ssp_possible" = xyes; then
917 TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
920 CFLAGS="$TARGET_CFLAGS"
922 grub_CHECK_STACK_ARG_PROBE
923 # Cygwin's GCC uses alloca() to probe the stackframe on static
924 # stack allocations above some threshold.
925 if test x"$sap_possible" = xyes; then
926 TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
929 CFLAGS="$TARGET_CFLAGS"
931 # -mno-unaligned-access -mstrict-align
932 if test "$target_cpu" = arm; then
933 AC_CACHE_CHECK([for compile options to get strict alignment], [grub_cv_target_cc_strict_align], [
934 grub_cv_target_cc_strict_align=
935 for arg in -mno-unaligned-access "-Xclang -mstrict-align" -mstrict-align; do
936 CFLAGS="$TARGET_CFLAGS $arg -Werror"
937 LDFLAGS="$TARGET_LDFLAGS"
938 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
939 if test x"$flag" = x1; then
940 grub_cv_target_cc_strict_align="$arg"
945 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_strict_align"
946 if test x"$grub_cv_target_cc_strict_align" = x"-Xclang -mstrict-align"; then
947 TARGET_LDFLAGS="$TARGET_LDFLAGS -Qunused-arguments"
949 AC_CACHE_CHECK([if compiler generates unaligned accesses], [grub_cv_cc_target_emits_unaligned],
950 [CFLAGS="$TARGET_CFLAGS"
951 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
952 #ifdef __ARM_FEATURE_UNALIGNED
956 [grub_cv_cc_target_emits_unaligned=no], [grub_cv_cc_target_emits_unaligned=yes])])
957 if test x$grub_cv_cc_target_emits_unaligned = xyes; then
958 AC_MSG_ERROR([compiler generates unaligned accesses])
962 # Set them to their new values for the tests below.
964 if test "x$TARGET_APPLE_LINKER" = x1 ; then
965 CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
967 CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
969 CPPFLAGS="$TARGET_CPPFLAGS"
970 if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
976 LIBS="$TARGET_LIBGCC"
979 if test "x$TARGET_APPLE_LINKER" = x0 ; then
980 if test x$grub_cv_asm_uscore = xyes; then
981 DEFSYM="-Wl,--defsym,_abort=_main -Wl,--defsym,__main=_main"
983 DEFSYM="-Wl,--defsym,abort=main -Wl,--defsym,_main=main -Wl,--defsym,__main=main"
985 CFLAGS="$TARGET_CFLAGS -nostdlib $DEFSYM"
988 # Check for libgcc symbols
989 AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __ucmpdi2 _restgpr_14_x)
991 if test "x$TARGET_APPLE_LINKER" = x1 ; then
992 CFLAGS="$TARGET_CFLAGS -nostdlib -static"
994 CFLAGS="$TARGET_CFLAGS -nostdlib"
998 # Defined in aclocal.m4.
1000 if test "x$TARGET_APPLE_LINKER" != x1 ; then
1001 grub_PROG_OBJCOPY_ABSOLUTE
1003 grub_PROG_LD_BUILD_ID_NONE
1004 if test "x$target_cpu" = xi386; then
1005 if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
1006 if test ! -z "$TARGET_IMG_LDSCRIPT"; then
1007 # Check symbols provided by linker script.
1008 CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000"
1010 grub_CHECK_BSS_START_SYMBOL
1011 grub_CHECK_END_SYMBOL
1013 CFLAGS="$TARGET_CFLAGS"
1014 grub_I386_ASM_PREFIX_REQUIREMENT
1015 grub_I386_ASM_ADDR32
1019 grub_PROG_NM_MINUS_P
1020 grub_PROG_NM_DEFINED_ONLY
1021 AC_SUBST(TARGET_NMFLAGS_MINUS_P)
1022 AC_SUBST(TARGET_NMFLAGS_DEFINED_ONLY)
1024 if test "$platform" != emu; then
1025 AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
1026 SAVED_CPPFLAGS="$CPPFLAGS"
1027 CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1028 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1030 int va_arg_func (int fixed, va_list args);]], [[]])],
1031 [grub_cv_cc_isystem=yes],
1032 [grub_cv_cc_isystem=no])
1033 CPPFLAGS="$SAVED_CPPFLAGS"
1036 if test x"$grub_cv_cc_isystem" = xyes ; then
1037 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1041 AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_cc_wtrampolines], [
1042 CFLAGS="$TARGET_CFLAGS -Wtrampolines -Werror"
1043 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1044 int va_arg_func (int fixed, va_list args);]], [[]])],
1045 [grub_cv_cc_wtrampolines=yes],
1046 [grub_cv_cc_wtrampolines=no])
1049 if test x"$grub_cv_cc_wtrampolines" = xyes ; then
1050 TARGET_CFLAGS="$TARGET_CFLAGS -Wtrampolines"
1053 # Restore the flags.
1055 CFLAGS="$tmp_CFLAGS"
1056 CPPFLAGS="$tmp_CPPFLAGS"
1057 LDFLAGS="$tmp_LDFLAGS"
1061 # Check for options.
1064 # Memory manager debugging.
1065 AC_ARG_ENABLE([mm-debug],
1066 AS_HELP_STRING([--enable-mm-debug],
1067 [include memory manager debugging]),
1068 [AC_DEFINE([MM_DEBUG], [1],
1069 [Define to 1 if you enable memory manager debugging.])])
1071 AC_ARG_ENABLE([cache-stats],
1072 AS_HELP_STRING([--enable-cache-stats],
1073 [enable disk cache statistics collection]))
1075 if test x$enable_cache_stats = xyes; then
1080 AC_SUBST([DISK_CACHE_STATS])
1082 AC_ARG_ENABLE([boot-time],
1083 AS_HELP_STRING([--enable-boot-time],
1084 [enable boot time statistics collection]))
1086 if test x$enable_boot_time = xyes; then
1091 AC_SUBST([BOOT_TIME_STATS])
1093 AC_ARG_ENABLE([grub-emu-usb],
1094 [AS_HELP_STRING([--enable-grub-emu-usb],
1095 [build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
1097 AC_ARG_ENABLE([grub-emu-sdl],
1098 [AS_HELP_STRING([--enable-grub-emu-sdl],
1099 [build and install the `grub-emu' debugging utility with SDL support (default=guessed)])])
1101 AC_ARG_ENABLE([grub-emu-pci],
1102 [AS_HELP_STRING([--enable-grub-emu-pci],
1103 [build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
1105 if test "$platform" = emu; then
1107 if test x"$enable_grub_emu_usb" != xyes ; then
1108 grub_emu_usb_excuse="not enabled"
1111 if test x"$enable_grub_emu_pci" = xyes ; then
1112 grub_emu_usb_excuse="conflicts with PCI support"
1115 [if [ x"$grub_emu_usb_excuse" = x ]; then
1116 # Check for libusb libraries.]
1117 AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
1118 [grub_emu_usb_excuse=["need libusb library"]])
1121 [if [ x"$grub_emu_usb_excuse" = x ]; then
1122 # Check for headers.]
1123 AC_CHECK_HEADERS([usb.h], [],
1124 [grub_emu_usb_excuse=["need libusb headers"]])
1126 if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
1127 AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled])
1129 if test x"$grub_emu_usb_excuse" = x ; then
1130 enable_grub_emu_usb=yes
1132 enable_grub_emu_usb=no
1135 if test x"$enable_grub_emu_sdl" = xno ; then
1136 grub_emu_sdl_excuse="explicitely disabled"
1138 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1139 # Check for libSDL libraries.]
1140 AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
1141 [grub_emu_sdl_excuse=["libSDL libraries are required to build \`grub-emu' with SDL support"]])
1145 [if [ x"$grub_emu_sdl_excuse" = x ]; then
1146 # Check for headers.]
1147 AC_CHECK_HEADERS([SDL/SDL.h], [],
1148 [grub_emu_sdl_excuse=["libSDL header file is required to build \`grub-emu' with SDL support"]])
1151 if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
1152 AC_MSG_ERROR([SDL support for grub-emu was explicitely requested but can't be compiled])
1154 if test x"$grub_emu_sdl_excuse" = x ; then
1155 enable_grub_emu_sdl=yes
1157 enable_grub_emu_sdl=no
1160 if test x"$enable_grub_emu_pci" != xyes ; then
1161 grub_emu_pci_excuse="not enabled"
1164 if test x"$enable_grub_emu_usb" = xyes ; then
1165 grub_emu_pci_excuse="conflicts with USB support"
1168 [if [ x"$grub_emu_pci_excuse" = x ]; then
1169 # Check for libpci libraries.]
1170 AC_CHECK_LIB([pciaccess], [pci_system_init], [LIBPCIACCESS="-lpciaccess"],
1171 [grub_emu_pci_excuse=["need libpciaccess library"]])
1172 AC_SUBST([LIBPCIACCESS])
1174 [if [ x"$grub_emu_pci_excuse" = x ]; then
1175 # Check for headers.]
1176 AC_CHECK_HEADERS([pci/pci.h], [],
1177 [grub_emu_pci_excuse=["need libpciaccess headers"]])
1180 if test x"$grub_emu_pci_excuse" = x ; then
1181 enable_grub_emu_pci=yes
1184 enable_grub_emu_pci=no
1187 AC_SUBST([enable_grub_emu_sdl])
1188 AC_SUBST([enable_grub_emu_usb])
1189 AC_SUBST([enable_grub_emu_pci])
1193 # Ignore --enable-emu-* if platform is not emu
1194 enable_grub_emu_sdl=no
1195 enable_grub_emu_usb=no
1196 enable_grub_emu_pci=no
1199 AC_ARG_ENABLE([grub-mkfont],
1200 [AS_HELP_STRING([--enable-grub-mkfont],
1201 [build and install the `grub-mkfont' utility (default=guessed)])])
1202 if test x"$enable_grub_mkfont" = xno ; then
1203 grub_mkfont_excuse="explicitly disabled"
1206 if test x"$grub_mkfont_excuse" = x ; then
1207 # Check for freetype libraries.
1208 AC_CHECK_TOOLS([FREETYPE], [freetype-config])
1209 if test "x$FREETYPE" = x ; then
1210 grub_mkfont_excuse=["need freetype2 library"]
1214 unset ac_cv_header_ft2build_h
1216 if test x"$grub_mkfont_excuse" = x ; then
1217 # Check for freetype libraries.
1218 freetype_cflags=`$FREETYPE --cflags`
1219 freetype_libs=`$FREETYPE --libs`
1220 SAVED_CPPFLAGS="$CPPFLAGS"
1222 CPPFLAGS="$CPPFLAGS $freetype_cflags"
1223 LIBS="$LIBS $freetype_libs"
1224 AC_CHECK_HEADERS([ft2build.h], [],
1225 [grub_mkfont_excuse=["need freetype2 headers"]])
1226 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
1227 CPPFLAGS="$SAVED_CPPFLAGS"
1231 if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
1232 AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled])
1234 if test x"$grub_mkfont_excuse" = x ; then
1235 enable_grub_mkfont=yes
1237 enable_grub_mkfont=no
1239 AC_SUBST([enable_grub_mkfont])
1240 AC_SUBST([freetype_cflags])
1241 AC_SUBST([freetype_libs])
1245 SAVED_CFLAGS="$CFLAGS"
1246 SAVED_CPPFLAGS="$CPPFLAGS"
1249 CFLAGS="$BUILD_CFLAGS"
1250 CPPFLAGS="$BUILD_CPPFLAGS"
1252 unset ac_cv_c_bigendian
1253 unset ac_cv_header_ft2build_h
1255 AC_COMPUTE_INT([BUILD_SIZEOF_VOID_P], [sizeof (void *)])
1256 AC_COMPUTE_INT([BUILD_SIZEOF_LONG], [sizeof (long)])
1257 AC_C_BIGENDIAN([BUILD_WORDS_BIGENDIAN=1], [BUILD_WORDS_BIGENDIAN=0], [BUILD_WORDS_BIGENDIAN=err], [BUILD_WORDS_BIGENDIAN=err])
1259 if test x$BUILD_WORDS_BIGENDIAN = xerr ; then
1260 AC_MSG_ERROR([couldnt determine build endianness])
1263 AC_SUBST([BUILD_SIZEOF_LONG])
1264 AC_SUBST([BUILD_SIZEOF_VOID_P])
1265 AC_SUBST([BUILD_WORDS_BIGENDIAN])
1267 if test x"$grub_build_mkfont_excuse" = x ; then
1268 # Check for freetype libraries.
1269 AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
1270 if test "x$BUILD_FREETYPE" = x ; then
1271 grub_build_mkfont_excuse=["need freetype2 library"]
1275 if test x"$grub_build_mkfont_excuse" = x ; then
1276 # Check for freetype libraries.
1277 build_freetype_cflags=`$BUILD_FREETYPE --cflags`
1278 build_freetype_libs=`$BUILD_FREETYPE --libs`
1279 SAVED_CPPFLAGS_2="$CPPFLAGS"
1281 CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
1282 LIBS="$LIBS $build_freetype_libs"
1283 AC_CHECK_HEADERS([ft2build.h], [],
1284 [grub_build_mkfont_excuse=["need freetype2 headers"]])
1285 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
1287 CPPFLAGS="$SAVED_CPPFLAGS_2"
1290 if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
1291 AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled])
1293 if test x"$grub_build_mkfont_excuse" = x ; then
1294 enable_build_grub_mkfont=yes
1296 enable_build_grub_mkfont=no
1298 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
1299 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
1302 AC_SUBST([build_freetype_cflags])
1303 AC_SUBST([build_freetype_libs])
1307 CFLAGS="$SAVED_CFLAGS"
1308 CPPFLAGS="$SAVED_CPPFLAGS"
1315 AC_ARG_ENABLE([grub-themes],
1316 [AS_HELP_STRING([--enable-grub-themes],
1317 [build and install GRUB themes (default=guessed)])])
1318 if test x"$enable_grub_themes" = xno ; then
1319 starfield_excuse="explicitly disabled"
1322 if test x"$starfield_excuse" = x && test x"$enable_build_grub_mkfont" = xno ; then
1323 starfield_excuse="No build-time grub-mkfont"
1326 if test x"$starfield_excuse" = x; then
1327 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1328 for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do
1329 if test -f "$dir/DejaVuSans.$ext"; then
1330 DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
1336 if test "x$DJVU_FONT_SOURCE" = x; then
1337 starfield_excuse="No DejaVu found"
1341 if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then
1342 AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied])
1345 AC_SUBST([DJVU_FONT_SOURCE])
1349 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1350 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
1351 if test -f "$dir/unifont.$ext"; then
1352 md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')"
1353 # PCF and BDF from version 6.3 isn't hanled properly by libfreetype.
1354 if test "$md5" = 0a54834d2788c83886a3e1785a6a1e61 || test "$md5" = 28f2565c7a41d8d407e2551159385edb || test "$md5" = dae5e588461b3b92b87b6ffee734f936 || test "$md5" = 4a3d687aa5bb329ed05f4263a1016791 ; then
1357 FONT_SOURCE="$dir/unifont.$ext"
1363 if test x"$enable_build_grub_mkfont" = xno ; then
1367 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
1368 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
1371 AC_SUBST([FONT_SOURCE])
1373 if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x && test x"$grub_build_mkfont_excuse" = x; then
1374 grub_build_mkfont_excuse="no fonts"
1378 AC_ARG_ENABLE([grub-mount],
1379 [AS_HELP_STRING([--enable-grub-mount],
1380 [build and install the `grub-mount' utility (default=guessed)])])
1381 if test x"$enable_grub_mount" = xno ; then
1382 grub_mount_excuse="explicitly disabled"
1385 if test x"$grub_mount_excuse" = x ; then
1386 AC_CHECK_LIB([fuse], [fuse_main_real], [],
1387 [grub_mount_excuse="need FUSE library"])
1390 if test x"$grub_mount_excuse" = x ; then
1391 # Check for fuse headers.
1392 SAVED_CPPFLAGS="$CPPFLAGS"
1393 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26"
1394 AC_CHECK_HEADERS([fuse/fuse.h], [],
1395 [grub_mount_excuse=["need FUSE headers"]])
1396 CPPFLAGS="$SAVED_CPPFLAGS"
1399 if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
1400 AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled])
1402 if test x"$grub_mount_excuse" = x ; then
1403 enable_grub_mount=yes
1405 enable_grub_mount=no
1407 AC_SUBST([enable_grub_mount])
1409 AC_ARG_ENABLE([device-mapper],
1410 [AS_HELP_STRING([--enable-device-mapper],
1411 [enable Linux device-mapper support (default=guessed)])])
1412 if test x"$enable_device_mapper" = xno ; then
1413 device_mapper_excuse="explicitly disabled"
1416 if test x"$device_mapper_excuse" = x ; then
1417 # Check for device-mapper header.
1418 AC_CHECK_HEADER([libdevmapper.h], [],
1419 [device_mapper_excuse="need libdevmapper header"])
1422 if test x"$device_mapper_excuse" = x ; then
1423 # Check for device-mapper library.
1424 AC_CHECK_LIB([devmapper], [dm_task_create], [],
1425 [device_mapper_excuse="need devmapper library"])
1428 if test x"$device_mapper_excuse" = x ; then
1429 # Check for device-mapper library.
1430 AC_CHECK_LIB([devmapper], [dm_log_with_errno_init],
1432 [device_mapper_excuse="need devmapper library"])
1435 if test x"$device_mapper_excuse" = x ; then
1436 LIBDEVMAPPER="-ldevmapper";
1437 AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
1438 [Define to 1 if you have the devmapper library.])
1441 AC_SUBST([LIBDEVMAPPER])
1444 if test x$host_kernel = xkfreebsd; then
1445 AC_CHECK_LIB([geom], [geom_gettree], [],
1446 [AC_MSG_ERROR([Your platform requires libgeom])])
1452 AC_ARG_ENABLE([liblzma],
1453 [AS_HELP_STRING([--enable-liblzma],
1454 [enable liblzma integration (default=guessed)])])
1455 if test x"$enable_liblzma" = xno ; then
1456 liblzma_excuse="explicitly disabled"
1459 if test x"$liblzma_excuse" = x ; then
1460 AC_CHECK_LIB([lzma], [lzma_code],
1461 [],[liblzma_excuse="need lzma library"])
1463 if test x"$liblzma_excuse" = x ; then
1464 AC_CHECK_HEADER([lzma.h], [], [liblzma_excuse="need lzma header"])
1467 if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then
1468 AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied])
1472 if test x"$liblzma_excuse" = x ; then
1474 AC_DEFINE([USE_LIBLZMA], [1],
1475 [Define to 1 if you have the LZMA library.])
1480 AC_ARG_ENABLE([libzfs],
1481 [AS_HELP_STRING([--enable-libzfs],
1482 [enable libzfs integration (default=guessed)])])
1483 if test x"$enable_libzfs" = xno ; then
1484 libzfs_excuse="explicitly disabled"
1487 if test x"$libzfs_excuse" = x ; then
1488 # Only check for system headers if libzfs support has not been disabled.
1489 AC_CHECK_HEADERS(libzfs.h libnvpair.h)
1492 if test x"$libzfs_excuse" = x ; then
1493 AC_CHECK_LIB([zfs], [libzfs_init],
1495 [libzfs_excuse="need zfs library"])
1498 if test x"$libzfs_excuse" = x ; then
1499 AC_CHECK_LIB([nvpair], [nvlist_lookup_string],
1501 [libzfs_excuse="need nvpair library"])
1504 if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then
1505 AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied])
1508 if test x"$libzfs_excuse" = x ; then
1509 # We need both libzfs and libnvpair for a successful build.
1511 AC_DEFINE([HAVE_LIBZFS], [1],
1512 [Define to 1 if you have the ZFS library.])
1513 LIBNVPAIR="-lnvpair"
1514 AC_DEFINE([HAVE_LIBNVPAIR], [1],
1515 [Define to 1 if you have the NVPAIR library.])
1519 AC_SUBST([LIBNVPAIR])
1523 AC_SUBST([FONT_SOURCE])
1524 AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
1525 [AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
1527 AC_SUBST(HAVE_ASM_USCORE)
1530 AC_SUBST(BSS_START_SYMBOL)
1531 AC_SUBST(END_SYMBOL)
1534 AC_SUBST(NEED_REGISTER_FRAME_INFO)
1536 AC_ARG_ENABLE([werror],
1537 [AS_HELP_STRING([--disable-werror],
1538 [do not use -Werror when building GRUB])])
1539 if test x"$enable_werror" != xno ; then
1540 TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
1541 HOST_CFLAGS="$HOST_CFLAGS -Werror"
1544 if test "x$grub_cv_cc_target_clang" = xno; then
1545 TARGET_LDFLAGS_STATIC_LIBGCC="-static-libgcc"
1547 TARGET_LDFLAGS_STATIC_LIBGCC=
1550 TARGET_CPP="$TARGET_CC -E"
1551 TARGET_CCAS=$TARGET_CC
1553 GRUB_TARGET_CPU="${target_cpu}"
1554 GRUB_PLATFORM="${platform}"
1556 AC_SUBST(GRUB_TARGET_CPU)
1557 AC_SUBST(GRUB_PLATFORM)
1559 AC_SUBST(TARGET_OBJCONV)
1560 AC_SUBST(TARGET_LIBGCC)
1561 AC_SUBST(TARGET_LDFLAGS_STATIC_LIBGCC)
1562 AC_SUBST(TARGET_CPP)
1563 AC_SUBST(TARGET_CCAS)
1564 AC_SUBST(TARGET_OBJ2ELF)
1565 AC_SUBST(TARGET_MODULE_FORMAT)
1567 AC_SUBST(TARGET_CFLAGS)
1568 AC_SUBST(TARGET_LDFLAGS)
1569 AC_SUBST(TARGET_CPPFLAGS)
1570 AC_SUBST(TARGET_CCASFLAGS)
1572 AC_SUBST(TARGET_IMG_LDFLAGS)
1573 AC_SUBST(TARGET_IMG_CFLAGS)
1574 AC_SUBST(TARGET_IMG_BASE_LDOPT)
1575 AC_SUBST(TARGET_APPLE_LINKER)
1577 AC_SUBST(HOST_CFLAGS)
1578 AC_SUBST(HOST_LDFLAGS)
1579 AC_SUBST(HOST_CPPFLAGS)
1580 AC_SUBST(HOST_CCASFLAGS)
1582 AC_SUBST(BUILD_LIBM)
1585 # Automake conditionals
1588 AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
1589 AM_CONDITIONAL([COND_clang], [test x$grub_cv_cc_target_clang = xyes])
1590 AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
1591 AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
1592 AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi])
1593 AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
1594 AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
1595 AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
1596 AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
1597 AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
1598 AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
1599 AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
1600 AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
1601 AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
1602 AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
1603 AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
1604 AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
1605 AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
1606 AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
1607 AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
1608 AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
1609 AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
1610 AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
1611 AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
1612 AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
1613 AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
1615 AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
1616 AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
1617 AM_CONDITIONAL([COND_HOST_NETBSD], [test x$host_kernel = xnetbsd])
1618 AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
1619 AM_CONDITIONAL([COND_HOST_KFREEBSD], [test x$host_kernel = xkfreebsd])
1620 AM_CONDITIONAL([COND_HOST_XNU], [test x$host_kernel = xxnu])
1621 AM_CONDITIONAL([COND_HOST_ILLUMOS], [test x$host_kernel = xillumos])
1623 AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
1624 AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
1625 AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
1626 AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
1627 AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
1628 AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
1629 AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
1630 if test x$FONT_SOURCE != x ; then
1635 AC_SUBST(HAVE_FONT_SOURCE)
1636 AM_CONDITIONAL([COND_APPLE_LINKER], [test x$TARGET_APPLE_LINKER = x1])
1637 AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
1638 AM_CONDITIONAL([COND_ENABLE_CACHE_STATS], [test x$DISK_CACHE_STATS = x1])
1639 AM_CONDITIONAL([COND_ENABLE_BOOT_TIME_STATS], [test x$BOOT_TIME_STATS = x1])
1641 AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
1643 AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
1644 AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
1645 AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
1647 test "x$prefix" = xNONE && prefix="$ac_default_prefix"
1648 test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
1649 datarootdir="$(eval echo "$datarootdir")"
1650 grub_libdir="$(eval echo "$libdir")"
1651 grub_localedir="$(eval echo "$localedir")"
1652 grub_datadir="$(eval echo "$datadir")"
1653 grub_sysconfdir="$(eval echo "$sysconfdir")"
1654 AC_DEFINE_UNQUOTED(LOCALEDIR, "$grub_localedir", [Locale dir])
1655 AC_DEFINE_UNQUOTED(GRUB_LIBDIR, "$grub_libdir", [Library dir])
1656 AC_DEFINE_UNQUOTED(GRUB_DATADIR, "$grub_datadir", [Data dir])
1657 AC_DEFINE_UNQUOTED(GRUB_SYSCONFDIR, "$grub_sysconfdir", [Configuration dir])
1661 cpudir="${target_cpu}"
1662 if test x${cpudir} = xmipsel; then
1666 if test x"$link_dir" = xyes ; then
1667 AC_CONFIG_LINKS([include/grub/cpu:include/grub/$cpudir])
1668 if test "$platform" != emu ; then
1669 AC_CONFIG_LINKS([include/grub/machine:include/grub/$cpudir/$platform])
1672 mkdir -p include/grub 2>/dev/null
1673 rm -rf include/grub/cpu
1674 cp -rp $srcdir/include/grub/$cpudir include/grub/cpu 2>/dev/null
1675 if test "$platform" != emu ; then
1676 rm -rf include/grub/machine
1677 cp -rp $srcdir/include/grub/$cpudir/$platform include/grub/machine 2>/dev/null
1681 AC_CONFIG_FILES([Makefile])
1682 AC_CONFIG_FILES([grub-core/Makefile])
1683 AC_CONFIG_FILES([grub-core/gnulib/Makefile])
1684 AC_CONFIG_FILES([po/Makefile.in])
1685 AC_CONFIG_FILES([docs/Makefile])
1686 AC_CONFIG_FILES([util/bash-completion.d/Makefile])
1687 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
1688 AC_CONFIG_FILES([config.h])
1692 echo "*******************************************************"
1693 echo GRUB2 will be compiled with following components:
1694 echo Platform: "$target_cpu"-"$platform"
1695 if [ x"$platform" = xemu ]; then
1696 if [ x"$grub_emu_usb_excuse" = x ]; then
1697 echo USB support for grub-emu: Yes
1699 echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
1701 if [ x"$grub_emu_sdl_excuse" = x ]; then
1702 echo SDL support for grub-emu: Yes
1704 echo SDL support for grub-emu: No "($grub_emu_sdl_excuse)"
1706 if [ x"$grub_emu_pci_excuse" = x ]; then
1707 echo PCI support for grub-emu: Yes
1709 echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
1712 if test x"$device_mapper_excuse" = x ; then
1713 echo With devmapper support: Yes
1715 echo With devmapper support: No "($device_mapper_excuse)"
1717 if [ x"$enable_mm_debug" = xyes ]; then
1718 echo With memory debugging: Yes
1720 echo With memory debugging: No
1722 if [ x"$enable_cache_stats" = xyes ]; then
1723 echo With disk cache statistics: Yes
1725 echo With disk cache statistics: No
1728 if [ x"$enable_boot_time" = xyes ]; then
1729 echo With boot time statistics: Yes
1731 echo With boot time statistics: No
1734 if [ x"$efiemu_excuse" = x ]; then
1735 echo efiemu runtime: Yes
1737 echo efiemu runtime: No "($efiemu_excuse)"
1739 if [ x"$grub_mkfont_excuse" = x ]; then
1740 echo grub-mkfont: Yes
1742 echo grub-mkfont: No "($grub_mkfont_excuse)"
1744 if [ x"$grub_mount_excuse" = x ]; then
1745 echo grub-mount: Yes
1747 echo grub-mount: No "($grub_mount_excuse)"
1749 if [ x"$starfield_excuse" = x ]; then
1750 echo starfield theme: Yes
1752 echo starfield theme: No "($starfield_excuse)"
1754 if [ x"$libzfs_excuse" = x ]; then
1755 echo With libzfs support: Yes
1757 echo With libzfs support: No "($libzfs_excuse)"
1759 if [ x"$grub_build_mkfont_excuse" = x ]; then
1760 echo Build-time grub-mkfont: Yes
1761 if test "x$FONT_SOURCE" = x ; then
1762 echo "Without unifont"
1764 echo "With unifont from $FONT_SOURCE"
1767 echo Build-time grub-mkfont: No "($grub_build_mkfont_excuse)"
1768 echo "Without unifont (no build-time grub-mkfont)"
1770 if test x"$liblzma_excuse" != x ; then
1771 echo "Without liblzma (no support for XZ-compressed mips images) ($liblzma_excuse)"
1773 echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
1775 echo "*******************************************************"