configure.ac 60 KB

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