1 # Process this file with autoconf to produce a configure script.
3 # Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc.
5 # This configure.ac is free software; the author
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14 dnl This configure script is complicated, because GRUB needs to deal
15 dnl with three potentially different types:
17 dnl build -- the environment for building GRUB
18 dnl host -- the environment for running utilities
19 dnl target -- the environment for running GRUB
21 dnl In addition, GRUB needs to deal with a platform specification
22 dnl which specifies the system running GRUB, such as firmware.
23 dnl This is necessary because the target type in autoconf does not
24 dnl describe such a system very well.
26 dnl The current strategy is to use variables with no prefix (such as
27 dnl CC, CFLAGS, etc.) for the host type as well as the build type,
28 dnl because GRUB does not need to use those variables for the build
29 dnl type, so there is no conflict. Variables with the prefix "TARGET_"
30 dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
34 AC_INIT([GRUB],[1.97],[bug-grub@gnu.org])
36 AC_CONFIG_SRCDIR([include/grub/dl.h])
37 AC_CONFIG_HEADER([config.h])
39 # Checks for host and target systems.
43 # Program name transformations
47 i[[3456]]86) target_cpu=i386 ;;
48 sparc) target_cpu=sparc64 ;;
51 # Specify the platform (such as firmware).
52 AC_ARG_WITH([platform],
53 AS_HELP_STRING([--with-platform=PLATFORM],
54 [select the host platform [[guessed]]]))
56 # Guess the platform if not specified.
57 if test "x$with_platform" = x; then
58 case "$target_cpu"-"$target_vendor" in
59 i386-apple) platform=efi ;;
60 i386-*) platform=pc ;;
61 x86_64-apple) platform=efi ;;
62 x86_64-*) platform=pc ;;
63 powerpc-*) platform=ieee1275 ;;
64 powerpc64-*) platform=ieee1275 ;;
65 sparc64-*) platform=ieee1275 ;;
66 *) AC_MSG_ERROR([unsupported CPU: "$target_cpu"]) ;;
69 platform="$with_platform"
72 # Adjust CPU unless target was explicitly specified.
73 if test -z "$target_alias"; then
74 case "$target_cpu"-"$platform" in
76 x86_64-*) target_cpu=i386 ;;
77 powerpc64-ieee1275) target_cpu=powerpc ;;
81 # Check if the platform is supported, make final adjustments.
82 case "$target_cpu"-"$platform" in
87 i386-linuxbios) platform=coreboot ;;
92 *) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
96 i386 | powerpc) target_m32=1 ;;
97 x86_64 | sparc64) target_m64=1 ;;
101 mingw32) host_os=cygwin ;;
104 # This normalizes the names, and creates a new variable ("host_kernel")
105 # while at it, since the mapping is not always 1:1 (e.g. different OSes
106 # using the same kernel type).
108 gnu*) host_kernel=hurd ;;
109 linux*) host_kernel=linux ;;
110 freebsd* | kfreebsd*-gnu) host_kernel=kfreebsd ;;
111 cygwin) host_kernel=windows ;;
116 AC_SUBST(host_kernel)
122 # Checks for build programs.
125 # Although cmp is listed in the GNU Coding Standards as a command which
126 # can used directly, OpenBSD lacks cmp in the default installation.
127 AC_CHECK_PROGS([CMP], [cmp])
128 if test "x$CMP" = x; then
129 AC_MSG_ERROR([cmp is not found])
132 AC_CHECK_PROGS([YACC], [bison])
133 if test "x$YACC" = x; then
134 AC_MSG_ERROR([bison is not found])
137 for file in /usr/src/unifont.bdf ; do
138 if test -e $file ; then
139 AC_SUBST([UNIFONT_BDF], [$file])
149 # These are not a "must".
150 AC_PATH_PROG(RUBY, ruby)
151 AC_PATH_PROG(MAKEINFO, makeinfo)
154 # Checks for host programs.
159 test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
164 # Identify characteristics of the host architecture.
166 AC_CHECK_SIZEOF(void *)
167 AC_CHECK_SIZEOF(long)
170 if test x$grub_cv_apple_cc = xyes ; then
171 CFLAGS="$CFLAGS -DAPPLE_CC=1 -fnested-functions"
172 ASFLAGS="$ASFLAGS -DAPPLE_CC=1"
175 if test "x$cross_compiling" = xyes; then
176 AC_MSG_WARN([cannot generate manual pages while cross compiling])
178 AC_PATH_PROG(HELP2MAN, help2man)
181 # Check for functions.
182 AC_CHECK_FUNCS(posix_memalign memalign asprintf)
185 # Check for target programs.
188 # Find tools for the target.
189 if test "x$target_alias" != x && test "x$host_alias" != "x$target_alias"; then
190 tmp_ac_tool_prefix="$ac_tool_prefix"
191 ac_tool_prefix=$target_alias-
193 AC_CHECK_TOOLS(TARGET_CC, [gcc egcs cc],
194 [AC_MSG_ERROR([none of gcc, egcs and cc is found. set TARGET_CC manually.])])
195 AC_CHECK_TOOL(OBJCOPY, objcopy)
196 AC_CHECK_TOOL(STRIP, strip)
197 AC_CHECK_TOOL(NM, nm)
199 ac_tool_prefix="$tmp_ac_tool_prefix"
201 if test "x$TARGET_CC" = x; then
204 AC_CHECK_TOOL(OBJCOPY, objcopy)
205 AC_CHECK_TOOL(STRIP, strip)
206 AC_CHECK_TOOL(NM, nm)
211 # Test the C compiler for the target environment.
214 tmp_LDFLAGS="$LDFLAGS"
215 tmp_CPPFLAGS="$CPPFLAGS"
218 CFLAGS="$TARGET_CFLAGS"
219 CPPFLAGS="$TARGET_CPPFLAGS"
220 LDFLAGS="$TARGET_LDFLAGS"
223 if test "x$TARGET_CFLAGS" = x; then
225 TARGET_CFLAGS="-Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes \
226 -Wundef -Wstrict-prototypes -g"
228 # optimization flags.
229 AC_CACHE_CHECK([whether optimization for size works], grub_cv_cc_Os, [
231 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
235 if test "x$grub_cv_cc_Os" = xyes; then
236 TARGET_CFLAGS="$TARGET_CFLAGS -Os"
238 TARGET_CFLAGS="$TARGET_CFLAGS -O2 -fno-strength-reduce -fno-unroll-loops"
241 # Force no alignment to save space on i386.
242 if test "x$target_cpu" = xi386; then
243 AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
244 CFLAGS="$CFLAGS -falign-loops=1"
245 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
246 [grub_cv_cc_falign_loop=yes],
247 [grub_cv_cc_falign_loop=no])
250 if test "x$grub_cv_cc_falign_loop" = xyes; then
251 TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
253 TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
256 # Some toolchains enable these features by default, but they need
257 # registers that aren't set up properly in GRUB.
258 TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-3dnow"
261 # By default, GCC 4.4 generates .eh_frame sections containing unwind
262 # information in some cases where it previously did not. GRUB doesn't need
263 # these and they just use up vital space. Restore the old compiler
265 AC_CACHE_CHECK([whether -fno-dwarf2-cfi-asm works], [grub_cv_cc_fno_dwarf2_cfi_asm], [
266 SAVE_CFLAGS="$CFLAGS"
267 CFLAGS="$CFLAGS -fno-dwarf2-cfi-asm"
268 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
269 [grub_cv_cc_fno_dwarf2_cfi_asm=yes],
270 [grub_cv_cc_fno_dwarf2_cfi_asm=no])
271 CFLAGS="$SAVE_CFLAGS"
274 if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
275 TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
280 if test x$grub_cv_apple_target_cc = xyes ; then
281 TARGET_CFLAGS="$TARGET_CFLAGS -DAPPLE_CC=1 -fnested-functions"
282 CFLAGS="$CFLAGS -DAPPLE_CC=1 -fnested-functions"
283 TARGET_ASFLAGS="$TARGET_ASFLAGS -DAPPLE_CC=1"
285 AC_CHECK_PROG([OBJCONV], [objconv], [objconv], [])
286 if test "x$OBJCONV" = x ; then
287 AC_CHECK_PROG([OBJCONV], [objconv], [./objconv], [], [.])
289 if test "x$OBJCONV" = x ; then
290 AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
293 TARGET_IMG_CFLAGS="-static"
294 TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20 -Wl,-image_base,'
295 TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20 -Wl,-image_base,'
298 # Use linker script if present, otherwise use builtin -N script.
299 if test -f "${srcdir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"; then
300 TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"
301 TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT} -Wl,-Ttext,"
302 TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"
305 TARGET_IMG_LDFLAGS='-Wl,-N -Wl,-Ttext,'
306 TARGET_IMG_LDFLAGS_AC='-Wl,-N -Wl,-Ttext,'
311 AC_SUBST(TARGET_IMG_LDSCRIPT)
312 AC_SUBST(TARGET_IMG_LDFLAGS)
313 AC_SUBST(TARGET_IMG_CFLAGS)
315 # For platforms where ELF is not the default link format.
316 AC_MSG_CHECKING([for command to convert module to ELF format])
318 cygwin) TARGET_OBJ2ELF='grub-pe2elf' ;;
321 AC_SUBST(TARGET_OBJ2ELF)
322 AC_MSG_RESULT([$TARGET_OBJ2ELF])
325 if test "x$target_m32" = x1; then
327 TARGET_CFLAGS="$TARGET_CFLAGS -m32"
328 TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
329 TARGET_MODULE_FORMAT="elf32"
332 if test "x$target_m64" = x1; then
334 TARGET_CFLAGS="$TARGET_CFLAGS -m64"
335 TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
336 TARGET_MODULE_FORMAT="elf64"
339 if test "$target_cpu"-"$platform" = x86_64-efi; then
340 # Use large model to support 4G memory
341 AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
343 CFLAGS="$CFLAGS -m64 -mcmodel=large"
344 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
345 [grub_cv_cc_mcmodel=yes],
346 [grub_cv_cc_mcmodel=no])
348 if test "x$grub_cv_cc_mcmodel" = xno; then
349 CFLAGS="$SAVED_CFLAGS -m64 -DMCMODEL_SMALL=1"
350 TARGET_CFLAGS="$TARGET_CFLAGS -DMCMODEL_SMALL=1"
351 AC_MSG_WARN([-mcmodel=large not supported. You won't be able to use the memory over 4GiB. Upgrade your gcc])
353 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
356 # EFI writes to stack below %rsp, we must not use the red zone
357 AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
358 CFLAGS="$CFLAGS -m64 -mno-red-zone"
359 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
360 [grub_cv_cc_no_red_zone=yes],
361 [grub_cv_cc_no_red_zone=no])
363 if test "x$grub_cv_cc_no_red_zone" = xno; then
364 AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
367 TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
374 # Need __enable_execute_stack() for nested function trampolines?
375 grub_CHECK_ENABLE_EXECUTE_STACK
377 # Position independent executable.
379 [# Need that, because some distributions ship compilers that include
380 # `-fPIE' in the default specs.
381 if [ x"$pie_possible" = xyes ]; then
382 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
385 # Smashing stack protector.
386 grub_CHECK_STACK_PROTECTOR
387 # Need that, because some distributions ship compilers that include
388 # `-fstack-protector' in the default specs.
389 if test "x$ssp_possible" = xyes; then
390 TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
392 grub_CHECK_STACK_ARG_PROBE
393 # Cygwin's GCC uses alloca() to probe the stackframe on static
394 # stack allocations above some threshold.
395 if test x"$sap_possible" = xyes; then
396 TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
399 AC_ARG_ENABLE([werror],
400 [AS_HELP_STRING([--disable-werror],
401 [do not use -Werror when building GRUB])])
402 if test x"$enable_werror" != xno ; then
403 TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
406 AC_SUBST(TARGET_CFLAGS)
407 AC_SUBST(TARGET_MODULE_FORMAT)
409 AC_SUBST(TARGET_APPLE_CC)
410 AC_SUBST(TARGET_ASFLAGS)
411 AC_SUBST(TARGET_CPPFLAGS)
412 AC_SUBST(TARGET_LDFLAGS)
414 # Check for libgcc symbols (must be performed before we add -nostdlib to LDFLAGS)
415 AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __trampoline_setup __ucmpdi2)
417 # Set them to their new values for the tests below.
419 if test "x$TARGET_APPLE_CC" = x1 ; then
420 CFLAGS="$TARGET_CFLAGS -nostdlib"
422 CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100"
424 CPPFLAGS="$TARGET_CPPFLAGS"
425 LDFLAGS="$TARGET_LDFLAGS"
427 # Defined in aclocal.m4.
429 if test "x$TARGET_APPLE_CC" != x1 ; then
430 grub_PROG_OBJCOPY_ABSOLUTE
432 grub_PROG_LD_BUILD_ID_NONE
434 if test "x$target_cpu" = xi386; then
435 if test ! -z "$TARGET_IMG_LDSCRIPT"; then
436 # Check symbols provided by linker script.
437 CFLAGS="$TARGET_CFLAGS -nostdlib $TARGET_IMG_LDFLAGS_AC -Wl,-Ttext,8000,--defsym,___main=0x8100"
439 if test "x$TARGET_APPLE_CC" != x1 ; then
440 grub_CHECK_BSS_START_SYMBOL
441 grub_CHECK_END_SYMBOL
443 CFLAGS="$TARGET_CFLAGS"
444 grub_I386_ASM_PREFIX_REQUIREMENT
446 grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK
448 AC_DEFINE([NESTED_FUNC_ATTR], [], [Catch gcc bug])
451 AH_BOTTOM([#if defined(__i386__) && !defined(GRUB_UTIL)
452 #define NESTED_FUNC_ATTR __attribute__ ((__regparm__ (1)))
454 #define NESTED_FUNC_ATTR
457 AC_ARG_ENABLE([efiemu],
458 [AS_HELP_STRING([--enable-efiemu],
459 [build and install the efiemu runtimes (default=guessed)])])
460 if test x"$enable_efiemu" = xno ; then
461 efiemu_excuse="explicitly disabled"
463 if test x"$efiemu_excuse" = x ; then
464 AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
465 CFLAGS="$CFLAGS -m64 -mcmodel=large -mno-red-zone -nostdlib"
466 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
467 [grub_cv_cc_efiemu=yes],
468 [grub_cv_cc_efiemu=no])
470 if test x$grub_cv_cc_efiemu = xno; then
471 efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
474 if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
475 AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled])
477 if test x"$efiemu_excuse" = x ; then
482 AC_SUBST([enable_efiemu])
488 CPPFLAGS="$tmp_CPPFLAGS"
489 LDFLAGS="$tmp_LDFLAGS"
496 # Memory manager debugging.
497 AC_ARG_ENABLE([mm-debug],
498 AS_HELP_STRING([--enable-mm-debug],
499 [include memory manager debugging]),
500 [AC_DEFINE([MM_DEBUG], [1],
501 [Define to 1 if you enable memory manager debugging.])])
503 AC_ARG_ENABLE([grub-emu],
504 [AS_HELP_STRING([--enable-grub-emu],
505 [build and install the `grub-emu' debugging utility (default=guessed)])])
506 AC_ARG_ENABLE([grub-emu-usb],
507 [AS_HELP_STRING([--enable-grub-emu-usb],
508 [build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
509 if test x"$enable_grub_emu" = xno ; then
510 grub_emu_excuse="explicitly disabled"
513 [# Check for curses libraries.]
514 [if [ x"$grub_emu_excuse" = x ]; then ]
515 AC_CHECK_LIB([ncurses], [wgetch], [LIBCURSES="-lncurses"],
516 [AC_CHECK_LIB([curses], [wgetch], [LIBCURSES="-lcurses"],
517 [grub_emu_excuse=["need (n)curses libraries"]])])
518 AC_SUBST([LIBCURSES])
520 [if [ x"$grub_emu_excuse" = x ]; then ]
521 [# Check for headers.]
522 AC_CHECK_HEADERS([ncurses/curses.h], [],
523 [AC_CHECK_HEADERS([ncurses.h], [],
524 [AC_CHECK_HEADERS([curses.h], [],
525 [grub_emu_excuse=["need (n)curses headers"]])])])
528 if test x"$enable_grub_emu" = xyes && test x"$grub_emu_excuse" != x ; then
529 AC_MSG_ERROR([grub-emu was explicitly requested but can't be compiled])
531 if test x"$grub_emu_excuse" = x ; then
535 grub_emu_usb_excuse="grub-emu isn't built"
537 if test x"$enable_grub_emu_usb" = xno ; then
538 grub_emu_usb_excuse="explicitly disabled"
540 [if [ x"$grub_emu_usb_excuse" = x ]; then
541 # Check for libusb libraries.]
542 AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
543 [grub_emu_usb_excuse=["need libusb library"]])
546 [if [ x"$grub_emu_usb_excuse" = x ]; then
547 # Check for headers.]
548 AC_CHECK_HEADERS([usb.h], [],
549 [grub_emu_usb_excuse=["need libusb headers"]])
551 if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
552 AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled])
554 if test x"$grub_emu_usb_excuse" = x ; then
555 enable_grub_emu_usb=yes
557 enable_grub_emu_usb=no
560 AC_SUBST([enable_grub_emu])
561 AC_SUBST([enable_grub_emu_usb])
563 AC_ARG_ENABLE([grub-fstest],
564 [AS_HELP_STRING([--enable-grub-fstest],
565 [build and install the `grub-fstest' debugging utility (default=guessed)])])
566 if test x"$enable_grub_fstest" = xno ; then
567 grub_fstest_excuse="explicitly disabled"
569 if test x"$grub_fstest_excuse" = x ; then
570 enable_grub_fstest=yes
572 enable_grub_fstest=no
574 AC_SUBST([enable_grub_fstest])
576 AC_ARG_ENABLE([grub-mkfont],
577 [AS_HELP_STRING([--enable-grub-mkfont],
578 [build and install the `grub-mkfont' utility (default=guessed)])])
579 if test x"$enable_grub_mkfont" = xno ; then
580 grub_mkfont_excuse="explicitly disabled"
583 if test x"$grub_mkfont_excuse" = x ; then
584 # Check for freetype libraries.
585 AC_CHECK_PROGS([FREETYPE], [freetype-config])
586 if test "x$FREETYPE" = x ; then
587 grub_mkfont_excuse=["need freetype2 library"]
589 freetype_cflags=`freetype-config --cflags`
590 freetype_libs=`freetype-config --libs`
592 if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
593 AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled])
595 if test x"$grub_mkfont_excuse" = x ; then
596 enable_grub_mkfont=yes
598 enable_grub_mkfont=no
600 AC_SUBST([enable_grub_mkfont])
601 AC_SUBST([freetype_cflags])
602 AC_SUBST([freetype_libs])
608 if test x"$link_dir" = xyes ; then
609 AC_CONFIG_LINKS([include/grub/cpu:include/grub/$target_cpu
610 include/grub/machine:include/grub/$target_cpu/$platform])
612 mkdir -p include/grub 2>/dev/null
613 rm -rf include/grub/cpu
614 cp -rp $srcdir/include/grub/$target_cpu include/grub/cpu 2>/dev/null
615 rm -rf include/grub/machine
616 cp -rp $srcdir/include/grub/$target_cpu/$platform include/grub/machine 2>/dev/null
618 AC_CONFIG_FILES([Makefile gensymlist.sh genkernsyms.sh])
619 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
622 echo "*******************************************************"
623 echo GRUB2 will be compiled with following components:
624 echo Platform: "$target_cpu"-"$platform"
625 if [ x"$grub_emu_excuse" = x ]; then
628 echo grub-emu: No "($grub_emu_excuse)"
630 if [ x"$grub_emu_usb_excuse" = x ]; then
631 echo USB support for grub-emu: Yes
633 echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
635 if [ x"$enable_mm_debug" = xyes ]; then
636 echo With memory debugging: Yes
638 echo With memory debugging: No
640 if [ x"$efiemu_excuse" = x ]; then
641 echo efiemu runtime: Yes
643 echo efiemu runtime: No "($efiemu_excuse)"
645 if [ x"$grub_fstest_excuse" = x ]; then
646 echo grub-fstest: Yes
648 echo grub-fstest: No "($grub_fstest_excuse)"
650 if [ x"$grub_mkfont_excuse" = x ]; then
651 echo grub-mkfont: Yes
653 echo grub-mkfont: No "($grub_mkfont_excuse)"
655 echo "*******************************************************"