2009-11-21 Samuel Thibault <samuel.thibault@ens-lyon.org>
[grub2.git] / configure.ac
blob0953e0410475cfbd1d85b3e86a55c7b49e4df950
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
12 # PARTICULAR PURPOSE.
14 dnl This configure script is complicated, because GRUB needs to deal
15 dnl with three potentially different types:
16 dnl
17 dnl   build  -- the environment for building GRUB
18 dnl   host   -- the environment for running utilities
19 dnl   target -- the environment for running GRUB
20 dnl
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.
25 dnl
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
31 dnl type.
34 AC_INIT([GRUB],[1.97],[bug-grub@gnu.org])
35 AC_PREREQ(2.59d)
36 AC_CONFIG_SRCDIR([include/grub/dl.h])
37 AC_CONFIG_HEADER([config.h])
39 # Checks for host and target systems.
40 AC_CANONICAL_HOST
41 AC_CANONICAL_TARGET
43 # Program name transformations
44 AC_ARG_PROGRAM
46 case "$target_cpu" in
47   i[[3456]]86)  target_cpu=i386 ;;
48   sparc)        target_cpu=sparc64 ;;
49 esac
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"]) ;;
67   esac
68 else
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
75     x86_64-efi) ;;
76     x86_64-*) target_cpu=i386 ;;
77     powerpc64-ieee1275) target_cpu=powerpc ;;
78   esac
81 # Check if the platform is supported, make final adjustments.
82 case "$target_cpu"-"$platform" in
83   i386-efi) ;;
84   x86_64-efi) ;;
85   i386-pc) ;;
86   i386-coreboot) ;;
87   i386-linuxbios) platform=coreboot ;;
88   i386-ieee1275) ;;
89   i386-qemu) ;;
90   powerpc-ieee1275) ;;
91   sparc64-ieee1275) ;;
92   *) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
93 esac
95 case "$target_cpu" in
96   i386 | powerpc) target_m32=1 ;;
97   x86_64 | sparc64) target_m64=1 ;;
98 esac
100 case "$host_os" in
101   mingw32) host_os=cygwin ;;
102 esac
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).
107 case "$host_os" in
108   gnu*)                         host_kernel=hurd ;;
109   linux*)                       host_kernel=linux ;;
110   freebsd* | kfreebsd*-gnu)     host_kernel=kfreebsd ;;
111   cygwin)                       host_kernel=windows ;;
112 esac
114 AC_SUBST(host_cpu)
115 AC_SUBST(host_os)
116 AC_SUBST(host_kernel)
118 AC_SUBST(target_cpu)
119 AC_SUBST(platform)
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])
140     break
141   fi
142 done
144 AC_PROG_INSTALL
145 AC_PROG_AWK
146 AC_PROG_MAKE_SET
147 AC_PROG_MKDIR_P
149 # These are not a "must".
150 AC_PATH_PROG(RUBY, ruby)
151 AC_PATH_PROG(MAKEINFO, makeinfo)
154 # Checks for host programs.
157 AC_PROG_CC
158 # Must be GCC.
159 test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
161 AC_GNU_SOURCE
162 AC_SYS_LARGEFILE
164 # Identify characteristics of the host architecture.
165 AC_C_BIGENDIAN
166 AC_CHECK_SIZEOF(void *)
167 AC_CHECK_SIZEOF(long)
169 grub_apple_cc
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])
177 else
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"
200 else
201   if test "x$TARGET_CC" = x; then
202     TARGET_CC=$CC
203   fi
204   AC_CHECK_TOOL(OBJCOPY, objcopy)
205   AC_CHECK_TOOL(STRIP, strip)
206   AC_CHECK_TOOL(NM, nm)
208 AC_SUBST(TARGET_CC)
211 # Test the C compiler for the target environment.
212 tmp_CC="$CC"
213 tmp_CFLAGS="$CFLAGS"
214 tmp_LDFLAGS="$LDFLAGS"
215 tmp_CPPFLAGS="$CPPFLAGS"
216 tmp_LIBS="$LIBS"
217 CC="$TARGET_CC"
218 CFLAGS="$TARGET_CFLAGS"
219 CPPFLAGS="$TARGET_CPPFLAGS"
220 LDFLAGS="$TARGET_LDFLAGS"
221 LIBS=""
223 if test "x$TARGET_CFLAGS" = x; then
224   # debug flags.
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, [
230     CFLAGS=-Os
231     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
232                       [grub_cv_cc_Os=yes],
233                       [grub_cv_cc_Os=no])
234   ])
235   if test "x$grub_cv_cc_Os" = xyes; then
236     TARGET_CFLAGS="$TARGET_CFLAGS -Os"
237   else
238     TARGET_CFLAGS="$TARGET_CFLAGS -O2 -fno-strength-reduce -fno-unroll-loops"
239   fi
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])
248     ])
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"
252     else
253       TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
254     fi
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"
259   fi
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
264   # behaviour.
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"
272   ])
274   if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
275     TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
276   fi
279 grub_apple_target_cc
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"
284   TARGET_APPLE_CC=1
285   AC_CHECK_PROG([OBJCONV], [objconv], [objconv], [])
286   if test "x$OBJCONV" = x ; then
287      AC_CHECK_PROG([OBJCONV], [objconv], [./objconv], [], [.])
288   fi
289   if test "x$OBJCONV" = x ; then
290     AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
291   fi
292   TARGET_IMG_LDSCRIPT=
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,'
296 else
297   TARGET_APPLE_CC=0
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"
303 else
304   TARGET_IMG_LDSCRIPT=
305   TARGET_IMG_LDFLAGS='-Wl,-N  -Wl,-Ttext,'
306   TARGET_IMG_LDFLAGS_AC='-Wl,-N  -Wl,-Ttext,'
308 TARGET_IMG_CFLAGS=
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])
317 case "${host_os}" in
318   cygwin) TARGET_OBJ2ELF='grub-pe2elf' ;;
319   *) ;;
320 esac
321 AC_SUBST(TARGET_OBJ2ELF)
322 AC_MSG_RESULT([$TARGET_OBJ2ELF])
325 if test "x$target_m32" = x1; then
326   # Force 32-bit mode.
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
333   # Force 64-bit mode.
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, [
342     SAVED_CFLAGS=$CFLAGS
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])
347   ])
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])
352   else
353     TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
354   fi
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])
362   ])
363   if test "x$grub_cv_cc_no_red_zone" = xno; then
364     AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
365   fi
367   TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
371 # Compiler features.
374 # Need __enable_execute_stack() for nested function trampolines?
375 grub_CHECK_ENABLE_EXECUTE_STACK
377 # Position independent executable.
378 grub_CHECK_PIE
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)
408 AC_SUBST(OBJCONV)
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.
418 CC="$TARGET_CC"
419 if test "x$TARGET_APPLE_CC" = x1 ; then
420 CFLAGS="$TARGET_CFLAGS -nostdlib"
421 else
422 CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100"
424 CPPFLAGS="$TARGET_CPPFLAGS"
425 LDFLAGS="$TARGET_LDFLAGS"
427 # Defined in aclocal.m4.
428 grub_PROG_TARGET_CC
429 if test "x$TARGET_APPLE_CC" != x1 ; then
430 grub_PROG_OBJCOPY_ABSOLUTE
432 grub_PROG_LD_BUILD_ID_NONE
433 grub_ASM_USCORE
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"
438   fi
439   if test "x$TARGET_APPLE_CC" != x1 ; then
440     grub_CHECK_BSS_START_SYMBOL
441     grub_CHECK_END_SYMBOL
442   fi
443   CFLAGS="$TARGET_CFLAGS"
444   grub_I386_ASM_PREFIX_REQUIREMENT
445   grub_I386_ASM_ADDR32
446   grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK
447 else
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)))
453 #else
454 #define NESTED_FUNC_ATTR
455 #endif])
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])
469   ])
470   if test x$grub_cv_cc_efiemu = xno; then
471      efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
472   fi
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
478 enable_efiemu=yes
479 else
480 enable_efiemu=no
482 AC_SUBST([enable_efiemu])
485 # Restore the flags.
486 CC="$tmp_CC"
487 CFLAGS="$tmp_CFLAGS"
488 CPPFLAGS="$tmp_CPPFLAGS"
489 LDFLAGS="$tmp_LDFLAGS"
490 LIBS="$tmp_LIBS"
493 # Check for options.
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])
519 [fi]
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"]])])])
526 [fi]
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
532 enable_grub_emu=yes
533 else
534 enable_grub_emu=no
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"]])
544     AC_SUBST([LIBUSB])
545 [fi]
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"]])
550 [fi]
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
556 else
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
571 else
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"]
588   fi
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
597 else
598 enable_grub_mkfont=no
600 AC_SUBST([enable_grub_mkfont])
601 AC_SUBST([freetype_cflags])
602 AC_SUBST([freetype_libs])
604 AC_SUBST(ASFLAGS)
606 # Output files.
607 grub_CHECK_LINK_DIR
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])
611 else
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])
620 AC_OUTPUT
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
626 echo grub-emu: Yes
627 else
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
632 else
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
637 else
638 echo With memory debugging: No
640 if [ x"$efiemu_excuse" = x ]; then
641 echo efiemu runtime: Yes
642 else
643 echo efiemu runtime: No "($efiemu_excuse)"
645 if [ x"$grub_fstest_excuse" = x ]; then
646 echo grub-fstest: Yes
647 else
648 echo grub-fstest: No "($grub_fstest_excuse)"
650 if [ x"$grub_mkfont_excuse" = x ]; then
651 echo grub-mkfont: Yes
652 else
653 echo grub-mkfont: No "($grub_mkfont_excuse)"
655 echo "*******************************************************"