]> git.proxmox.com Git - grub2.git/blob - configure.ac
merge mainline into net
[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 as well as the build type,
30 dnl because GRUB does not need to use those variables for the build
31 dnl type, so there is no conflict. Variables with the prefix "TARGET_"
32 dnl (such as TARGET_CC, TARGET_CFLAGS, etc.) are used for the target
33 dnl type.
34
35 AC_INIT([GRUB],[1.99],[bug-grub@gnu.org])
36
37 AC_CONFIG_AUX_DIR([build-aux])
38
39 # We don't want -g -O2 by default in CFLAGS
40 : ${CFLAGS=""}
41
42 # Checks for host and target systems.
43 AC_CANONICAL_HOST
44 AC_CANONICAL_TARGET
45
46 AM_INIT_AUTOMAKE()
47 AC_PREREQ(2.60)
48 AC_CONFIG_SRCDIR([include/grub/dl.h])
49 AC_CONFIG_HEADER([config-util.h])
50
51 # Program name transformations
52 AC_ARG_PROGRAM
53
54 # Optimization flag. Allow user to override.
55 if test "x$TARGET_CFLAGS" = x; then
56 TARGET_CFLAGS="$TARGET_CFLAGS -Os"
57 fi
58
59 # Default HOST_CPPFLAGS
60 HOST_CPPFLAGS="$HOST_CPPFLAGS -Wall -W"
61 HOST_CPPFLAGS="$HOST_CPPFLAGS -I\$(top_builddir)/include"
62 HOST_CPPFLAGS="$HOST_CPPFLAGS -DGRUB_UTIL=1"
63 HOST_CPPFLAGS="$HOST_CPPFLAGS -DGRUB_LIBDIR=\\\"\$(pkglibdir)\\\""
64 HOST_CPPFLAGS="$HOST_CPPFLAGS -DLOCALEDIR=\\\"\$(localedir)\\\""
65
66 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -Wall -W"
67 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_srcdir)/include"
68 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -I\$(top_builddir)/include"
69
70 case "$target_cpu" in
71 i[[3456]]86) target_cpu=i386 ;;
72 amd64) target_cpu=x86_64 ;;
73 sparc) target_cpu=sparc64 ;;
74 mipsel|mips64el)
75 target_cpu=mipsel;
76 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPSEL=1";
77 ;;
78 mips|mips64)
79 target_cpu=mips;
80 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_CPU_MIPS=1";
81 ;;
82 esac
83
84 # Specify the platform (such as firmware).
85 AC_ARG_WITH([platform],
86 AS_HELP_STRING([--with-platform=PLATFORM],
87 [select the host platform [[guessed]]]))
88
89 # Guess the platform if not specified.
90 if test "x$with_platform" = x; then
91 case "$target_cpu"-"$target_vendor" in
92 i386-apple) platform=efi ;;
93 i386-*) platform=pc ;;
94 x86_64-apple) platform=efi ;;
95 x86_64-*) platform=pc ;;
96 powerpc-*) platform=ieee1275 ;;
97 powerpc64-*) platform=ieee1275 ;;
98 sparc64-*) platform=ieee1275 ;;
99 mipsel-*) platform=loongson ;;
100 mips-*) platform=arc ;;
101 ia64-*) platform=efi ;;
102 *) AC_MSG_ERROR([unsupported CPU: "$target_cpu"]) ;;
103 esac
104 else
105 platform="$with_platform"
106 fi
107
108 case "$target_cpu"-"$platform" in
109 x86_64-efi) ;;
110 x86_64-emu) ;;
111 x86_64-*) target_cpu=i386 ;;
112 powerpc64-ieee1275) target_cpu=powerpc ;;
113 esac
114
115 # Check if the platform is supported, make final adjustments.
116 case "$target_cpu"-"$platform" in
117 i386-efi) ;;
118 x86_64-efi) ;;
119 i386-pc) ;;
120 i386-multiboot) ;;
121 i386-coreboot) ;;
122 i386-linuxbios) platform=coreboot ;;
123 i386-ieee1275) ;;
124 i386-qemu) ;;
125 powerpc-ieee1275) ;;
126 sparc64-ieee1275) ;;
127 ia64-efi) ;;
128 mips-qemu_mips) ;;
129 mips-qemu-mips) platform=qemu_mips;;
130 mips-arc) ;;
131 mipsel-qemu_mips) ;;
132 mipsel-qemu-mips) platform=qemu_mips;;
133 mipsel-yeeloong) platform=loongson ;;
134 mipsel-fuloong) platform=loongson ;;
135 mipsel-loongson) ;;
136 *-emu) ;;
137 *) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;;
138 esac
139
140 case "$target_cpu" in
141 i386 | powerpc) target_m32=1 ;;
142 x86_64 | sparc64) target_m64=1 ;;
143 esac
144
145 case "$host_os" in
146 mingw32*) host_os=cygwin ;;
147 esac
148
149 # This normalizes the names, and creates a new variable ("host_kernel")
150 # while at it, since the mapping is not always 1:1 (e.g. different OSes
151 # using the same kernel type).
152 case "$host_os" in
153 gnu*) host_kernel=hurd ;;
154 linux*) host_kernel=linux ;;
155 freebsd* | kfreebsd*-gnu) host_kernel=kfreebsd ;;
156 netbsd*) host_kernel=netbsd ;;
157 solaris*) host_kernel=illumos ;;
158 cygwin) host_kernel=windows ;;
159 esac
160
161 case "$platform" in
162 coreboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_COREBOOT=1" ;;
163 multiboot) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MULTIBOOT=1" ;;
164 efi) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EFI=1" ;;
165 ieee1275) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_IEEE1275=1" ;;
166 qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;;
167 pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;;
168 emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
169 loongson) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_LOONGSON=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
170 qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;;
171 arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;;
172 esac
173 case "$target_cpu" in
174 mips |mipsel) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;;
175 sparc64) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_SPARC64=1" ;;
176 esac
177 if test x${target_cpu} = xmipsel ; then
178 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo mips_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
179 else
180 machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE=`echo ${target_cpu}_$platform | sed y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,`"
181 fi
182
183 HOST_CPPFLAGS="$HOST_CPPFLAGS $machine_CPPFLAGS"
184 TARGET_CPPFLAGS="$TARGET_CPPFLAGS $machine_CPPFLAGS"
185
186 AC_SUBST(host_cpu)
187 AC_SUBST(host_os)
188 AC_SUBST(host_kernel)
189
190 AC_SUBST(target_cpu)
191 AC_SUBST(platform)
192
193 # Define default variables
194 case "$host_os" in
195 netbsd* | openbsd*)
196 # Because /boot is used for the boot block in NetBSD and OpenBSD,
197 bootdirname='' ;;
198 *) bootdirname='boot' ;;
199 esac
200 bootdirname=`echo "$bootdirname" | sed "$program_transform_name"`
201 AC_SUBST(bootdirname)
202 AC_DEFINE_UNQUOTED(GRUB_BOOT_DIR_NAME, "$bootdirname",
203 [Default boot directory name]")
204
205 grubdirname=`echo "$PACKAGE" | sed "$program_transform_name"`
206 AC_SUBST(grubdirname)
207 AC_DEFINE_UNQUOTED(GRUB_DIR_NAME, "$grubdirname",
208 [Default grub directory name])
209
210 #
211 # Checks for build programs.
212 #
213
214 # Although cmp is listed in the GNU Coding Standards as a command which
215 # can used directly, OpenBSD lacks cmp in the default installation.
216 AC_CHECK_PROGS([CMP], [cmp])
217 if test "x$CMP" = x; then
218 AC_MSG_ERROR([cmp is not found])
219 fi
220
221 AC_CHECK_PROGS([YACC], [bison])
222 if test "x$YACC" = x; then
223 AC_MSG_ERROR([bison is not found])
224 fi
225
226 FONT_SOURCE=
227
228 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
229 for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont; do
230 if test -f "$dir/unifont.$ext"; then
231 FONT_SOURCE="$dir/unifont.$ext"
232 break 2
233 fi
234 done
235 done
236
237 if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test "x$platform" = xloongson ); then
238 AC_MSG_ERROR([qemu and loongson ports need unifont])
239 fi
240
241 AC_SUBST([FONT_SOURCE])
242
243 AC_PROG_RANLIB
244 AC_PROG_INSTALL
245 AC_PROG_AWK
246 AC_PROG_LEX
247 AC_PROG_YACC
248 AC_PROG_MAKE_SET
249 AC_PROG_MKDIR_P
250 AC_PROG_LN_S
251
252 if test "x$LEX" = "x:"; then
253 AC_MSG_ERROR([flex is not found])
254 else
255 version=`$LEX --version | $AWK '{ split($NF,x,"."); print x[[1]]*10000+x[[2]]*100+x[[3]]; }'`
256 if test -n "$version" -a "$version" -ge 20535; then
257 :
258 else
259 AC_MSG_ERROR([flex is too old. GRUB requires 2.5.35 or above])
260 fi
261 fi
262
263 # These are not a "must".
264 AC_PATH_PROGS(MAKEINFO, makeinfo true)
265
266 #
267 # Checks for host programs.
268 #
269
270 AC_PROG_CC
271 gl_EARLY
272 AM_PROG_CC_C_O
273 AM_PROG_AS
274
275 # Must be GCC.
276 test "x$GCC" = xyes || AC_MSG_ERROR([GCC is required])
277
278 AC_GNU_SOURCE
279 AM_GNU_GETTEXT([external])
280 AC_SYS_LARGEFILE
281
282 # Identify characteristics of the host architecture.
283 AC_C_BIGENDIAN
284 AC_CHECK_SIZEOF(void *)
285 AC_CHECK_SIZEOF(long)
286
287 grub_apple_cc
288 if test x$grub_cv_apple_cc = xyes ; then
289 HOST_CPPFLAGS="$HOST_CPPFLAGS -DAPPLE_CC=1"
290 HOST_CFLAGS="$HOST_CFLAGS -fnested-functions"
291 fi
292
293 if test "x$cross_compiling" = xyes; then
294 AC_MSG_WARN([cannot generate manual pages while cross compiling])
295 else
296 AC_PATH_PROG(HELP2MAN, help2man)
297 fi
298
299 # Check for functions and headers.
300 AC_CHECK_FUNCS(posix_memalign memalign asprintf vasprintf getextmntent)
301 AC_CHECK_HEADERS(libzfs.h libnvpair.h sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h)
302
303 AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
304 #include <sys/param.h>
305 #include <sys/mount.h>])
306
307 AC_CHECK_MEMBERS([struct statfs.f_mntfromname],,,[$ac_includes_default
308 #include <sys/param.h>
309 #include <sys/mount.h>])
310
311 # For opendisk() and getrawpartition() on NetBSD.
312 # Used in util/deviceiter.c and in util/hostdisk.c.
313 AC_CHECK_HEADER([util.h], [
314 AC_CHECK_LIB([util], [opendisk], [
315 LIBUTIL="-lutil"
316 AC_DEFINE(HAVE_OPENDISK, 1, [Define if opendisk() in -lutil can be used])
317 ])
318 AC_CHECK_LIB([util], [getrawpartition], [
319 LIBUTIL="-lutil"
320 AC_DEFINE(HAVE_GETRAWPARTITION, 1, [Define if getrawpartition() in -lutil can be used])
321 ])
322 ])
323 AC_SUBST([LIBUTIL])
324
325 #
326 # Check for host and build compilers.
327 #
328 HOST_CC=$CC
329 AC_CHECK_PROGS(BUILD_CC, [gcc egcs cc],
330 [AC_MSG_ERROR([none of gcc, egcs and cc is found. set BUILD_CC manually.])])
331
332 # For gnulib.
333 gl_INIT
334
335 #
336 # Check for target programs.
337 #
338
339 # Find tools for the target.
340 if test "x$target_alias" != x && test "x$host_alias" != "x$target_alias"; then
341 tmp_ac_tool_prefix="$ac_tool_prefix"
342 ac_tool_prefix=$target_alias-
343
344 AC_CHECK_TOOLS(TARGET_CC, [gcc egcs cc],
345 [AC_MSG_ERROR([none of gcc, egcs and cc is found. set TARGET_CC manually.])])
346 AC_CHECK_TOOL(OBJCOPY, objcopy)
347 AC_CHECK_TOOL(STRIP, strip)
348 AC_CHECK_TOOL(NM, nm)
349
350 ac_tool_prefix="$tmp_ac_tool_prefix"
351 else
352 if test "x$TARGET_CC" = x; then
353 TARGET_CC=$CC
354 fi
355 AC_CHECK_TOOL(OBJCOPY, objcopy)
356 AC_CHECK_TOOL(STRIP, strip)
357 AC_CHECK_TOOL(NM, nm)
358 fi
359 AC_SUBST(HOST_CC)
360 AC_SUBST(BUILD_CC)
361 AC_SUBST(TARGET_CC)
362
363 # Test the C compiler for the target environment.
364 tmp_CC="$CC"
365 tmp_CFLAGS="$CFLAGS"
366 tmp_LDFLAGS="$LDFLAGS"
367 tmp_CPPFLAGS="$CPPFLAGS"
368 tmp_LIBS="$LIBS"
369 CC="$TARGET_CC"
370 CFLAGS="$TARGET_CFLAGS"
371 CPPFLAGS="$TARGET_CPPFLAGS"
372 LDFLAGS="$TARGET_LDFLAGS"
373 LIBS=""
374
375 # debug flags.
376 TARGET_CFLAGS="$TARGET_CFLAGS -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g"
377 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
378
379 # Force no alignment to save space on i386.
380 if test "x$target_cpu" = xi386; then
381 AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
382 CFLAGS="$CFLAGS -falign-loops=1"
383 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
384 [grub_cv_cc_falign_loop=yes],
385 [grub_cv_cc_falign_loop=no])
386 ])
387
388 if test "x$grub_cv_cc_falign_loop" = xyes; then
389 TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
390 else
391 TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
392 fi
393
394 # Some toolchains enable these features by default, but they need
395 # registers that aren't set up properly in GRUB.
396 TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-3dnow"
397 fi
398
399 # By default, GCC 4.4 generates .eh_frame sections containing unwind
400 # information in some cases where it previously did not. GRUB doesn't need
401 # these and they just use up vital space. Restore the old compiler
402 # behaviour.
403 AC_CACHE_CHECK([whether -fno-dwarf2-cfi-asm works], [grub_cv_cc_fno_dwarf2_cfi_asm], [
404 SAVE_CFLAGS="$CFLAGS"
405 CFLAGS="$CFLAGS -fno-dwarf2-cfi-asm"
406 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
407 [grub_cv_cc_fno_dwarf2_cfi_asm=yes],
408 [grub_cv_cc_fno_dwarf2_cfi_asm=no])
409 CFLAGS="$SAVE_CFLAGS"
410 ])
411
412 if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
413 TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
414 fi
415
416 # By default, GCC 4.6 generates .eh_frame sections containing unwind
417 # information in some cases where it previously did not. GRUB doesn't need
418 # these and they just use up vital space. Restore the old compiler
419 # behaviour.
420 AC_CACHE_CHECK([whether -fno-asynchronous-unwind-tables works], [grub_cv_cc_fno_asynchronous_unwind_tables], [
421 SAVE_CFLAGS="$CFLAGS"
422 CFLAGS="$CFLAGS -fno-dwarf2-cfi-asm"
423 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
424 [grub_cv_cc_fno_asynchronous_unwind_tables=yes],
425 [grub_cv_cc_fno_asynchronous_unwind_tables=no])
426 CFLAGS="$SAVE_CFLAGS"
427 ])
428
429 if test "x$grub_cv_cc_fno_asynchronous_unwind_tables" = xyes; then
430 TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
431 fi
432
433 grub_apple_target_cc
434 if test x$grub_cv_apple_target_cc = xyes ; then
435 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -DAPPLE_CC=1"
436 TARGET_CFLAGS="$TARGET_CFLAGS -fnested-functions"
437
438 CFLAGS="$CFLAGS -DAPPLE_CC=1 -fnested-functions"
439 TARGET_APPLE_CC=1
440 AC_CHECK_PROG([OBJCONV], [objconv], [objconv], [])
441 if test "x$OBJCONV" = x ; then
442 AC_CHECK_PROG([OBJCONV], [objconv], [./objconv], [], [.])
443 fi
444 if test "x$OBJCONV" = x ; then
445 AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
446 fi
447 TARGET_IMG_LDSCRIPT=
448 TARGET_IMG_CFLAGS="-static"
449 TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
450 TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
451 TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
452 else
453 TARGET_APPLE_CC=0
454 # Use linker script if present, otherwise use builtin -N script.
455 if test -f "${srcdir}/${grub_coredir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"; then
456 TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"
457 TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
458 TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/${target_cpu}-${platform}-${host_os}-img-ld.sc"
459 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
460 else
461 TARGET_IMG_LDSCRIPT=
462 TARGET_IMG_LDFLAGS='-Wl,-N'
463 TARGET_IMG_LDFLAGS_AC='-Wl,-N'
464 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
465 fi
466 TARGET_IMG_CFLAGS=
467 fi
468
469 # For platforms where ELF is not the default link format.
470 AC_MSG_CHECKING([for command to convert module to ELF format])
471 case "${host_os}" in
472 cygwin) TARGET_OBJ2ELF='$(top_builddir)/grub-pe2elf';
473 # FIXME: put proper test here
474 NEED_REGISTER_FRAME_INFO=1
475 ;;
476 *) NEED_REGISTER_FRAME_INFO=0 ;;
477 esac
478 AC_MSG_RESULT([$TARGET_OBJ2ELF])
479
480 if test "x$target_m32" = x1; then
481 # Force 32-bit mode.
482 TARGET_CFLAGS="$TARGET_CFLAGS -m32"
483 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
484 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m32"
485 TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
486 TARGET_MODULE_FORMAT="elf32"
487 fi
488
489 if test "x$target_m64" = x1; then
490 # Force 64-bit mode.
491 TARGET_CFLAGS="$TARGET_CFLAGS -m64"
492 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
493 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m64"
494 TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
495 TARGET_MODULE_FORMAT="elf64"
496 fi
497
498 if test "$target_cpu"-"$platform" = x86_64-efi; then
499 # Use large model to support 4G memory
500 AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
501 SAVED_CFLAGS=$CFLAGS
502 CFLAGS="$CFLAGS -m64 -mcmodel=large"
503 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
504 [grub_cv_cc_mcmodel=yes],
505 [grub_cv_cc_mcmodel=no])
506 ])
507 if test "x$grub_cv_cc_mcmodel" = xno; then
508 AC_MSG_ERROR([-mcmodel=large not supported. Upgrade your gcc.])
509 else
510 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
511 fi
512
513 # EFI writes to stack below %rsp, we must not use the red zone
514 AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
515 CFLAGS="$CFLAGS -m64 -mno-red-zone"
516 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
517 [grub_cv_cc_no_red_zone=yes],
518 [grub_cv_cc_no_red_zone=no])
519 ])
520 if test "x$grub_cv_cc_no_red_zone" = xno; then
521 AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
522 fi
523
524 TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
525 fi
526
527 #
528 # Compiler features.
529 #
530
531 # Need __enable_execute_stack() for nested function trampolines?
532 grub_CHECK_ENABLE_EXECUTE_STACK
533
534 # Position independent executable.
535 grub_CHECK_PIE
536 [# Need that, because some distributions ship compilers that include
537 # `-fPIE' in the default specs.
538 if [ x"$pie_possible" = xyes ]; then
539 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
540 fi]
541
542 # Smashing stack protector.
543 grub_CHECK_STACK_PROTECTOR
544 # Need that, because some distributions ship compilers that include
545 # `-fstack-protector' in the default specs.
546 if test "x$ssp_possible" = xyes; then
547 TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
548 fi
549 grub_CHECK_STACK_ARG_PROBE
550 # Cygwin's GCC uses alloca() to probe the stackframe on static
551 # stack allocations above some threshold.
552 if test x"$sap_possible" = xyes; then
553 TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
554 fi
555
556 AC_ARG_ENABLE([werror],
557 [AS_HELP_STRING([--disable-werror],
558 [do not use -Werror when building GRUB])])
559 if test x"$enable_werror" != xno ; then
560 TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
561 fi
562
563 TARGET_CPP="$TARGET_CC -E"
564 TARGET_CCAS=$TARGET_CC
565
566 AC_SUBST(OBJCONV)
567 AC_SUBST(TARGET_CPP)
568 AC_SUBST(TARGET_CCAS)
569 AC_SUBST(TARGET_OBJ2ELF)
570 AC_SUBST(TARGET_APPLE_CC)
571 AC_SUBST(TARGET_MODULE_FORMAT)
572
573 AC_SUBST(TARGET_CFLAGS)
574 AC_SUBST(TARGET_LDFLAGS)
575 AC_SUBST(TARGET_CPPFLAGS)
576 AC_SUBST(TARGET_CCASFLAGS)
577
578 AC_SUBST(TARGET_IMG_LDSCRIPT)
579 AC_SUBST(TARGET_IMG_LDFLAGS)
580 AC_SUBST(TARGET_IMG_CFLAGS)
581 AC_SUBST(TARGET_IMG_BASE_LDOPT)
582
583 AC_SUBST(HOST_CFLAGS)
584 AC_SUBST(HOST_LDFLAGS)
585 AC_SUBST(HOST_CPPFLAGS)
586 AC_SUBST(HOST_CCASFLAGS)
587
588 # Set them to their new values for the tests below.
589 CC="$TARGET_CC"
590 if test "x$TARGET_APPLE_CC" = x1 ; then
591 CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
592 else
593 CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100 -Wno-error"
594 fi
595 CPPFLAGS="$TARGET_CPPFLAGS"
596 if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 ; then
597 LIBS=
598 else
599 LIBS=-lgcc
600 fi
601
602 grub_ASM_USCORE
603 if test x$grub_cv_asm_uscore = xyes; then
604 CFLAGS="$CFLAGS -Wl,--defsym,_abort=_main"
605 else
606 CFLAGS="$CFLAGS -Wl,--defsym,abort=main"
607 fi
608
609 # Check for libgcc symbols
610 AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __trampoline_setup __ucmpdi2 _restgpr_14_x __ia64_trampoline __udivsi3 __umoddi3 __udivdi3 __divsi3 __modsi3 __umodsi3 __moddi3 __divdi3 __ctzdi2 __ctzsi2)
611
612 if test "x$TARGET_APPLE_CC" = x1 ; then
613 CFLAGS="$TARGET_CFLAGS -nostdlib"
614 else
615 CFLAGS="$TARGET_CFLAGS -nostdlib -Wl,--defsym,___main=0x8100"
616 fi
617 LIBS=""
618
619 # Defined in aclocal.m4.
620 grub_PROG_TARGET_CC
621 if test "x$TARGET_APPLE_CC" != x1 ; then
622 grub_PROG_OBJCOPY_ABSOLUTE
623 fi
624 grub_PROG_LD_BUILD_ID_NONE
625 if test "x$target_cpu" = xi386; then
626 if test "$platform" != emu && test "x$TARGET_APPLE_CC" != x1 ; then
627 if test ! -z "$TARGET_IMG_LDSCRIPT"; then
628 # Check symbols provided by linker script.
629 CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},8000 -Wl,--defsym,___main=0x8100"
630 fi
631 grub_CHECK_BSS_START_SYMBOL
632 grub_CHECK_END_SYMBOL
633 fi
634 CFLAGS="$TARGET_CFLAGS"
635 grub_I386_ASM_PREFIX_REQUIREMENT
636 grub_I386_ASM_ADDR32
637 fi
638
639 AC_ARG_ENABLE([efiemu],
640 [AS_HELP_STRING([--enable-efiemu],
641 [build and install the efiemu runtimes (default=guessed)])])
642 if test x"$enable_efiemu" = xno ; then
643 efiemu_excuse="explicitly disabled"
644 fi
645 if test x"$target_cpu" != xi386 ; then
646 efiemu_excuse="only available on i386"
647 fi
648 if test x"$platform" = xefi ; then
649 efiemu_excuse="not available on efi"
650 fi
651 if test x"$efiemu_excuse" = x ; then
652 AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
653 CFLAGS="$CFLAGS -m64 -mcmodel=large -mno-red-zone -nostdlib"
654 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
655 [grub_cv_cc_efiemu=yes],
656 [grub_cv_cc_efiemu=no])
657 ])
658 if test x$grub_cv_cc_efiemu = xno; then
659 efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
660 fi
661 fi
662 if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
663 AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled])
664 fi
665 if test x"$efiemu_excuse" = x ; then
666 enable_efiemu=yes
667 else
668 enable_efiemu=no
669 fi
670 AC_SUBST([enable_efiemu])
671
672 if test "$platform" != emu; then
673 AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
674 SAVED_CPPFLAGS="$CPPFLAGS"
675 CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
676 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
677 int va_arg_func (int fixed, va_list args);]], [[]])],
678 [grub_cv_cc_isystem=yes],
679 [grub_cv_cc_isystem=no])
680 CPPFLAGS="$SAVED_CPPFLAGS"
681 ])
682
683 if test x"$grub_cv_cc_isystem" = xyes ; then
684 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
685 fi
686 fi
687
688 AC_CACHE_CHECK([whether -Wno-trampolines work], [grub_cv_cc_wnotrampolines], [
689 SAVED_CFLAGS="$CFLAGS"
690 # Test for -Wtrampolines rather than -Wno-trampolines to reduce confusion
691 # in the event of later failures (since -Wno-* is always accepted, but
692 # produces a diagnostic if something else is wrong).
693 CFLAGS="$TARGET_CFLAGS -Wtrampolines"
694 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
695 int va_arg_func (int fixed, va_list args);]], [[]])],
696 [grub_cv_cc_wnotrampolines=yes],
697 [grub_cv_cc_wnotrampolines=no])
698 CFLAGS="$SAVED_CFLAGS"
699 ])
700
701 if test x"$grub_cv_cc_wnotrampolines" = xyes ; then
702 TARGET_CFLAGS="$TARGET_CFLAGS -Wno-trampolines"
703 fi
704
705 # Restore the flags.
706 CC="$tmp_CC"
707 CFLAGS="$tmp_CFLAGS"
708 CPPFLAGS="$tmp_CPPFLAGS"
709 LDFLAGS="$tmp_LDFLAGS"
710 LIBS="$tmp_LIBS"
711
712 #
713 # Check for options.
714 #
715
716 # Memory manager debugging.
717 AC_ARG_ENABLE([mm-debug],
718 AS_HELP_STRING([--enable-mm-debug],
719 [include memory manager debugging]),
720 [AC_DEFINE([MM_DEBUG], [1],
721 [Define to 1 if you enable memory manager debugging.])])
722
723 AC_ARG_ENABLE([cache-stats],
724 AS_HELP_STRING([--enable-cache-stats],
725 [enable disk cache statistics collection]))
726
727 if test x$enable_cache_stats = xyes; then
728 DISK_CACHE_STATS=1
729 else
730 DISK_CACHE_STATS=0
731 fi
732 AC_SUBST([DISK_CACHE_STATS])
733
734 AC_ARG_ENABLE([grub-emu-usb],
735 [AS_HELP_STRING([--enable-grub-emu-usb],
736 [build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
737
738 AC_ARG_ENABLE([grub-emu-sdl],
739 [AS_HELP_STRING([--enable-grub-emu-sdl],
740 [build and install the `grub-emu' debugging utility with SDL support (default=guessed)])])
741
742 AC_ARG_ENABLE([grub-emu-pci],
743 [AS_HELP_STRING([--enable-grub-emu-pci],
744 [build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
745
746 if test "$platform" = emu; then
747 missing_ncurses=
748 [# Check for curses libraries.]
749 AC_CHECK_LIB([ncurses], [wgetch], [LIBCURSES="-lncurses"],
750 [AC_CHECK_LIB([curses], [wgetch], [LIBCURSES="-lcurses"],
751 [missing_ncurses=[true]])])
752 AC_SUBST([LIBCURSES])
753 [if [ x"$missing_ncurses" = x ]; then ]
754 [# Check for headers.]
755 AC_CHECK_HEADERS([ncurses/curses.h], [],
756 [AC_CHECK_HEADERS([ncurses.h], [],
757 [AC_CHECK_HEADERS([curses.h], [],
758 [missing_ncurses=[true]])])])
759 [fi]
760 if test x"$missing_ncurses" = xtrue ; then
761 AC_MSG_ERROR([grub-emu can't be compiled without ncurses])
762 fi
763
764 if test x"$enable_grub_emu_usb" != xyes ; then
765 grub_emu_usb_excuse="not enabled"
766 fi
767
768 if test x"$enable_grub_emu_pci" = xyes ; then
769 grub_emu_usb_excuse="conflicts with PCI support"
770 fi
771
772 [if [ x"$grub_emu_usb_excuse" = x ]; then
773 # Check for libusb libraries.]
774 AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
775 [grub_emu_usb_excuse=["need libusb library"]])
776 AC_SUBST([LIBUSB])
777 [fi]
778 [if [ x"$grub_emu_usb_excuse" = x ]; then
779 # Check for headers.]
780 AC_CHECK_HEADERS([usb.h], [],
781 [grub_emu_usb_excuse=["need libusb headers"]])
782 [fi]
783 if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
784 AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled])
785 fi
786 if test x"$grub_emu_usb_excuse" = x ; then
787 enable_grub_emu_usb=yes
788 else
789 enable_grub_emu_usb=no
790 fi
791
792 if test x"$enable_grub_emu_sdl" = xno ; then
793 grub_emu_sdl_excuse="explicitely disabled"
794 fi
795 [if [ x"$grub_emu_sdl_excuse" = x ]; then
796 # Check for libSDL libraries.]
797 AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
798 [grub_emu_sdl_excuse=["libSDL libraries are required to build \`grub-emu' with SDL support"]])
799 AC_SUBST([LIBSDL])
800 [fi]
801
802 [if [ x"$grub_emu_sdl_excuse" = x ]; then
803 # Check for headers.]
804 AC_CHECK_HEADERS([SDL/SDL.h], [],
805 [grub_emu_sdl_excuse=["libSDL header file is required to build \`grub-emu' with SDL support"]])
806 [fi]
807
808 if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
809 AC_MSG_ERROR([SDL support for grub-emu was explicitely requested but can't be compiled])
810 fi
811 if test x"$grub_emu_sdl_excuse" = x ; then
812 enable_grub_emu_sdl=yes
813 else
814 enable_grub_emu_sdl=no
815 fi
816
817 if test x"$enable_grub_emu_pci" != xyes ; then
818 grub_emu_pci_excuse="not enabled"
819 fi
820
821 if test x"$enable_grub_emu_usb" = xyes ; then
822 grub_emu_pci_excuse="conflicts with USB support"
823 fi
824
825 [if [ x"$grub_emu_pci_excuse" = x ]; then
826 # Check for libpci libraries.]
827 AC_CHECK_LIB([pciaccess], [pci_system_init], [LIBPCIACCESS="-lpciaccess"],
828 [grub_emu_pci_excuse=["need libpciaccess library"]])
829 AC_SUBST([LIBPCIACCESS])
830 [fi]
831 [if [ x"$grub_emu_pci_excuse" = x ]; then
832 # Check for headers.]
833 AC_CHECK_HEADERS([pci/pci.h], [],
834 [grub_emu_pci_excuse=["need libpciaccess headers"]])
835 [fi]
836
837 if test x"$grub_emu_pci_excuse" = x ; then
838 enable_grub_emu_pci=yes
839 else
840
841 enable_grub_emu_pci=no
842 fi
843
844 AC_SUBST([enable_grub_emu_sdl])
845 AC_SUBST([enable_grub_emu_usb])
846 AC_SUBST([enable_grub_emu_pci])
847 fi
848
849 AC_ARG_ENABLE([grub-mkfont],
850 [AS_HELP_STRING([--enable-grub-mkfont],
851 [build and install the `grub-mkfont' utility (default=guessed)])])
852 if test x"$enable_grub_mkfont" = xno ; then
853 grub_mkfont_excuse="explicitly disabled"
854 fi
855
856 if test x"$grub_mkfont_excuse" = x ; then
857 # Check for freetype libraries.
858 AC_CHECK_PROGS([FREETYPE], [freetype-config])
859 if test "x$FREETYPE" = x ; then
860 grub_mkfont_excuse=["need freetype2 library"]
861 fi
862 fi
863
864 if test x"$grub_mkfont_excuse" = x ; then
865 # Check for freetype libraries.
866 freetype_cflags=`freetype-config --cflags`
867 freetype_libs=`freetype-config --libs`
868 SAVED_CPPFLAGS="$CPPFLAGS"
869 CPPFLAGS="$CPPFLAGS $freetype_cflags"
870 AC_CHECK_HEADERS([ft2build.h], [],
871 [grub_mkfont_excuse=["need freetype2 headers"]])
872 CPPFLAGS="$SAVED_CPPFLAGS"
873 fi
874
875 if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
876 AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled])
877 fi
878 if test x"$grub_mkfont_excuse" = x ; then
879 enable_grub_mkfont=yes
880 else
881 enable_grub_mkfont=no
882 fi
883 if test x"$enable_grub_mkfont" = xno && test "x$platform" = xloongson; then
884 AC_MSG_ERROR([loongson port needs grub-mkfont])
885 fi
886 AC_SUBST([enable_grub_mkfont])
887 AC_SUBST([freetype_cflags])
888 AC_SUBST([freetype_libs])
889
890 AC_ARG_ENABLE([grub-mount],
891 [AS_HELP_STRING([--enable-grub-mount],
892 [build and install the `grub-mount' utility (default=guessed)])])
893 if test x"$enable_grub_mount" = xno ; then
894 grub_mount_excuse="explicitly disabled"
895 fi
896
897 if test x"$grub_mount_excuse" = x ; then
898 AC_CHECK_LIB([fuse], [fuse_main_real], [],
899 [grub_mount_excuse="need FUSE library"])
900 fi
901
902 if test x"$grub_mount_excuse" = x ; then
903 # Check for fuse headers.
904 SAVED_CPPFLAGS="$CPPFLAGS"
905 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26"
906 AC_CHECK_HEADERS([fuse/fuse.h], [],
907 [grub_mount_excuse=["need FUSE headers"]])
908 CPPFLAGS="$SAVED_CPPFLAGS"
909 fi
910
911 if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
912 AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled])
913 fi
914 if test x"$grub_mount_excuse" = x ; then
915 enable_grub_mount=yes
916 else
917 enable_grub_mount=no
918 fi
919 AC_SUBST([enable_grub_mount])
920
921 AC_ARG_ENABLE([device-mapper],
922 [AS_HELP_STRING([--enable-device-mapper],
923 [enable Linux device-mapper support (default=guessed)])])
924 if test x"$enable_device_mapper" = xno ; then
925 device_mapper_excuse="explicitly disabled"
926 fi
927
928 if test x"$device_mapper_excuse" = x ; then
929 # Check for device-mapper header.
930 AC_CHECK_HEADER([libdevmapper.h], [],
931 [device_mapper_excuse="need libdevmapper header"])
932 fi
933
934 if test x"$device_mapper_excuse" = x ; then
935 # Check for device-mapper library.
936 AC_CHECK_LIB([devmapper], [dm_task_create], [],
937 [device_mapper_excuse="need devmapper library"])
938 fi
939
940 if test x"$device_mapper_excuse" = x ; then
941 # Check for device-mapper library.
942 AC_CHECK_LIB([devmapper], [dm_log_with_errno_init],
943 [],
944 [device_mapper_excuse="need devmapper library"])
945 fi
946
947 if test x"$device_mapper_excuse" = x ; then
948 LIBDEVMAPPER="-ldevmapper";
949 AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
950 [Define to 1 if you have the devmapper library.])
951 fi
952
953 AC_SUBST([LIBDEVMAPPER])
954
955 LIBGEOM=
956 if test x$host_kernel = xkfreebsd; then
957 AC_CHECK_LIB([geom], [geom_gettree], [],
958 [AC_MSG_ERROR([Your platform requires libgeom])])
959 LIBGEOM="-lgeom"
960 fi
961
962 AC_SUBST([LIBGEOM])
963
964 AC_CHECK_LIB([lzma], [lzma_code],
965 [LIBLZMA="-llzma"
966 AC_DEFINE([HAVE_LIBLZMA], [1],
967 [Define to 1 if you have the LZMA library.])],)
968 AC_SUBST([LIBLZMA])
969
970 AC_CHECK_LIB([zfs], [libzfs_init],
971 [LIBZFS="-lzfs"
972 AC_DEFINE([HAVE_LIBZFS], [1],
973 [Define to 1 if you have the ZFS library.])],)
974 AC_SUBST([LIBZFS])
975
976 AC_CHECK_LIB([nvpair], [nvlist_print],
977 [LIBNVPAIR="-lnvpair"
978 AC_DEFINE([HAVE_LIBNVPAIR], [1],
979 [Define to 1 if you have the NVPAIR library.])],)
980 AC_SUBST([LIBNVPAIR])
981
982 LIBS=""
983
984 pkglibrootdir='$(libdir)'/`echo $PACKAGE | sed "$program_transform_name"`
985 AC_SUBST(pkglibrootdir)
986
987 AC_SUBST([FONT_SOURCE])
988 AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
989 [AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
990 AS_IF([test x$TARGET_APPLE_CC = x1],
991 [AC_SUBST([USE_APPLE_CC_FIXES], yes)])
992
993 AC_SUBST(HAVE_ASM_USCORE)
994 AC_SUBST(ADDR32)
995 AC_SUBST(DATA32)
996 AC_SUBST(BSS_START_SYMBOL)
997 AC_SUBST(END_SYMBOL)
998 AC_SUBST(PACKAGE)
999 AC_SUBST(VERSION)
1000 AC_SUBST(NEED_ENABLE_EXECUTE_STACK)
1001 AC_SUBST(NEED_REGISTER_FRAME_INFO)
1002
1003 #
1004 # Automake conditionals
1005 #
1006
1007 AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
1008 AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
1009 AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
1010 AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi])
1011 AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
1012 AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
1013 AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
1014 AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
1015 AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
1016 AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
1017 AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
1018 AM_CONDITIONAL([COND_mips_arc], [test x$target_cpu = xmips -a x$platform = xarc])
1019 AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
1020 AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
1021 AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
1022
1023 AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
1024 AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
1025 AM_CONDITIONAL([COND_HOST_NETBSD], [test x$host_kernel = xnetbsd])
1026 AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
1027 AM_CONDITIONAL([COND_HOST_KFREEBSD], [test x$host_kernel = xkfreebsd])
1028 AM_CONDITIONAL([COND_HOST_ILLUMOS], [test x$host_kernel = xillumos])
1029
1030 AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
1031 AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
1032 AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
1033 AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
1034 AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
1035 AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
1036 AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
1037 AM_CONDITIONAL([COND_GRUB_PE2ELF], [test x$TARGET_OBJ2ELF != x])
1038 AM_CONDITIONAL([COND_APPLE_CC], [test x$TARGET_APPLE_CC = x1])
1039 AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
1040 AM_CONDITIONAL([COND_ENABLE_CACHE_STATS], [test x$DISK_CACHE_STATS = x1])
1041
1042 AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
1043 AM_CONDITIONAL([COND_CYGWIN], [test x$host_os = xcygwin])
1044
1045 # Output files.
1046 cpudir="${target_cpu}"
1047 if test x${cpudir} = xmipsel; then
1048 cpudir=mips;
1049 fi
1050 grub_CHECK_LINK_DIR
1051 if test x"$link_dir" = xyes ; then
1052 AC_CONFIG_LINKS([include/grub/cpu:include/grub/$cpudir])
1053 if test "$platform" != emu ; then
1054 AC_CONFIG_LINKS([include/grub/machine:include/grub/$cpudir/$platform])
1055 fi
1056 else
1057 mkdir -p include/grub 2>/dev/null
1058 rm -rf include/grub/cpu
1059 cp -rp $srcdir/include/grub/$cpudir include/grub/cpu 2>/dev/null
1060 if test "$platform" != emu ; then
1061 rm -rf include/grub/machine
1062 cp -rp $srcdir/include/grub/$cpudir/$platform include/grub/machine 2>/dev/null
1063 fi
1064 fi
1065
1066 AC_CONFIG_FILES([Makefile])
1067 AC_CONFIG_FILES([grub-core/Makefile])
1068 AC_CONFIG_FILES([grub-core/gnulib/Makefile])
1069 AC_CONFIG_FILES([po/Makefile.in])
1070 AC_CONFIG_FILES([docs/Makefile])
1071 AC_CONFIG_FILES([util/bash-completion.d/Makefile])
1072 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
1073 AC_CONFIG_FILES([config.h])
1074
1075 AC_OUTPUT
1076 [
1077 echo "*******************************************************"
1078 echo GRUB2 will be compiled with following components:
1079 echo Platform: "$target_cpu"-"$platform"
1080 if [ x"$platform" = xemu ]; then
1081 if [ x"$grub_emu_usb_excuse" = x ]; then
1082 echo USB support for grub-emu: Yes
1083 else
1084 echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
1085 fi
1086 if [ x"$grub_emu_sdl_excuse" = x ]; then
1087 echo SDL support for grub-emu: Yes
1088 else
1089 echo SDL support for grub-emu: No "($grub_emu_sdl_excuse)"
1090 fi
1091 if [ x"$grub_emu_pci_excuse" = x ]; then
1092 echo PCI support for grub-emu: Yes
1093 else
1094 echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
1095 fi
1096 fi
1097 if test x"$device_mapper_excuse" = x ; then
1098 echo With devmapper support: Yes
1099 else
1100 echo With devmapper support: No "($device_mapper_excuse)"
1101 fi
1102 if [ x"$enable_mm_debug" = xyes ]; then
1103 echo With memory debugging: Yes
1104 else
1105 echo With memory debugging: No
1106 fi
1107 if [ x"$enable_cache_stats" = xyes ]; then
1108 echo With disk cache statistics: Yes
1109 else
1110 echo With disk cache statistics: No
1111 fi
1112 if [ x"$efiemu_excuse" = x ]; then
1113 echo efiemu runtime: Yes
1114 else
1115 echo efiemu runtime: No "($efiemu_excuse)"
1116 fi
1117 if [ x"$grub_mkfont_excuse" = x ]; then
1118 echo grub-mkfont: Yes
1119 else
1120 echo grub-mkfont: No "($grub_mkfont_excuse)"
1121 fi
1122 if [ x"$grub_mount_excuse" = x ]; then
1123 echo grub-mount: Yes
1124 else
1125 echo grub-mount: No "($grub_mount_excuse)"
1126 fi
1127 echo "*******************************************************"
1128 ]