]> git.proxmox.com Git - grub2.git/blame - configure.ac
Add a new "none" platform that only builds utilities
[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
aad32b14
VS
369if test x$USE_NLS = xno; then
370 HOST_CFLAGS="$HOST_CFLAGS -fno-builtin-gettext"
371fi
372
86695375 373if test "x$cross_compiling" = xyes; then
374 AC_MSG_WARN([cannot generate manual pages while cross compiling])
375else
376 AC_PATH_PROG(HELP2MAN, help2man)
377fi
378
3169f4c7 379# Check for functions and headers.
0f7e980b 380AC_CHECK_FUNCS(posix_memalign memalign getextmntent)
e4c498a1 381AC_CHECK_HEADERS(sys/param.h sys/mount.h sys/mnttab.h sys/mkdev.h limits.h)
7c4e16ff 382
fb90b546
RM
383AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$ac_includes_default
384#include <sys/param.h>
385#include <sys/mount.h>])
386
387AC_CHECK_MEMBERS([struct statfs.f_mntfromname],,,[$ac_includes_default
388#include <sys/param.h>
389#include <sys/mount.h>])
390
2c7031b1
GS
391# For opendisk() and getrawpartition() on NetBSD.
392# Used in util/deviceiter.c and in util/hostdisk.c.
393AC_CHECK_HEADER([util.h], [
394 AC_CHECK_LIB([util], [opendisk], [
395 LIBUTIL="-lutil"
396 AC_DEFINE(HAVE_OPENDISK, 1, [Define if opendisk() in -lutil can be used])
397 ])
398 AC_CHECK_LIB([util], [getrawpartition], [
399 LIBUTIL="-lutil"
400 AC_DEFINE(HAVE_GETRAWPARTITION, 1, [Define if getrawpartition() in -lutil can be used])
401 ])
402])
403AC_SUBST([LIBUTIL])
404
19ce697d 405AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_host_cc_wtrampolines], [
00c05e22 406 SAVED_CFLAGS="$CFLAGS"
b35ec299 407 CFLAGS="$HOST_CFLAGS -Wtrampolines -Werror"
00c05e22
VS
408 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
409int va_arg_func (int fixed, va_list args);]], [[]])],
19ce697d
VS
410 [grub_cv_host_cc_wtrampolines=yes],
411 [grub_cv_host_cc_wtrampolines=no])
00c05e22
VS
412 CFLAGS="$SAVED_CFLAGS"
413])
414
19ce697d
VS
415if test x"$grub_host_cv_cc_wtrampolines" = xyes ; then
416 HOST_CFLAGS="$HOST_CFLAGS -Wtrampolines"
00c05e22
VS
417fi
418
76ed06b9
BC
419#
420# Check for host and build compilers.
421#
422HOST_CC=$CC
816719c8
VS
423AC_CHECK_PROGS(BUILD_CC, [gcc egcs cc])
424test -z "$BUILD_CC" && AC_MSG_ERROR([none of gcc, egcs and cc is found. set BUILD_CC manually.])
b224c266 425BUILD_CPP="$BUILD_CC -E"
76ed06b9 426
29013cba
VS
427case "$build_os" in
428 haiku*) BUILD_LIBM= ;;
429 *) BUILD_LIBM=-lm ;;
430esac
1ecf96fc
AB
431
432dnl FIXME proper test seems to require too deep dive into Autoconf internals.
433dnl For now just list known platforms that we support.
434
435case "$build_os" in
436 cygwin*|mingw32*|mingw64*) BUILD_EXEEXT=.exe ;;
437 *) BUILD_EXEEXT= ;;
438esac
439AC_SUBST(BUILD_EXEEXT)
440
15c69261
YB
441# For gnulib.
442gl_INIT
443
93bf55e6 444WARN_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 445EXTRA_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
446
447HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS -Wcast-align"
448
449AC_CACHE_CHECK([which extra warnings work], [grub_cv_cc_w_extra_flags], [
450 SAVED_CFLAGS="$CFLAGS"
451 grub_cv_cc_w_extra_flags=
452 for x in $EXTRA_WARN_FLAGS; do
453 CFLAGS="$HOST_CFLAGS $x -Werror"
454 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
455 if test x$flag = x1 ; then
456 grub_cv_cc_w_extra_flags="$grub_cv_cc_w_extra_flags $x"
457 fi
458 done
459 CFLAGS="$SAVED_CFLAGS"
460])
461
462HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
463
b977bf01 464#
465# Check for target programs.
466#
467
5b5d4aa5 468# Find tools for the target.
469if test "x$target_alias" != x && test "x$host_alias" != "x$target_alias"; then
b977bf01 470 tmp_ac_tool_prefix="$ac_tool_prefix"
471 ac_tool_prefix=$target_alias-
472
473 AC_CHECK_TOOLS(TARGET_CC, [gcc egcs cc],
474 [AC_MSG_ERROR([none of gcc, egcs and cc is found. set TARGET_CC manually.])])
fc97214f
VS
475 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
476 AC_CHECK_TOOL(TARGET_STRIP, strip)
477 AC_CHECK_TOOL(TARGET_NM, nm)
0e8daad0 478 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
b977bf01 479
480 ac_tool_prefix="$tmp_ac_tool_prefix"
481else
482 if test "x$TARGET_CC" = x; then
483 TARGET_CC=$CC
484 fi
fc97214f
VS
485 AC_CHECK_TOOL(TARGET_OBJCOPY, objcopy)
486 AC_CHECK_TOOL(TARGET_STRIP, strip)
487 AC_CHECK_TOOL(TARGET_NM, nm)
0e8daad0 488 AC_CHECK_TOOL(TARGET_RANLIB, ranlib)
b977bf01 489fi
fc97214f 490
76ed06b9
BC
491AC_SUBST(HOST_CC)
492AC_SUBST(BUILD_CC)
7c9d0c39
VS
493AC_SUBST(BUILD_CFLAGS)
494AC_SUBST(BUILD_CPPFLAGS)
dcecae1a 495AC_SUBST(BUILD_LDFLAGS)
b977bf01 496AC_SUBST(TARGET_CC)
fc97214f 497AC_SUBST(TARGET_NM)
1bd73025 498AC_SUBST(TARGET_RANLIB)
fc97214f
VS
499AC_SUBST(TARGET_STRIP)
500AC_SUBST(TARGET_OBJCOPY)
b977bf01 501
b977bf01 502# Test the C compiler for the target environment.
503tmp_CC="$CC"
504tmp_CFLAGS="$CFLAGS"
505tmp_LDFLAGS="$LDFLAGS"
506tmp_CPPFLAGS="$CPPFLAGS"
aa6d7826 507tmp_LIBS="$LIBS"
b977bf01 508CC="$TARGET_CC"
509CFLAGS="$TARGET_CFLAGS"
510CPPFLAGS="$TARGET_CPPFLAGS"
511LDFLAGS="$TARGET_LDFLAGS"
aa6d7826 512LIBS=""
b977bf01 513
90d1e879 514# debug flags.
4e27343f 515TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations"
76ed06b9 516TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
6a161fa9 517
c12936c5
VS
518if test "x$target_cpu" != xi386 && test "x$target_cpu" != xx86_64; then
519TARGET_CFLAGS="$TARGET_CFLAGS -Wcast-align"
520fi
521
6a7957f9
VS
522TARGET_CC_VERSION="$(LC_ALL=C $TARGET_CC --version | head -n1)"
523
60d5e9cb
VS
524AC_CACHE_CHECK([which extra warnings work], [grub_cv_target_cc_w_extra_flags], [
525 LDFLAGS="$TARGET_LDFLAGS -nostdlib -static"
526
527 grub_cv_target_cc_w_extra_flags=
528 for x in $EXTRA_WARN_FLAGS; do
529 CFLAGS="$TARGET_CFLAGS $x -Werror"
37378f74
VS
530 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
531asm (".globl start; start:");
532void __main (void);
533void __main (void) {}
534int main (void);
535]], [[]])], [flag=1], [flag=0])
60d5e9cb
VS
536 if test x$flag = x1 ; then
537 grub_cv_target_cc_w_extra_flags="$grub_cv_target_cc_w_extra_flags $x"
538 fi
539 done
540])
541
542TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_w_extra_flags"
543
60375a88 544AC_CACHE_CHECK([if compiling with clang], [grub_cv_cc_target_clang]
b73b70eb
VS
545[
546CFLAGS="$TARGET_CFLAGS"
547AC_COMPILE_IFELSE(
60375a88
VS
548[AC_LANG_PROGRAM([], [[
549#ifdef __clang__
550#error "is clang"
551#endif
552]])],
553[grub_cv_cc_target_clang=no], [grub_cv_cc_target_clang=yes])])
554
2312f06c
VS
555# on x86 clang doesn't support .code16
556# on arm clang doesn't support .arch directive
63a45330
VS
557# on mips clang doesn't support privilegied instructions, doubleword store/load
558# and crashes with hand-written assembly
559if test "x$grub_cv_cc_target_clang" = xyes && ( test "x$target_cpu" = xi386 \
560 || test "x$target_cpu" = xx86_64 || test "x$target_cpu" = xarm \
561 || test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ); then
60375a88
VS
562 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
563fi
564
b73b70eb
VS
565if test "x$grub_cv_cc_target_clang" = xyes && test "x$target_cpu" = xpowerpc; then
566AC_CACHE_CHECK([if clang can handle ame instruction], [grub_cv_cc_target_clang_ame]
567[
568CFLAGS="$TARGET_CFLAGS"
569AC_COMPILE_IFELSE(
570[AC_LANG_PROGRAM([], [[
571 unsigned int a = 0, b = 0;
572 asm volatile ("{ame|addme} %0,%1" : "=r" (a) : "r" (b));
573 if (a)
574 return 1;
575]])],
576[grub_cv_cc_target_clang_ame=yes], [grub_cv_cc_target_clang_ame=no])])
577 # clang <= 3.3 doesn't handle most of ppc assembly, not even inline assembly
578 # used by gcrypt
579 if test x$grub_cv_cc_target_clang_ame = xno ; then
580 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -no-integrated-as"
896f483d 581 TARGET_CFLAGS="$TARGET_CFLAGS -no-integrated-as"
b73b70eb
VS
582 fi
583fi
584
60375a88
VS
585if test "x$target_cpu" = xi386 && test "x$platform" != xemu; then
586 TARGET_CFLAGS="$TARGET_CFLAGS -march=i386"
587fi
588
589if test "x$target_m32" = x1; then
590 # Force 32-bit mode.
591 TARGET_CFLAGS="$TARGET_CFLAGS -m32"
592 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m32"
593 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m32"
594 TARGET_LDFLAGS="$TARGET_LDFLAGS -m32"
595 TARGET_MODULE_FORMAT="elf32"
596fi
597
598if test "x$target_m64" = x1; then
599 # Force 64-bit mode.
600 TARGET_CFLAGS="$TARGET_CFLAGS -m64"
601 TARGET_CCASFLAGS="$TARGET_CCASFLAGS -m64"
602 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -m64"
603 TARGET_LDFLAGS="$TARGET_LDFLAGS -m64"
604 TARGET_MODULE_FORMAT="elf64"
605fi
606
607if test "x$grub_cv_cc_target_clang" = xno && test "x$target_cpu" = xi386 && test "x$platform" != xemu && test "x$platform" != xefi; then
608 TARGET_CFLAGS="$TARGET_CFLAGS -mrtd -mregparm=3"
609fi
610
f93ddcfd
VS
611# on mips redirect cache flushing function to non-existant one.
612if test "x$target_cpu" = xmips || test "x$target_cpu" = xmipsel ; then
613 AC_CACHE_CHECK([whether -mflush-func=grub_red_herring works], [grub_cv_cc_mflush_func], [
614 CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring -Werror"
615 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
616 [grub_cv_cc_mflush_func=yes],
617 [grub_cv_cc_mflush_func=no])
618 ])
619
620 if test "x$grub_cv_cc_mflush_func" = xyes; then
621 TARGET_CFLAGS="$TARGET_CFLAGS -mflush-func=grub_red_herring"
622 fi
623fi
624
625
90d1e879
RM
626# Force no alignment to save space on i386.
627if test "x$target_cpu" = xi386; then
628 AC_CACHE_CHECK([whether -falign-loops works], [grub_cv_cc_falign_loop], [
b35ec299 629 CFLAGS="$TARGET_CFLAGS -falign-loops=1 -Werror"
eb73121d 630 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
90d1e879
RM
631 [grub_cv_cc_falign_loop=yes],
632 [grub_cv_cc_falign_loop=no])
6a161fa9 633 ])
6a161fa9 634
c966a489 635 AC_CACHE_CHECK([whether -malign-loops works], [grub_cv_cc_malign_loop], [
b35ec299 636 CFLAGS="$TARGET_CFLAGS -malign-loops=1 -Werror"
c966a489
VS
637 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
638 [grub_cv_cc_malign_loop=yes],
639 [grub_cv_cc_malign_loop=no])
640 ])
641
90d1e879
RM
642 if test "x$grub_cv_cc_falign_loop" = xyes; then
643 TARGET_CFLAGS="$TARGET_CFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
c966a489 644 elif test "x$grub_cv_cc_malign_loop" = xyes; then
90d1e879 645 TARGET_CFLAGS="$TARGET_CFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
6a161fa9 646 fi
89e0240c 647fi
6a161fa9 648
cdc17f60
VS
649AC_CACHE_CHECK([whether -freg-struct-return works], [grub_cv_cc_freg_struct_return], [
650 CFLAGS="$TARGET_CFLAGS -freg-struct-return -Werror"
651 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
652 [grub_cv_cc_freg_struct_return=yes],
653 [grub_cv_cc_freg_struct_return=no])
654])
655
656if test "x$grub_cv_cc_freg_struct_return" = xyes; then
657 TARGET_CFLAGS="$TARGET_CFLAGS -freg-struct-return"
658fi
659
ee0220bc 660if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
90d1e879
RM
661 # Some toolchains enable these features by default, but they need
662 # registers that aren't set up properly in GRUB.
663 TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-3dnow"
664fi
77c55a87 665
90d1e879
RM
666# By default, GCC 4.4 generates .eh_frame sections containing unwind
667# information in some cases where it previously did not. GRUB doesn't need
668# these and they just use up vital space. Restore the old compiler
669# behaviour.
670AC_CACHE_CHECK([whether -fno-dwarf2-cfi-asm works], [grub_cv_cc_fno_dwarf2_cfi_asm], [
24f4e57c 671 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
90d1e879
RM
672 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
673 [grub_cv_cc_fno_dwarf2_cfi_asm=yes],
674 [grub_cv_cc_fno_dwarf2_cfi_asm=no])
90d1e879 675])
77c55a87 676
90d1e879
RM
677if test "x$grub_cv_cc_fno_dwarf2_cfi_asm" = xyes; then
678 TARGET_CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
b977bf01 679fi
6a161fa9 680
1c1f31e5
VS
681if test x"$target_os" = xcygwin; then
682 AC_CACHE_CHECK([whether option -fno-reorder-functions works], grub_cv_cc_no_reorder_functions, [
24f4e57c 683 CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
1c1f31e5
VS
684 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
685 [grub_cv_cc_no_reorder_functions=yes],
686 [grub_cv_cc_no_reorder_functions=no])
687 ])
688fi
689
690if test x"$target_os" = xcygwin && test "x$grub_cv_cc_no_reorder_functions" = xyes; then
691 TARGET_CFLAGS="$TARGET_CFLAGS -fno-reorder-functions"
692fi
693
e9d3421c
VS
694# By default, GCC 4.6 generates .eh_frame sections containing unwind
695# information in some cases where it previously did not. GRUB doesn't need
696# these and they just use up vital space. Restore the old compiler
697# behaviour.
698AC_CACHE_CHECK([whether -fno-asynchronous-unwind-tables works], [grub_cv_cc_fno_asynchronous_unwind_tables], [
24f4e57c 699 CFLAGS="$TARGET_CFLAGS -fno-dwarf2-cfi-asm"
e9d3421c
VS
700 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
701 [grub_cv_cc_fno_asynchronous_unwind_tables=yes],
702 [grub_cv_cc_fno_asynchronous_unwind_tables=no])
e9d3421c
VS
703])
704
705if test "x$grub_cv_cc_fno_asynchronous_unwind_tables" = xyes; then
706 TARGET_CFLAGS="$TARGET_CFLAGS -fno-asynchronous-unwind-tables"
707fi
708
30c7d3ce
VS
709AC_ARG_ENABLE([efiemu],
710 [AS_HELP_STRING([--enable-efiemu],
711 [build and install the efiemu runtimes (default=guessed)])])
712if test x"$enable_efiemu" = xno ; then
713 efiemu_excuse="explicitly disabled"
714fi
6f1f6a0c 715if test x"$grub_cv_target_cc_link_format" = x-mi386pe || test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
1c1f31e5
VS
716 efiemu_excuse="not available on cygwin"
717fi
30c7d3ce
VS
718if test x"$target_cpu" != xi386 ; then
719 efiemu_excuse="only available on i386"
720fi
721if test x"$platform" = xefi ; then
722 efiemu_excuse="not available on efi"
723fi
724if test x"$efiemu_excuse" = x ; then
725 AC_CACHE_CHECK([whether options required for efiemu work], grub_cv_cc_efiemu, [
3c2304d5 726 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
30c7d3ce
VS
727 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
728 [grub_cv_cc_efiemu=yes],
729 [grub_cv_cc_efiemu=no])
730 ])
731 if test x$grub_cv_cc_efiemu = xno; then
732 efiemu_excuse="cannot compile with -m64 -mcmodel=large -mno-red-zone -nostdlib"
733 fi
734fi
c2b70d09
AB
735if test x"$efiemu_excuse" = x ; then
736 AC_CACHE_CHECK([for efiemu64 linking format], [grub_cv_target_cc_efiemu64_link_format], [
737 grub_cv_target_cc_efiemu64_link_format=unknown
738 for format in -melf_x86_64 -melf_x86_64_fbsd -melf_x86_64_obsd -melf_x86_64_haiku -arch,x86_64; do
739 CFLAGS="-m64 -nostdlib -O2 -mcmodel=large -mno-red-zone"
740 LDFLAGS="-m64 -Wl,$format -nostdlib -static"
741 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
742 asm (".globl start; start:");
743 asm (".globl _start; _start:");
744 asm (".globl __start; __start:");
745 void __main (void);
746 void __main (void) {}
747 ]], [[]])], [flag=1], [flag=0])
748 if test x"$flag" = x1; then
749 grub_cv_target_cc_efiemu64_link_format="$format"
4d94b2db 750 break
c2b70d09
AB
751 fi
752 done])
753 if test x"$grub_cv_target_cc_efiemu64_link_format" = xunknown; then
754 efiemu_excuse="no suitable link format for efiemu64 found"
755 else
756 EFIEMU64_LINK_FORMAT="-Wl,$grub_cv_target_cc_efiemu64_link_format"
757 fi
758fi
30c7d3ce 759if test x"$enable_efiemu" = xyes && test x"$efiemu_excuse" != x ; then
d642d761 760 AC_MSG_ERROR([efiemu runtime was explicitly requested but can't be compiled ($efiemu_excuse)])
30c7d3ce
VS
761fi
762if test x"$efiemu_excuse" = x ; then
763enable_efiemu=yes
764else
765enable_efiemu=no
766fi
767AC_SUBST([enable_efiemu])
c2b70d09 768AC_SUBST([EFIEMU64_LINK_FORMAT])
30c7d3ce 769
a9f25a08
VS
770CFLAGS="$TARGET_CFLAGS"
771
bf082198
VS
772
773if test x"$platform" = xemu ; then
774 TARGET_OBJ2ELF=
775 grub_cv_target_cc_link_format=
776 case "$host_os" in
777 *darwin* | *mac*)
778 grub_cv_target_cc_link_format="-arch,${target_cpu}"
779 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
780 ;;
781 *windows* | *cygwin* | *mingw*)
782 if test x${target_cpu} = xi386 ; then
4d94b2db
CW
783 grub_cv_target_cc_link_format=-mi386pe
784 TARGET_OBJ2ELF='./build-grub-pe2elf$(BUILD_EXEEXT)'
bf082198
VS
785 fi
786 if test x${target_cpu} = xx86_64 ; then
4d94b2db
CW
787 grub_cv_target_cc_link_format=-mi386pep
788 TARGET_OBJ2ELF='./build-grub-pep2elf$(BUILD_EXEEXT)'
bf082198
VS
789 fi
790 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
791 ;;
792 esac
793elif test x"$target_cpu" = xi386 || test x"$target_cpu" = xx86_64; then
c2b70d09 794 AC_CACHE_CHECK([for target linking format], [grub_cv_target_cc_link_format], [
a9f25a08 795 grub_cv_target_cc_link_format=unknown
6f1f6a0c 796 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 797 if test x${target_cpu} != xi386 && test x$format = x-mi386pe; then
6f1f6a0c
VS
798 continue
799 fi
bf082198 800 if test x${target_cpu} != xx86_64 && test x$format = x-mi386pep; then
a9f25a08
VS
801 continue
802 fi
246a434f
VS
803 CFLAGS="$TARGET_CFLAGS"
804 LDFLAGS="$TARGET_LDFLAGS -Wl,$format -nostdlib -static"
a9f25a08
VS
805 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
806 asm (".globl start; start:");
807 asm (".globl _start; _start:");
808 asm (".globl __start; __start:");
809 void __main (void);
810 void __main (void) {}
c2b70d09 811 ]], [[]])], [flag=1], [flag=0])
a9f25a08
VS
812 if test x"$flag" = x1; then
813 grub_cv_target_cc_link_format="$format"
4d94b2db 814 break
a9f25a08
VS
815 fi
816 done])
817 if test x"$grub_cv_target_cc_link_format" = xunknown; then
818 AC_MSG_ERROR([no suitable link format found])
819 fi
820 TARGET_LDFLAGS="$TARGET_LDFLAGS -Wl,$grub_cv_target_cc_link_format"
6f1f6a0c 821 if test x"$grub_cv_target_cc_link_format" = x-mi386pe ; then
4d94b2db 822 TARGET_OBJ2ELF='./build-grub-pe2elf$(BUILD_EXEEXT)'
a9f25a08 823 fi
6f1f6a0c 824 if test x"$grub_cv_target_cc_link_format" = x-mi386pep ; then
4d94b2db 825 TARGET_OBJ2ELF='./build-grub-pep2elf$(BUILD_EXEEXT)'
6f1f6a0c 826 fi
a9f25a08
VS
827fi
828
829if test x$grub_cv_target_cc_link_format = x-arch,i386 || test x$grub_cv_target_cc_link_format = x-arch,x86_64; then
830 TARGET_APPLE_LINKER=1
831 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [objconv], [])
832 if test "x$TARGET_OBJCONV" = x ; then
833 AC_CHECK_PROG([TARGET_OBJCONV], [objconv], [./objconv], [], [.])
834 fi
835 if test "x$TARGET_OBJCONV" = x ; then
836 AC_MSG_ERROR([objconv not found which is required when building with apple compiler])
837 fi
838 TARGET_IMG_LDSCRIPT=
839 TARGET_IMG_CFLAGS="-static"
840 TARGET_IMG_LDFLAGS='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
841 TARGET_IMG_LDFLAGS_AC='-nostdlib -static -Wl,-preload -Wl,-segalign,20'
842 TARGET_IMG_BASE_LDOPT="-Wl,-image_base"
843 TARGET_LDFLAGS_OLDMAGIC=""
6f1f6a0c 844elif test x$grub_cv_target_cc_link_format = x-mi386pe || test x$grub_cv_target_cc_link_format = x-mi386pep ; then
a9f25a08
VS
845 TARGET_APPLE_LINKER=0
846 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
60b967be 847 TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
a9f25a08 848 TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
60b967be 849 TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/${grub_coredir}/conf/i386-cygwin-img-ld.sc"
a9f25a08
VS
850 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
851 TARGET_IMG_CFLAGS=
852else
853 TARGET_APPLE_LINKER=0
854 TARGET_LDFLAGS_OLDMAGIC="-Wl,-N"
855 TARGET_IMG_LDSCRIPT=
856 TARGET_IMG_LDFLAGS='-Wl,-N'
857 TARGET_IMG_LDFLAGS_AC='-Wl,-N'
858 TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
859 TARGET_IMG_CFLAGS=
860fi
861
862AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
863
864
865LDFLAGS="$TARGET_LDFLAGS"
8f0baaac 866
eaf01c25 867if test "$target_cpu" = x86_64 || test "$target_cpu-$platform" = sparc64-emu ; then
7e9ca17a 868 # Use large model to support 4G memory
6e09b8b7 869 AC_CACHE_CHECK([whether option -mcmodel=large works], grub_cv_cc_mcmodel, [
2a5a532c 870 CFLAGS="$TARGET_CFLAGS -mcmodel=large"
6e09b8b7 871 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
872 [grub_cv_cc_mcmodel=yes],
873 [grub_cv_cc_mcmodel=no])
874 ])
a3ba7410 875 if test "x$grub_cv_cc_mcmodel" = xyes; then
c8600122 876 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=large"
eaf01c25
VS
877 elif test "$target_cpu-$platform" = sparc64-emu; then
878 TARGET_CFLAGS="$TARGET_CFLAGS -mcmodel=medany"
6e09b8b7 879 fi
46546fc5 880fi
7e9ca17a 881
46546fc5 882if test "$target_cpu"-"$platform" = x86_64-efi; then
7e9ca17a 883 # EFI writes to stack below %rsp, we must not use the red zone
884 AC_CACHE_CHECK([whether option -mno-red-zone works], grub_cv_cc_no_red_zone, [
2a5a532c 885 CFLAGS="$TARGET_CFLAGS -mno-red-zone"
7e9ca17a 886 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
887 [grub_cv_cc_no_red_zone=yes],
888 [grub_cv_cc_no_red_zone=no])
889 ])
890 if test "x$grub_cv_cc_no_red_zone" = xno; then
891 AC_MSG_ERROR([-mno-red-zone not supported, upgrade your gcc])
892 fi
893
c8600122 894 TARGET_CFLAGS="$TARGET_CFLAGS -mno-red-zone"
20011694 895fi
896
41822625
VS
897if test "x$target_cpu" = xarm; then
898 AC_CACHE_CHECK([whether option -mlong-calls works], grub_cv_cc_mlong_calls, [
899 CFLAGS="$TARGET_CFLAGS -mlong-calls -Werror"
900 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
901 [grub_cv_cc_mlong_calls=yes],
902 [grub_cv_cc_mlong_calls=no])
903 ])
904 if test "x$grub_cv_cc_mlong_calls" = xyes; then
905 TARGET_CFLAGS="$TARGET_CFLAGS -mlong-calls"
906 fi
a29f317a
VS
907 AC_CACHE_CHECK([whether option -mthumb-interwork works], grub_cv_cc_mthumb_interwork, [
908 CFLAGS="$TARGET_CFLAGS -mthumb-interwork -Werror"
909 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
910 [grub_cv_cc_mthumb_interwork=yes],
911 [grub_cv_cc_mthumb_interwork=no])
912 ])
913 if test "x$grub_cv_cc_mthumb_interwork" = xyes; then
914 TARGET_CFLAGS="$TARGET_CFLAGS -mthumb-interwork"
915 elif test "x$grub_cv_cc_target_clang" = xno ; then
916 AC_MSG_ERROR([your compiler doesn't support -mthumb-interwork])
917 else
918 CFLAGS="$TARGET_CFLAGS"
919 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
920#if defined (__thumb__) && !defined (__thumb2__)
921#error thumb without interworking
922#endif
923]])],
924 [no_interwork_ok=yes],
925 [no_interwork_ok=no])
926 if test x$no_interwork_ok = xno ; then
927 AC_MSG_ERROR([attempt to compile to thumb with no thumb interwork])
928 fi
929 fi
41822625
VS
930fi
931
57bc5d43
VS
932AC_CACHE_CHECK([whether option -Qn works], grub_cv_target_cc_qn, [
933 CFLAGS="$TARGET_CFLAGS -Qn -Werror"
934 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
935 [grub_cv_target_cc_qn=yes],
936 [grub_cv_target_cc_qn=no])])
937if test "x$grub_cv_target_cc_qn" = xyes; then
938 TARGET_CFLAGS="$TARGET_CFLAGS -Qn"
939fi
940
baa2a121 941#
942# Compiler features.
943#
944
28668d80
VS
945CFLAGS="$TARGET_CFLAGS"
946
93a81088 947# Position independent executable.
948grub_CHECK_PIE
949[# Need that, because some distributions ship compilers that include
950# `-fPIE' in the default specs.
951if [ x"$pie_possible" = xyes ]; then
952 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIE"
953fi]
954
28668d80
VS
955CFLAGS="$TARGET_CFLAGS"
956
7bd8b0c7
VS
957# Position independent executable.
958grub_CHECK_PIC
9cf12b20
VS
959[# On most platforms we don't want PIC as it only makes relocations harder
960# and code less efficient. On mips we want to have one got table per module
961# and reload $gp in every function.
962# GCC implements it using symbol __gnu_local_gp in non-PIC as well.
963# However with clang we need PIC for this reloading to happen.
964# Since default varies across dictributions use either -fPIC or -fno-PIC
965# explicitly.
966if ( test x$target_cpu = xmips || test x$target_cpu = xmipsel ) && test "x$grub_cv_cc_target_clang" = xyes ; then
967 TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
968elif [ x"$pic_possible" = xyes ]; then
969 TARGET_CFLAGS="$TARGET_CFLAGS -fno-PIC"
7bd8b0c7
VS
970fi]
971
28668d80
VS
972CFLAGS="$TARGET_CFLAGS"
973
baa2a121 974# Smashing stack protector.
975grub_CHECK_STACK_PROTECTOR
c3db8364 976# Need that, because some distributions ship compilers that include
baa2a121 977# `-fstack-protector' in the default specs.
c3db8364 978if test "x$ssp_possible" = xyes; then
979 TARGET_CFLAGS="$TARGET_CFLAGS -fno-stack-protector"
980fi
28668d80
VS
981
982CFLAGS="$TARGET_CFLAGS"
983
2a8a80e4 984grub_CHECK_STACK_ARG_PROBE
985# Cygwin's GCC uses alloca() to probe the stackframe on static
986# stack allocations above some threshold.
987if test x"$sap_possible" = xyes; then
988 TARGET_CFLAGS="$TARGET_CFLAGS -mno-stack-arg-probe"
989fi
baa2a121 990
28668d80
VS
991CFLAGS="$TARGET_CFLAGS"
992
d74b9a1d 993# -mno-unaligned-access -mstrict-align
bb9f92b9 994if test "$target_cpu" = arm; then
d74b9a1d 995 AC_CACHE_CHECK([for compile options to get strict alignment], [grub_cv_target_cc_strict_align], [
bdb6090d 996 grub_cv_target_cc_strict_align=
d74b9a1d
VS
997 for arg in -mno-unaligned-access "-Xclang -mstrict-align" -mstrict-align; do
998 CFLAGS="$TARGET_CFLAGS $arg -Werror"
999 LDFLAGS="$TARGET_LDFLAGS"
1000 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [flag=1], [flag=0])
1001 if test x"$flag" = x1; then
1002 grub_cv_target_cc_strict_align="$arg"
4d94b2db 1003 break
d74b9a1d
VS
1004 fi
1005 done])
1006
d74b9a1d
VS
1007 TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_strict_align"
1008 if test x"$grub_cv_target_cc_strict_align" = x"-Xclang -mstrict-align"; then
1009 TARGET_LDFLAGS="$TARGET_LDFLAGS -Qunused-arguments"
bb9f92b9 1010 fi
bdb6090d
VS
1011 AC_CACHE_CHECK([if compiler generates unaligned accesses], [grub_cv_cc_target_emits_unaligned],
1012 [CFLAGS="$TARGET_CFLAGS"
1013 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
1014#ifdef __ARM_FEATURE_UNALIGNED
1015#error "unaligned"
1016#endif
1017 ]])],
1018 [grub_cv_cc_target_emits_unaligned=no], [grub_cv_cc_target_emits_unaligned=yes])])
1019 if test x$grub_cv_cc_target_emits_unaligned = xyes; then
1020 AC_MSG_ERROR([compiler generates unaligned accesses])
1021 fi
bb9f92b9
LL
1022fi
1023
aa6d7826 1024# Set them to their new values for the tests below.
1025CC="$TARGET_CC"
a9f25a08 1026if test "x$TARGET_APPLE_LINKER" = x1 ; then
246a434f 1027CFLAGS="$TARGET_CFLAGS -nostdlib -static -Wno-error"
26de2bcd 1028else
37378f74 1029CFLAGS="$TARGET_CFLAGS -nostdlib -Wno-error"
26de2bcd 1030fi
aa6d7826 1031CPPFLAGS="$TARGET_CPPFLAGS"
d5524ca8
VS
1032if test x$target_cpu = xi386 || test x$target_cpu = xx86_64 || test "x$grub_cv_cc_target_clang" = xyes ; then
1033TARGET_LIBGCC=
03f80960 1034else
d5524ca8 1035TARGET_LIBGCC=-lgcc
03f80960 1036fi
69be5b74 1037
d5524ca8
VS
1038LIBS="$TARGET_LIBGCC"
1039
01fcf061 1040grub_ASM_USCORE
a9f25a08 1041if test "x$TARGET_APPLE_LINKER" = x0 ; then
01fcf061 1042if test x$grub_cv_asm_uscore = xyes; then
37378f74 1043DEFSYM="-Wl,--defsym,_abort=_main -Wl,--defsym,__main=_main"
01fcf061 1044else
37378f74 1045DEFSYM="-Wl,--defsym,abort=main -Wl,--defsym,_main=main -Wl,--defsym,__main=main"
01fcf061 1046fi
37378f74 1047CFLAGS="$TARGET_CFLAGS -nostdlib $DEFSYM"
a9f25a08 1048fi
01fcf061 1049
69be5b74 1050# Check for libgcc symbols
6fcec439 1051AC_CHECK_FUNCS(__bswapsi2 __bswapdi2 __ashldi3 __ashrdi3 __lshrdi3 __ucmpdi2 _restgpr_14_x)
69be5b74 1052
a9f25a08 1053if test "x$TARGET_APPLE_LINKER" = x1 ; then
246a434f 1054CFLAGS="$TARGET_CFLAGS -nostdlib -static"
69be5b74 1055else
37378f74 1056CFLAGS="$TARGET_CFLAGS -nostdlib"
69be5b74 1057fi
42e0cba3 1058LIBS=""
aa6d7826 1059
6a161fa9 1060# Defined in aclocal.m4.
f6130a12 1061grub_PROG_TARGET_CC
a9f25a08 1062if test "x$TARGET_APPLE_LINKER" != x1 ; then
b977bf01 1063grub_PROG_OBJCOPY_ABSOLUTE
2b167a72 1064fi
cb71ba20 1065grub_PROG_LD_BUILD_ID_NONE
b977bf01 1066if test "x$target_cpu" = xi386; then
a9f25a08 1067 if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
2aec1692
CF
1068 if test ! -z "$TARGET_IMG_LDSCRIPT"; then
1069 # Check symbols provided by linker script.
37378f74 1070 CFLAGS="$TARGET_CFLAGS -nostdlib ${TARGET_IMG_LDFLAGS_AC} ${TARGET_IMG_BASE_LDOPT},0x8000"
2aec1692 1071 fi
2a8a80e4 1072 grub_CHECK_BSS_START_SYMBOL
1073 grub_CHECK_END_SYMBOL
1074 fi
1075 CFLAGS="$TARGET_CFLAGS"
4b13b216 1076 grub_I386_ASM_PREFIX_REQUIREMENT
1077 grub_I386_ASM_ADDR32
6a161fa9 1078fi
1079
20aea949
VS
1080grub_PROG_NM_WORKS
1081grub_PROG_NM_MINUS_P
1082grub_PROG_NM_DEFINED_ONLY
1083AC_SUBST(TARGET_NMFLAGS_MINUS_P)
1084AC_SUBST(TARGET_NMFLAGS_DEFINED_ONLY)
1085
016a671b 1086if test "$platform" != emu; then
8f9a632b
VS
1087AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
1088 SAVED_CPPFLAGS="$CPPFLAGS"
1089 CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1090 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
ce938140 1091#include <stddef.h>
8f9a632b
VS
1092int va_arg_func (int fixed, va_list args);]], [[]])],
1093 [grub_cv_cc_isystem=yes],
1094 [grub_cv_cc_isystem=no])
1095 CPPFLAGS="$SAVED_CPPFLAGS"
1096])
1097
1098if test x"$grub_cv_cc_isystem" = xyes ; then
1099 TARGET_CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
1100fi
dae79b6b 1101fi
5ce5507f 1102
19ce697d 1103AC_CACHE_CHECK([whether -Wtrampolines work], [grub_cv_cc_wtrampolines], [
24f4e57c 1104 CFLAGS="$TARGET_CFLAGS -Wtrampolines -Werror"
779dc15b
VS
1105 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
1106int va_arg_func (int fixed, va_list args);]], [[]])],
19ce697d
VS
1107 [grub_cv_cc_wtrampolines=yes],
1108 [grub_cv_cc_wtrampolines=no])
779dc15b
VS
1109])
1110
19ce697d
VS
1111if test x"$grub_cv_cc_wtrampolines" = xyes ; then
1112 TARGET_CFLAGS="$TARGET_CFLAGS -Wtrampolines"
779dc15b
VS
1113fi
1114
c9a86192 1115# Restore the flags.
9962ed99 1116CC="$tmp_CC"
1117CFLAGS="$tmp_CFLAGS"
1118CPPFLAGS="$tmp_CPPFLAGS"
c9a86192 1119LDFLAGS="$tmp_LDFLAGS"
aa6d7826 1120LIBS="$tmp_LIBS"
6a161fa9 1121
4fe9862e 1122#
2965c7cc 1123# Check for options.
4fe9862e 1124#
1125
1126# Memory manager debugging.
b39f9d20 1127AC_ARG_ENABLE([mm-debug],
2965c7cc 1128 AS_HELP_STRING([--enable-mm-debug],
90ce5d56 1129 [include memory manager debugging]),
2965c7cc 1130 [AC_DEFINE([MM_DEBUG], [1],
1131 [Define to 1 if you enable memory manager debugging.])])
1132
c5dc1690
SJ
1133AC_ARG_ENABLE([cache-stats],
1134 AS_HELP_STRING([--enable-cache-stats],
055e2b8b 1135 [enable disk cache statistics collection]))
c5dc1690
SJ
1136
1137if test x$enable_cache_stats = xyes; then
1138 DISK_CACHE_STATS=1
1139else
1140 DISK_CACHE_STATS=0
1141fi
1142AC_SUBST([DISK_CACHE_STATS])
1143
e744219b
VS
1144AC_ARG_ENABLE([boot-time],
1145 AS_HELP_STRING([--enable-boot-time],
1146 [enable boot time statistics collection]))
1147
1148if test x$enable_boot_time = xyes; then
1149 BOOT_TIME_STATS=1
1150else
1151 BOOT_TIME_STATS=0
1152fi
1153AC_SUBST([BOOT_TIME_STATS])
1154
d64399b5 1155AC_ARG_ENABLE([grub-emu-usb],
1156 [AS_HELP_STRING([--enable-grub-emu-usb],
5ce5507f 1157 [build and install the `grub-emu' debugging utility with USB support (default=guessed)])])
5ce5507f 1158
927d0134
VS
1159AC_ARG_ENABLE([grub-emu-sdl],
1160 [AS_HELP_STRING([--enable-grub-emu-sdl],
1161 [build and install the `grub-emu' debugging utility with SDL support (default=guessed)])])
1162
3affd0ec 1163AC_ARG_ENABLE([grub-emu-pci],
1164 [AS_HELP_STRING([--enable-grub-emu-pci],
1165 [build and install the `grub-emu' debugging utility with PCI support (potentially dangerous) (default=no)])])
1166
f84b481b 1167if test "$platform" = emu; then
f84b481b 1168
62a747cb
VS
1169if test x"$enable_grub_emu_usb" != xyes ; then
1170 grub_emu_usb_excuse="not enabled"
5ce5507f 1171fi
325c8258 1172
0e848909
VS
1173if test x"$enable_grub_emu_pci" = xyes ; then
1174 grub_emu_usb_excuse="conflicts with PCI support"
1175fi
1176
5ce5507f 1177[if [ x"$grub_emu_usb_excuse" = x ]; then
d64399b5 1178 # Check for libusb libraries.]
5ce5507f 1179AC_CHECK_LIB([usb], [usb_claim_interface], [LIBUSB="-lusb"],
e98cd0c2 1180 [grub_emu_usb_excuse=["need libusb library"]])
d64399b5 1181 AC_SUBST([LIBUSB])
5ce5507f 1182[fi]
1183[if [ x"$grub_emu_usb_excuse" = x ]; then
1184 # Check for headers.]
d64399b5 1185 AC_CHECK_HEADERS([usb.h], [],
e98cd0c2 1186 [grub_emu_usb_excuse=["need libusb headers"]])
4fe9862e 1187[fi]
c6f3b249 1188if test x"$enable_grub_emu_usb" = xyes && test x"$grub_emu_usb_excuse" != x ; then
d642d761 1189 AC_MSG_ERROR([USB support for grub-emu was explicitly requested but can't be compiled ($grub_emu_usb_excuse)])
5ce5507f 1190fi
1191if test x"$grub_emu_usb_excuse" = x ; then
1192enable_grub_emu_usb=yes
1193else
1194enable_grub_emu_usb=no
1195fi
1196
927d0134 1197if test x"$enable_grub_emu_sdl" = xno ; then
16f7455b 1198 grub_emu_sdl_excuse="explicitly disabled"
927d0134
VS
1199fi
1200[if [ x"$grub_emu_sdl_excuse" = x ]; then
1201 # Check for libSDL libraries.]
1202AC_CHECK_LIB([SDL], [SDL_Init], [LIBSDL="-lSDL"],
1203 [grub_emu_sdl_excuse=["libSDL libraries are required to build \`grub-emu' with SDL support"]])
1204 AC_SUBST([LIBSDL])
1205[fi]
9f293ab0 1206
927d0134
VS
1207[if [ x"$grub_emu_sdl_excuse" = x ]; then
1208 # Check for headers.]
1209 AC_CHECK_HEADERS([SDL/SDL.h], [],
1210 [grub_emu_sdl_excuse=["libSDL header file is required to build \`grub-emu' with SDL support"]])
1211[fi]
9f293ab0 1212
927d0134 1213if test x"enable_grub_emu_sdl" = xyes && test x"$grub_emu_sdl_excuse" != x ; then
16f7455b 1214 AC_MSG_ERROR([SDL support for grub-emu was explicitly requested but can't be compiled ($grub_emu_sdl_excuse)])
927d0134
VS
1215fi
1216if test x"$grub_emu_sdl_excuse" = x ; then
1217enable_grub_emu_sdl=yes
1218else
1219enable_grub_emu_sdl=no
1220fi
1221
3affd0ec 1222if test x"$enable_grub_emu_pci" != xyes ; then
325c8258 1223 grub_emu_pci_excuse="not enabled"
1224fi
1225
1226if test x"$enable_grub_emu_usb" = xyes ; then
1227 grub_emu_pci_excuse="conflicts with USB support"
1228fi
1229
1230[if [ x"$grub_emu_pci_excuse" = x ]; then
1231 # Check for libpci libraries.]
459fed4b 1232 AC_CHECK_LIB([pciaccess], [pci_system_init], [LIBPCIACCESS="-lpciaccess"],
1233 [grub_emu_pci_excuse=["need libpciaccess library"]])
1234 AC_SUBST([LIBPCIACCESS])
325c8258 1235[fi]
1236[if [ x"$grub_emu_pci_excuse" = x ]; then
1237 # Check for headers.]
1238 AC_CHECK_HEADERS([pci/pci.h], [],
459fed4b 1239 [grub_emu_pci_excuse=["need libpciaccess headers"]])
325c8258 1240[fi]
1241
1242if test x"$grub_emu_pci_excuse" = x ; then
1243enable_grub_emu_pci=yes
1244else
9f293ab0 1245
325c8258 1246enable_grub_emu_pci=no
3affd0ec 1247fi
1248
927d0134 1249AC_SUBST([enable_grub_emu_sdl])
d64399b5 1250AC_SUBST([enable_grub_emu_usb])
3affd0ec 1251AC_SUBST([enable_grub_emu_pci])
e7d09ac4
AB
1252
1253else
1254
1255# Ignore --enable-emu-* if platform is not emu
1256enable_grub_emu_sdl=no
1257enable_grub_emu_usb=no
1258enable_grub_emu_pci=no
f84b481b 1259fi
4fe9862e 1260
e52db1f7 1261AC_ARG_ENABLE([grub-mkfont],
1262 [AS_HELP_STRING([--enable-grub-mkfont],
5ce5507f 1263 [build and install the `grub-mkfont' utility (default=guessed)])])
1264if test x"$enable_grub_mkfont" = xno ; then
ce7a733d 1265 grub_mkfont_excuse="explicitly disabled"
5ce5507f 1266fi
1267
1268if test x"$grub_mkfont_excuse" = x ; then
e52db1f7 1269 # Check for freetype libraries.
a5b55c4b 1270 AC_CHECK_TOOLS([FREETYPE], [freetype-config])
e52db1f7 1271 if test "x$FREETYPE" = x ; then
e98cd0c2 1272 grub_mkfont_excuse=["need freetype2 library"]
e52db1f7 1273 fi
e52db1f7 1274fi
660960d6 1275
7b780018
VS
1276unset ac_cv_header_ft2build_h
1277
660960d6
VS
1278if test x"$grub_mkfont_excuse" = x ; then
1279 # Check for freetype libraries.
a5b55c4b
DM
1280 freetype_cflags=`$FREETYPE --cflags`
1281 freetype_libs=`$FREETYPE --libs`
d1e8a02f 1282 SAVED_CPPFLAGS="$CPPFLAGS"
b75db69a 1283 SAVED_LIBS="$LIBS"
d1e8a02f 1284 CPPFLAGS="$CPPFLAGS $freetype_cflags"
b75db69a 1285 LIBS="$LIBS $freetype_libs"
660960d6
VS
1286 AC_CHECK_HEADERS([ft2build.h], [],
1287 [grub_mkfont_excuse=["need freetype2 headers"]])
b75db69a 1288 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
d1e8a02f 1289 CPPFLAGS="$SAVED_CPPFLAGS"
b75db69a 1290 LIBS="$SAVED_LIBS"
660960d6
VS
1291fi
1292
5ce5507f 1293if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
d642d761 1294 AC_MSG_ERROR([grub-mkfont was explicitly requested but can't be compiled ($grub_mkfont_excuse)])
5ce5507f 1295fi
1296if test x"$grub_mkfont_excuse" = x ; then
1297enable_grub_mkfont=yes
1298else
1299enable_grub_mkfont=no
1300fi
e52db1f7 1301AC_SUBST([enable_grub_mkfont])
1302AC_SUBST([freetype_cflags])
1303AC_SUBST([freetype_libs])
1304
7c9d0c39 1305SAVED_CC="$CC"
b224c266 1306SAVED_CPP="$CPP"
7c9d0c39
VS
1307SAVED_CFLAGS="$CFLAGS"
1308SAVED_CPPFLAGS="$CPPFLAGS"
dcecae1a 1309SAVED_LDFLAGS="$LDFLAGS"
7c9d0c39 1310CC="$BUILD_CC"
b224c266 1311CPP="$BUILD_CPP"
7c9d0c39 1312CFLAGS="$BUILD_CFLAGS"
7b780018 1313CPPFLAGS="$BUILD_CPPFLAGS"
dcecae1a 1314LDFLAGS="$BUILD_LDFAGS"
7b780018
VS
1315
1316unset ac_cv_c_bigendian
1317unset ac_cv_header_ft2build_h
1318
1319AC_COMPUTE_INT([BUILD_SIZEOF_VOID_P], [sizeof (void *)])
1320AC_COMPUTE_INT([BUILD_SIZEOF_LONG], [sizeof (long)])
1321AC_C_BIGENDIAN([BUILD_WORDS_BIGENDIAN=1], [BUILD_WORDS_BIGENDIAN=0], [BUILD_WORDS_BIGENDIAN=err], [BUILD_WORDS_BIGENDIAN=err])
1322
1323if test x$BUILD_WORDS_BIGENDIAN = xerr ; then
1324 AC_MSG_ERROR([couldnt determine build endianness])
1325fi
1326
1327AC_SUBST([BUILD_SIZEOF_LONG])
1328AC_SUBST([BUILD_SIZEOF_VOID_P])
1329AC_SUBST([BUILD_WORDS_BIGENDIAN])
c5884973 1330
7c9d0c39
VS
1331if test x"$grub_build_mkfont_excuse" = x ; then
1332 # Check for freetype libraries.
7b780018 1333 AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
7c9d0c39
VS
1334 if test "x$BUILD_FREETYPE" = x ; then
1335 grub_build_mkfont_excuse=["need freetype2 library"]
1336 fi
1337fi
c5884973 1338
7c9d0c39
VS
1339if test x"$grub_build_mkfont_excuse" = x ; then
1340 # Check for freetype libraries.
1341 build_freetype_cflags=`$BUILD_FREETYPE --cflags`
1342 build_freetype_libs=`$BUILD_FREETYPE --libs`
1343 SAVED_CPPFLAGS_2="$CPPFLAGS"
b75db69a 1344 SAVED_LIBS="$LIBS"
7c9d0c39 1345 CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
b75db69a 1346 LIBS="$LIBS $build_freetype_libs"
7c9d0c39
VS
1347 AC_CHECK_HEADERS([ft2build.h], [],
1348 [grub_build_mkfont_excuse=["need freetype2 headers"]])
b75db69a
VS
1349 AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
1350 LIBS="$SAVED_LIBS"
7c9d0c39
VS
1351 CPPFLAGS="$SAVED_CPPFLAGS_2"
1352fi
1353
1354if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
d642d761 1355 AC_MSG_ERROR([build-grub-mkfont was explicitly requested but can't be compiled ($grub_build_mkfont_excuse)])
7c9d0c39
VS
1356fi
1357if test x"$grub_build_mkfont_excuse" = x ; then
1358 enable_build_grub_mkfont=yes
1359else
1360 enable_build_grub_mkfont=no
c5884973 1361fi
72c9a507 1362if 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
1363 if test x"$grub_build_mkfont_excuse" = x ; then
1364 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont])
1365 else
1366 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports needs build-time grub-mkfont ($grub_build_mkfont_excuse)])
1367 fi
7c9d0c39
VS
1368fi
1369
1370AC_SUBST([build_freetype_cflags])
1371AC_SUBST([build_freetype_libs])
1372
1373CC="$SAVED_CC"
b224c266 1374CPP="$SAVED_CPP"
7c9d0c39
VS
1375CFLAGS="$SAVED_CFLAGS"
1376CPPFLAGS="$SAVED_CPPFLAGS"
dcecae1a 1377LDFLAGS="$SAVED_LDFLAGS"
7c9d0c39
VS
1378
1379
1380DJVU_FONT_SOURCE=
1381
1382starfield_excuse=
c5884973 1383
300f48c5
VS
1384AC_ARG_ENABLE([grub-themes],
1385 [AS_HELP_STRING([--enable-grub-themes],
1386 [build and install GRUB themes (default=guessed)])])
1387if test x"$enable_grub_themes" = xno ; then
1388 starfield_excuse="explicitly disabled"
1389fi
1390
1391if test x"$starfield_excuse" = x && test x"$enable_build_grub_mkfont" = xno ; then
7b966834
VS
1392 starfield_excuse="No build-time grub-mkfont"
1393fi
1394
501b9e4b 1395if test x"$starfield_excuse" = x; then
c5884973 1396 for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
36387ece 1397 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
1398 if test -f "$dir/DejaVuSans.$ext"; then
1399 DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
1400 break 2
1401 fi
1402 done
1403 done
1404
1405 if test "x$DJVU_FONT_SOURCE" = x; then
1406 starfield_excuse="No DejaVu found"
1407 fi
1408fi
1409
300f48c5 1410if test x"$enable_grub_themes" = xyes && test x"$starfield_excuse" != x; then
d642d761 1411 AC_MSG_ERROR([themes were explicitly requested but requirements are not satisfied ($starfield_excuse)])
300f48c5
VS
1412fi
1413
c5884973
DO
1414AC_SUBST([DJVU_FONT_SOURCE])
1415
7c9d0c39
VS
1416FONT_SOURCE=
1417
1418for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
1419 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
1420 if test -f "$dir/unifont.$ext"; then
0277eab7
VS
1421 md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')"
1422 # PCF and BDF from version 6.3 isn't hanled properly by libfreetype.
1423 if test "$md5" = 0a54834d2788c83886a3e1785a6a1e61 || test "$md5" = 28f2565c7a41d8d407e2551159385edb || test "$md5" = dae5e588461b3b92b87b6ffee734f936 || test "$md5" = 4a3d687aa5bb329ed05f4263a1016791 ; then
4d94b2db 1424 continue
0277eab7 1425 fi
7c9d0c39
VS
1426 FONT_SOURCE="$dir/unifont.$ext"
1427 break 2
1428 fi
1429 done
1430done
1431
7b966834
VS
1432if test x"$enable_build_grub_mkfont" = xno ; then
1433 FONT_SOURCE=
1434fi
1435
72c9a507 1436if 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
1437 if test x"$grub_build_mkfont_excuse" = x ; then
1438 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont])
1439 else
1440 AC_MSG_ERROR([qemu, powerpc-ieee1275, coreboot and loongson ports need unifont ($grub_build_mkfont_excuse)])
1441 fi
7c9d0c39
VS
1442fi
1443
1444AC_SUBST([FONT_SOURCE])
1445
7b780018 1446if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x && test x"$grub_build_mkfont_excuse" = x; then
7c9d0c39
VS
1447 grub_build_mkfont_excuse="no fonts"
1448fi
1449
1450
897e6207
CW
1451AC_ARG_ENABLE([grub-mount],
1452 [AS_HELP_STRING([--enable-grub-mount],
1453 [build and install the `grub-mount' utility (default=guessed)])])
1454if test x"$enable_grub_mount" = xno ; then
1455 grub_mount_excuse="explicitly disabled"
92bb0786
VS
1456fi
1457
897e6207 1458if test x"$grub_mount_excuse" = x ; then
92bb0786 1459 AC_CHECK_LIB([fuse], [fuse_main_real], [],
897e6207 1460 [grub_mount_excuse="need FUSE library"])
92bb0786
VS
1461fi
1462
897e6207 1463if test x"$grub_mount_excuse" = x ; then
92bb0786
VS
1464 # Check for fuse headers.
1465 SAVED_CPPFLAGS="$CPPFLAGS"
338c7fab 1466 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26"
92bb0786 1467 AC_CHECK_HEADERS([fuse/fuse.h], [],
897e6207 1468 [grub_mount_excuse=["need FUSE headers"]])
92bb0786
VS
1469 CPPFLAGS="$SAVED_CPPFLAGS"
1470fi
1471
897e6207 1472if test x"$enable_grub_mount" = xyes && test x"$grub_mount_excuse" != x ; then
d642d761 1473 AC_MSG_ERROR([grub-mount was explicitly requested but can't be compiled ($grub_mount_excuse)])
92bb0786 1474fi
897e6207
CW
1475if test x"$grub_mount_excuse" = x ; then
1476enable_grub_mount=yes
92bb0786 1477else
897e6207 1478enable_grub_mount=no
92bb0786 1479fi
897e6207 1480AC_SUBST([enable_grub_mount])
92bb0786 1481
7181e228
CW
1482AC_ARG_ENABLE([device-mapper],
1483 [AS_HELP_STRING([--enable-device-mapper],
1484 [enable Linux device-mapper support (default=guessed)])])
1485if test x"$enable_device_mapper" = xno ; then
1486 device_mapper_excuse="explicitly disabled"
1487fi
1488
53798c4b
GS
1489if test x"$device_mapper_excuse" = x ; then
1490 # Check for device-mapper header.
1491 AC_CHECK_HEADER([libdevmapper.h], [],
1492 [device_mapper_excuse="need libdevmapper header"])
1493fi
1494
7181e228
CW
1495if test x"$device_mapper_excuse" = x ; then
1496 # Check for device-mapper library.
61d720e5 1497 AC_CHECK_LIB([devmapper], [dm_task_create], [],
7181e228 1498 [device_mapper_excuse="need devmapper library"])
7181e228 1499fi
61d720e5
VS
1500
1501if test x"$device_mapper_excuse" = x ; then
1502 # Check for device-mapper library.
1503 AC_CHECK_LIB([devmapper], [dm_log_with_errno_init],
1504 [],
1505 [device_mapper_excuse="need devmapper library"])
1506fi
1507
1508if test x"$device_mapper_excuse" = x ; then
4d94b2db 1509 LIBDEVMAPPER="-ldevmapper"
61d720e5
VS
1510 AC_DEFINE([HAVE_DEVICE_MAPPER], [1],
1511 [Define to 1 if you have the devmapper library.])
1512fi
1513
62f7d208 1514AC_SUBST([LIBDEVMAPPER])
76ed06b9 1515
f4727da9
VS
1516LIBGEOM=
1517if test x$host_kernel = xkfreebsd; then
1518 AC_CHECK_LIB([geom], [geom_gettree], [],
1519 [AC_MSG_ERROR([Your platform requires libgeom])])
1520 LIBGEOM="-lgeom"
1521fi
1522
1523AC_SUBST([LIBGEOM])
1524
0d2d30bb
VS
1525AC_ARG_ENABLE([liblzma],
1526 [AS_HELP_STRING([--enable-liblzma],
1527 [enable liblzma integration (default=guessed)])])
1528if test x"$enable_liblzma" = xno ; then
1529 liblzma_excuse="explicitly disabled"
1530fi
1531
1532if test x"$liblzma_excuse" = x ; then
2c44e493 1533AC_CHECK_LIB([lzma], [lzma_code],
0d2d30bb
VS
1534 [],[liblzma_excuse="need lzma library"])
1535fi
1536if test x"$liblzma_excuse" = x ; then
1537AC_CHECK_HEADER([lzma.h], [], [liblzma_excuse="need lzma header"])
1538fi
1539
1540if test x"$enable_liblzma" = xyes && test x"$liblzma_excuse" != x ; then
d642d761 1541 AC_MSG_ERROR([liblzma support was explicitly requested but requirements are not satisfied ($liblzma_excuse)])
0d2d30bb
VS
1542fi
1543
1544
1545if test x"$liblzma_excuse" = x ; then
1546 LIBLZMA="-llzma"
1547 AC_DEFINE([USE_LIBLZMA], [1],
1548 [Define to 1 if you have the LZMA library.])
1549fi
1550
2c44e493
VS
1551AC_SUBST([LIBLZMA])
1552
e4c498a1
MG
1553AC_ARG_ENABLE([libzfs],
1554 [AS_HELP_STRING([--enable-libzfs],
1555 [enable libzfs integration (default=guessed)])])
1556if test x"$enable_libzfs" = xno ; then
1557 libzfs_excuse="explicitly disabled"
1558fi
16c7cb32 1559
e4c498a1
MG
1560if test x"$libzfs_excuse" = x ; then
1561 # Only check for system headers if libzfs support has not been disabled.
1562 AC_CHECK_HEADERS(libzfs.h libnvpair.h)
1563fi
1564
1565if test x"$libzfs_excuse" = x ; then
1566 AC_CHECK_LIB([zfs], [libzfs_init],
1567 [],
1568 [libzfs_excuse="need zfs library"])
1569fi
1570
1571if test x"$libzfs_excuse" = x ; then
27f9d02e 1572 AC_CHECK_LIB([nvpair], [nvlist_lookup_string],
e4c498a1
MG
1573 [],
1574 [libzfs_excuse="need nvpair library"])
1575fi
1576
1577if test x"$enable_libzfs" = xyes && test x"$libzfs_excuse" != x ; then
d642d761 1578 AC_MSG_ERROR([libzfs support was explicitly requested but requirements are not satisfied ($libzfs_excuse)])
e4c498a1
MG
1579fi
1580
1581if test x"$libzfs_excuse" = x ; then
1582 # We need both libzfs and libnvpair for a successful build.
1583 LIBZFS="-lzfs"
1584 AC_DEFINE([HAVE_LIBZFS], [1],
1585 [Define to 1 if you have the ZFS library.])
1586 LIBNVPAIR="-lnvpair"
1587 AC_DEFINE([HAVE_LIBNVPAIR], [1],
1588 [Define to 1 if you have the NVPAIR library.])
1589fi
1590
1591AC_SUBST([LIBZFS])
16c7cb32
BC
1592AC_SUBST([LIBNVPAIR])
1593
9f915872
VS
1594LIBS=""
1595
76ed06b9 1596AC_SUBST([FONT_SOURCE])
76ed06b9
BC
1597AS_IF([test x$target_cpu = xi386 -a x$platform = xqemu],
1598 [AC_SUBST([GRUB_BOOT_MACHINE_LINK_ADDR], 0xffe00)])
7181e228 1599
742f9232
VS
1600AC_SUBST(HAVE_ASM_USCORE)
1601AC_SUBST(ADDR32)
1602AC_SUBST(DATA32)
1603AC_SUBST(BSS_START_SYMBOL)
1604AC_SUBST(END_SYMBOL)
1605AC_SUBST(PACKAGE)
1606AC_SUBST(VERSION)
742f9232 1607
d5524ca8
VS
1608AC_ARG_ENABLE([werror],
1609 [AS_HELP_STRING([--disable-werror],
1610 [do not use -Werror when building GRUB])])
1611if test x"$enable_werror" != xno ; then
1612 TARGET_CFLAGS="$TARGET_CFLAGS -Werror"
1613 HOST_CFLAGS="$HOST_CFLAGS -Werror"
1614fi
1615
1616if test "x$grub_cv_cc_target_clang" = xno; then
1617 TARGET_LDFLAGS_STATIC_LIBGCC="-static-libgcc"
1618else
1619 TARGET_LDFLAGS_STATIC_LIBGCC=
1620fi
1621
1622TARGET_CPP="$TARGET_CC -E"
1623TARGET_CCAS=$TARGET_CC
1624
1625GRUB_TARGET_CPU="${target_cpu}"
1626GRUB_PLATFORM="${platform}"
1627
1628AC_SUBST(GRUB_TARGET_CPU)
1629AC_SUBST(GRUB_PLATFORM)
1630
1631AC_SUBST(TARGET_OBJCONV)
1632AC_SUBST(TARGET_LIBGCC)
1633AC_SUBST(TARGET_LDFLAGS_STATIC_LIBGCC)
1634AC_SUBST(TARGET_CPP)
1635AC_SUBST(TARGET_CCAS)
1636AC_SUBST(TARGET_OBJ2ELF)
d5524ca8 1637AC_SUBST(TARGET_MODULE_FORMAT)
6a7957f9 1638AC_SUBST(TARGET_CC_VERSION)
d5524ca8
VS
1639
1640AC_SUBST(TARGET_CFLAGS)
1641AC_SUBST(TARGET_LDFLAGS)
1642AC_SUBST(TARGET_CPPFLAGS)
1643AC_SUBST(TARGET_CCASFLAGS)
1644
d5524ca8
VS
1645AC_SUBST(TARGET_IMG_LDFLAGS)
1646AC_SUBST(TARGET_IMG_CFLAGS)
1647AC_SUBST(TARGET_IMG_BASE_LDOPT)
a9f25a08 1648AC_SUBST(TARGET_APPLE_LINKER)
d5524ca8
VS
1649
1650AC_SUBST(HOST_CFLAGS)
1651AC_SUBST(HOST_LDFLAGS)
1652AC_SUBST(HOST_CPPFLAGS)
1653AC_SUBST(HOST_CCASFLAGS)
1654
1655AC_SUBST(BUILD_LIBM)
1656
76ed06b9
BC
1657#
1658# Automake conditionals
1659#
8c411768 1660
5d90f6e5 1661AM_CONDITIONAL([COND_real_platform], [test x$platform != xnone])
76ed06b9 1662AM_CONDITIONAL([COND_emu], [test x$platform = xemu])
d59849b2 1663AM_CONDITIONAL([COND_clang], [test x$grub_cv_cc_target_clang = xyes])
76ed06b9
BC
1664AM_CONDITIONAL([COND_i386_pc], [test x$target_cpu = xi386 -a x$platform = xpc])
1665AM_CONDITIONAL([COND_i386_efi], [test x$target_cpu = xi386 -a x$platform = xefi])
6585de4c 1666AM_CONDITIONAL([COND_ia64_efi], [test x$target_cpu = xia64 -a x$platform = xefi])
76ed06b9
BC
1667AM_CONDITIONAL([COND_i386_qemu], [test x$target_cpu = xi386 -a x$platform = xqemu])
1668AM_CONDITIONAL([COND_i386_ieee1275], [test x$target_cpu = xi386 -a x$platform = xieee1275])
1669AM_CONDITIONAL([COND_i386_coreboot], [test x$target_cpu = xi386 -a x$platform = xcoreboot])
1670AM_CONDITIONAL([COND_i386_multiboot], [test x$target_cpu = xi386 -a x$platform = xmultiboot])
1671AM_CONDITIONAL([COND_x86_64_efi], [test x$target_cpu = xx86_64 -a x$platform = xefi])
9612ebc0
VS
1672AM_CONDITIONAL([COND_i386_xen], [test x$target_cpu = xi386 -a x$platform = xxen])
1673AM_CONDITIONAL([COND_x86_64_xen], [test x$target_cpu = xx86_64 -a x$platform = xxen])
4959e111
VS
1674AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a x$platform = xloongson])
1675AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
7f63a64f 1676AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu = xmipsel ")" -a x$platform = xarc])
76ed06b9 1677AM_CONDITIONAL([COND_sparc64_ieee1275], [test x$target_cpu = xsparc64 -a x$platform = xieee1275])
eaf01c25 1678AM_CONDITIONAL([COND_sparc64_emu], [test x$target_cpu = xsparc64 -a x$platform = xemu])
76ed06b9 1679AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a x$platform = xieee1275])
4959e111 1680AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o x$target_cpu = xmipsel])
37ba07eb
VS
1681AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
1682AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
389b31cd
LL
1683AM_CONDITIONAL([COND_arm], [test x$target_cpu = xarm ])
1684AM_CONDITIONAL([COND_arm_uboot], [test x$target_cpu = xarm -a x$platform = xuboot])
1685AM_CONDITIONAL([COND_arm_efi], [test x$target_cpu = xarm -a x$platform = xefi])
15a463d7
LL
1686AM_CONDITIONAL([COND_arm64], [test x$target_cpu = xarm64 ])
1687AM_CONDITIONAL([COND_arm64_efi], [test x$target_cpu = xarm64 -a x$platform = xefi])
f7711f5e 1688
faf4a65e
VS
1689AM_CONDITIONAL([COND_HOST_HURD], [test x$host_kernel = xhurd])
1690AM_CONDITIONAL([COND_HOST_LINUX], [test x$host_kernel = xlinux])
1691AM_CONDITIONAL([COND_HOST_NETBSD], [test x$host_kernel = xnetbsd])
f7711f5e 1692AM_CONDITIONAL([COND_HOST_WINDOWS], [test x$host_kernel = xwindows])
faf4a65e
VS
1693AM_CONDITIONAL([COND_HOST_KFREEBSD], [test x$host_kernel = xkfreebsd])
1694AM_CONDITIONAL([COND_HOST_XNU], [test x$host_kernel = xxnu])
1695AM_CONDITIONAL([COND_HOST_ILLUMOS], [test x$host_kernel = xillumos])
2d465fb0 1696
76ed06b9
BC
1697AM_CONDITIONAL([COND_MAN_PAGES], [test x$cross_compiling = xno -a x$HELP2MAN != x])
1698AM_CONDITIONAL([COND_GRUB_EMU_USB], [test x$enable_grub_emu_usb = xyes])
1699AM_CONDITIONAL([COND_GRUB_EMU_SDL], [test x$enable_grub_emu_sdl = xyes])
1700AM_CONDITIONAL([COND_GRUB_EMU_PCI], [test x$enable_grub_emu_pci = xyes])
1701AM_CONDITIONAL([COND_GRUB_MKFONT], [test x$enable_grub_mkfont = xyes])
897e6207 1702AM_CONDITIONAL([COND_GRUB_MOUNT], [test x$enable_grub_mount = xyes])
76ed06b9 1703AM_CONDITIONAL([COND_HAVE_FONT_SOURCE], [test x$FONT_SOURCE != x])
6f07c4e4
VS
1704if test x$FONT_SOURCE != x ; then
1705 HAVE_FONT_SOURCE=1
1706else
1707 HAVE_FONT_SOURCE=0
1708fi
1709AC_SUBST(HAVE_FONT_SOURCE)
a9f25a08 1710AM_CONDITIONAL([COND_APPLE_LINKER], [test x$TARGET_APPLE_LINKER = x1])
76ed06b9 1711AM_CONDITIONAL([COND_ENABLE_EFIEMU], [test x$enable_efiemu = xyes])
c5dc1690 1712AM_CONDITIONAL([COND_ENABLE_CACHE_STATS], [test x$DISK_CACHE_STATS = x1])
e744219b 1713AM_CONDITIONAL([COND_ENABLE_BOOT_TIME_STATS], [test x$BOOT_TIME_STATS = x1])
fc45fb58 1714
1eed0e6e
VS
1715AM_CONDITIONAL([COND_HAVE_CXX], [test x$HAVE_CXX = xyes])
1716
742f9232 1717AM_CONDITIONAL([COND_HAVE_ASM_USCORE], [test x$HAVE_ASM_USCORE = x1])
c5884973 1718AM_CONDITIONAL([COND_STARFIELD], [test "x$starfield_excuse" = x])
cd46aa6c
VS
1719AM_CONDITIONAL([COND_HAVE_EXEC], [test "x$have_exec" = xy])
1720
1721test "x$prefix" = xNONE && prefix="$ac_default_prefix"
1722test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
1723datarootdir="$(eval echo "$datarootdir")"
1724grub_libdir="$(eval echo "$libdir")"
1725grub_localedir="$(eval echo "$localedir")"
1726grub_datadir="$(eval echo "$datadir")"
1727grub_sysconfdir="$(eval echo "$sysconfdir")"
1728AC_DEFINE_UNQUOTED(LOCALEDIR, "$grub_localedir", [Locale dir])
1729AC_DEFINE_UNQUOTED(GRUB_LIBDIR, "$grub_libdir", [Library dir])
1730AC_DEFINE_UNQUOTED(GRUB_DATADIR, "$grub_datadir", [Data dir])
1731AC_DEFINE_UNQUOTED(GRUB_SYSCONFDIR, "$grub_sysconfdir", [Configuration dir])
1732
742f9232 1733
6a161fa9 1734# Output files.
5d90f6e5
CW
1735if test "$platform" != none; then
1736 cpudir="${target_cpu}"
1737 if test x${cpudir} = xmipsel; then
1738 cpudir=mips;
f84b481b 1739 fi
5d90f6e5
CW
1740 grub_CHECK_LINK_DIR
1741 if test x"$link_dir" = xyes ; then
1742 AC_CONFIG_LINKS([include/grub/cpu:include/grub/$cpudir])
1743 if test "$platform" != emu ; then
1744 AC_CONFIG_LINKS([include/grub/machine:include/grub/$cpudir/$platform])
1745 fi
1746 else
1747 mkdir -p include/grub 2>/dev/null
1748 rm -rf include/grub/cpu
1749 cp -rp $srcdir/include/grub/$cpudir include/grub/cpu 2>/dev/null
1750 if test "$platform" != emu ; then
1751 rm -rf include/grub/machine
1752 cp -rp $srcdir/include/grub/$cpudir/$platform include/grub/machine 2>/dev/null
1753 fi
f84b481b 1754 fi
5d90f6e5
CW
1755else
1756 # Just enough to stop the compiler failing with -I$(srcdir)/include.
1757 mkdir -p include 2>/dev/null
1758 rm -rf include/grub
1f4147aa 1759fi
6304d292 1760
8c411768 1761AC_CONFIG_FILES([Makefile])
6304d292 1762AC_CONFIG_FILES([grub-core/Makefile])
15c69261 1763AC_CONFIG_FILES([grub-core/gnulib/Makefile])
269004c1 1764AC_CONFIG_FILES([po/Makefile.in])
8c411768 1765AC_CONFIG_FILES([docs/Makefile])
b23ffd70 1766AC_CONFIG_FILES([util/bash-completion.d/Makefile])
6a161fa9 1767AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
742f9232 1768AC_CONFIG_FILES([config.h])
8c411768 1769
6a161fa9 1770AC_OUTPUT
5ce5507f 1771[
1772echo "*******************************************************"
1773echo GRUB2 will be compiled with following components:
1774echo Platform: "$target_cpu"-"$platform"
f84b481b 1775if [ x"$platform" = xemu ]; then
5ce5507f 1776if [ x"$grub_emu_usb_excuse" = x ]; then
1777echo USB support for grub-emu: Yes
1778else
1779echo USB support for grub-emu: No "($grub_emu_usb_excuse)"
1780fi
927d0134
VS
1781if [ x"$grub_emu_sdl_excuse" = x ]; then
1782echo SDL support for grub-emu: Yes
1783else
1784echo SDL support for grub-emu: No "($grub_emu_sdl_excuse)"
1785fi
325c8258 1786if [ x"$grub_emu_pci_excuse" = x ]; then
1787echo PCI support for grub-emu: Yes
1788else
1789echo PCI support for grub-emu: No "($grub_emu_pci_excuse)"
1790fi
f84b481b 1791fi
61d720e5
VS
1792if test x"$device_mapper_excuse" = x ; then
1793echo With devmapper support: Yes
1794else
1795echo With devmapper support: No "($device_mapper_excuse)"
1796fi
5ce5507f 1797if [ x"$enable_mm_debug" = xyes ]; then
1798echo With memory debugging: Yes
1799else
1800echo With memory debugging: No
1801fi
c5dc1690
SJ
1802if [ x"$enable_cache_stats" = xyes ]; then
1803echo With disk cache statistics: Yes
1804else
1805echo With disk cache statistics: No
1806fi
e744219b
VS
1807
1808if [ x"$enable_boot_time" = xyes ]; then
1809echo With boot time statistics: Yes
1810else
1811echo With boot time statistics: No
1812fi
1813
5ce5507f 1814if [ x"$efiemu_excuse" = x ]; then
1815echo efiemu runtime: Yes
1816else
1817echo efiemu runtime: No "($efiemu_excuse)"
1818fi
5ce5507f 1819if [ x"$grub_mkfont_excuse" = x ]; then
1820echo grub-mkfont: Yes
1821else
1822echo grub-mkfont: No "($grub_mkfont_excuse)"
1823fi
897e6207 1824if [ x"$grub_mount_excuse" = x ]; then
89644ef1 1825echo grub-mount: Yes
92bb0786 1826else
897e6207 1827echo grub-mount: No "($grub_mount_excuse)"
92bb0786 1828fi
c5884973
DO
1829if [ x"$starfield_excuse" = x ]; then
1830echo starfield theme: Yes
443b3222 1831echo With DejaVuSans font from $DJVU_FONT_SOURCE
c5884973
DO
1832else
1833echo starfield theme: No "($starfield_excuse)"
1834fi
e4c498a1
MG
1835if [ x"$libzfs_excuse" = x ]; then
1836echo With libzfs support: Yes
1837else
1838echo With libzfs support: No "($libzfs_excuse)"
1839fi
7b780018 1840if [ x"$grub_build_mkfont_excuse" = x ]; then
7c9d0c39
VS
1841 echo Build-time grub-mkfont: Yes
1842 if test "x$FONT_SOURCE" = x ; then
1843 echo "Without unifont"
1844 else
1845 echo "With unifont from $FONT_SOURCE"
1846 fi
4b80e43c 1847else
7b780018 1848 echo Build-time grub-mkfont: No "($grub_build_mkfont_excuse)"
7c9d0c39 1849 echo "Without unifont (no build-time grub-mkfont)"
4b80e43c 1850fi
0d2d30bb
VS
1851if test x"$liblzma_excuse" != x ; then
1852echo "Without liblzma (no support for XZ-compressed mips images) ($liblzma_excuse)"
64fce2d8
VS
1853else
1854echo "With liblzma from $LIBLZMA (support for XZ-compressed mips images)"
1855fi
5ce5507f 1856echo "*******************************************************"
1857]