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