configure.ac 60 KB

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