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