1dnl Configure script for GRUB.
2dnl Copyright 1999,2000,2001,2002,2003,2004,2005 Free Software Foundation, Inc.
3
4dnl Permission to use, copy, modify and distribute this software and its
5dnl documentation is hereby granted, provided that both the copyright
6dnl notice and this permission notice appear in all copies of the
7dnl software, derivative works or modified versions, and any portions
8dnl thereof, and that both notices appear in supporting documentation.
9dnl
10dnl THE FREE SOFTWARE FOUNDATION ALLOWS FREE USE OF THIS SOFTWARE IN ITS
11dnl "AS IS" CONDITION.  THE FREE SOFTWARE FOUNDATION DISCLAIMS ANY
12dnl LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE
13dnl USE OF THIS SOFTWARE.
14
15AC_PREREQ(2.57)
16AC_INIT([GRUB], [0.97], [bug-grub@gnu.org])
17AC_CONFIG_SRCDIR([stage2/stage2.c])
18AC_CONFIG_HEADER([config.h])
19AM_INIT_AUTOMAKE
20
21AC_CANONICAL_HOST
22
23case "$host_cpu" in
24i[[3456]]86) host_cpu=i386 ;;
25x86_64) host_cpu=x86_64 ;;
26*) AC_MSG_ERROR([unsupported CPU type]) ;;
27esac
28
29AC_SUBST(host_cpu)
30AC_SUBST(host_vendor)
31
32#
33# Options
34#
35
36AM_MAINTAINER_MODE
37if test "x$enable_maintainer_mode" = xyes; then
38  AC_PATH_PROG(PERL,perl)
39  if test -z "$PERL"; then
40    AC_MSG_ERROR([perl not found])
41  fi
42fi
43
44# This should be checked before AC_PROG_CC
45if test "x$CFLAGS" = x; then
46  default_CFLAGS=yes
47fi
48
49if test "x$host_cpu" = xx86_64; then
50  CFLAGS="-m32 $CFLAGS"
51fi
52
53#
54# Programs
55#
56
57AC_CHECK_TOOL(CC, gcc)
58AC_PROG_CC
59# We need this for older versions of Autoconf.
60_AM_DEPENDENCIES(CC)
61
62dnl Because recent automake complains about AS, set it here.
63CCAS="$CC"
64AC_SUBST(CCAS)
65
66AC_ARG_WITH(binutils,
67  [  --with-binutils=DIR     search the directory DIR to find binutils])
68
69if test "x$with_binutils" != x; then
70dnl AC_PATH_TOOL is not seen in autoconf 2.13, so use AC_PATH_PROG
71dnl instead for now. It is preferable when you cross-compile GRUB.
72dnl  AC_PATH_TOOL(RANLIB, ranlib, :, "$with_binutils:$PATH")
73  AC_PATH_PROG(RANLIB, ranlib, :, "$with_binutils:$PATH")
74else
75  AC_PROG_RANLIB
76fi
77
78# optimization flags
79if test "x$ac_cv_prog_gcc" = xyes; then
80  if test "x$default_CFLAGS" = xyes; then
81    # Autoconf may set CFLAGS to -O2 and/or -g. So eliminate them.
82    CFLAGS="`echo $CFLAGS | sed -e 's/-g//g' -e 's/-O[[0-9]]//g'` -g"
83    # If the user specify the directory for binutils, add the option `-B'.
84    if test "x$with_binutils" != x; then
85      CFLAGS="-B$with_binutils/ $CFLAGS"
86    fi
87    STAGE1_CFLAGS="-O2"
88    GRUB_CFLAGS="-O2"
89    AC_CACHE_CHECK([whether optimization for size works], size_flag, [
90      saved_CFLAGS=$CFLAGS
91      CFLAGS="-Os -g"
92      AC_TRY_COMPILE(, , size_flag=yes, size_flag=no)
93      CFLAGS=$saved_CFLAGS
94    ])
95    if test "x$size_flag" = xyes; then
96      STAGE2_CFLAGS="-Os"
97    else
98      STAGE2_CFLAGS="-O2 -fno-strength-reduce -fno-unroll-loops"
99    fi
100    # OpenBSD has a GCC extension for protecting applications from
101    # stack smashing attacks, but GRUB doesn't want this feature.
102    AC_CACHE_CHECK([whether gcc has -fno-stack-protector],
103		   no_stack_protector_flag, [
104      saved_CFLAGS=$CFLAGS
105      CFLAGS="-fno-stack-protector"
106      AC_TRY_COMPILE(,
107		     ,
108		     no_stack_protector_flag=yes,
109		     no_stack_protector_flag=no)
110      CFLAGS=$saved_CFLAGS
111    ])
112    if test "x$no_stack_protector_flag" = xyes; then
113      STAGE2_CFLAGS="$STAGE2_CFLAGS -fno-stack-protector"
114    fi
115  fi
116fi
117
118AC_SUBST(STAGE1_CFLAGS)
119AC_SUBST(STAGE2_CFLAGS)
120AC_SUBST(GRUB_CFLAGS)
121
122# Enforce coding standards.
123CPPFLAGS="$CPPFLAGS -Wall -Wmissing-prototypes -Wunused -Wshadow"
124CPPFLAGS="$CPPFLAGS -Wpointer-arith"
125
126AC_CACHE_CHECK([whether -Wundef works], undef_flag, [
127  saved_CPPFLAGS="$CPPFLAGS"
128  CPPFLAGS="-Wundef"
129  AC_TRY_COMPILE(, , undef_flag=yes, undef_flag=no)
130  CPPFLAGS="$saved_CPPFLAGS"
131])
132
133# The options `-falign-*' are supported by gcc 3.0 or later.
134# Probably it is sufficient to only check for -falign-loops.
135AC_CACHE_CHECK([whether -falign-loops works], [falign_loop_flag], [
136  saved_CPPFLAGS="$CPPFLAGS"
137  CPPFLAGS="-falign-loops=1"
138  AC_TRY_COMPILE(, , [falign_loop_flag=yes], [falign_loop_flag=no])
139  CPPFLAGS="$saved_CPPFLAGS"
140])
141
142# Force no alignment to save space.
143if test "x$falign_loop_flag" = xyes; then
144  CPPFLAGS="$CPPFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
145else
146  CPPFLAGS="$CPPFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
147fi
148
149if test "x$undef_flag" = xyes; then
150  CPPFLAGS="$CPPFLAGS -Wundef"
151fi
152
153if test "x$with_binutils" != x; then
154dnl  AC_PATH_TOOL(OBJCOPY, objcopy, , "$with_binutils:$PATH")
155  AC_PATH_PROG(OBJCOPY, objcopy, , "$with_binutils:$PATH")
156else
157  AC_CHECK_TOOL(OBJCOPY, objcopy)
158fi
159
160# Defined in acinclude.m4.
161grub_ASM_USCORE
162grub_PROG_OBJCOPY_ABSOLUTE
163if test "x$grub_cv_prog_objcopy_absolute" != xyes; then
164  AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils])
165fi
166
167grub_ASM_PREFIX_REQUIREMENT
168
169grub_ASM_ADDR32
170if test "x$grub_cv_asm_addr32" != xyes; then
171  AC_MSG_ERROR([GRUB requires GAS .code16 addr32 support; upgrade your binutils])
172fi
173
174grub_ASM_ABSOLUTE_WITHOUT_ASTERISK
175
176grub_CHECK_START_SYMBOL
177grub_CHECK_USCORE_START_SYMBOL
178if test "x$grub_cv_check_start_symbol" != "xyes" \
179	-a "x$grub_cv_check_uscore_start_symbol" != "xyes"; then
180  AC_MSG_ERROR([Neither start nor _start is defined])
181fi
182
183grub_CHECK_USCORE_USCORE_BSS_START_SYMBOL
184grub_CHECK_USCORE_EDATA_SYMBOL
185grub_CHECK_EDATA_SYMBOL
186if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" != "xyes" \
187	-a "x$grub_cv_check_uscore_edata_symbol" != "xyes" \
188	-a "x$grub_cv_check_edata_symbol" != "xyes"; then
189  AC_MSG_ERROR([None of __bss_start, _edata, edata defined])
190fi
191
192grub_CHECK_END_SYMBOL
193grub_CHECK_USCORE_END_SYMBOL
194if test "x$grub_cv_check_end_symbol" != "xyes" \
195	-a "x$grub_cv_check_uscore_end_symbol" != "xyes"; then
196  AC_MSG_ERROR([Neither end nor _end is defined])
197fi
198
199# Check for curses libraries.
200AC_ARG_WITH(curses,
201  [  --without-curses        do not use curses])
202
203# Get the filename or the whole disk and open it.
204# Known to work on NetBSD.
205AC_CHECK_LIB(util, opendisk, [GRUB_LIBS="$GRUB_LIBS -lutil"
206  AC_DEFINE(HAVE_OPENDISK, 1, [Define if opendisk() in -lutil can be used])])
207
208# Unless the user specify --without-curses, check for curses.
209if test "x$with_curses" != "xno"; then
210  AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lncurses"
211  AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])],
212    [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lcurses"
213       AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])])])
214fi
215
216AC_SUBST(GRUB_LIBS)
217
218# Check for headers.
219AC_CHECK_HEADERS(string.h strings.h ncurses/curses.h ncurses.h curses.h)
220
221# Check for user options.
222
223# filesystems support.
224AC_ARG_ENABLE(ext2fs,
225  [  --disable-ext2fs        disable ext2fs support in Stage 2])
226
227if test x"$enable_ext2fs" != xno; then
228  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_EXT2FS=1"
229fi
230
231AC_ARG_ENABLE(fat,
232  [  --disable-fat           disable FAT support in Stage 2])
233
234if test x"$enable_fat" != xno; then
235  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_FAT=1"
236fi
237
238AC_ARG_ENABLE(ffs,
239  [  --disable-ffs           disable FFS support in Stage 2])
240
241if test x"$enable_ffs" != xno; then
242  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_FFS=1"
243fi
244
245AC_ARG_ENABLE(ufs2,
246  [  --disable-ufs2          disable UFS2 support in Stage 2])
247
248if test x"$enable_ufs2" != xno; then
249  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_UFS2=1"
250fi
251
252AC_ARG_ENABLE(minix,
253  [  --disable-minix         disable Minix fs support in Stage 2])
254
255if test x"$enable_minix" != xno; then
256  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_MINIX=1"
257fi
258
259AC_ARG_ENABLE(reiserfs,
260  [  --disable-reiserfs      disable ReiserFS support in Stage 2])
261
262if test x"$enable_reiserfs" != xno; then
263  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_REISERFS=1"
264fi
265
266AC_ARG_ENABLE(vstafs,
267  [  --disable-vstafs        disable VSTa FS support in Stage 2])
268
269if test x"$enable_vstafs" != xno; then
270  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_VSTAFS=1"
271fi
272
273AC_ARG_ENABLE(jfs,
274  [  --disable-jfs           disable IBM JFS support in Stage 2])
275
276if test x"$enable_jfs" != xno; then
277  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_JFS=1"
278fi
279
280AC_ARG_ENABLE(xfs,
281  [  --disable-xfs           disable SGI XFS support in Stage 2])
282
283if test x"$enable_xfs" != xno; then
284  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_XFS=1"
285fi
286
287AC_ARG_ENABLE(iso9660,
288  [  --disable-iso9660       disable ISO9660 support in Stage 2])
289
290if test x"$enable_iso9660" != xno; then
291  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_ISO9660=1"
292fi
293
294dnl AC_ARG_ENABLE(tftp,
295dnl [  --enable-tftp           enable TFTP support in Stage 2])
296dnl 
297dnl #if test x"$enable_tftp" = xyes; then
298dnl FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_TFTP=1"
299dnl fi
300
301AC_ARG_ENABLE(gunzip,
302  [  --disable-gunzip        disable decompression in Stage 2])
303
304if test x"$enable_gunzip" = xno; then
305  FSYS_CFLAGS="$FSYS_CFLAGS -DNO_DECOMPRESSION=1"
306fi
307
308AC_ARG_ENABLE(md5-password,
309  [  --disable-md5-password  disable MD5 password support in Stage 2])
310if test "x$enable_md5_password" != xno; then
311  FSYS_CFLAGS="$FSYS_CFLAGS -DUSE_MD5_PASSWORDS=1"
312fi
313
314dnl The netboot support.
315dnl General options.
316AC_ARG_ENABLE(packet-retransmission,
317  [  --disable-packet-retransmission
318                          turn off packet retransmission])
319if test "x$enable_packet_retransmission" != xno; then
320  NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCONGESTED=1"
321fi
322
323AC_ARG_ENABLE(pci-direct,
324  [  --enable-pci-direct     access PCI directly instead of using BIOS])
325if test "x$enable_pci_direct" = xyes; then
326  NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCONFIG_PCI_DIRECT=1"
327fi
328
329dnl Device drivers.
330AC_ARG_ENABLE(3c509,
331  [  --enable-3c509          enable 3Com509 driver])
332if test "x$enable_3c509" = xyes; then
333  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C509"
334  NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c509.o"
335fi
336
337AC_ARG_ENABLE(3c529,
338  [  --enable-3c529          enable 3Com529 driver])
339if test "x$enable_3c529" = xyes; then
340  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C529=1"
341  NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c529.o"
342fi
343
344AC_ARG_ENABLE(3c595,
345  [  --enable-3c595          enable 3Com595 driver])
346if test "x$enable_3c595" = xyes; then
347  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C595=1"
348  NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c595.o"
349fi
350
351AC_ARG_ENABLE(3c90x,
352  [  --enable-3c90x          enable 3Com90x driver])
353if test "x$enable_3c90x" = xyes; then
354  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C90X=1"
355  NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c90x.o"
356fi
357
358AC_ARG_ENABLE(cs89x0,
359  [  --enable-cs89x0         enable CS89x0 driver])
360if test "x$enable_cs89x0" = xyes; then
361  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_CS89X0=1"
362  NETBOOT_DRIVERS="$NETBOOT_DRIVERS cs89x0.o"
363fi
364
365AC_ARG_ENABLE(davicom,
366  [  --enable-davicom        enable Davicom driver])
367if test "x$enable_davicom" = xyes; then
368  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_DAVICOM=1"
369  NETBOOT_DRIVERS="$NETBOOT_DRIVERS davicom.o"
370fi
371
372AC_ARG_ENABLE(depca,
373  [  --enable-depca          enable DEPCA and EtherWORKS driver])
374if test "x$enable_depca" = xyes; then
375  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_DEPCA=1"
376  NETBOOT_DRIVERS="$NETBOOT_DRIVERS depca.o"
377fi
378
379AC_ARG_ENABLE(eepro,
380  [  --enable-eepro          enable Etherexpress Pro/10 driver])
381if test "x$enable_eepro" = xyes; then
382  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EEPRO=1"
383  NETBOOT_DRIVERS="$NETBOOT_DRIVERS eepro.o"
384fi
385
386AC_ARG_ENABLE(eepro100,
387  [  --enable-eepro100       enable Etherexpress Pro/100 driver])
388if test "x$enable_eepro100" = xyes; then
389  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EEPRO100=1"
390  NETBOOT_DRIVERS="$NETBOOT_DRIVERS eepro100.o"
391fi
392
393AC_ARG_ENABLE(epic100,
394  [  --enable-epic100        enable SMC 83c170 EPIC/100 driver])
395if test "x$enable_epic100" = xyes; then
396  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EPIC100=1"
397  NETBOOT_DRIVERS="$NETBOOT_DRIVERS epic100.o"
398fi
399
400AC_ARG_ENABLE(3c507,
401  [  --enable-3c507          enable 3Com507 driver])
402if test "x$enable_3c507" = xyes; then
403  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C507=1"
404  NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c507.o"
405fi
406
407AC_ARG_ENABLE(exos205,
408  [  --enable-exos205        enable EXOS205 driver])
409if test "x$enable_exos205" = xyes; then
410  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EXOS205=1"
411  NETBOOT_DRIVERS="$NETBOOT_DRIVERS exos205.o"
412fi
413
414AC_ARG_ENABLE(ni5210,
415  [  --enable-ni5210         enable Racal-Interlan NI5210 driver])
416if test "x$enable_ni5210" = xyes; then
417  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI5210=1"
418  NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni5210.o"
419fi
420
421AC_ARG_ENABLE(lance,
422  [  --enable-lance          enable Lance PCI PCNet/32 driver])
423if test "x$enable_lance" = xyes; then
424  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_LANCE=1"
425  NETBOOT_DRIVERS="$NETBOOT_DRIVERS lance.o"
426fi
427
428AC_ARG_ENABLE(ne2100,
429  [  --enable-ne2100         enable Novell NE2100 driver])
430if test "x$enable_ne2100" = xyes; then
431  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NE2100=1"
432  NETBOOT_DRIVERS="$NETBOOT_DRIVERS ne2100.o"
433fi
434
435AC_ARG_ENABLE(ni6510,
436  [  --enable-ni6510         enable Racal-Interlan NI6510 driver])
437if test "x$enable_ni6510" = xyes; then
438  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI6510=1"
439  NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni6510.o"
440fi
441
442AC_ARG_ENABLE(natsemi,
443  [  --enable-natsemi        enable NatSemi DP8381x driver])
444if test "x$enable_natsemi" = xyes; then
445  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NATSEMI=1"
446  NETBOOT_DRIVERS="$NETBOOT_DRIVERS natsemi.o"
447fi
448
449AC_ARG_ENABLE(ni5010,
450  [  --enable-ni5010         enable Racal-Interlan NI5010 driver])
451if test "x$enable_ni5010" = xyes; then
452  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI5010=1"
453  NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni5010.o"
454fi
455
456AC_ARG_ENABLE(3c503,
457  [  --enable-3c503          enable 3Com503 driver])
458if test "x$enable_3c503" = xyes; then
459  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C503=1"
460  NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c503.o"
461fi
462
463AC_ARG_ENABLE(ne,
464  [  --enable-ne             enable NE1000/2000 ISA driver])
465if test "x$enable_ne" = xyes; then
466  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NE=1"
467  NETBOOT_DRIVERS="$NETBOOT_DRIVERS ne.o"
468fi
469
470AC_ARG_ENABLE(ns8390,
471  [  --enable-ns8390         enable NE2000 PCI driver])
472if test "x$enable_ns8390" = xyes; then
473  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NS8390=1"
474  NETBOOT_DRIVERS="$NETBOOT_DRIVERS ns8390.o"
475fi
476
477AC_ARG_ENABLE(wd,
478  [  --enable-wd             enable WD8003/8013, SMC8216/8416 driver])
479if test "x$enable_wd" = xyes; then
480  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_WD=1"
481  NETBOOT_DRIVERS="$NETBOOT_DRIVERS wd.o"
482fi
483
484AC_ARG_ENABLE(otulip,
485  [  --enable-otulip         enable old Tulip driver])
486if test "x$enable_otulip" = xyes; then
487  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_OTULIP=1"
488  NETBOOT_DRIVERS="$NETBOOT_DRIVERS otulip.o"
489fi
490
491AC_ARG_ENABLE(rtl8139,
492  [  --enable-rtl8139        enable Realtek 8139 driver])
493if test "x$enable_rtl8139" = xyes; then
494  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_RTL8139=1"
495  NETBOOT_DRIVERS="$NETBOOT_DRIVERS rtl8139.o"
496fi
497
498AC_ARG_ENABLE(sis900,
499  [  --enable-sis900         enable SIS 900 and SIS 7016 driver])
500if test "x$enable_sis900" = xyes; then
501  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SIS900=1"
502  NETBOOT_DRIVERS="$NETBOOT_DRIVERS sis900.o"
503fi
504
505AC_ARG_ENABLE(sk-g16,
506  [  --enable-sk-g16         enable Schneider and Koch G16 driver])
507if test "x$enable_sk_g16" = xyes; then
508  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SK_G16=1"
509  NETBOOT_DRIVERS="$NETBOOT_DRIVERS sk_g16.o"
510fi
511
512AC_ARG_ENABLE(smc9000,
513  [  --enable-smc9000        enable SMC9000 driver])
514if test "x$enable_smc9000" = xyes; then
515  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SMC9000=1"
516  NETBOOT_DRIVERS="$NETBOOT_DRIVERS smc9000.o"
517fi
518
519AC_ARG_ENABLE(tiara,
520  [  --enable-tiara          enable Tiara driver])
521if test "x$enable_tiara" = xyes; then
522  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_TIARA=1"
523  NETBOOT_DRIVERS="$NETBOOT_DRIVERS tiara.o"
524fi
525
526AC_ARG_ENABLE(tulip,
527  [  --enable-tulip          enable Tulip driver])
528if test "x$enable_tulip" = xyes; then
529  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_TULIP=1"
530  NETBOOT_DRIVERS="$NETBOOT_DRIVERS tulip.o"
531fi
532
533AC_ARG_ENABLE(via-rhine,
534  [  --enable-via-rhine      enable Rhine-I/II driver])
535if test "x$enable_via_rhine" = xyes; then
536  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_VIA_RHINE=1"
537  NETBOOT_DRIVERS="$NETBOOT_DRIVERS via_rhine.o"
538fi
539
540AC_ARG_ENABLE(w89c840,
541  [  --enable-w89c840        enable Winbond W89c840, Compex RL100-ATX driver])
542if test "x$enable_w89c840" = xyes; then
543  NET_CFLAGS="$NET_CFLAGS -DINCLUDE_W89C840=1"
544  NETBOOT_DRIVERS="$NETBOOT_DRIVERS w89c840.o"
545fi
546
547dnl Check if the netboot support is turned on.
548AM_CONDITIONAL(NETBOOT_SUPPORT, test "x$NET_CFLAGS" != x)
549if test "x$NET_CFLAGS" != x; then
550  FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_TFTP=1"
551fi
552
553dnl Extra options.
554AC_ARG_ENABLE(3c503-shmem,
555  [  --enable-3c503-shmem    use 3c503 shared memory mode])
556if test "x$enable_3c503_shmem" = xyes; then
557  NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DT503_SHMEM=1"
558fi
559
560AC_ARG_ENABLE(3c503-aui,
561  [  --enable-3c503-aui      use AUI by default on 3c503 cards])
562if test "x$enable_3c503_aui" = xyes; then
563  NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DT503_AUI=1"
564fi
565
566AC_ARG_ENABLE(compex-rl2000-fix,
567  [  --enable-compex-rl2000-fix
568                          specify this if you have a Compex RL2000 PCI])
569if test "x$enable_compex_rl2000_fix" = xyes; then
570  NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCOMPEX_RL2000_FIX=1"
571fi
572
573AC_ARG_ENABLE(smc9000-scan,
574  [  --enable-smc9000-scan=LIST
575                          probe for SMC9000 I/O addresses using LIST],
576  [NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DSMC9000_SCAN=$enable_smc9000_scan"])
577
578AC_ARG_ENABLE(ne-scan,
579  [  --enable-ne-scan=LIST   probe for NE base address using LIST],
580  [NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DNE_SCAN=$enable_ne_scan"],
581  [NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DNE_SCAN=0x280,0x300,0x320,0x340"])
582
583AC_ARG_ENABLE(wd-default-mem,
584  [  --enable-wd-default-mem=MEM
585                          set the default memory location for WD/SMC],
586  [NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=$enable_wd_default_mem"],
587  [NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=0xCC000"])
588
589AC_ARG_ENABLE(cs-scan,
590  [  --enable-cs-scan=LIST   probe for CS89x0 base address using LIST],
591  [NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCS_SCAN=$enable_cs_scan"])
592
593dnl Diskless
594AC_ARG_ENABLE(diskless,
595  [  --enable-diskless       enable diskless support])
596AM_CONDITIONAL(DISKLESS_SUPPORT, test "x$enable_diskless" = xyes)
597
598dnl Hercules terminal
599AC_ARG_ENABLE(hercules,
600  [  --disable-hercules      disable hercules terminal support])
601AM_CONDITIONAL(HERCULES_SUPPORT, test "x$enable_hercules" != xno)
602
603dnl Serial terminal
604AC_ARG_ENABLE(serial,
605  [  --disable-serial        disable serial terminal support])
606AM_CONDITIONAL(SERIAL_SUPPORT, test "x$enable_serial" != xno)
607
608dnl Simulation of the slowness of a serial device.
609AC_ARG_ENABLE(serial-speed-simulation,
610  [  --enable-serial-speed-simulation
611                          simulate the slowness of a serial device])
612AM_CONDITIONAL(SERIAL_SPEED_SIMULATION,
613  test "x$enable_serial_speed_simulation" = xyes)
614
615# Sanity check.
616if test "x$enable_diskless" = xyes; then
617  if test "x$NET_CFLAGS" = x; then
618    AC_MSG_ERROR([You must enable at least one network driver])
619  fi
620fi
621
622dnl Embed a menu string in GRUB itself.
623AC_ARG_ENABLE(preset-menu,
624  [  --enable-preset-menu=FILE
625                          preset a menu file FILE in Stage 2])
626if test "x$enable_preset_menu" = x; then
627  :
628else
629  if test -r $enable_preset_menu; then
630    grub_DEFINE_FILE(PRESET_MENU_STRING, [$enable_preset_menu],
631    		     [Define if there is user specified preset menu string])
632  else
633    AC_MSG_ERROR([Cannot read the preset menu file $enable_preset_menu])
634  fi
635fi
636
637dnl Build the example Multiboot kernel.
638AC_ARG_ENABLE(example-kernel,
639  [  --enable-example-kernel
640                          build the example Multiboot kernel])
641AM_CONDITIONAL(BUILD_EXAMPLE_KERNEL, test "x$enable_example_kernel" = xyes)
642
643dnl Automatic Linux mem= option.
644AC_ARG_ENABLE(auto-linux-mem-opt,
645  [  --disable-auto-linux-mem-opt
646                          don't pass Linux mem= option automatically])
647if test "x$enable_auto_linux_mem_opt" = xno; then
648  :
649else
650  AC_DEFINE(AUTO_LINUX_MEM_OPT, 1, [Define if you don't want to pass the mem= option to Linux])
651fi
652
653dnl Now substitute the variables.
654AC_SUBST(FSYS_CFLAGS)
655AC_SUBST(NET_CFLAGS)
656AC_SUBST(NET_EXTRAFLAGS)
657AC_SUBST(NETBOOT_DRIVERS)
658
659dnl Because recent automake complains about CCASFLAGS, set it here.
660CCASFLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)'
661AC_SUBST(CCASFLAGS)
662
663
664dnl Output.
665AC_CONFIG_FILES([Makefile stage1/Makefile stage2/Makefile \
666		 docs/Makefile lib/Makefile util/Makefile \
667		 grub/Makefile netboot/Makefile util/grub-image \
668		 util/grub-install util/grub-md5-crypt \
669		 util/grub-terminfo util/grub-set-default])
670AC_OUTPUT
671