]> git.proxmox.com Git - grub2.git/blame - configure.ac
Add missing static qualifiers.
[grub2.git] / configure.ac
CommitLineData
76ed06b9
BC
1# -*- autoconf -*-
2
6a161fa9 3# Process this file with autoconf to produce a configure script.
4
2f1a3acf 5# Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
6a161fa9 6#
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.
10#
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
14# PARTICULAR PURPOSE.
15
b977bf01 16dnl This configure script is complicated, because GRUB needs to deal
17dnl with three potentially different types:
18dnl
19dnl build -- the environment for building GRUB
20dnl host -- the environment for running utilities
21dnl target -- the environment for running GRUB
22dnl
23dnl In addition, GRUB needs to deal with a platform specification
24dnl which specifies the system running GRUB, such as firmware.
25dnl This is necessary because the target type in autoconf does not
26dnl describe such a system very well.
27dnl
28dnl The current strategy is to use variables with no prefix (such as
29dnl CC, CFLAGS, etc.) for the host type as well as the build type,
30dnl because GRUB does not need to use those variables for the build
31dnl type, so there is no conflict. Variables with the prefix "TARGET_"
32dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
33dnl type.
34
2fa5a58c 35AC_INIT([GRUB],[2.02~beta1],[bug-grub@gnu.org])
6a161fa9 36
15c69261
YB
37AC_CONFIG_AUX_DIR([build-aux])
38
76ed06b9
BC
39# We don't want -g -O2 by default in CFLAGS
40: ${CFLAGS=""}
6a161fa9 41
b977bf01 42# Checks for host and target systems.
6a161fa9 43AC_CANONICAL_HOST
ee7fb780 44save_program_prefix="${program_prefix}"
b977bf01 45AC_CANONICAL_TARGET
ee7fb780 46program_prefix="${save_program_prefix}"
6a161fa9 47
6fe506b0 48AM_INIT_AUTOMAKE([1.10.1])
8c411768 49AC_PREREQ(2.60)
6304d292 50AC_CONFIG_SRCDIR([include/grub/dl.h])
742f9232 51AC_CONFIG_HEADER([config-util.h])
e52db1f7 52
1d543c3e 53# Program name transformations
54AC_ARG_PROGRAM
fd49ceb3
CW
55grub_TRANSFORM([grub-bios-setup])
56grub_TRANSFORM([grub-editenv])
57grub_TRANSFORM([grub-install])
58grub_TRANSFORM([grub-mkconfig])
59grub_TRANSFORM([grub-mkfont])
60grub_TRANSFORM([grub-mkimage])
67ab8353 61grub_TRANSFORM([grub-glue-efi])
fd49ceb3
CW
62grub_TRANSFORM([grub-mklayout])
63grub_TRANSFORM([grub-mkpasswd-pbkdf2])
64grub_TRANSFORM([grub-mkrelpath])
65grub_TRANSFORM([grub-mkrescue])
66grub_TRANSFORM([grub-probe])
67grub_TRANSFORM([grub-reboot])
68grub_TRANSFORM([grub-script-check])
69grub_TRANSFORM([grub-set-default])
fd49ceb3 70grub_TRANSFORM([grub-sparc64-setup])
a79b8a15 71grub_TRANSFORM([grub-render-label])
ec824e0f 72grub_TRANSFORM([grub-file])
1d543c3e 73
90d1e879
RM
74# Optimization flag. Allow user to override.
75if test "x$TARGET_CFLAGS" = x; then
76 TARGET_CFLAGS="$TARGET_CFLAGS -Os"
77fi
78
76ed06b9
BC
79# Default HOST_CPPFLAGS
80HOST_CPPFLAGS="$HOST_CPPFLAGS -Wall -W"
76ed06b9 81HOST_CPPFLAGS="$HOST_CPPFLAGS -I\$(top_builddir)/include"
76ed06b9 82HOST_CPPFLAGS="$HOST_CPPFLAGS -DGRUB_UTIL=1"
76ed06b9
BC
83
84TARGET_CPPFLAGS="$TARGET_CPPFLAGS -Wall -W"
85TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_srcdir)/include"
86TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_builddir)/include"
87
b977bf01 88case "$target_cpu" in
02164e1b 89 i[[3456]]86) target_cpu=i386 ;;
c7ef54aa 90 amd64) target_cpu=x86_64 ;;
02164e1b 91 sparc) target_cpu=sparc64 ;;
ade85305 92 mipsel|mips64el)
4959e111 93 target_cpu=mipsel;
c721825b 94 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPSEL=1";
4a1eefb6 95 ;;
ade85305 96 mips|mips64)
76ed06b9 97 target_cpu=mips;
c721825b 98 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPS=1";
4a1eefb6 99 ;;
389b31cd
LL
100 arm*)
101 target_cpu=arm;
102 ;;
15a463d7
LL
103 aarch64*)
104 target_cpu=arm64;
105 ;;
6a161fa9 106esac
107
05568c2e 108# Specify the platform (such as firmware).
109AC_ARG_WITH([platform],
110 AS_HELP_STRING([--with-platform=PLATFORM],
83b984de 111 [select the host platform [[guessed]]]))
05568c2e 112
113# Guess the platform if not specified.
114if test "x$with_platform" = x; then
b977bf01 115 case "$target_cpu"-"$target_vendor" in
05568c2e 116 i386-apple) platform=efi ;;
117 i386-*) platform=pc ;;
58393a2d 118 x86_64-apple) platform=efi ;;
737feb35 119 x86_64-*) platform=pc ;;
05568c2e 120 powerpc-*) platform=ieee1275 ;;
58393a2d 121 powerpc64-*) platform=ieee1275 ;;
05568c2e 122 sparc64-*) platform=ieee1275 ;;
4959e111
VS
123 mipsel-*) platform=loongson ;;
124 mips-*) platform=arc ;;
e68d3b24 125 ia64-*) platform=efi ;;
389b31cd 126 arm-*) platform=uboot ;;
15a463d7 127 arm64-*) platform=efi ;;
58393a2d 128 *) AC_MSG_ERROR([unsupported CPU: "$target_cpu"]) ;;
05568c2e 129 esac
130else
131 platform="$with_platform"
132fi
133
ec1dfd63
VS
134case "$target_cpu"-"$platform" in
135 x86_64-efi) ;;
136 x86_64-emu) ;;
9612ebc0 137 x86_64-xen) ;;
ec1dfd63
VS
138 x86_64-*) target_cpu=i386 ;;
139 powerpc64-ieee1275) target_cpu=powerpc ;;
140esac
20011694 141
58393a2d 142# Check if the platform is supported, make final adjustments.
b977bf01 143case "$target_cpu"-"$platform" in
05568c2e 144 i386-efi) ;;
3f4ce737 145 x86_64-efi) ;;
9612ebc0
VS
146 i386-xen) ;;
147 x86_64-xen) ;;
05568c2e 148 i386-pc) ;;
7210dca9 149 i386-multiboot) ;;
546f966a 150 i386-coreboot) ;;
58393a2d 151 i386-linuxbios) platform=coreboot ;;
3d04eab8 152 i386-ieee1275) ;;
8231fb77 153 i386-qemu) ;;
05568c2e 154 powerpc-ieee1275) ;;
155 sparc64-ieee1275) ;;
2c40cc78 156 ia64-efi) ;;
f440c33f 157 mips-qemu_mips) ;;
3666d5f6 158 mips-qemu-mips) platform=qemu_mips;;
8906c3dd 159 mips-arc) ;;
7f63a64f 160 mipsel-arc) ;;
4959e111
VS
161 mipsel-qemu_mips) ;;
162 mipsel-qemu-mips) platform=qemu_mips;;
163 mipsel-yeeloong) platform=loongson ;;
164 mipsel-fuloong) platform=loongson ;;
165 mipsel-loongson) ;;
389b31cd
LL
166 arm-uboot) ;;
167 arm-efi) ;;
15a463d7 168 arm64-efi) ;;
f84b481b 169 *-emu) ;;
58393a2d 170 *) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
6a161fa9 171esac
172
48145ea3 173if test x$platform != xemu ; then
dd614590
VS
174 case "$target_cpu" in
175 i386 | powerpc) target_m32=1 ;;
176 x86_64 | sparc64) target_m64=1 ;;
177 esac
178fi
3f4ce737 179
eaf01c25
VS
180if test x"$target_cpu-$platform" = xsparc64-emu ; then
181 target_m64=1 ;
182fi
183
fc97214f 184case "$target_os" in
c3302aa5 185 windows* | mingw32*) target_os=cygwin ;;
fc97214f
VS
186esac
187
9304eef1 188# This normalizes the names, and creates a new variable ("host_kernel")
189# while at it, since the mapping is not always 1:1 (e.g. different OSes
190# using the same kernel type).
191case "$host_os" in
192 gnu*) host_kernel=hurd ;;
193 linux*) host_kernel=linux ;;
67937d4d 194 freebsd* | kfreebsd*-gnu) host_kernel=kfreebsd ;;
2c7031b1 195 netbsd*) host_kernel=netbsd ;;
958ee221 196 solaris*) host_kernel=illumos ;;
b105df76 197 darwin*) host_kernel=xnu ;;
7e518ca8 198 cygwin | windows* | mingw32*) host_kernel=windows ;;
9304eef1 199esac
200
cd46aa6c
VS
201case "$host_os" in
202 cygwin | windows* | mingw32*) have_exec=n ;;
203 aros*) have_exec=n ;;
204 *) have_exec=y;;
205esac
206
f84b481b 207case "$platform" in
c721825b
BC
208 coreboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_COREBOOT=1" ;;
209 multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
210 efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
9612ebc0 211 xen) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_XEN=1" ;;
c721825b 212 ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
389b31cd 213 uboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_UBOOT=1" ;;
c721825b
BC
214 qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
215 pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;;
216 emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
54da1feb 217 loongson) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_LOONGSON=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
3666d5f6
VS
218 qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
219 arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;;
f84b481b 220esac
6bea3f89 221case "$target_cpu" in
389b31cd 222 arm) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARM=1" ;;
15a463d7 223 arm64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARM64=1" ;;
4959e111 224 mips |mipsel) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;;
c721825b 225 sparc64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
6bea3f89 226esac
4959e111
VS
227if test x${target_cpu} = xmipsel ; then
228 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo mips_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
229else
3ec0fc1c 230 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,` -DGRUB_TARGET_CPU_`echo ${target_cpu} | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`=1"
4959e111 231fi
6bea3f89 232
7f63a64f
VS
233case "${target_cpu}-$platform" in
234 mips-arc)
235 TARGET_LINK_ADDR=0x88200000
236 TARGET_DECOMPRESSOR_LINK_ADDR=0x88100000
237 ;;
238 mipsel-arc)
239 TARGET_LINK_ADDR=0x80700000
240 TARGET_DECOMPRESSOR_LINK_ADDR=0x80600000
241 ;;
5fe67f39 242 mips*-qemu_mips | mips*-loongson)
7f63a64f
VS
243 TARGET_DECOMPRESSOR_LINK_ADDR=0x80100000
244 ;;
245esac
246
247AC_SUBST(TARGET_LINK_ADDR)
248AC_SUBST(TARGET_DECOMPRESSOR_LINK_ADDR)
249
c721825b 250TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
f84b481b 251
56978920 252AC_SUBST(host_cpu)
253AC_SUBST(host_os)
9304eef1 254AC_SUBST(host_kernel)
6e5a42fe 255
071114bb
VS
256AC_SUBST(target_cpu)
257AC_SUBST(platform)
258
d87aedff 259# Define default variables
7134247c
VS
260
261have_with_bootdir=n
262AC_ARG_WITH([bootdir],
263 AS_HELP_STRING([--with-bootdir=DIR],
264 [set the name of /boot directory [[guessed]]]),
265 [have_with_bootdir=y],
266 [have_with_bootdir=n])
267if test x$have_with_bootdir = xy; then
268 bootdirname="$with_bootdir"
269else
270 case "$host_os" in
271 netbsd* | openbsd*)
d87aedff 272 # Because /boot is used for the boot block in NetBSD and OpenBSD,
7134247c
VS
273 bootdirname='' ;;
274 *) bootdirname='boot' ;;
275 esac
276fi
277
d87aedff 278AC_SUBST(bootdirname)
a4c1d277
YB
279AC_DEFINE_UNQUOTED(GRUB_BOOT_DIR_NAME, "$bootdirname",
280 [Default boot directory name]")
d87aedff 281
7134247c
VS
282AC_ARG_WITH([grubdir],
283 AS_HELP_STRING([--with-grubdir=DIR],
284 [set the name of grub directory [[guessed]]]),
285 [grubdirname="$with_grubdir"],
286 [grubdirname="$PACKAGE"])
287
d87aedff 288AC_SUBST(grubdirname)
a4c1d277
YB
289AC_DEFINE_UNQUOTED(GRUB_DIR_NAME, "$grubdirname",
290 [Default grub directory name])
d87aedff 291
b977bf01 292#
293# Checks for build programs.
294#
144f1f98 295
6c826348 296# Although cmp is listed in the GNU Coding Standards as a command which
297# can used directly, OpenBSD lacks cmp in the default installation.
298AC_CHECK_PROGS([CMP], [cmp])
299if test "x$CMP" = x; then
300 AC_MSG_ERROR([cmp is not found])
301fi
302
144f1f98 303AC_CHECK_PROGS([YACC], [bison])
1569ec51 304if test "x$YACC" = x; then
6c826348 305 AC_MSG_ERROR([bison is not found])
1569ec51 306fi
307
76ed06b9 308AC_PROG_RANLIB
b977bf01 309AC_PROG_INSTALL
310AC_PROG_AWK
09220190 311AC_PROG_LEX
76ed06b9 312AC_PROG_YACC
b977bf01 313AC_PROG_MAKE_SET
ff420223 314AC_PROG_MKDIR_P
e1fd1939 315AC_PROG_LN_S
b977bf01 316
c7c75cf4 317if test "x$LEX" = "x:"; then
09220190
BC
318 AC_MSG_ERROR([flex is not found])
319else
2663fb5f 320 version=`$LEX --version | $AWK '{ split($NF,x,"."); print x[[1]]*10000+x[[2]]*100+x[[3]]; }'`
b777c18e 321 if test -n "$version" -a "$version" -ge 20535; then
09220190
BC
322 :
323 else
324 AC_MSG_ERROR([flex is too old. GRUB requires 2.5.35 or above])
325 fi
326fi
327
68807e5f 328# These are not a "must".
51fa856c 329AC_PATH_PROGS(MAKEINFO, makeinfo true)
6a161fa9 330
b977bf01 331#
332# Checks for host programs.
333#
334
335AC_PROG_CC
15c69261 336gl_EARLY
1eed0e6e 337AC_PROG_CXX
76ed06b9
BC
338AM_PROG_CC_C_O
339AM_PROG_AS
340
6a161fa9 341# Must be GCC.
342test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
343
1eed0e6e
VS
344AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
345
4889bdec 346AC_GNU_SOURCE
2f1a3acf 347AM_GNU_GETTEXT([external])
b977bf01 348AC_SYS_LARGEFILE
349
350# Identify characteristics of the host architecture.
7b780018
VS
351unset ac_cv_c_bigendian
352
eaf01c25
VS
353if test x"$target_cpu-$platform" = xsparc64-emu ; then
354 CFLAGS="$CFLAGS -m64"
355 HOST_CFLAGS="$HOST_CFLAGS -m64"
356fi
357
b977bf01 358AC_C_BIGENDIAN
359AC_CHECK_SIZEOF(void *)
360AC_CHECK_SIZEOF(long)
361
7e518ca8
VS
362case "$host_os" in
363 cygwin | windows* | mingw32*)
364 HOST_CPPFLAGS="$HOST_CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
365 CPPFLAGS="$CPPFLAGS -DUNICODE=1 -D_WIN32_WINNT=0x0500"
366 AC_CHECK_SIZEOF(TCHAR,,[#include <windows.h>])
367 ;;
368esac
369
aad32b14
VS
370if test x$USE_NLS = xno; then
371 HOST_CFLAGS="$HOST_CFLAGS -fno-builtin-gettext"
372fi
373
86695375 374if test "x$cross_compiling" = xyes; then
375 AC_MSG_WARN([cannot generate manual pages while cross compiling])
376else
377 AC_PATH_PROG(HELP2MAN, help2man)
378fi
379
3169f4c7 380# Check for functions and headers.
0f7e980b 381AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
e4c498a1 382AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
7c4e16ff 383
fb90b546
RM
384AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
385#include <sys/param.h>
386#include <sys/mount.h>])
387
388AC_CHECK_MEMBERS([struct statfs.f_mntfromname],,,[$ac_includes_default
389#include <sys/param.h>
390#include <sys/mount.h>])
391
2c7031b1
GS
392# For opendisk() and getrawpartition() on NetBSD.
393# Used in util/deviceiter.c and in util/hostdisk.c.
394AC_CHECK_HEADER([util.h], [
395 AC_CHECK_LIB([util], [opendisk], [
396 LIBUTIL="-lutil"
397 AC_DEFINE(HAVE_OPENDISK, 1, [Define if opendisk() in -lutil can be used])
398 ])
399 AC_CHECK_LIB([util], [getrawpartition], [
400 LIBUTIL="-lutil"
401 AC_DEFINE(HAVE_GETRAWPARTITION, 1, [Define if getrawpartition() in -lutil can be used])
402 ])
403])
404AC_SUBST([LIBUTIL])
405
19ce697d 406AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_host_cc_wtrampolines], [
00c05e22 407 SAVED_CFLAGS="$CFLAGS"
b35ec299 408 CFLAGS="$HOST_CFLAGS -Wtrampolines -Werror"
00c05e22
VS
409 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
410int va_arg_func (int fixed, va_list args);]], [[]])],
19ce697d
VS
411 [grub_cv_host_cc_wtrampolines=yes],
412 [grub_cv_host_cc_wtrampolines=no])
00c05e22
VS
413 CFLAGS="$SAVED_CFLAGS"
414])
415
19ce697d
VS
416if test x"$grub_host_cv_cc_wtrampolines" = xyes ; then
417 HOST_CFLAGS="$HOST_CFLAGS -Wtrampolines"
00c05e22
VS
418fi
419
76ed06b9
BC
420#
421# Check for host and build compilers.
422#
423HOST_CC=$CC
816719c8
VS
424AC_CHECK_PROGS(BUILD_CC, [gcc egcs cc])
425test -z "$BUILD_CC" && AC_MSG_ERROR([none of gcc, egcs and cc is found. set BUILD_CC manually.])
b224c266 426BUILD_CPP="$BUILD_CC -E"
76ed06b9 427
29013cba
VS
428case "$build_os" in
429 haiku*) BUILD_LIBM= ;;
430 *) BUILD_LIBM=-lm ;;
431esac
15c69261
YB
432# For gnulib.
433gl_INIT
434
382b500e 435WARN_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"
c2be6f7e 436EXTRA_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"
60d5e9cb
VS
437
438HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
439
440AC_CACHE_CHECK([which extra warnings work], [grub_cv_cc_w_extra_flags], [
441 SAVED_CFLAGS="$CFLAGS"
442 grub_cv_cc_w_extra_flags=
443 for x in $EXTRA_WARN_FLAGS; do
444 CFLAGS="$HOST_CFLAGS $x -Werror"
445 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
446 if test x$flag = x1 ; then
447 grub_cv_cc_w_extra_flags="$grub_cv_cc_w_extra_flags $x"
448 fi
449 done
450 CFLAGS="$SAVED_CFLAGS"
451])
452
453HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
454
b977bf01 455#
456# Check for target programs.
457#
458
5b5d4aa5 459# Find tools for the target.
460if test "x$target_alias" != x && test "x$host_alias" != "x$target_alias"; then
b977bf01 461 tmp_ac_tool_prefix="$ac_tool_prefix"
462 ac_tool_prefix=$target_alias-
463
464 AC_CHECK_TOOLS(TARGET_CC, [gcc egcs cc],
465 [AC_MSG_ERROR([none of gcc, egcs and cc is found. set TARGET_CC manually.])])
fc97214f
VS
466 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
467 AC_CHECK_TOOL(TARGET_STRIP, strip)
468 AC_CHECK_TOOL(TARGET_NM, nm)
0e8daad0 469 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
b977bf01 470
471 ac_tool_prefix="$tmp_ac_tool_prefix"
472else
473 if test "x$TARGET_CC" = x; then
474 TARGET_CC=$CC
475 fi
fc97214f
VS
476 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
477 AC_CHECK_TOOL(TARGET_STRIP, strip)
478 AC_CHECK_TOOL(TARGET_NM, nm)
0e8daad0 479 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
b977bf01 480fi
fc97214f 481
76ed06b9
BC
482AC_SUBST(HOST_CC)
483AC_SUBST(BUILD_CC)
7c9d0c39
VS
484AC_SUBST(BUILD_CFLAGS)
485AC_SUBST(BUILD_CPPFLAGS)
b977bf01 486AC_SUBST(TARGET_CC)
fc97214f 487AC_SUBST(TARGET_NM)
1bd73025 488AC_SUBST(TARGET_RANLIB)
fc97214f
VS
489AC_SUBST(TARGET_STRIP)
490AC_SUBST(TARGET_OBJCOPY)
b977bf01 491
b977bf01 492# Test the C compiler for the target environment.
493tmp_CC="$CC"
494tmp_CFLAGS="$CFLAGS"
495tmp_LDFLAGS="$LDFLAGS"
496tmp_CPPFLAGS="$CPPFLAGS"
aa6d7826 497tmp_LIBS="$LIBS"
b977bf01 498CC="$TARGET_CC"
499CFLAGS="$TARGET_CFLAGS"
500CPPFLAGS="$TARGET_CPPFLAGS"
501LDFLAGS="$TARGET_LDFLAGS"
aa6d7826 502LIBS=""
b977bf01 503
90d1e879 504# debug flags.
4e27343f 505TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations"
76ed06b9 506TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
6a161fa9 507
c12936c5
VS
508if test "x$target_cpu" != xi386 && test "x$target_cpu" != xx86_64; then
509TARGET_CFLAGS="$TARGET_CFLAGS -Wcast-align"
510fi
511
60d5e9cb
VS
512AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [
513 LDFLAGS="$TARGET_LDFLAGS -nostdlib -static"
514
515 grub_cv_target_cc_w_extra_flags=
516 for x in $EXTRA_WARN_FLAGS; do
517 CFLAGS="$TARGET_CFLAGS $x -Werror"
37378f74
VS
518 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
519asm (".globl start; start:");
520void __main (void);
521void __main (void) {}
522int main (void);
523]], [[]])], [flag=1], [flag=0])
60d5e9cb
VS
524 if test x$flag = x1 ; then
525 grub_cv_target_cc_w_extra_flags="$grub_cv_target_cc_w_extra_flags $x"
526 fi
527 done
528])
529
530TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_w_extra_flags"
531
60375a88 532AC_CACHE_CHECK([if compiling with clang], [grub_cv_cc_target_clang]
b73b70eb
VS
533[
534CFLAGS="$TARGET_CFLAGS"
535AC_COMPILE_IFELSE(
60375a88
VS
536[AC_LANG_PROGRAM([], [[
537#ifdef __clang__
538#error "is clang"
539#endif
540]])],
541[grub_cv_cc_target_clang=no], [grub_cv_cc_target_clang=yes])])
542
2312f06c
VS
543# on x86 clang doesn't support .code16
544# on arm clang doesn't support .arch directive
63a45330
VS
545# on mips clang doesn't support privilegied instructions, doubleword store/load
546# and crashes with hand-written assembly
547if test "x$grub_cv_cc_target_clang" = xyes && ( test "x$target_cpu" = xi386 \
548 || test "x$target_cpu" = xx86_64 || test "x$target_cpu" = xarm \
549 || test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ); then
60375a88
VS
550 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
551fi
552
b73b70eb
VS
553if test "x$grub_cv_cc_target_clang" = xyes && test "x$target_cpu" = xpowerpc; then
554AC_CACHE_CHECK([if clang can handle ame instruction], [grub_cv_cc_target_clang_ame]
555[
556CFLAGS="$TARGET_CFLAGS"
557AC_COMPILE_IFELSE(
558[AC_LANG_PROGRAM([], [[
559 unsigned int a = 0, b = 0;
560 asm volatile ("{ame|addme} %0,%1" : "=r" (a) : "r" (b));
561 if (a)
562 return 1;
563]])],
564[grub_cv_cc_target_clang_ame=yes], [grub_cv_cc_target_clang_ame=no])])
565 # clang <= 3.3 doesn't handle most of ppc assembly, not even inline assembly
566 # used by gcrypt
567 if test x$grub_cv_cc_target_clang_ame = xno ; then
568 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
896f483d 569 TARGET_CFLAGS="$TARGET_CFLAGS -no-integrated-as"
b73b70eb
VS
570 fi
571fi
572
60375a88
VS
573if test "x$target_cpu" = xi386 && test "x$platform" != xemu; then
574 TARGET_CFLAGS="$TARGET_CFLAGS -march=i386"
575fi
576
577if test "x$target_m32" = x1; then
578 # Force 32-bit mode.
579 TARGET_CFLAGS="$TARGET_CFLAGS -m32"
580 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
581 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m32"
582 TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
583 TARGET_MODULE_FORMAT="elf32"
584fi
585
586if test "x$target_m64" = x1; then
587 # Force 64-bit mode.
588 TARGET_CFLAGS="$TARGET_CFLAGS -m64"
589 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
590 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m64"
591 TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
592 TARGET_MODULE_FORMAT="elf64"
593fi
594
595if test "x$grub_cv_cc_target_clang" = xno && test "x$target_cpu" = xi386 && test "x$platform" != xemu && test "x$platform" != xefi; then
596 TARGET_CFLAGS="$TARGET_CFLAGS -mrtd -mregparm=3"
597fi
598
f93ddcfd
VS
599# on mips redirect cache flushing function to non-existant one.
600if test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ; then
601 AC_CACHE_CHECK([whether -mflush-func=grub_red_herring works], [grub_cv_cc_mflush_func], [
602 CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring -Werror"
603 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
604 [grub_cv_cc_mflush_func=yes],
605 [grub_cv_cc_mflush_func=no])
606 ])
607
608 if test "x$grub_cv_cc_mflush_func" = xyes; then
609 TARGET_CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring"
610 fi
611fi
612
613
90d1e879
RM
614# Force no alignment to save space on i386.
615if test "x$target_cpu" = xi386; then
616 AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
b35ec299 617 CFLAGS="$TARGET_CFLAGS -falign-loops=1 -Werror"
eb73121d 618 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
90d1e879
RM
619 [grub_cv_cc_falign_loop=yes],
620 [grub_cv_cc_falign_loop=no])
6a161fa9 621 ])
6a161fa9 622
c966a489 623 AC_CACHE_CHECK([whether -malign-loops works], [grub_cv_cc_malign_loop], [
b35ec299 624 CFLAGS="$TARGET_CFLAGS -malign-loops=1 -Werror"
c966a489
VS
625 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
626 [grub_cv_cc_malign_loop=yes],
627 [grub_cv_cc_malign_loop=no])
628 ])
629
90d1e879
RM
630 if test "x$grub_cv_cc_falign_loop" = xyes; then
631 TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
c966a489 632 elif test "x$grub_cv_cc_malign_loop" = xyes; then
90d1e879 633 TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
6a161fa9 634 fi
89e0240c 635fi
6a161fa9 636
cdc17f60
VS
637AC_CACHE_CHECK([whether -freg-struct-return works], [grub_cv_cc_freg_struct_return], [
638 CFLAGS="$TARGET_CFLAGS -freg-struct-return -Werror"
639 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
640 [grub_cv_cc_freg_struct_return=yes],
641 [grub_cv_cc_freg_struct_return=no])
642])
643
644if test "x$grub_cv_cc_freg_struct_return" = xyes; then
645 TARGET_CFLAGS="$TARGET_CFLAGS -freg-struct-return"
646fi
647
ee0220bc 648if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
90d1e879
RM
649 # Some toolchains enable these features by default, but they need
650 # registers that aren't set up properly in GRUB.
651 TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-3dnow"
652fi
77c55a87 653
90d1e879
RM
654# By default, GCC 4.4 generates .eh_frame sections containing unwind
655# information in some cases where it previously did not. GRUB doesn't need
656# these and they just use up vital space. Restore the old compiler
657# behaviour.
658AC_CACHE_CHECK([whether -fno-dwarf2-cfi-asm works], [grub_cv_cc_fno_dwarf2_cfi_asm], [
24f4e57c 659 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
90d1e879
RM
660 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
661 [grub_cv_cc_fno_dwarf2_cfi_asm=yes],
662 [grub_cv_cc_fno_dwarf2_cfi_asm=no])
90d1e879 663])
77c55a87 664
90d1e879
RM
665if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
666 TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
b977bf01 667fi
6a161fa9 668
1c1f31e5
VS
669if test x"$target_os" = xcygwin; then
670 AC_CACHE_CHECK([whether option -fno-reorder-functions works], grub_cv_cc_no_reorder_functions, [
24f4e57c 671 CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
1c1f31e5
VS
672 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
673 [grub_cv_cc_no_reorder_functions=yes],
674 [grub_cv_cc_no_reorder_functions=no])
675 ])
676fi
677
678if test x"$target_os" = xcygwin && test "x$grub_cv_cc_no_reorder_functions" = xyes; then
679 TARGET_CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
680fi
681
e9d3421c
VS
682# By default, GCC 4.6 generates .eh_frame sections containing unwind
683# information in some cases where it previously did not. GRUB doesn't need
684# these and they just use up vital space. Restore the old compiler
685# behaviour.
686AC_CACHE_CHECK([whether -fno-asynchronous-unwind-tables works], [grub_cv_cc_fno_asynchronous_unwind_tables], [
24f4e57c 687 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
e9d3421c
VS
688 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
689 [grub_cv_cc_fno_asynchronous_unwind_tables=yes],
690 [grub_cv_cc_fno_asynchronous_unwind_tables=no])
e9d3421c
VS
691])
692
693if test "x$grub_cv_cc_fno_asynchronous_unwind_tables" = xyes; then
694 TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
695fi
696
30c7d3ce
VS
697AC_ARG_ENABLE([efiemu],
698 [AS_HELP_STRING([--enable-efiemu],
699 [build and install the efiemu runtimes (default=guessed)])])
700if test x"$enable_efiemu" = xno ; then
701 efiemu_excuse="explicitly disabled"
702fi
6f1f6a0c 703if test x"$grub_cv_target_cc_link_format" = x-mi386pe || test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
1c1f31e5
VS
704 efiemu_excuse="not available on cygwin"
705fi
30c7d3ce
VS
706if test x"$target_cpu" != xi386 ; then
707 efiemu_excuse="only available on i386"
708fi
709if test x"$platform" = xefi ; then
710 efiemu_excuse="not available on efi"
711fi
712if test x"$efiemu_excuse" = x ; then
713 AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
3c2304d5 714 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
30c7d3ce
VS
715 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
716 [grub_cv_cc_efiemu=yes],
717 [grub_cv_cc_efiemu=no])
718 ])
719 if test x$grub_cv_cc_efiemu = xno; then
720 efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
721 fi
722fi
c2b70d09
AB
723if test x"$efiemu_excuse" = x ; then
724 AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efiemu64_link_format], [
725 grub_cv_target_cc_efiemu64_link_format=unknown
726 for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -melf_x86_64_haiku -arch,x86_64; do
727 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
728 LDFLAGS="-m64 -Wl,$format -nostdlib -static"
729 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
730 asm (".globl start; start:");
731 asm (".globl _start; _start:");
732 asm (".globl __start; __start:");
733 void __main (void);
734 void __main (void) {}
735 ]], [[]])], [flag=1], [flag=0])
736 if test x"$flag" = x1; then
737 grub_cv_target_cc_efiemu64_link_format="$format"
738 break;
739 fi
740 done])
741 if test x"$grub_cv_target_cc_efiemu64_link_format" = xunknown; then
742 efiemu_excuse="no suitable link format for efiemu64 found"
743 else
744 EFIEMU64_LINK_FORMAT="-Wl,$grub_cv_target_cc_efiemu64_link_format"
745 fi
746fi
30c7d3ce 747if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
d642d761 748 AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled ($efiemu_excuse)])
30c7d3ce
VS
749fi
750if test x"$efiemu_excuse" = x ; then
751enable_efiemu=yes
752else
753enable_efiemu=no
754fi
755AC_SUBST([enable_efiemu])
c2b70d09 756AC_SUBST([EFIEMU64_LINK_FORMAT])
30c7d3ce 757
a9f25a08
VS
758CFLAGS="$TARGET_CFLAGS"
759
760if test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
c2b70d09 761 AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
a9f25a08 762 grub_cv_target_cc_link_format=unknown
6f1f6a0c
VS
763 for format in -melf_${target_cpu} -melf_${target_cpu}_fbsd -melf_${target_cpu}_obsd -melf_${target_cpu}_haiku -mi386pe -mi386pep -arch,${target_cpu}; do
764 if test x${target_cpu} != xi386 && test x$format = xi386pe; then
765 continue
766 fi
767 if test x${target_cpu} != xx86_64 && test x$format = xi386pep; then
a9f25a08
VS
768 continue
769 fi
246a434f
VS
770 CFLAGS="$TARGET_CFLAGS"
771 LDFLAGS="$TARGET_LDFLAGS -Wl,$format -nostdlib -static"
a9f25a08
VS
772 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
773 asm (".globl start; start:");
774 asm (".globl _start; _start:");
775 asm (".globl __start; __start:");
776 void __main (void);
777 void __main (void) {}
c2b70d09 778 ]], [[]])], [flag=1], [flag=0])
a9f25a08
VS
779 if test x"$flag" = x1; then
780 grub_cv_target_cc_link_format="$format"
781 break;
782 fi
783 done])
784 if test x"$grub_cv_target_cc_link_format" = xunknown; then
785 AC_MSG_ERROR([no suitable link format found])
786 fi
787 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
6f1f6a0c 788 if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then
a9f25a08
VS
789 TARGET_OBJ2ELF='./build-grub-pe2elf';
790 fi
6f1f6a0c
VS
791 if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
792 TARGET_OBJ2ELF='./build-grub-pep2elf';
793 fi
a9f25a08
VS
794fi
795
796if test x$grub_cv_target_cc_link_format = x-arch,i386 || test x$grub_cv_target_cc_link_format = x-arch,x86_64; then
797 TARGET_APPLE_LINKER=1
798 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [objconv], [])
799 if test "x$TARGET_OBJCONV" = x ; then
800 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [./objconv], [], [.])
801 fi
802 if test "x$TARGET_OBJCONV" = x ; then
803 AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
804 fi
805 TARGET_IMG_LDSCRIPT=
806 TARGET_IMG_CFLAGS="-static"
807 TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
808 TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
809 TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
810 TARGET_LDFLAGS_OLDMAGIC=""
6f1f6a0c 811elif test x$grub_cv_target_cc_link_format = x-mi386pe || test x$grub_cv_target_cc_link_format = x-mi386pep ; then
a9f25a08
VS
812 TARGET_APPLE_LINKER=0
813 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
60b967be 814 TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
a9f25a08 815 TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
60b967be 816 TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
a9f25a08
VS
817 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
818 TARGET_IMG_CFLAGS=
819else
820 TARGET_APPLE_LINKER=0
821 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
822 TARGET_IMG_LDSCRIPT=
823 TARGET_IMG_LDFLAGS='-Wl,-N'
824 TARGET_IMG_LDFLAGS_AC='-Wl,-N'
825 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
826 TARGET_IMG_CFLAGS=
827fi
828
829AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
830
831
832LDFLAGS="$TARGET_LDFLAGS"
8f0baaac 833
eaf01c25 834if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then
7e9ca17a 835 # Use large model to support 4G memory
6e09b8b7 836 AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
24f4e57c 837 CFLAGS="$TARGET_CFLAGS -m64 -mcmodel=large"
6e09b8b7 838 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
839 [grub_cv_cc_mcmodel=yes],
840 [grub_cv_cc_mcmodel=no])
841 ])
a3ba7410 842 if test "x$grub_cv_cc_mcmodel" = xyes; then
c8600122 843 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
eaf01c25
VS
844 elif test "$target_cpu-$platform" = sparc64-emu; then
845 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
6e09b8b7 846 fi
46546fc5 847fi
7e9ca17a 848
46546fc5 849if test "$target_cpu"-"$platform" = x86_64-efi; then
7e9ca17a 850 # EFI writes to stack below %rsp, we must not use the red zone
851 AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
24f4e57c 852 CFLAGS="$TARGET_CFLAGS -m64 -mno-red-zone"
7e9ca17a 853 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
854 [grub_cv_cc_no_red_zone=yes],
855 [grub_cv_cc_no_red_zone=no])
856 ])
857 if test "x$grub_cv_cc_no_red_zone" = xno; then
858 AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
859 fi
860
c8600122 861 TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
20011694 862fi
863
41822625
VS
864if test "x$target_cpu" = xarm; then
865 AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
866 CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
867 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
868 [grub_cv_cc_mlong_calls=yes],
869 [grub_cv_cc_mlong_calls=no])
870 ])
871 if test "x$grub_cv_cc_mlong_calls" = xyes; then
872 TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
873 fi
a29f317a
VS
874 AC_CACHE_CHECK([whether option -mthumb-interwork works], grub_cv_cc_mthumb_interwork, [
875 CFLAGS="$TARGET_CFLAGS -mthumb-interwork -Werror"
876 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
877 [grub_cv_cc_mthumb_interwork=yes],
878 [grub_cv_cc_mthumb_interwork=no])
879 ])
880 if test "x$grub_cv_cc_mthumb_interwork" = xyes; then
881 TARGET_CFLAGS="$TARGET_CFLAGS -mthumb-interwork"
882 elif test "x$grub_cv_cc_target_clang" = xno ; then
883 AC_MSG_ERROR([your compiler doesn't support -mthumb-interwork])
884 else
885 CFLAGS="$TARGET_CFLAGS"
886 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
887#if defined (__thumb__) && !defined (__thumb2__)
888#error thumb without interworking
889#endif
890]])],
891 [no_interwork_ok=yes],
892 [no_interwork_ok=no])
893 if test x$no_interwork_ok = xno ; then
894 AC_MSG_ERROR([attempt to compile to thumb with no thumb interwork])
895 fi
896 fi
41822625
VS
897fi
898
baa2a121 899#
900# Compiler features.
901#
902
28668d80
VS
903CFLAGS="$TARGET_CFLAGS"
904
93a81088 905# Position independent executable.
906grub_CHECK_PIE
907[# Need that, because some distributions ship compilers that include
908# `-fPIE' in the default specs.
909if [ x"$pie_possible" = xyes ]; then
910 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
911fi]
912
28668d80
VS
913CFLAGS="$TARGET_CFLAGS"
914
7bd8b0c7
VS
915# Position independent executable.
916grub_CHECK_PIC
9cf12b20
VS
917[# On most platforms we don't want PIC as it only makes relocations harder
918# and code less efficient. On mips we want to have one got table per module
919# and reload $gp in every function.
920# GCC implements it using symbol __gnu_local_gp in non-PIC as well.
921# However with clang we need PIC for this reloading to happen.
922# Since default varies across dictributions use either -fPIC or -fno-PIC
923# explicitly.
924if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel ) && test "x$grub_cv_cc_target_clang" = xyes ; then
925 TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
926elif [ x"$pic_possible" = xyes ]; then
927 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
7bd8b0c7
VS
928fi]
929
28668d80
VS
930CFLAGS="$TARGET_CFLAGS"
931
baa2a121 932# Smashing stack protector.
933grub_CHECK_STACK_PROTECTOR
c3db8364 934# Need that, because some distributions ship compilers that include
baa2a121 935# `-fstack-protector' in the default specs.
c3db8364 936if test "x$ssp_possible" = xyes; then
937 TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
938fi
28668d80
VS
939
940CFLAGS="$TARGET_CFLAGS"
941
2a8a80e4 942grub_CHECK_STACK_ARG_PROBE
943# Cygwin's GCC uses alloca() to probe the stackframe on static
944# stack allocations above some threshold.
945if test x"$sap_possible" = xyes; then
946 TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
947fi
baa2a121 948
28668d80
VS
949CFLAGS="$TARGET_CFLAGS"
950
d74b9a1d 951# -mno-unaligned-access -mstrict-align
bb9f92b9 952if test "$target_cpu" = arm; then
d74b9a1d 953 AC_CACHE_CHECK([for compile options to get strict alignment], [grub_cv_target_cc_strict_align], [
bdb6090d 954 grub_cv_target_cc_strict_align=
d74b9a1d
VS
955 for arg in -mno-unaligned-access "-Xclang -mstrict-align" -mstrict-align; do
956 CFLAGS="$TARGET_CFLAGS $arg -Werror"
957 LDFLAGS="$TARGET_LDFLAGS"
958 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
959 if test x"$flag" = x1; then
960 grub_cv_target_cc_strict_align="$arg"
961 break;
962 fi
963 done])
964
d74b9a1d
VS
965 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_strict_align"
966 if test x"$grub_cv_target_cc_strict_align" = x"-Xclang -mstrict-align"; then
967 TARGET_LDFLAGS="$TARGET_LDFLAGS -Qunused-arguments"
bb9f92b9 968 fi
bdb6090d
VS
969 AC_CACHE_CHECK([if compiler generates unaligned accesses], [grub_cv_cc_target_emits_unaligned],
970 [CFLAGS="$TARGET_CFLAGS"
971 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
972#ifdef __ARM_FEATURE_UNALIGNED
973#error "unaligned"
974#endif
975 ]])],
976 [grub_cv_cc_target_emits_unaligned=no], [grub_cv_cc_target_emits_unaligned=yes])])
977 if test x$grub_cv_cc_target_emits_unaligned = xyes; then
978 AC_MSG_ERROR([compiler generates unaligned accesses])
979 fi
bb9f92b9
LL
980fi
981
aa6d7826 982# Set them to their new values for the tests below.
983CC="$TARGET_CC"
a9f25a08 984if test "x$TARGET_APPLE_LINKER" = x1 ; then
246a434f 985CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
26de2bcd 986else
37378f74 987CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
26de2bcd 988fi
aa6d7826 989CPPFLAGS="$TARGET_CPPFLAGS"
d5524ca8
VS
990if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
991TARGET_LIBGCC=
03f80960 992else
d5524ca8 993TARGET_LIBGCC=-lgcc
03f80960 994fi
69be5b74 995
d5524ca8
VS
996LIBS="$TARGET_LIBGCC"
997
01fcf061 998grub_ASM_USCORE
a9f25a08 999if test "x$TARGET_APPLE_LINKER" = x0 ; then
01fcf061 1000if test x$grub_cv_asm_uscore = xyes; then
37378f74 1001DEFSYM="-Wl,--defsym,_abort=_main -Wl,--defsym,__main=_main"
01fcf061 1002else
37378f74 1003DEFSYM="-Wl,--defsym,abort=main -Wl,--defsym,_main=main -Wl,--defsym,__main=main"
01fcf061 1004fi
37378f74 1005CFLAGS="$TARGET_CFLAGS -nostdlib $DEFSYM"
a9f25a08 1006fi
01fcf061 1007
69be5b74 1008# Check for libgcc symbols
6fcec439 1009AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __ucmpdi2 _restgpr_14_x)
69be5b74 1010
a9f25a08 1011if test "x$TARGET_APPLE_LINKER" = x1 ; then
246a434f 1012CFLAGS="$TARGET_CFLAGS -nostdlib -static"
69be5b74 1013else
37378f74 1014CFLAGS="$TARGET_CFLAGS -nostdlib"
69be5b74 1015fi
42e0cba3 1016LIBS=""
aa6d7826 1017
6a161fa9 1018# Defined in aclocal.m4.
f6130a12 1019grub_PROG_TARGET_CC
a9f25a08 1020if test "x$TARGET_APPLE_LINKER" != x1 ; then
b977bf01 1021grub_PROG_OBJCOPY_ABSOLUTE
2b167a72 1022fi
cb71ba20 1023grub_PROG_LD_BUILD_ID_NONE
b977bf01 1024if test "x$target_cpu" = xi386; then
a9f25a08 1025 if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
2aec1692
CF
1026 if test ! -z "$TARGET_IMG_LDSCRIPT"; then
1027 # Check symbols provided by linker script.
37378f74 1028 CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000"
2aec1692 1029 fi
2a8a80e4 1030 grub_CHECK_BSS_START_SYMBOL
1031 grub_CHECK_END_SYMBOL
1032 fi
1033 CFLAGS="$TARGET_CFLAGS"
4b13b216 1034 grub_I386_ASM_PREFIX_REQUIREMENT
1035 grub_I386_ASM_ADDR32
6a161fa9 1036fi
1037
20aea949
VS
1038grub_PROG_NM_WORKS
1039grub_PROG_NM_MINUS_P
1040grub_PROG_NM_DEFINED_ONLY
1041AC_SUBST(TARGET_NMFLAGS_MINUS_P)
1042AC_SUBST(TARGET_NMFLAGS_DEFINED_ONLY)
1043
016a671b 1044if test "$platform" != emu; then
8f9a632b
VS
1045AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
1046 SAVED_CPPFLAGS="$CPPFLAGS"
1047 CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1048 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
ce938140 1049#include <stddef.h>
8f9a632b
VS
1050int va_arg_func (int fixed, va_list args);]], [[]])],
1051 [grub_cv_cc_isystem=yes],
1052 [grub_cv_cc_isystem=no])
1053 CPPFLAGS="$SAVED_CPPFLAGS"
1054])
1055
1056if test x"$grub_cv_cc_isystem" = xyes ; then
1057 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1058fi
dae79b6b 1059fi
5ce5507f 1060
19ce697d 1061AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_cc_wtrampolines], [
24f4e57c 1062 CFLAGS="$TARGET_CFLAGS -Wtrampolines -Werror"
779dc15b
VS
1063 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1064int va_arg_func (int fixed, va_list args);]], [[]])],
19ce697d
VS
1065 [grub_cv_cc_wtrampolines=yes],
1066 [grub_cv_cc_wtrampolines=no])
779dc15b
VS
1067])
1068
19ce697d
VS
1069if test x"$grub_cv_cc_wtrampolines" = xyes ; then
1070 TARGET_CFLAGS="$TARGET_CFLAGS -Wtrampolines"
779dc15b
VS
1071fi
1072
c9a86192 1073# Restore the flags.
9962ed99 1074CC="$tmp_CC"
1075CFLAGS="$tmp_CFLAGS"
1076CPPFLAGS="$tmp_CPPFLAGS"
c9a86192 1077LDFLAGS="$tmp_LDFLAGS"
aa6d7826 1078LIBS="$tmp_LIBS"
6a161fa9 1079
4fe9862e 1080#
2965c7cc 1081# Check for options.
4fe9862e 1082#
1083
1084# Memory manager debugging.
b39f9d20 1085AC_ARG_ENABLE([mm-debug],
2965c7cc 1086 AS_HELP_STRING([--enable-mm-debug],
90ce5d56 1087 [include memory manager debugging]),
2965c7cc 1088 [AC_DEFINE([MM_DEBUG], [1],
1089 [Define to 1 if you enable memory manager debugging.])])
1090
c5dc1690
SJ
1091AC_ARG_ENABLE([cache-stats],
1092 AS_HELP_STRING([--enable-cache-stats],
055e2b8b 1093 [enable disk cache statistics collection]))
c5dc1690
SJ
1094
1095if test x$enable_cache_stats = xyes; then
1096 DISK_CACHE_STATS=1
1097else
1098 DISK_CACHE_STATS=0
1099fi
1100AC_SUBST([DISK_CACHE_STATS])
1101
e744219b
VS
1102AC_ARG_ENABLE([boot-time],
1103 AS_HELP_STRING([--enable-boot-time],
1104 [enable boot time statistics collection]))
1105
1106if test x$enable_boot_time = xyes; then
1107 BOOT_TIME_STATS=1
1108else
1109 BOOT_TIME_STATS=0
1110fi
1111AC_SUBST([BOOT_TIME_STATS])
1112
d64399b5 1113AC_ARG_ENABLE([grub-emu-usb],
1114 [AS_HELP_STRING([--enable-grub-emu-usb],
5ce5507f 1115 [build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
5ce5507f 1116
927d0134
VS
1117AC_ARG_ENABLE([grub-emu-sdl],
1118 [AS_HELP_STRING([--enable-grub-emu-sdl],
1119 [build and install the `grub-emu' debugging utility with SDL support (default=guessed)])])
1120
3affd0ec 1121AC_ARG_ENABLE([grub-emu-pci],
1122 [AS_HELP_STRING([--enable-grub-emu-pci],
1123 [build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
1124
f84b481b 1125if test "$platform" = emu; then
f84b481b 1126
62a747cb
VS
1127if test x"$enable_grub_emu_usb" != xyes ; then
1128 grub_emu_usb_excuse="not enabled"
5ce5507f 1129fi
325c8258 1130
0e848909
VS
1131if test x"$enable_grub_emu_pci" = xyes ; then
1132 grub_emu_usb_excuse="conflicts with PCI support"
1133fi
1134
5ce5507f 1135[if [ x"$grub_emu_usb_excuse" = x ]; then
d64399b5 1136 # Check for libusb libraries.]
5ce5507f 1137AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
e98cd0c2 1138 [grub_emu_usb_excuse=["need libusb library"]])
d64399b5 1139 AC_SUBST([LIBUSB])
5ce5507f 1140[fi]
1141[if [ x"$grub_emu_usb_excuse" = x ]; then
1142 # Check for headers.]
d64399b5 1143 AC_CHECK_HEADERS([usb.h], [],
e98cd0c2 1144 [grub_emu_usb_excuse=["need libusb headers"]])
4fe9862e 1145[fi]
c6f3b249 1146if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
d642d761 1147 AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled ($grub_emu_usb_excuse)])
5ce5507f 1148fi
1149if test x"$grub_emu_usb_excuse" = x ; then
1150enable_grub_emu_usb=yes
1151else
1152enable_grub_emu_usb=no
1153fi
1154
927d0134
VS
1155if test x"$enable_grub_emu_sdl" = xno ; then
1156 grub_emu_sdl_excuse="explicitely disabled"
1157fi
1158[if [ x"$grub_emu_sdl_excuse" = x ]; then
1159 # Check for libSDL libraries.]
1160AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
1161 [grub_emu_sdl_excuse=["libSDL libraries are required to build \`grub-emu' with SDL support"]])
1162 AC_SUBST([LIBSDL])
1163[fi]
9f293ab0 1164
927d0134
VS
1165[if [ x"$grub_emu_sdl_excuse" = x ]; then
1166 # Check for headers.]
1167 AC_CHECK_HEADERS([SDL/SDL.h], [],
1168 [grub_emu_sdl_excuse=["libSDL header file is required to build \`grub-emu' with SDL support"]])
1169[fi]
9f293ab0 1170
927d0134 1171if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
d642d761 1172 AC_MSG_ERROR([SDL support for grub-emu was explicitely requested but can't be compiled ($grub_emu_sdl_excuse)])
927d0134
VS
1173fi
1174if test x"$grub_emu_sdl_excuse" = x ; then
1175enable_grub_emu_sdl=yes
1176else
1177enable_grub_emu_sdl=no
1178fi
1179
3affd0ec 1180if test x"$enable_grub_emu_pci" != xyes ; then
325c8258 1181 grub_emu_pci_excuse="not enabled"
1182fi
1183
1184if test x"$enable_grub_emu_usb" = xyes ; then
1185 grub_emu_pci_excuse="conflicts with USB support"
1186fi
1187
1188[if [ x"$grub_emu_pci_excuse" = x ]; then
1189 # Check for libpci libraries.]
459fed4b 1190 AC_CHECK_LIB([pciaccess], [pci_system_init], [LIBPCIACCESS="-lpciaccess"],
1191 [grub_emu_pci_excuse=["need libpciaccess library"]])
1192 AC_SUBST([LIBPCIACCESS])
325c8258 1193[fi]
1194[if [ x"$grub_emu_pci_excuse" = x ]; then
1195 # Check for headers.]
1196 AC_CHECK_HEADERS([pci/pci.h], [],
459fed4b 1197 [grub_emu_pci_excuse=["need libpciaccess headers"]])
325c8258 1198[fi]
1199
1200if test x"$grub_emu_pci_excuse" = x ; then
1201enable_grub_emu_pci=yes
1202else
9f293ab0 1203
325c8258 1204enable_grub_emu_pci=no
3affd0ec 1205fi
1206
927d0134 1207AC_SUBST([enable_grub_emu_sdl])
d64399b5 1208AC_SUBST([enable_grub_emu_usb])
3affd0ec 1209AC_SUBST([enable_grub_emu_pci])
e7d09ac4
AB
1210
1211else
1212
1213# Ignore --enable-emu-* if platform is not emu
1214enable_grub_emu_sdl=no
1215enable_grub_emu_usb=no
1216enable_grub_emu_pci=no
f84b481b 1217fi
4fe9862e 1218
e52db1f7 1219AC_ARG_ENABLE([grub-mkfont],
1220 [AS_HELP_STRING([--enable-grub-mkfont],
5ce5507f 1221 [build and install the `grub-mkfont' utility (default=guessed)])])
1222if test x"$enable_grub_mkfont" = xno ; then
ce7a733d 1223 grub_mkfont_excuse="explicitly disabled"
5ce5507f 1224fi
1225
1226if test x"$grub_mkfont_excuse" = x ; then
e52db1f7 1227 # Check for freetype libraries.
a5b55c4b 1228 AC_CHECK_TOOLS([FREETYPE], [freetype-config])
e52db1f7 1229 if test "x$FREETYPE" = x ; then
e98cd0c2 1230 grub_mkfont_excuse=["need freetype2 library"]
e52db1f7 1231 fi
e52db1f7 1232fi
660960d6 1233
7b780018
VS
1234unset ac_cv_header_ft2build_h
1235
660960d6
VS
1236if test x"$grub_mkfont_excuse" = x ; then
1237 # Check for freetype libraries.
a5b55c4b
DM
1238 freetype_cflags=`$FREETYPE --cflags`
1239 freetype_libs=`$FREETYPE --libs`
d1e8a02f 1240 SAVED_CPPFLAGS="$CPPFLAGS"
b75db69a 1241 SAVED_LIBS="$LIBS"
d1e8a02f 1242 CPPFLAGS="$CPPFLAGS $freetype_cflags"
b75db69a 1243 LIBS="$LIBS $freetype_libs"
660960d6
VS
1244 AC_CHECK_HEADERS([ft2build.h], [],
1245 [grub_mkfont_excuse=["need freetype2 headers"]])
b75db69a 1246 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
d1e8a02f 1247 CPPFLAGS="$SAVED_CPPFLAGS"
b75db69a 1248 LIBS="$SAVED_LIBS"
660960d6
VS
1249fi
1250
5ce5507f 1251if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
d642d761 1252 AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled ($grub_mkfont_excuse)])
5ce5507f 1253fi
1254if test x"$grub_mkfont_excuse" = x ; then
1255enable_grub_mkfont=yes
1256else
1257enable_grub_mkfont=no
1258fi
e52db1f7 1259AC_SUBST([enable_grub_mkfont])
1260AC_SUBST([freetype_cflags])
1261AC_SUBST([freetype_libs])
1262
7c9d0c39 1263SAVED_CC="$CC"
b224c266 1264SAVED_CPP="$CPP"
7c9d0c39
VS
1265SAVED_CFLAGS="$CFLAGS"
1266SAVED_CPPFLAGS="$CPPFLAGS"
1267CC="$BUILD_CC"
b224c266 1268CPP="$BUILD_CPP"
7c9d0c39 1269CFLAGS="$BUILD_CFLAGS"
7b780018
VS
1270CPPFLAGS="$BUILD_CPPFLAGS"
1271
1272unset ac_cv_c_bigendian
1273unset ac_cv_header_ft2build_h
1274
1275AC_COMPUTE_INT([BUILD_SIZEOF_VOID_P], [sizeof (void *)])
1276AC_COMPUTE_INT([BUILD_SIZEOF_LONG], [sizeof (long)])
1277AC_C_BIGENDIAN([BUILD_WORDS_BIGENDIAN=1], [BUILD_WORDS_BIGENDIAN=0], [BUILD_WORDS_BIGENDIAN=err], [BUILD_WORDS_BIGENDIAN=err])
1278
1279if test x$BUILD_WORDS_BIGENDIAN = xerr ; then
1280 AC_MSG_ERROR([couldnt determine build endianness])
1281fi
1282
1283AC_SUBST([BUILD_SIZEOF_LONG])
1284AC_SUBST([BUILD_SIZEOF_VOID_P])
1285AC_SUBST([BUILD_WORDS_BIGENDIAN])
c5884973 1286
7c9d0c39
VS
1287if test x"$grub_build_mkfont_excuse" = x ; then
1288 # Check for freetype libraries.
7b780018 1289 AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
7c9d0c39
VS
1290 if test "x$BUILD_FREETYPE" = x ; then
1291 grub_build_mkfont_excuse=["need freetype2 library"]
1292 fi
1293fi
c5884973 1294
7c9d0c39
VS
1295if test x"$grub_build_mkfont_excuse" = x ; then
1296 # Check for freetype libraries.
1297 build_freetype_cflags=`$BUILD_FREETYPE --cflags`
1298 build_freetype_libs=`$BUILD_FREETYPE --libs`
1299 SAVED_CPPFLAGS_2="$CPPFLAGS"
b75db69a 1300 SAVED_LIBS="$LIBS"
7c9d0c39 1301 CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
b75db69a 1302 LIBS="$LIBS $build_freetype_libs"
7c9d0c39
VS
1303 AC_CHECK_HEADERS([ft2build.h], [],
1304 [grub_build_mkfont_excuse=["need freetype2 headers"]])
b75db69a
VS
1305 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
1306 LIBS="$SAVED_LIBS"
7c9d0c39
VS
1307 CPPFLAGS="$SAVED_CPPFLAGS_2"
1308fi
1309
1310if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
d642d761 1311 AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled ($grub_build_mkfont_excuse)])
7c9d0c39
VS
1312fi
1313if test x"$grub_build_mkfont_excuse" = x ; then
1314 enable_build_grub_mkfont=yes
1315else
1316 enable_build_grub_mkfont=no
c5884973 1317fi
72c9a507 1318if 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
d642d761
CW
1319 if test x"$grub_build_mkfont_excuse" = x ; then
1320 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
1321 else
1322 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont ($grub_build_mkfont_excuse)])
1323 fi
7c9d0c39
VS
1324fi
1325
1326AC_SUBST([build_freetype_cflags])
1327AC_SUBST([build_freetype_libs])
1328
1329CC="$SAVED_CC"
b224c266 1330CPP="$SAVED_CPP"
7c9d0c39
VS
1331CFLAGS="$SAVED_CFLAGS"
1332CPPFLAGS="$SAVED_CPPFLAGS"
1333
1334
1335DJVU_FONT_SOURCE=
1336
1337starfield_excuse=
c5884973 1338
300f48c5
VS
1339AC_ARG_ENABLE([grub-themes],
1340 [AS_HELP_STRING([--enable-grub-themes],
1341 [build and install GRUB themes (default=guessed)])])
1342if test x"$enable_grub_themes" = xno ; then
1343 starfield_excuse="explicitly disabled"
1344fi
1345
1346if test x"$starfield_excuse" = x && test x"$enable_build_grub_mkfont" = xno ; then
7b966834
VS
1347 starfield_excuse="No build-time grub-mkfont"
1348fi
1349
501b9e4b 1350if test x"$starfield_excuse" = x; then
c5884973 1351 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
32745f51 1352 for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu; do
c5884973
DO
1353 if test -f "$dir/DejaVuSans.$ext"; then
1354 DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
1355 break 2
1356 fi
1357 done
1358 done
1359
1360 if test "x$DJVU_FONT_SOURCE" = x; then
1361 starfield_excuse="No DejaVu found"
1362 fi
1363fi
1364
300f48c5 1365if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then
d642d761 1366 AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied ($starfield_excuse)])
300f48c5
VS
1367fi
1368
c5884973
DO
1369AC_SUBST([DJVU_FONT_SOURCE])
1370
7c9d0c39
VS
1371FONT_SOURCE=
1372
1373for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1374 for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont /usr/share/fonts/uni /usr/share/fonts/truetype/unifont /usr/share/fonts/misc; do
1375 if test -f "$dir/unifont.$ext"; then
0277eab7
VS
1376 md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')"
1377 # PCF and BDF from version 6.3 isn't hanled properly by libfreetype.
1378 if test "$md5" = 0a54834d2788c83886a3e1785a6a1e61 || test "$md5" = 28f2565c7a41d8d407e2551159385edb || test "$md5" = dae5e588461b3b92b87b6ffee734f936 || test "$md5" = 4a3d687aa5bb329ed05f4263a1016791 ; then
1379 continue;
1380 fi
7c9d0c39
VS
1381 FONT_SOURCE="$dir/unifont.$ext"
1382 break 2
1383 fi
1384 done
1385done
1386
7b966834
VS
1387if test x"$enable_build_grub_mkfont" = xno ; then
1388 FONT_SOURCE=
1389fi
1390
72c9a507 1391if 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
d642d761
CW
1392 if test x"$grub_build_mkfont_excuse" = x ; then
1393 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
1394 else
1395 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont ($grub_build_mkfont_excuse)])
1396 fi
7c9d0c39
VS
1397fi
1398
1399AC_SUBST([FONT_SOURCE])
1400
7b780018 1401if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x && test x"$grub_build_mkfont_excuse" = x; then
7c9d0c39
VS
1402 grub_build_mkfont_excuse="no fonts"
1403fi
1404
1405
897e6207
CW
1406AC_ARG_ENABLE([grub-mount],
1407 [AS_HELP_STRING([--enable-grub-mount],
1408 [build and install the `grub-mount' utility (default=guessed)])])
1409if test x"$enable_grub_mount" = xno ; then
1410 grub_mount_excuse="explicitly disabled"
92bb0786
VS
1411fi
1412
897e6207 1413if test x"$grub_mount_excuse" = x ; then
92bb0786 1414 AC_CHECK_LIB([fuse], [fuse_main_real], [],
897e6207 1415 [grub_mount_excuse="need FUSE library"])
92bb0786
VS
1416fi
1417
897e6207 1418if test x"$grub_mount_excuse" = x ; then
92bb0786
VS
1419 # Check for fuse headers.
1420 SAVED_CPPFLAGS="$CPPFLAGS"
338c7fab 1421 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26"
92bb0786 1422 AC_CHECK_HEADERS([fuse/fuse.h], [],
897e6207 1423 [grub_mount_excuse=["need FUSE headers"]])
92bb0786
VS
1424 CPPFLAGS="$SAVED_CPPFLAGS"
1425fi
1426
897e6207 1427if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
d642d761 1428 AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled ($grub_mount_excuse)])
92bb0786 1429fi
897e6207
CW
1430if test x"$grub_mount_excuse" = x ; then
1431enable_grub_mount=yes
92bb0786 1432else
897e6207 1433enable_grub_mount=no
92bb0786 1434fi
897e6207 1435AC_SUBST([enable_grub_mount])
92bb0786 1436
7181e228
CW
1437AC_ARG_ENABLE([device-mapper],
1438 [AS_HELP_STRING([--enable-device-mapper],
1439 [enable Linux device-mapper support (default=guessed)])])
1440if test x"$enable_device_mapper" = xno ; then
1441 device_mapper_excuse="explicitly disabled"
1442fi
1443
53798c4b
GS
1444if test x"$device_mapper_excuse" = x ; then
1445 # Check for device-mapper header.
1446 AC_CHECK_HEADER([libdevmapper.h], [],
1447 [device_mapper_excuse="need libdevmapper header"])
1448fi
1449
7181e228
CW
1450if test x"$device_mapper_excuse" = x ; then
1451 # Check for device-mapper library.
61d720e5 1452 AC_CHECK_LIB([devmapper], [dm_task_create], [],
7181e228 1453 [device_mapper_excuse="need devmapper library"])
7181e228 1454fi
61d720e5
VS
1455
1456if test x"$device_mapper_excuse" = x ; then
1457 # Check for device-mapper library.
1458 AC_CHECK_LIB([devmapper], [dm_log_with_errno_init],
1459 [],
1460 [device_mapper_excuse="need devmapper library"])
1461fi
1462
1463if test x"$device_mapper_excuse" = x ; then
1464 LIBDEVMAPPER="-ldevmapper";
1465 AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
1466 [Define to 1 if you have the devmapper library.])
1467fi
1468
62f7d208 1469AC_SUBST([LIBDEVMAPPER])
76ed06b9 1470
f4727da9
VS
1471LIBGEOM=
1472if test x$host_kernel = xkfreebsd; then
1473 AC_CHECK_LIB([geom], [geom_gettree], [],
1474 [AC_MSG_ERROR([Your platform requires libgeom])])
1475 LIBGEOM="-lgeom"
1476fi
1477
1478AC_SUBST([LIBGEOM])
1479
0d2d30bb
VS
1480AC_ARG_ENABLE([liblzma],
1481 [AS_HELP_STRING([--enable-liblzma],
1482 [enable liblzma integration (default=guessed)])])
1483if test x"$enable_liblzma" = xno ; then
1484 liblzma_excuse="explicitly disabled"
1485fi
1486
1487if test x"$liblzma_excuse" = x ; then
2c44e493 1488AC_CHECK_LIB([lzma], [lzma_code],
0d2d30bb
VS
1489 [],[liblzma_excuse="need lzma library"])
1490fi
1491if test x"$liblzma_excuse" = x ; then
1492AC_CHECK_HEADER([lzma.h], [], [liblzma_excuse="need lzma header"])
1493fi
1494
1495if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then
d642d761 1496 AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied ($liblzma_excuse)])
0d2d30bb
VS
1497fi
1498
1499
1500if test x"$liblzma_excuse" = x ; then
1501 LIBLZMA="-llzma"
1502 AC_DEFINE([USE_LIBLZMA], [1],
1503 [Define to 1 if you have the LZMA library.])
1504fi
1505
2c44e493
VS
1506AC_SUBST([LIBLZMA])
1507
e4c498a1
MG
1508AC_ARG_ENABLE([libzfs],
1509 [AS_HELP_STRING([--enable-libzfs],
1510 [enable libzfs integration (default=guessed)])])
1511if test x"$enable_libzfs" = xno ; then
1512 libzfs_excuse="explicitly disabled"
1513fi
16c7cb32 1514
e4c498a1
MG
1515if test x"$libzfs_excuse" = x ; then
1516 # Only check for system headers if libzfs support has not been disabled.
1517 AC_CHECK_HEADERS(libzfs.h libnvpair.h)
1518fi
1519
1520if test x"$libzfs_excuse" = x ; then
1521 AC_CHECK_LIB([zfs], [libzfs_init],
1522 [],
1523 [libzfs_excuse="need zfs library"])
1524fi
1525
1526if test x"$libzfs_excuse" = x ; then
27f9d02e 1527 AC_CHECK_LIB([nvpair], [nvlist_lookup_string],
e4c498a1
MG
1528 [],
1529 [libzfs_excuse="need nvpair library"])
1530fi
1531
1532if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then
d642d761 1533 AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied ($libzfs_excuse)])
e4c498a1
MG
1534fi
1535
1536if test x"$libzfs_excuse" = x ; then
1537 # We need both libzfs and libnvpair for a successful build.
1538 LIBZFS="-lzfs"
1539 AC_DEFINE([HAVE_LIBZFS], [1],
1540 [Define to 1 if you have the ZFS library.])
1541 LIBNVPAIR="-lnvpair"
1542 AC_DEFINE([HAVE_LIBNVPAIR], [1],
1543 [Define to 1 if you have the NVPAIR library.])
1544fi
1545
1546AC_SUBST([LIBZFS])
16c7cb32
BC
1547AC_SUBST([LIBNVPAIR])
1548
9f915872
VS
1549LIBS=""
1550
76ed06b9 1551AC_SUBST([FONT_SOURCE])
76ed06b9
BC
1552AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
1553 [AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
7181e228 1554
742f9232
VS
1555AC_SUBST(HAVE_ASM_USCORE)
1556AC_SUBST(ADDR32)
1557AC_SUBST(DATA32)
1558AC_SUBST(BSS_START_SYMBOL)
1559AC_SUBST(END_SYMBOL)
1560AC_SUBST(PACKAGE)
1561AC_SUBST(VERSION)
742f9232
VS
1562AC_SUBST(NEED_REGISTER_FRAME_INFO)
1563
d5524ca8
VS
1564AC_ARG_ENABLE([werror],
1565 [AS_HELP_STRING([--disable-werror],
1566 [do not use -Werror when building GRUB])])
1567if test x"$enable_werror" != xno ; then
1568 TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
1569 HOST_CFLAGS="$HOST_CFLAGS -Werror"
1570fi
1571
1572if test "x$grub_cv_cc_target_clang" = xno; then
1573 TARGET_LDFLAGS_STATIC_LIBGCC="-static-libgcc"
1574else
1575 TARGET_LDFLAGS_STATIC_LIBGCC=
1576fi
1577
1578TARGET_CPP="$TARGET_CC -E"
1579TARGET_CCAS=$TARGET_CC
1580
1581GRUB_TARGET_CPU="${target_cpu}"
1582GRUB_PLATFORM="${platform}"
1583
1584AC_SUBST(GRUB_TARGET_CPU)
1585AC_SUBST(GRUB_PLATFORM)
1586
1587AC_SUBST(TARGET_OBJCONV)
1588AC_SUBST(TARGET_LIBGCC)
1589AC_SUBST(TARGET_LDFLAGS_STATIC_LIBGCC)
1590AC_SUBST(TARGET_CPP)
1591AC_SUBST(TARGET_CCAS)
1592AC_SUBST(TARGET_OBJ2ELF)
d5524ca8
VS
1593AC_SUBST(TARGET_MODULE_FORMAT)
1594
1595AC_SUBST(TARGET_CFLAGS)
1596AC_SUBST(TARGET_LDFLAGS)
1597AC_SUBST(TARGET_CPPFLAGS)
1598AC_SUBST(TARGET_CCASFLAGS)
1599
d5524ca8
VS
1600AC_SUBST(TARGET_IMG_LDFLAGS)
1601AC_SUBST(TARGET_IMG_CFLAGS)
1602AC_SUBST(TARGET_IMG_BASE_LDOPT)
a9f25a08 1603AC_SUBST(TARGET_APPLE_LINKER)
d5524ca8
VS
1604
1605AC_SUBST(HOST_CFLAGS)
1606AC_SUBST(HOST_LDFLAGS)
1607AC_SUBST(HOST_CPPFLAGS)
1608AC_SUBST(HOST_CCASFLAGS)
1609
1610AC_SUBST(BUILD_LIBM)
1611
76ed06b9
BC
1612#
1613# Automake conditionals
1614#
8c411768 1615
76ed06b9 1616AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
d59849b2 1617AM_CONDITIONAL([COND_clang], [test x$grub_cv_cc_target_clang = xyes])
76ed06b9
BC
1618AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
1619AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
6585de4c 1620AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi])
76ed06b9
BC
1621AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
1622AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
1623AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
1624AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
1625AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
9612ebc0
VS
1626AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
1627AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
4959e111
VS
1628AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
1629AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
7f63a64f 1630AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
76ed06b9 1631AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
eaf01c25 1632AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
76ed06b9 1633AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
4959e111 1634AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
37ba07eb
VS
1635AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
1636AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
389b31cd
LL
1637AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
1638AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
1639AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
15a463d7
LL
1640AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
1641AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
f7711f5e 1642
f7711f5e 1643AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
2d465fb0 1644
76ed06b9
BC
1645AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
1646AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
1647AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
1648AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
1649AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
897e6207 1650AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
76ed06b9 1651AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
6f07c4e4
VS
1652if test x$FONT_SOURCE != x ; then
1653 HAVE_FONT_SOURCE=1
1654else
1655 HAVE_FONT_SOURCE=0
1656fi
1657AC_SUBST(HAVE_FONT_SOURCE)
a9f25a08 1658AM_CONDITIONAL([COND_APPLE_LINKER], [test x$TARGET_APPLE_LINKER = x1])
76ed06b9 1659AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
c5dc1690 1660AM_CONDITIONAL([COND_ENABLE_CACHE_STATS], [test x$DISK_CACHE_STATS = x1])
e744219b 1661AM_CONDITIONAL([COND_ENABLE_BOOT_TIME_STATS], [test x$BOOT_TIME_STATS = x1])
fc45fb58 1662
1eed0e6e
VS
1663AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
1664
742f9232 1665AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
c5884973 1666AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
cd46aa6c
VS
1667AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
1668
1669test "x$prefix" = xNONE && prefix="$ac_default_prefix"
1670test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
1671datarootdir="$(eval echo "$datarootdir")"
1672grub_libdir="$(eval echo "$libdir")"
1673grub_localedir="$(eval echo "$localedir")"
1674grub_datadir="$(eval echo "$datadir")"
1675grub_sysconfdir="$(eval echo "$sysconfdir")"
1676AC_DEFINE_UNQUOTED(LOCALEDIR, "$grub_localedir", [Locale dir])
1677AC_DEFINE_UNQUOTED(GRUB_LIBDIR, "$grub_libdir", [Library dir])
1678AC_DEFINE_UNQUOTED(GRUB_DATADIR, "$grub_datadir", [Data dir])
1679AC_DEFINE_UNQUOTED(GRUB_SYSCONFDIR, "$grub_sysconfdir", [Configuration dir])
1680
742f9232 1681
6a161fa9 1682# Output files.
4959e111
VS
1683cpudir="${target_cpu}"
1684if test x${cpudir} = xmipsel; then
1685 cpudir=mips;
1686fi
1f4147aa 1687grub_CHECK_LINK_DIR
1688if test x"$link_dir" = xyes ; then
4959e111 1689 AC_CONFIG_LINKS([include/grub/cpu:include/grub/$cpudir])
f84b481b 1690 if test "$platform" != emu ; then
4959e111 1691 AC_CONFIG_LINKS([include/grub/machine:include/grub/$cpudir/$platform])
f84b481b 1692 fi
1f4147aa 1693else
1694 mkdir -p include/grub 2>/dev/null
1695 rm -rf include/grub/cpu
4959e111 1696 cp -rp $srcdir/include/grub/$cpudir include/grub/cpu 2>/dev/null
f84b481b
RM
1697 if test "$platform" != emu ; then
1698 rm -rf include/grub/machine
4959e111 1699 cp -rp $srcdir/include/grub/$cpudir/$platform include/grub/machine 2>/dev/null
f84b481b 1700 fi
1f4147aa 1701fi
6304d292 1702
8c411768 1703AC_CONFIG_FILES([Makefile])
6304d292 1704AC_CONFIG_FILES([grub-core/Makefile])
15c69261 1705AC_CONFIG_FILES([grub-core/gnulib/Makefile])
269004c1 1706AC_CONFIG_FILES([po/Makefile.in])
8c411768 1707AC_CONFIG_FILES([docs/Makefile])
b23ffd70 1708AC_CONFIG_FILES([util/bash-completion.d/Makefile])
6a161fa9 1709AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
742f9232 1710AC_CONFIG_FILES([config.h])
8c411768 1711
6a161fa9 1712AC_OUTPUT
5ce5507f 1713[
1714echo "*******************************************************"
1715echo GRUB2 will be compiled with following components:
1716echo Platform: "$target_cpu"-"$platform"
f84b481b 1717if [ x"$platform" = xemu ]; then
5ce5507f 1718if [ x"$grub_emu_usb_excuse" = x ]; then
1719echo USB support for grub-emu: Yes
1720else
1721echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
1722fi
927d0134
VS
1723if [ x"$grub_emu_sdl_excuse" = x ]; then
1724echo SDL support for grub-emu: Yes
1725else
1726echo SDL support for grub-emu: No "($grub_emu_sdl_excuse)"
1727fi
325c8258 1728if [ x"$grub_emu_pci_excuse" = x ]; then
1729echo PCI support for grub-emu: Yes
1730else
1731echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
1732fi
f84b481b 1733fi
61d720e5
VS
1734if test x"$device_mapper_excuse" = x ; then
1735echo With devmapper support: Yes
1736else
1737echo With devmapper support: No "($device_mapper_excuse)"
1738fi
5ce5507f 1739if [ x"$enable_mm_debug" = xyes ]; then
1740echo With memory debugging: Yes
1741else
1742echo With memory debugging: No
1743fi
c5dc1690
SJ
1744if [ x"$enable_cache_stats" = xyes ]; then
1745echo With disk cache statistics: Yes
1746else
1747echo With disk cache statistics: No
1748fi
e744219b
VS
1749
1750if [ x"$enable_boot_time" = xyes ]; then
1751echo With boot time statistics: Yes
1752else
1753echo With boot time statistics: No
1754fi
1755
5ce5507f 1756if [ x"$efiemu_excuse" = x ]; then
1757echo efiemu runtime: Yes
1758else
1759echo efiemu runtime: No "($efiemu_excuse)"
1760fi
5ce5507f 1761if [ x"$grub_mkfont_excuse" = x ]; then
1762echo grub-mkfont: Yes
1763else
1764echo grub-mkfont: No "($grub_mkfont_excuse)"
1765fi
897e6207 1766if [ x"$grub_mount_excuse" = x ]; then
89644ef1 1767echo grub-mount: Yes
92bb0786 1768else
897e6207 1769echo grub-mount: No "($grub_mount_excuse)"
92bb0786 1770fi
c5884973
DO
1771if [ x"$starfield_excuse" = x ]; then
1772echo starfield theme: Yes
1773else
1774echo starfield theme: No "($starfield_excuse)"
1775fi
e4c498a1
MG
1776if [ x"$libzfs_excuse" = x ]; then
1777echo With libzfs support: Yes
1778else
1779echo With libzfs support: No "($libzfs_excuse)"
1780fi
7b780018 1781if [ x"$grub_build_mkfont_excuse" = x ]; then
7c9d0c39
VS
1782 echo Build-time grub-mkfont: Yes
1783 if test "x$FONT_SOURCE" = x ; then
1784 echo "Without unifont"
1785 else
1786 echo "With unifont from $FONT_SOURCE"
1787 fi
4b80e43c 1788else
7b780018 1789 echo Build-time grub-mkfont: No "($grub_build_mkfont_excuse)"
7c9d0c39 1790 echo "Without unifont (no build-time grub-mkfont)"
4b80e43c 1791fi
0d2d30bb
VS
1792if test x"$liblzma_excuse" != x ; then
1793echo "Without liblzma (no support for XZ-compressed mips images) ($liblzma_excuse)"
64fce2d8
VS
1794else
1795echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
1796fi
5ce5507f 1797echo "*******************************************************"
1798]