~ubuntu-branches/ubuntu/utopic/grub2/utopic-proposed

« back to all changes in this revision

Viewing changes to .pc/ppc64el-skip-libgcc.patch/configure.ac

  • Committer: Package Import Robot
  • Author(s): Colin Watson, Colin Watson, Ian Campbell
  • Date: 2014-09-19 15:19:26 UTC
  • Revision ID: package-import@ubuntu.com-20140919151926-rcdir1d6f4hs1lra
Tags: 2.02~beta2-12
[ Colin Watson ]
* Point Vcs-* fields back at master.
* Support grub-emu on x32 (closes: #760428).
* Adjust packaging for x32:
  - Build-depend on cpio on x32 as well.
  - Make grub-efi-ia32-bin and grub-efi-amd64-bin depend on efibootmgr on
    any Linux architecture for which they are built (in practice, adding
    x32).
  - Build grub-mount-udeb on x32 as well.
  - Add Lintian binary-from-other-architecture overrides where
    appropriate.
* Apply patches from Paulo Flabiano Smorigo to allow building a 32-bit
  big-endian loader on ppc64el using -m32 -mbig-endian, replacing the
  cross-compiler hack.

[ Ian Campbell ]
* Add dependency on efibootmgr to grub-efi-{arm,arm64}-bin.

Show diffs side-by-side

added added

removed removed

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