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