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