3
# Process this file with autoconf to produce a configure script.
5
# Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
7
# This configure.ac is free software; the author
8
# gives unlimited permission to copy and/or distribute it,
9
# with or without modifications, as long as this notice is preserved.
11
# This program is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
13
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
16
dnl This configure script is complicated, because GRUB needs to deal
17
dnl with three potentially different types:
19
dnl build -- the environment for building GRUB
20
dnl host -- the environment for running utilities
21
dnl target -- the environment for running GRUB
23
dnl In addition, GRUB needs to deal with a platform specification
24
dnl which specifies the system running GRUB, such as firmware.
25
dnl This is necessary because the target type in autoconf does not
26
dnl describe such a system very well.
28
dnl The current strategy is to use variables with no prefix (such as
29
dnl CC, CFLAGS, etc.) for the host type as well as the build type,
30
dnl because GRUB does not need to use those variables for the build
31
dnl type, so there is no conflict. Variables with the prefix "TARGET_"
32
dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
35
AC_INIT([GRUB],[2.02~beta2],[bug-grub@gnu.org])
37
AC_CONFIG_AUX_DIR([build-aux])
39
# We don't want -g -O2 by default in CFLAGS
42
# Checks for host and target systems.
44
save_program_prefix="${program_prefix}"
46
program_prefix="${save_program_prefix}"
48
AM_INIT_AUTOMAKE([1.10.1])
50
AC_CONFIG_SRCDIR([include/grub/dl.h])
51
AC_CONFIG_HEADER([config-util.h])
53
# Program name transformations
55
grub_TRANSFORM([grub-bios-setup])
56
grub_TRANSFORM([grub-editenv])
57
grub_TRANSFORM([grub-install])
58
grub_TRANSFORM([grub-mkconfig])
59
grub_TRANSFORM([grub-mkfont])
60
grub_TRANSFORM([grub-mkimage])
61
grub_TRANSFORM([grub-glue-efi])
62
grub_TRANSFORM([grub-mklayout])
63
grub_TRANSFORM([grub-mkpasswd-pbkdf2])
64
grub_TRANSFORM([grub-mkrelpath])
65
grub_TRANSFORM([grub-mkrescue])
66
grub_TRANSFORM([grub-probe])
67
grub_TRANSFORM([grub-reboot])
68
grub_TRANSFORM([grub-script-check])
69
grub_TRANSFORM([grub-set-default])
70
grub_TRANSFORM([grub-sparc64-setup])
71
grub_TRANSFORM([grub-render-label])
72
grub_TRANSFORM([grub-file])
74
# Optimization flag. Allow user to override.
75
if test "x$TARGET_CFLAGS" = x; then
76
TARGET_CFLAGS="$TARGET_CFLAGS -Os"
79
# Default HOST_CPPFLAGS
80
HOST_CPPFLAGS="$HOST_CPPFLAGS -Wall -W"
81
HOST_CPPFLAGS="$HOST_CPPFLAGS -I\$(top_builddir)/include"
82
HOST_CPPFLAGS="$HOST_CPPFLAGS -DGRUB_UTIL=1"
84
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -Wall -W"
85
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_srcdir)/include"
86
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_builddir)/include"
89
i[[3456]]86) target_cpu=i386 ;;
90
amd64) target_cpu=x86_64 ;;
91
sparc) target_cpu=sparc64 ;;
94
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPSEL=1";
98
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPS=1";
108
# Specify the platform (such as firmware).
109
AC_ARG_WITH([platform],
110
AS_HELP_STRING([--with-platform=PLATFORM],
111
[select the host platform [[guessed]]]))
113
# Guess the platform if not specified.
114
if test "x$with_platform" = x; then
115
case "$target_cpu"-"$target_vendor" in
116
i386-apple) platform=efi ;;
117
i386-*) platform=pc ;;
118
x86_64-apple) platform=efi ;;
119
x86_64-*) platform=pc ;;
120
powerpc-*) platform=ieee1275 ;;
121
powerpc64-*) platform=ieee1275 ;;
122
powerpc64le-*) platform=ieee1275 ;;
123
sparc64-*) platform=ieee1275 ;;
124
mipsel-*) platform=loongson ;;
125
mips-*) platform=arc ;;
126
ia64-*) platform=efi ;;
127
arm-*) platform=uboot ;;
128
arm64-*) platform=efi ;;
129
*) AC_MSG_ERROR([unsupported CPU: "$target_cpu"]) ;;
132
platform="$with_platform"
135
case "$target_cpu"-"$platform" in
139
x86_64-*) target_cpu=i386 ;;
140
powerpc64-ieee1275) target_cpu=powerpc ;;
141
powerpc64le-ieee1275) target_cpu=powerpc ;;
144
# Check if the platform is supported, make final adjustments.
145
case "$target_cpu"-"$platform" in
153
i386-linuxbios) platform=coreboot ;;
160
mips-qemu-mips) platform=qemu_mips;;
164
mipsel-qemu-mips) platform=qemu_mips;;
165
mipsel-yeeloong) platform=loongson ;;
166
mipsel-fuloong) platform=loongson ;;
172
*) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
175
if test x$platform != xemu ; then
176
case "$target_cpu" in
177
i386 | powerpc) target_m32=1 ;;
178
x86_64 | sparc64) target_m64=1 ;;
182
if test x"$target_cpu-$platform" = xsparc64-emu ; then
187
windows* | mingw32*) target_os=cygwin ;;
190
# This normalizes the names, and creates a new variable ("host_kernel")
191
# while at it, since the mapping is not always 1:1 (e.g. different OSes
192
# using the same kernel type).
194
gnu*) host_kernel=hurd ;;
195
linux*) host_kernel=linux ;;
196
freebsd* | kfreebsd*-gnu) host_kernel=kfreebsd ;;
197
netbsd*) host_kernel=netbsd ;;
198
solaris*) host_kernel=illumos ;;
199
darwin*) host_kernel=xnu ;;
200
cygwin | windows* | mingw32*) host_kernel=windows ;;
204
cygwin | windows* | mingw32*) have_exec=n ;;
205
aros*) have_exec=n ;;
210
coreboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_COREBOOT=1" ;;
211
multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
212
efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
213
xen) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_XEN=1" ;;
214
ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
215
uboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_UBOOT=1" ;;
216
qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
217
pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;;
218
emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
219
loongson) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_LOONGSON=1" ;;
220
qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1" ;;
221
arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;;
223
if test x${target_cpu} = xmipsel ; then
224
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo mips_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
226
machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
229
case "${target_cpu}-$platform" in
231
TARGET_LINK_ADDR=0x88200000
232
TARGET_DECOMPRESSOR_LINK_ADDR=0x88100000
235
TARGET_LINK_ADDR=0x80700000
236
TARGET_DECOMPRESSOR_LINK_ADDR=0x80600000
238
mips*-qemu_mips | mips*-loongson)
239
TARGET_DECOMPRESSOR_LINK_ADDR=0x80100000
243
AC_SUBST(TARGET_LINK_ADDR)
244
AC_SUBST(TARGET_DECOMPRESSOR_LINK_ADDR)
246
TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
250
AC_SUBST(host_kernel)
255
# Define default variables
258
AC_ARG_WITH([bootdir],
259
AS_HELP_STRING([--with-bootdir=DIR],
260
[set the name of /boot directory [[guessed]]]),
261
[have_with_bootdir=y],
262
[have_with_bootdir=n])
263
if test x$have_with_bootdir = xy; then
264
bootdirname="$with_bootdir"
268
# Because /boot is used for the boot block in NetBSD and OpenBSD,
270
*) bootdirname='boot' ;;
274
AC_SUBST(bootdirname)
275
AC_DEFINE_UNQUOTED(GRUB_BOOT_DIR_NAME, "$bootdirname",
276
[Default boot directory name]")
278
AC_ARG_WITH([grubdir],
279
AS_HELP_STRING([--with-grubdir=DIR],
280
[set the name of grub directory [[guessed]]]),
281
[grubdirname="$with_grubdir"],
282
[grubdirname="$PACKAGE"])
284
AC_SUBST(grubdirname)
285
AC_DEFINE_UNQUOTED(GRUB_DIR_NAME, "$grubdirname",
286
[Default grub directory name])
289
# Checks for build programs.
292
# Although cmp is listed in the GNU Coding Standards as a command which
293
# can used directly, OpenBSD lacks cmp in the default installation.
294
AC_CHECK_PROGS([CMP], [cmp])
295
if test "x$CMP" = x; then
296
AC_MSG_ERROR([cmp is not found])
299
AC_CHECK_PROGS([YACC], [bison])
300
if test "x$YACC" = x; then
301
AC_MSG_ERROR([bison is not found])
313
if test "x$LEX" = "x:"; then
314
AC_MSG_ERROR([flex is not found])
316
version=`$LEX --version | $AWK '{ split($NF,x,"."); print x[[1]]*10000+x[[2]]*100+x[[3]]; }'`
317
if test -n "$version" -a "$version" -ge 20535; then
320
AC_MSG_ERROR([flex is too old. GRUB requires 2.5.35 or above])
324
# These are not a "must".
325
AC_PATH_PROGS(MAKEINFO, makeinfo true)
328
# Checks for host programs.
338
test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
340
AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
343
AM_GNU_GETTEXT([external])
346
# Identify characteristics of the host architecture.
347
unset ac_cv_c_bigendian
349
if test x"$target_cpu-$platform" = xsparc64-emu ; then
350
CFLAGS="$CFLAGS -m64"
351
HOST_CFLAGS="$HOST_CFLAGS -m64"
355
AC_CHECK_SIZEOF(void *)
356
AC_CHECK_SIZEOF(long)
359
cygwin | windows* | mingw32*)
360
HOST_CPPFLAGS="$HOST_CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
361
CPPFLAGS="$CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
362
AC_CHECK_SIZEOF(TCHAR,,[#include <windows.h>])
366
if test x$USE_NLS = xno; then
367
HOST_CFLAGS="$HOST_CFLAGS -fno-builtin-gettext"
370
if test "x$cross_compiling" = xyes; then
371
AC_MSG_WARN([cannot generate manual pages while cross compiling])
373
AC_PATH_PROG(HELP2MAN, help2man)
376
# Check for functions and headers.
377
AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
378
AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
380
AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
381
#include <sys/param.h>
382
#include <sys/mount.h>])
384
AC_CHECK_MEMBERS([struct statfs.f_mntfromname],,,[$ac_includes_default
385
#include <sys/param.h>
386
#include <sys/mount.h>])
388
# For opendisk() and getrawpartition() on NetBSD.
389
# Used in util/deviceiter.c and in util/hostdisk.c.
390
AC_CHECK_HEADER([util.h], [
391
AC_CHECK_LIB([util], [opendisk], [
393
AC_DEFINE(HAVE_OPENDISK, 1, [Define if opendisk() in -lutil can be used])
395
AC_CHECK_LIB([util], [getrawpartition], [
397
AC_DEFINE(HAVE_GETRAWPARTITION, 1, [Define if getrawpartition() in -lutil can be used])
402
AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_host_cc_wtrampolines], [
403
SAVED_CFLAGS="$CFLAGS"
404
CFLAGS="$HOST_CFLAGS -Wtrampolines -Werror"
405
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
406
int va_arg_func (int fixed, va_list args);]], [[]])],
407
[grub_cv_host_cc_wtrampolines=yes],
408
[grub_cv_host_cc_wtrampolines=no])
409
CFLAGS="$SAVED_CFLAGS"
412
if test x"$grub_host_cv_cc_wtrampolines" = xyes ; then
413
HOST_CFLAGS="$HOST_CFLAGS -Wtrampolines"
417
# Check for host and build compilers.
420
AC_CHECK_PROGS(BUILD_CC, [gcc egcs cc])
421
test -z "$BUILD_CC" && AC_MSG_ERROR([none of gcc, egcs and cc is found. set BUILD_CC manually.])
422
BUILD_CPP="$BUILD_CC -E"
425
haiku*) BUILD_LIBM= ;;
431
WARN_FLAGS="-Wall -W -Wshadow -Wpointer-arith -Wundef -Wchar-subscripts -Wcomment -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wfloat-equal -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-braces -Wmissing-format-attribute -Wmultichar -Wparentheses -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wnested-externs -Wstrict-prototypes"
432
EXTRA_WARN_FLAGS="-Wextra -Wattributes -Wendif-labels -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers -Wnonnull -Woverflow -Wvla -Wpointer-to-int-cast -Wstrict-aliasing -Wvariadic-macros -Wvolatile-register-var -Wpointer-sign -Wmissing-include-dirs -Wmissing-prototypes -Wmissing-declarations -Wformat=2"
434
HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
436
AC_CACHE_CHECK([which extra warnings work], [grub_cv_cc_w_extra_flags], [
437
SAVED_CFLAGS="$CFLAGS"
438
grub_cv_cc_w_extra_flags=
439
for x in $EXTRA_WARN_FLAGS; do
440
CFLAGS="$HOST_CFLAGS $x -Werror"
441
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
442
if test x$flag = x1 ; then
443
grub_cv_cc_w_extra_flags="$grub_cv_cc_w_extra_flags $x"
446
CFLAGS="$SAVED_CFLAGS"
449
HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
452
# Check for target programs.
455
# Find tools for the target.
456
if test "x$target_alias" != x && test "x$host_alias" != "x$target_alias"; then
457
tmp_ac_tool_prefix="$ac_tool_prefix"
458
ac_tool_prefix=$target_alias-
460
AC_CHECK_TOOLS(TARGET_CC, [gcc egcs cc],
461
[AC_MSG_ERROR([none of gcc, egcs and cc is found. set TARGET_CC manually.])])
462
AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
463
AC_CHECK_TOOL(TARGET_STRIP, strip)
464
AC_CHECK_TOOL(TARGET_NM, nm)
465
AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
467
ac_tool_prefix="$tmp_ac_tool_prefix"
469
if test "x$TARGET_CC" = x; then
472
AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
473
AC_CHECK_TOOL(TARGET_STRIP, strip)
474
AC_CHECK_TOOL(TARGET_NM, nm)
475
AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
480
AC_SUBST(BUILD_CFLAGS)
481
AC_SUBST(BUILD_CPPFLAGS)
484
AC_SUBST(TARGET_RANLIB)
485
AC_SUBST(TARGET_STRIP)
486
AC_SUBST(TARGET_OBJCOPY)
488
# Test the C compiler for the target environment.
491
tmp_LDFLAGS="$LDFLAGS"
492
tmp_CPPFLAGS="$CPPFLAGS"
495
CFLAGS="$TARGET_CFLAGS"
496
CPPFLAGS="$TARGET_CPPFLAGS"
497
LDFLAGS="$TARGET_LDFLAGS"
501
TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations"
502
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
504
if test "x$target_cpu" != xi386 && test "x$target_cpu" != xx86_64; then
505
TARGET_CFLAGS="$TARGET_CFLAGS -Wcast-align"
508
TARGET_CC_VERSION="$(LC_ALL=C $TARGET_CC --version | head -n1)"
510
AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [
511
LDFLAGS="$TARGET_LDFLAGS -nostdlib -static"
513
grub_cv_target_cc_w_extra_flags=
514
for x in $EXTRA_WARN_FLAGS; do
515
CFLAGS="$TARGET_CFLAGS $x -Werror"
516
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
517
asm (".globl start; start:");
519
void __main (void) {}
521
]], [[]])], [flag=1], [flag=0])
522
if test x$flag = x1 ; then
523
grub_cv_target_cc_w_extra_flags="$grub_cv_target_cc_w_extra_flags $x"
528
TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_w_extra_flags"
530
AC_CACHE_CHECK([if compiling with clang], [grub_cv_cc_target_clang]
532
CFLAGS="$TARGET_CFLAGS"
534
[AC_LANG_PROGRAM([], [[
539
[grub_cv_cc_target_clang=no], [grub_cv_cc_target_clang=yes])])
541
# on x86 clang doesn't support .code16
542
# on arm clang doesn't support .arch directive
543
# on mips clang doesn't support privilegied instructions, doubleword store/load
544
# and crashes with hand-written assembly
545
if test "x$grub_cv_cc_target_clang" = xyes && ( test "x$target_cpu" = xi386 \
546
|| test "x$target_cpu" = xx86_64 || test "x$target_cpu" = xarm \
547
|| test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ); then
548
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
551
if test "x$grub_cv_cc_target_clang" = xyes && test "x$target_cpu" = xpowerpc; then
552
AC_CACHE_CHECK([if clang can handle ame instruction], [grub_cv_cc_target_clang_ame]
554
CFLAGS="$TARGET_CFLAGS"
556
[AC_LANG_PROGRAM([], [[
557
unsigned int a = 0, b = 0;
558
asm volatile ("{ame|addme} %0,%1" : "=r" (a) : "r" (b));
562
[grub_cv_cc_target_clang_ame=yes], [grub_cv_cc_target_clang_ame=no])])
563
# clang <= 3.3 doesn't handle most of ppc assembly, not even inline assembly
565
if test x$grub_cv_cc_target_clang_ame = xno ; then
566
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
567
TARGET_CFLAGS="$TARGET_CFLAGS -no-integrated-as"
571
if test "x$target_cpu" = xi386 && test "x$platform" != xemu; then
572
TARGET_CFLAGS="$TARGET_CFLAGS -march=i386"
575
if test x$target_cpu = xpowerpc && test x$ac_cv_c_bigendian = xno; then
577
TARGET_CFLAGS="$TARGET_CFLAGS -mbig-endian"
578
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -mbig-endian"
579
TARGET_LDFLAGS="$TARGET_LDFLAGS -static -mbig-endian"
582
if test "x$target_m32" = x1; then
584
TARGET_CFLAGS="$TARGET_CFLAGS -m32"
585
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
586
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m32"
587
TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
588
TARGET_MODULE_FORMAT="elf32"
591
if test "x$target_m64" = x1; then
593
TARGET_CFLAGS="$TARGET_CFLAGS -m64"
594
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
595
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m64"
596
TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
597
TARGET_MODULE_FORMAT="elf64"
600
if test "x$grub_cv_cc_target_clang" = xno && test "x$target_cpu" = xi386 && test "x$platform" != xemu && test "x$platform" != xefi; then
601
TARGET_CFLAGS="$TARGET_CFLAGS -mrtd -mregparm=3"
604
# on mips redirect cache flushing function to non-existant one.
605
if test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ; then
606
AC_CACHE_CHECK([whether -mflush-func=grub_red_herring works], [grub_cv_cc_mflush_func], [
607
CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring -Werror"
608
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
609
[grub_cv_cc_mflush_func=yes],
610
[grub_cv_cc_mflush_func=no])
613
if test "x$grub_cv_cc_mflush_func" = xyes; then
614
TARGET_CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring"
619
# Force no alignment to save space on i386.
620
if test "x$target_cpu" = xi386; then
621
AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
622
CFLAGS="$TARGET_CFLAGS -falign-loops=1 -Werror"
623
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
624
[grub_cv_cc_falign_loop=yes],
625
[grub_cv_cc_falign_loop=no])
628
AC_CACHE_CHECK([whether -malign-loops works], [grub_cv_cc_malign_loop], [
629
CFLAGS="$TARGET_CFLAGS -malign-loops=1 -Werror"
630
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
631
[grub_cv_cc_malign_loop=yes],
632
[grub_cv_cc_malign_loop=no])
635
if test "x$grub_cv_cc_falign_loop" = xyes; then
636
TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
637
elif test "x$grub_cv_cc_malign_loop" = xyes; then
638
TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
642
AC_CACHE_CHECK([whether -freg-struct-return works], [grub_cv_cc_freg_struct_return], [
643
CFLAGS="$TARGET_CFLAGS -freg-struct-return -Werror"
644
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
645
[grub_cv_cc_freg_struct_return=yes],
646
[grub_cv_cc_freg_struct_return=no])
649
if test "x$grub_cv_cc_freg_struct_return" = xyes; then
650
TARGET_CFLAGS="$TARGET_CFLAGS -freg-struct-return"
653
if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
654
# Some toolchains enable these features by default, but they need
655
# registers that aren't set up properly in GRUB.
656
TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-3dnow"
659
# By default, GCC 4.4 generates .eh_frame sections containing unwind
660
# information in some cases where it previously did not. GRUB doesn't need
661
# these and they just use up vital space. Restore the old compiler
663
AC_CACHE_CHECK([whether -fno-dwarf2-cfi-asm works], [grub_cv_cc_fno_dwarf2_cfi_asm], [
664
CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
665
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
666
[grub_cv_cc_fno_dwarf2_cfi_asm=yes],
667
[grub_cv_cc_fno_dwarf2_cfi_asm=no])
670
if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
671
TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
674
if test x"$target_os" = xcygwin; then
675
AC_CACHE_CHECK([whether option -fno-reorder-functions works], grub_cv_cc_no_reorder_functions, [
676
CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
677
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
678
[grub_cv_cc_no_reorder_functions=yes],
679
[grub_cv_cc_no_reorder_functions=no])
683
if test x"$target_os" = xcygwin && test "x$grub_cv_cc_no_reorder_functions" = xyes; then
684
TARGET_CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
687
# By default, GCC 4.6 generates .eh_frame sections containing unwind
688
# information in some cases where it previously did not. GRUB doesn't need
689
# these and they just use up vital space. Restore the old compiler
691
AC_CACHE_CHECK([whether -fno-asynchronous-unwind-tables works], [grub_cv_cc_fno_asynchronous_unwind_tables], [
692
CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
693
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
694
[grub_cv_cc_fno_asynchronous_unwind_tables=yes],
695
[grub_cv_cc_fno_asynchronous_unwind_tables=no])
698
if test "x$grub_cv_cc_fno_asynchronous_unwind_tables" = xyes; then
699
TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
702
AC_ARG_ENABLE([efiemu],
703
[AS_HELP_STRING([--enable-efiemu],
704
[build and install the efiemu runtimes (default=guessed)])])
705
if test x"$enable_efiemu" = xno ; then
706
efiemu_excuse="explicitly disabled"
708
if test x"$grub_cv_target_cc_link_format" = x-mi386pe || test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
709
efiemu_excuse="not available on cygwin"
711
if test x"$target_cpu" != xi386 ; then
712
efiemu_excuse="only available on i386"
714
if test x"$platform" = xefi ; then
715
efiemu_excuse="not available on efi"
717
if test x"$efiemu_excuse" = x ; then
718
AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
719
CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
720
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
721
[grub_cv_cc_efiemu=yes],
722
[grub_cv_cc_efiemu=no])
724
if test x$grub_cv_cc_efiemu = xno; then
725
efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
728
if test x"$efiemu_excuse" = x ; then
729
AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efiemu64_link_format], [
730
grub_cv_target_cc_efiemu64_link_format=unknown
731
for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -melf_x86_64_haiku -arch,x86_64; do
732
CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
733
LDFLAGS="-m64 -Wl,$format -nostdlib -static"
734
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
735
asm (".globl start; start:");
736
asm (".globl _start; _start:");
737
asm (".globl __start; __start:");
739
void __main (void) {}
740
]], [[]])], [flag=1], [flag=0])
741
if test x"$flag" = x1; then
742
grub_cv_target_cc_efiemu64_link_format="$format"
746
if test x"$grub_cv_target_cc_efiemu64_link_format" = xunknown; then
747
efiemu_excuse="no suitable link format for efiemu64 found"
749
EFIEMU64_LINK_FORMAT="-Wl,$grub_cv_target_cc_efiemu64_link_format"
752
if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
753
AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled ($efiemu_excuse)])
755
if test x"$efiemu_excuse" = x ; then
760
AC_SUBST([enable_efiemu])
761
AC_SUBST([EFIEMU64_LINK_FORMAT])
763
CFLAGS="$TARGET_CFLAGS"
766
if test x"$platform" = xemu ; then
768
grub_cv_target_cc_link_format=
771
grub_cv_target_cc_link_format="-arch,${target_cpu}"
772
TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
774
*windows* | *cygwin* | *mingw*)
775
if test x${target_cpu} = xi386 ; then
776
grub_cv_target_cc_link_format=-mi386pe;
777
TARGET_OBJ2ELF='./build-grub-pe2elf';
779
if test x${target_cpu} = xx86_64 ; then
780
grub_cv_target_cc_link_format=-mi386pep;
781
TARGET_OBJ2ELF='./build-grub-pep2elf';
783
TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
786
elif test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
787
AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
788
grub_cv_target_cc_link_format=unknown
789
for format in -melf_${target_cpu} -melf_${target_cpu}_fbsd -melf_${target_cpu}_obsd -melf_${target_cpu}_haiku -mi386pe -mi386pep -arch,${target_cpu}; do
790
if test x${target_cpu} != xi386 && test x$format = x-mi386pe; then
793
if test x${target_cpu} != xx86_64 && test x$format = x-mi386pep; then
796
CFLAGS="$TARGET_CFLAGS"
797
LDFLAGS="$TARGET_LDFLAGS -Wl,$format -nostdlib -static"
798
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
799
asm (".globl start; start:");
800
asm (".globl _start; _start:");
801
asm (".globl __start; __start:");
803
void __main (void) {}
804
]], [[]])], [flag=1], [flag=0])
805
if test x"$flag" = x1; then
806
grub_cv_target_cc_link_format="$format"
810
if test x"$grub_cv_target_cc_link_format" = xunknown; then
811
AC_MSG_ERROR([no suitable link format found])
813
TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
814
if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then
815
TARGET_OBJ2ELF='./build-grub-pe2elf';
817
if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
818
TARGET_OBJ2ELF='./build-grub-pep2elf';
822
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
823
TARGET_APPLE_LINKER=1
824
AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [objconv], [])
825
if test "x$TARGET_OBJCONV" = x ; then
826
AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [./objconv], [], [.])
828
if test "x$TARGET_OBJCONV" = x ; then
829
AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
832
TARGET_IMG_CFLAGS="-static"
833
TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
834
TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
835
TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
836
TARGET_LDFLAGS_OLDMAGIC=""
837
elif test x$grub_cv_target_cc_link_format = x-mi386pe || test x$grub_cv_target_cc_link_format = x-mi386pep ; then
838
TARGET_APPLE_LINKER=0
839
TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
840
TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
841
TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
842
TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
843
TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
846
TARGET_APPLE_LINKER=0
847
TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
849
TARGET_IMG_LDFLAGS='-Wl,-N'
850
TARGET_IMG_LDFLAGS_AC='-Wl,-N'
851
TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
855
AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
858
LDFLAGS="$TARGET_LDFLAGS"
860
if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then
861
# Use large model to support 4G memory
862
AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
863
CFLAGS="$TARGET_CFLAGS -mcmodel=large"
864
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
865
[grub_cv_cc_mcmodel=yes],
866
[grub_cv_cc_mcmodel=no])
868
if test "x$grub_cv_cc_mcmodel" = xyes; then
869
TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
870
elif test "$target_cpu-$platform" = sparc64-emu; then
871
TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
875
if test "$target_cpu"-"$platform" = x86_64-efi; then
876
# EFI writes to stack below %rsp, we must not use the red zone
877
AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
878
CFLAGS="$TARGET_CFLAGS -mno-red-zone"
879
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
880
[grub_cv_cc_no_red_zone=yes],
881
[grub_cv_cc_no_red_zone=no])
883
if test "x$grub_cv_cc_no_red_zone" = xno; then
884
AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
887
TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
890
if test "x$target_cpu" = xarm; then
891
AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
892
CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
893
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
894
[grub_cv_cc_mlong_calls=yes],
895
[grub_cv_cc_mlong_calls=no])
897
if test "x$grub_cv_cc_mlong_calls" = xyes; then
898
TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
900
AC_CACHE_CHECK([whether option -mthumb-interwork works], grub_cv_cc_mthumb_interwork, [
901
CFLAGS="$TARGET_CFLAGS -mthumb-interwork -Werror"
902
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
903
[grub_cv_cc_mthumb_interwork=yes],
904
[grub_cv_cc_mthumb_interwork=no])
906
if test "x$grub_cv_cc_mthumb_interwork" = xyes; then
907
TARGET_CFLAGS="$TARGET_CFLAGS -mthumb-interwork"
908
elif test "x$grub_cv_cc_target_clang" = xno ; then
909
AC_MSG_ERROR([your compiler doesn't support -mthumb-interwork])
911
CFLAGS="$TARGET_CFLAGS"
912
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
913
#if defined (__thumb__) && !defined (__thumb2__)
914
#error thumb without interworking
917
[no_interwork_ok=yes],
918
[no_interwork_ok=no])
919
if test x$no_interwork_ok = xno ; then
920
AC_MSG_ERROR([attempt to compile to thumb with no thumb interwork])
925
AC_CACHE_CHECK([whether option -Qn works], grub_cv_target_cc_qn, [
926
CFLAGS="$TARGET_CFLAGS -Qn -Werror"
927
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
928
[grub_cv_target_cc_qn=yes],
929
[grub_cv_target_cc_qn=no])])
930
if test "x$grub_cv_target_cc_qn" = xyes; then
931
TARGET_CFLAGS="$TARGET_CFLAGS -Qn"
938
CFLAGS="$TARGET_CFLAGS"
940
# Position independent executable.
942
[# Need that, because some distributions ship compilers that include
943
# `-fPIE' in the default specs.
944
if [ x"$pie_possible" = xyes ]; then
945
TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
948
CFLAGS="$TARGET_CFLAGS"
950
# Position independent executable.
952
[# On most platforms we don't want PIC as it only makes relocations harder
953
# and code less efficient. On mips we want to have one got table per module
954
# and reload $gp in every function.
955
# GCC implements it using symbol __gnu_local_gp in non-PIC as well.
956
# However with clang we need PIC for this reloading to happen.
957
# Since default varies across dictributions use either -fPIC or -fno-PIC
959
if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel ) && test "x$grub_cv_cc_target_clang" = xyes ; then
960
TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
961
elif [ x"$pic_possible" = xyes ]; then
962
TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
965
CFLAGS="$TARGET_CFLAGS"
967
# Smashing stack protector.
968
grub_CHECK_STACK_PROTECTOR
969
# Need that, because some distributions ship compilers that include
970
# `-fstack-protector' in the default specs.
971
if test "x$ssp_possible" = xyes; then
972
TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
975
CFLAGS="$TARGET_CFLAGS"
977
grub_CHECK_STACK_ARG_PROBE
978
# Cygwin's GCC uses alloca() to probe the stackframe on static
979
# stack allocations above some threshold.
980
if test x"$sap_possible" = xyes; then
981
TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
984
CFLAGS="$TARGET_CFLAGS"
986
# -mno-unaligned-access -mstrict-align
987
if test "$target_cpu" = arm; then
988
AC_CACHE_CHECK([for compile options to get strict alignment], [grub_cv_target_cc_strict_align], [
989
grub_cv_target_cc_strict_align=
990
for arg in -mno-unaligned-access "-Xclang -mstrict-align" -mstrict-align; do
991
CFLAGS="$TARGET_CFLAGS $arg -Werror"
992
LDFLAGS="$TARGET_LDFLAGS"
993
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
994
if test x"$flag" = x1; then
995
grub_cv_target_cc_strict_align="$arg"
1000
TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_strict_align"
1001
if test x"$grub_cv_target_cc_strict_align" = x"-Xclang -mstrict-align"; then
1002
TARGET_LDFLAGS="$TARGET_LDFLAGS -Qunused-arguments"
1004
AC_CACHE_CHECK([if compiler generates unaligned accesses], [grub_cv_cc_target_emits_unaligned],
1005
[CFLAGS="$TARGET_CFLAGS"
1006
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
1007
#ifdef __ARM_FEATURE_UNALIGNED
1011
[grub_cv_cc_target_emits_unaligned=no], [grub_cv_cc_target_emits_unaligned=yes])])
1012
if test x$grub_cv_cc_target_emits_unaligned = xyes; then
1013
AC_MSG_ERROR([compiler generates unaligned accesses])
1017
# Set them to their new values for the tests below.
1019
if test "x$TARGET_APPLE_LINKER" = x1 ; then
1020
CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
1022
CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
1024
CPPFLAGS="$TARGET_CPPFLAGS"
1025
if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
1031
LIBS="$TARGET_LIBGCC"
1034
if test "x$TARGET_APPLE_LINKER" = x0 ; then
1035
if test x$grub_cv_asm_uscore = xyes; then
1036
DEFSYM="-Wl,--defsym,_abort=_main -Wl,--defsym,__main=_main"
1038
DEFSYM="-Wl,--defsym,abort=main -Wl,--defsym,_main=main -Wl,--defsym,__main=main"
1040
CFLAGS="$TARGET_CFLAGS -nostdlib $DEFSYM"
1043
# Check for libgcc symbols
1044
AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __ucmpdi2 _restgpr_14_x)
1046
if test "x$TARGET_APPLE_LINKER" = x1 ; then
1047
CFLAGS="$TARGET_CFLAGS -nostdlib -static"
1049
CFLAGS="$TARGET_CFLAGS -nostdlib"
1053
# Defined in aclocal.m4.
1055
if test "x$TARGET_APPLE_LINKER" != x1 ; then
1056
grub_PROG_OBJCOPY_ABSOLUTE
1058
grub_PROG_LD_BUILD_ID_NONE
1059
if test "x$target_cpu" = xi386; then
1060
if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
1061
if test ! -z "$TARGET_IMG_LDSCRIPT"; then
1062
# Check symbols provided by linker script.
1063
CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000"
1065
grub_CHECK_BSS_START_SYMBOL
1066
grub_CHECK_END_SYMBOL
1068
CFLAGS="$TARGET_CFLAGS"
1069
grub_I386_ASM_PREFIX_REQUIREMENT
1070
grub_I386_ASM_ADDR32
1074
grub_PROG_NM_MINUS_P
1075
grub_PROG_NM_DEFINED_ONLY
1076
AC_SUBST(TARGET_NMFLAGS_MINUS_P)
1077
AC_SUBST(TARGET_NMFLAGS_DEFINED_ONLY)
1079
if test "$platform" != emu; then
1080
AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
1081
SAVED_CPPFLAGS="$CPPFLAGS"
1082
CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1083
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1085
int va_arg_func (int fixed, va_list args);]], [[]])],
1086
[grub_cv_cc_isystem=yes],
1087
[grub_cv_cc_isystem=no])
1088
CPPFLAGS="$SAVED_CPPFLAGS"
1091
if test x"$grub_cv_cc_isystem" = xyes ; then
1092
TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1096
AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_cc_wtrampolines], [
1097
CFLAGS="$TARGET_CFLAGS -Wtrampolines -Werror"
1098
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1099
int va_arg_func (int fixed, va_list args);]], [[]])],
1100
[grub_cv_cc_wtrampolines=yes],
1101
[grub_cv_cc_wtrampolines=no])
1104
if test x"$grub_cv_cc_wtrampolines" = xyes ; then
1105
TARGET_CFLAGS="$TARGET_CFLAGS -Wtrampolines"
1108
# Restore the flags.
1110
CFLAGS="$tmp_CFLAGS"
1111
CPPFLAGS="$tmp_CPPFLAGS"
1112
LDFLAGS="$tmp_LDFLAGS"
1116
# Check for options.
1119
# Memory manager debugging.
1120
AC_ARG_ENABLE([mm-debug],
1121
AS_HELP_STRING([--enable-mm-debug],
1122
[include memory manager debugging]),
1123
[AC_DEFINE([MM_DEBUG], [1],
1124
[Define to 1 if you enable memory manager debugging.])])
1126
AC_ARG_ENABLE([cache-stats],
1127
AS_HELP_STRING([--enable-cache-stats],
1128
[enable disk cache statistics collection]))
1130
if test x$enable_cache_stats = xyes; then
1135
AC_SUBST([DISK_CACHE_STATS])
1137
AC_ARG_ENABLE([boot-time],
1138
AS_HELP_STRING([--enable-boot-time],
1139
[enable boot time statistics collection]))
1141
if test x$enable_boot_time = xyes; then
1146
AC_SUBST([BOOT_TIME_STATS])
1148
AC_ARG_ENABLE([grub-emu-usb],
1149
[AS_HELP_STRING([--enable-grub-emu-usb],
1150
[build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
1152
AC_ARG_ENABLE([grub-emu-sdl],
1153
[AS_HELP_STRING([--enable-grub-emu-sdl],
1154
[build and install the `grub-emu' debugging utility with SDL support (default=guessed)])])
1156
AC_ARG_ENABLE([grub-emu-pci],
1157
[AS_HELP_STRING([--enable-grub-emu-pci],
1158
[build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
1160
if test "$platform" = emu; then
1162
if test x"$enable_grub_emu_usb" != xyes ; then
1163
grub_emu_usb_excuse="not enabled"
1166
if test x"$enable_grub_emu_pci" = xyes ; then
1167
grub_emu_usb_excuse="conflicts with PCI support"
1170
[if [ x"$grub_emu_usb_excuse" = x ]; then
1171
# Check for libusb libraries.]
1172
AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
1173
[grub_emu_usb_excuse=["need libusb library"]])
1176
[if [ x"$grub_emu_usb_excuse" = x ]; then
1177
# Check for headers.]
1178
AC_CHECK_HEADERS([usb.h], [],
1179
[grub_emu_usb_excuse=["need libusb headers"]])
1181
if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
1182
AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled ($grub_emu_usb_excuse)])
1184
if test x"$grub_emu_usb_excuse" = x ; then
1185
enable_grub_emu_usb=yes
1187
enable_grub_emu_usb=no
1190
if test x"$enable_grub_emu_sdl" = xno ; then
1191
grub_emu_sdl_excuse="explicitly disabled"
1193
[if [ x"$grub_emu_sdl_excuse" = x ]; then
1194
# Check for libSDL libraries.]
1195
AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
1196
[grub_emu_sdl_excuse=["libSDL libraries are required to build \`grub-emu' with SDL support"]])
1200
[if [ x"$grub_emu_sdl_excuse" = x ]; then
1201
# Check for headers.]
1202
AC_CHECK_HEADERS([SDL/SDL.h], [],
1203
[grub_emu_sdl_excuse=["libSDL header file is required to build \`grub-emu' with SDL support"]])
1206
if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
1207
AC_MSG_ERROR([SDL support for grub-emu was explicitly requested but can't be compiled ($grub_emu_sdl_excuse)])
1209
if test x"$grub_emu_sdl_excuse" = x ; then
1210
enable_grub_emu_sdl=yes
1212
enable_grub_emu_sdl=no
1215
if test x"$enable_grub_emu_pci" != xyes ; then
1216
grub_emu_pci_excuse="not enabled"
1219
if test x"$enable_grub_emu_usb" = xyes ; then
1220
grub_emu_pci_excuse="conflicts with USB support"
1223
[if [ x"$grub_emu_pci_excuse" = x ]; then
1224
# Check for libpci libraries.]
1225
AC_CHECK_LIB([pciaccess], [pci_system_init], [LIBPCIACCESS="-lpciaccess"],
1226
[grub_emu_pci_excuse=["need libpciaccess library"]])
1227
AC_SUBST([LIBPCIACCESS])
1229
[if [ x"$grub_emu_pci_excuse" = x ]; then
1230
# Check for headers.]
1231
AC_CHECK_HEADERS([pci/pci.h], [],
1232
[grub_emu_pci_excuse=["need libpciaccess headers"]])
1235
if test x"$grub_emu_pci_excuse" = x ; then
1236
enable_grub_emu_pci=yes
1239
enable_grub_emu_pci=no
1242
AC_SUBST([enable_grub_emu_sdl])
1243
AC_SUBST([enable_grub_emu_usb])
1244
AC_SUBST([enable_grub_emu_pci])
1248
# Ignore --enable-emu-* if platform is not emu
1249
enable_grub_emu_sdl=no
1250
enable_grub_emu_usb=no
1251
enable_grub_emu_pci=no
1254
AC_ARG_ENABLE([grub-mkfont],
1255
[AS_HELP_STRING([--enable-grub-mkfont],
1256
[build and install the `grub-mkfont' utility (default=guessed)])])
1257
if test x"$enable_grub_mkfont" = xno ; then
1258
grub_mkfont_excuse="explicitly disabled"
1261
if test x"$grub_mkfont_excuse" = x ; then
1262
# Check for freetype libraries.
1263
AC_CHECK_TOOLS([FREETYPE], [freetype-config])
1264
if test "x$FREETYPE" = x ; then
1265
grub_mkfont_excuse=["need freetype2 library"]
1269
unset ac_cv_header_ft2build_h
1271
if test x"$grub_mkfont_excuse" = x ; then
1272
# Check for freetype libraries.
1273
freetype_cflags=`$FREETYPE --cflags`
1274
freetype_libs=`$FREETYPE --libs`
1275
SAVED_CPPFLAGS="$CPPFLAGS"
1277
CPPFLAGS="$CPPFLAGS $freetype_cflags"
1278
LIBS="$LIBS $freetype_libs"
1279
AC_CHECK_HEADERS([ft2build.h], [],
1280
[grub_mkfont_excuse=["need freetype2 headers"]])
1281
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
1282
CPPFLAGS="$SAVED_CPPFLAGS"
1286
if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
1287
AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled ($grub_mkfont_excuse)])
1289
if test x"$grub_mkfont_excuse" = x ; then
1290
enable_grub_mkfont=yes
1292
enable_grub_mkfont=no
1294
AC_SUBST([enable_grub_mkfont])
1295
AC_SUBST([freetype_cflags])
1296
AC_SUBST([freetype_libs])
1300
SAVED_CFLAGS="$CFLAGS"
1301
SAVED_CPPFLAGS="$CPPFLAGS"
1304
CFLAGS="$BUILD_CFLAGS"
1305
CPPFLAGS="$BUILD_CPPFLAGS"
1307
unset ac_cv_c_bigendian
1308
unset ac_cv_header_ft2build_h
1310
AC_COMPUTE_INT([BUILD_SIZEOF_VOID_P], [sizeof (void *)])
1311
AC_COMPUTE_INT([BUILD_SIZEOF_LONG], [sizeof (long)])
1312
AC_C_BIGENDIAN([BUILD_WORDS_BIGENDIAN=1], [BUILD_WORDS_BIGENDIAN=0], [BUILD_WORDS_BIGENDIAN=err], [BUILD_WORDS_BIGENDIAN=err])
1314
if test x$BUILD_WORDS_BIGENDIAN = xerr ; then
1315
AC_MSG_ERROR([couldnt determine build endianness])
1318
AC_SUBST([BUILD_SIZEOF_LONG])
1319
AC_SUBST([BUILD_SIZEOF_VOID_P])
1320
AC_SUBST([BUILD_WORDS_BIGENDIAN])
1322
if test x"$grub_build_mkfont_excuse" = x ; then
1323
# Check for freetype libraries.
1324
AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
1325
if test "x$BUILD_FREETYPE" = x ; then
1326
grub_build_mkfont_excuse=["need freetype2 library"]
1330
if test x"$grub_build_mkfont_excuse" = x ; then
1331
# Check for freetype libraries.
1332
build_freetype_cflags=`$BUILD_FREETYPE --cflags`
1333
build_freetype_libs=`$BUILD_FREETYPE --libs`
1334
SAVED_CPPFLAGS_2="$CPPFLAGS"
1336
CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
1337
LIBS="$LIBS $build_freetype_libs"
1338
AC_CHECK_HEADERS([ft2build.h], [],
1339
[grub_build_mkfont_excuse=["need freetype2 headers"]])
1340
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
1342
CPPFLAGS="$SAVED_CPPFLAGS_2"
1345
if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
1346
AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled ($grub_build_mkfont_excuse)])
1348
if test x"$grub_build_mkfont_excuse" = x ; then
1349
enable_build_grub_mkfont=yes
1351
enable_build_grub_mkfont=no
1353
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
1354
if test x"$grub_build_mkfont_excuse" = x ; then
1355
AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
1357
AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont ($grub_build_mkfont_excuse)])
1361
AC_SUBST([build_freetype_cflags])
1362
AC_SUBST([build_freetype_libs])
1366
CFLAGS="$SAVED_CFLAGS"
1367
CPPFLAGS="$SAVED_CPPFLAGS"
1374
AC_ARG_ENABLE([grub-themes],
1375
[AS_HELP_STRING([--enable-grub-themes],
1376
[build and install GRUB themes (default=guessed)])])
1377
if test x"$enable_grub_themes" = xno ; then
1378
starfield_excuse="explicitly disabled"
1381
if test x"$starfield_excuse" = x && test x"$enable_build_grub_mkfont" = xno ; then
1382
starfield_excuse="No build-time grub-mkfont"
1385
if test x"$starfield_excuse" = x; then
1386
for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1387
for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do
1388
if test -f "$dir/DejaVuSans.$ext"; then
1389
DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
1395
if test "x$DJVU_FONT_SOURCE" = x; then
1396
starfield_excuse="No DejaVu found"
1400
if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then
1401
AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied ($starfield_excuse)])
1404
AC_SUBST([DJVU_FONT_SOURCE])
1408
for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1409
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
1410
if test -f "$dir/unifont.$ext"; then
1411
md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')"
1412
# PCF and BDF from version 6.3 isn't hanled properly by libfreetype.
1413
if test "$md5" = 0a54834d2788c83886a3e1785a6a1e61 || test "$md5" = 28f2565c7a41d8d407e2551159385edb || test "$md5" = dae5e588461b3b92b87b6ffee734f936 || test "$md5" = 4a3d687aa5bb329ed05f4263a1016791 ; then
1416
FONT_SOURCE="$dir/unifont.$ext"
1422
if test x"$enable_build_grub_mkfont" = xno ; then
1426
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
1427
if test x"$grub_build_mkfont_excuse" = x ; then
1428
AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
1430
AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont ($grub_build_mkfont_excuse)])
1434
AC_SUBST([FONT_SOURCE])
1436
if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x && test x"$grub_build_mkfont_excuse" = x; then
1437
grub_build_mkfont_excuse="no fonts"
1441
AC_ARG_ENABLE([grub-mount],
1442
[AS_HELP_STRING([--enable-grub-mount],
1443
[build and install the `grub-mount' utility (default=guessed)])])
1444
if test x"$enable_grub_mount" = xno ; then
1445
grub_mount_excuse="explicitly disabled"
1448
if test x"$grub_mount_excuse" = x ; then
1449
AC_CHECK_LIB([fuse], [fuse_main_real], [],
1450
[grub_mount_excuse="need FUSE library"])
1453
if test x"$grub_mount_excuse" = x ; then
1454
# Check for fuse headers.
1455
SAVED_CPPFLAGS="$CPPFLAGS"
1456
CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26"
1457
AC_CHECK_HEADERS([fuse/fuse.h], [],
1458
[grub_mount_excuse=["need FUSE headers"]])
1459
CPPFLAGS="$SAVED_CPPFLAGS"
1462
if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
1463
AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled ($grub_mount_excuse)])
1465
if test x"$grub_mount_excuse" = x ; then
1466
enable_grub_mount=yes
1468
enable_grub_mount=no
1470
AC_SUBST([enable_grub_mount])
1472
AC_ARG_ENABLE([device-mapper],
1473
[AS_HELP_STRING([--enable-device-mapper],
1474
[enable Linux device-mapper support (default=guessed)])])
1475
if test x"$enable_device_mapper" = xno ; then
1476
device_mapper_excuse="explicitly disabled"
1479
if test x"$device_mapper_excuse" = x ; then
1480
# Check for device-mapper header.
1481
AC_CHECK_HEADER([libdevmapper.h], [],
1482
[device_mapper_excuse="need libdevmapper header"])
1485
if test x"$device_mapper_excuse" = x ; then
1486
# Check for device-mapper library.
1487
AC_CHECK_LIB([devmapper], [dm_task_create], [],
1488
[device_mapper_excuse="need devmapper library"])
1491
if test x"$device_mapper_excuse" = x ; then
1492
# Check for device-mapper library.
1493
AC_CHECK_LIB([devmapper], [dm_log_with_errno_init],
1495
[device_mapper_excuse="need devmapper library"])
1498
if test x"$device_mapper_excuse" = x ; then
1499
LIBDEVMAPPER="-ldevmapper";
1500
AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
1501
[Define to 1 if you have the devmapper library.])
1504
AC_SUBST([LIBDEVMAPPER])
1507
if test x$host_kernel = xkfreebsd; then
1508
AC_CHECK_LIB([geom], [geom_gettree], [],
1509
[AC_MSG_ERROR([Your platform requires libgeom])])
1515
AC_ARG_ENABLE([liblzma],
1516
[AS_HELP_STRING([--enable-liblzma],
1517
[enable liblzma integration (default=guessed)])])
1518
if test x"$enable_liblzma" = xno ; then
1519
liblzma_excuse="explicitly disabled"
1522
if test x"$liblzma_excuse" = x ; then
1523
AC_CHECK_LIB([lzma], [lzma_code],
1524
[],[liblzma_excuse="need lzma library"])
1526
if test x"$liblzma_excuse" = x ; then
1527
AC_CHECK_HEADER([lzma.h], [], [liblzma_excuse="need lzma header"])
1530
if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then
1531
AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied ($liblzma_excuse)])
1535
if test x"$liblzma_excuse" = x ; then
1537
AC_DEFINE([USE_LIBLZMA], [1],
1538
[Define to 1 if you have the LZMA library.])
1543
AC_ARG_ENABLE([libzfs],
1544
[AS_HELP_STRING([--enable-libzfs],
1545
[enable libzfs integration (default=guessed)])])
1546
if test x"$enable_libzfs" = xno ; then
1547
libzfs_excuse="explicitly disabled"
1550
if test x"$libzfs_excuse" = x ; then
1551
# Only check for system headers if libzfs support has not been disabled.
1552
AC_CHECK_HEADERS(libzfs.h libnvpair.h)
1555
if test x"$libzfs_excuse" = x ; then
1556
AC_CHECK_LIB([zfs], [libzfs_init],
1558
[libzfs_excuse="need zfs library"])
1561
if test x"$libzfs_excuse" = x ; then
1562
AC_CHECK_LIB([nvpair], [nvlist_lookup_string],
1564
[libzfs_excuse="need nvpair library"])
1567
if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then
1568
AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied ($libzfs_excuse)])
1571
if test x"$libzfs_excuse" = x ; then
1572
# We need both libzfs and libnvpair for a successful build.
1574
AC_DEFINE([HAVE_LIBZFS], [1],
1575
[Define to 1 if you have the ZFS library.])
1576
LIBNVPAIR="-lnvpair"
1577
AC_DEFINE([HAVE_LIBNVPAIR], [1],
1578
[Define to 1 if you have the NVPAIR library.])
1582
AC_SUBST([LIBNVPAIR])
1584
AC_ARG_ENABLE([ubuntu-recovery],
1585
[AS_HELP_STRING([--enable-ubuntu-recovery],
1586
[adjust boot options for the Ubuntu recovery mode (default=no)])],
1587
[], [enable_ubuntu_recovery=no])
1588
if test x"$enable_ubuntu_recovery" = xyes ; then
1593
AC_SUBST([UBUNTU_RECOVERY])
1595
AC_ARG_ENABLE([quiet-boot],
1596
[AS_HELP_STRING([--enable-quiet-boot],
1597
[emit fewer messages at boot time (default=no)])],
1598
[], [enable_quiet_boot=no])
1599
if test x"$enable_quiet_boot" = xyes ; then
1604
AC_SUBST([QUIET_BOOT])
1606
AC_ARG_ENABLE([quick-boot],
1607
[AS_HELP_STRING([--enable-quick-boot],
1608
[bypass boot menu if possible (default=no)])],
1609
[], [enable_quick_boot=no])
1610
if test x"$enable_quick_boot" = xyes ; then
1615
AC_SUBST([QUICK_BOOT])
1617
AC_ARG_ENABLE([gfxpayload-dynamic],
1618
[AS_HELP_STRING([--enable-gfxpayload-dynamic],
1619
[use GRUB_GFXPAYLOAD_LINUX=keep unless explicitly unsupported on current hardware (default=no)])],
1620
[], [enable_gfxpayload_dynamic=no])
1621
if test x"$enable_gfxpayload_dynamic" = xyes ; then
1622
GFXPAYLOAD_DYNAMIC=1
1624
GFXPAYLOAD_DYNAMIC=0
1626
AC_SUBST([GFXPAYLOAD_DYNAMIC])
1628
AC_ARG_ENABLE([vt-handoff],
1629
[AS_HELP_STRING([--enable-vt-handoff],
1630
[use Linux vt.handoff option for flicker-free booting (default=no)])],
1631
[], [enable_vt_handoff=no])
1632
if test x"$enable_vt_handoff" = xyes ; then
1637
AC_SUBST([VT_HANDOFF])
1641
AC_SUBST([FONT_SOURCE])
1642
AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
1643
[AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
1645
AC_SUBST(HAVE_ASM_USCORE)
1648
AC_SUBST(BSS_START_SYMBOL)
1649
AC_SUBST(END_SYMBOL)
1653
AC_ARG_ENABLE([werror],
1654
[AS_HELP_STRING([--disable-werror],
1655
[do not use -Werror when building GRUB])])
1656
if test x"$enable_werror" != xno ; then
1657
TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
1658
HOST_CFLAGS="$HOST_CFLAGS -Werror"
1661
if test "x$grub_cv_cc_target_clang" = xno; then
1662
TARGET_LDFLAGS_STATIC_LIBGCC="-static-libgcc"
1664
TARGET_LDFLAGS_STATIC_LIBGCC=
1667
TARGET_CPP="$TARGET_CC -E"
1668
TARGET_CCAS=$TARGET_CC
1670
GRUB_TARGET_CPU="${target_cpu}"
1671
GRUB_PLATFORM="${platform}"
1673
AC_SUBST(GRUB_TARGET_CPU)
1674
AC_SUBST(GRUB_PLATFORM)
1676
AC_SUBST(TARGET_OBJCONV)
1677
AC_SUBST(TARGET_LIBGCC)
1678
AC_SUBST(TARGET_LDFLAGS_STATIC_LIBGCC)
1679
AC_SUBST(TARGET_CPP)
1680
AC_SUBST(TARGET_CCAS)
1681
AC_SUBST(TARGET_OBJ2ELF)
1682
AC_SUBST(TARGET_MODULE_FORMAT)
1683
AC_SUBST(TARGET_CC_VERSION)
1685
AC_SUBST(TARGET_CFLAGS)
1686
AC_SUBST(TARGET_LDFLAGS)
1687
AC_SUBST(TARGET_CPPFLAGS)
1688
AC_SUBST(TARGET_CCASFLAGS)
1690
AC_SUBST(TARGET_IMG_LDFLAGS)
1691
AC_SUBST(TARGET_IMG_CFLAGS)
1692
AC_SUBST(TARGET_IMG_BASE_LDOPT)
1693
AC_SUBST(TARGET_APPLE_LINKER)
1695
AC_SUBST(HOST_CFLAGS)
1696
AC_SUBST(HOST_LDFLAGS)
1697
AC_SUBST(HOST_CPPFLAGS)
1698
AC_SUBST(HOST_CCASFLAGS)
1700
AC_SUBST(BUILD_LIBM)
1703
# Automake conditionals
1706
AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
1707
AM_CONDITIONAL([COND_clang], [test x$grub_cv_cc_target_clang = xyes])
1708
AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
1709
AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
1710
AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi])
1711
AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
1712
AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
1713
AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
1714
AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
1715
AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
1716
AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
1717
AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
1718
AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
1719
AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
1720
AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
1721
AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
1722
AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
1723
AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
1724
AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
1725
AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
1726
AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
1727
AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
1728
AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
1729
AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
1730
AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
1731
AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
1733
AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
1734
AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
1735
AM_CONDITIONAL([COND_HOST_NETBSD], [test x$host_kernel = xnetbsd])
1736
AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
1737
AM_CONDITIONAL([COND_HOST_KFREEBSD], [test x$host_kernel = xkfreebsd])
1738
AM_CONDITIONAL([COND_HOST_XNU], [test x$host_kernel = xxnu])
1739
AM_CONDITIONAL([COND_HOST_ILLUMOS], [test x$host_kernel = xillumos])
1741
AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
1742
AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
1743
AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
1744
AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
1745
AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
1746
AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
1747
AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
1748
if test x$FONT_SOURCE != x ; then
1753
AC_SUBST(HAVE_FONT_SOURCE)
1754
AM_CONDITIONAL([COND_APPLE_LINKER], [test x$TARGET_APPLE_LINKER = x1])
1755
AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
1756
AM_CONDITIONAL([COND_ENABLE_CACHE_STATS], [test x$DISK_CACHE_STATS = x1])
1757
AM_CONDITIONAL([COND_ENABLE_BOOT_TIME_STATS], [test x$BOOT_TIME_STATS = x1])
1759
AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
1761
AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
1762
AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
1763
AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
1765
test "x$prefix" = xNONE && prefix="$ac_default_prefix"
1766
test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
1767
datarootdir="$(eval echo "$datarootdir")"
1768
grub_libdir="$(eval echo "$libdir")"
1769
grub_localedir="$(eval echo "$localedir")"
1770
grub_datadir="$(eval echo "$datadir")"
1771
grub_sysconfdir="$(eval echo "$sysconfdir")"
1772
AC_DEFINE_UNQUOTED(LOCALEDIR, "$grub_localedir", [Locale dir])
1773
AC_DEFINE_UNQUOTED(GRUB_LIBDIR, "$grub_libdir", [Library dir])
1774
AC_DEFINE_UNQUOTED(GRUB_DATADIR, "$grub_datadir", [Data dir])
1775
AC_DEFINE_UNQUOTED(GRUB_SYSCONFDIR, "$grub_sysconfdir", [Configuration dir])
1779
cpudir="${target_cpu}"
1780
if test x${cpudir} = xmipsel; then
1784
if test x"$link_dir" = xyes ; then
1785
AC_CONFIG_LINKS([include/grub/cpu:include/grub/$cpudir])
1786
if test "$platform" != emu ; then
1787
AC_CONFIG_LINKS([include/grub/machine:include/grub/$cpudir/$platform])
1790
mkdir -p include/grub 2>/dev/null
1791
rm -rf include/grub/cpu
1792
cp -rp $srcdir/include/grub/$cpudir include/grub/cpu 2>/dev/null
1793
if test "$platform" != emu ; then
1794
rm -rf include/grub/machine
1795
cp -rp $srcdir/include/grub/$cpudir/$platform include/grub/machine 2>/dev/null
1799
AC_CONFIG_FILES([Makefile])
1800
AC_CONFIG_FILES([grub-core/Makefile])
1801
AC_CONFIG_FILES([grub-core/gnulib/Makefile])
1802
AC_CONFIG_FILES([po/Makefile.in])
1803
AC_CONFIG_FILES([docs/Makefile])
1804
AC_CONFIG_FILES([util/bash-completion.d/Makefile])
1805
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
1806
AC_CONFIG_FILES([config.h])
1810
echo "*******************************************************"
1811
echo GRUB2 will be compiled with following components:
1812
echo Platform: "$target_cpu"-"$platform"
1813
if [ x"$platform" = xemu ]; then
1814
if [ x"$grub_emu_usb_excuse" = x ]; then
1815
echo USB support for grub-emu: Yes
1817
echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
1819
if [ x"$grub_emu_sdl_excuse" = x ]; then
1820
echo SDL support for grub-emu: Yes
1822
echo SDL support for grub-emu: No "($grub_emu_sdl_excuse)"
1824
if [ x"$grub_emu_pci_excuse" = x ]; then
1825
echo PCI support for grub-emu: Yes
1827
echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
1830
if test x"$device_mapper_excuse" = x ; then
1831
echo With devmapper support: Yes
1833
echo With devmapper support: No "($device_mapper_excuse)"
1835
if [ x"$enable_mm_debug" = xyes ]; then
1836
echo With memory debugging: Yes
1838
echo With memory debugging: No
1840
if [ x"$enable_cache_stats" = xyes ]; then
1841
echo With disk cache statistics: Yes
1843
echo With disk cache statistics: No
1846
if [ x"$enable_boot_time" = xyes ]; then
1847
echo With boot time statistics: Yes
1849
echo With boot time statistics: No
1852
if [ x"$efiemu_excuse" = x ]; then
1853
echo efiemu runtime: Yes
1855
echo efiemu runtime: No "($efiemu_excuse)"
1857
if [ x"$grub_mkfont_excuse" = x ]; then
1858
echo grub-mkfont: Yes
1860
echo grub-mkfont: No "($grub_mkfont_excuse)"
1862
if [ x"$grub_mount_excuse" = x ]; then
1863
echo grub-mount: Yes
1865
echo grub-mount: No "($grub_mount_excuse)"
1867
if [ x"$starfield_excuse" = x ]; then
1868
echo starfield theme: Yes
1870
echo starfield theme: No "($starfield_excuse)"
1872
if [ x"$libzfs_excuse" = x ]; then
1873
echo With libzfs support: Yes
1875
echo With libzfs support: No "($libzfs_excuse)"
1877
if [ x"$grub_build_mkfont_excuse" = x ]; then
1878
echo Build-time grub-mkfont: Yes
1879
if test "x$FONT_SOURCE" = x ; then
1880
echo "Without unifont"
1882
echo "With unifont from $FONT_SOURCE"
1885
echo Build-time grub-mkfont: No "($grub_build_mkfont_excuse)"
1886
echo "Without unifont (no build-time grub-mkfont)"
1888
if test x"$liblzma_excuse" != x ; then
1889
echo "Without liblzma (no support for XZ-compressed mips images) ($liblzma_excuse)"
1891
echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
1893
if [ x"$enable_quiet_boot" = xyes ]; then
1894
echo With quiet boot: Yes
1896
echo With quiet boot: No
1898
echo "*******************************************************"