dnl Configure fragment for Linux code snarfed into GNU Mach. dnl Copyright (C) 1997, 1999, 2004, 2006, 2007 Free Software Foundation, Inc. dnl Permission to use, copy, modify and distribute this software and its dnl documentation is hereby granted, provided that both the copyright dnl notice and this permission notice appear in all copies of the dnl software, derivative works or modified versions, and any portions dnl thereof, and that both notices appear in supporting documentation. dnl dnl THE FREE SOFTWARE FOUNDATION ALLOWS FREE USE OF THIS SOFTWARE IN ITS dnl "AS IS" CONDITION. THE FREE SOFTWARE FOUNDATION DISCLAIMS ANY dnl LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE dnl USE OF THIS SOFTWARE. # # Internals. # [have_linux_code=no] # # Helper functions. # # # Calling `device_driver_group group' makes sure that the infrastructure needed # for the group `group' will be set-up. # [device_driver_group() { case $1 in '') # No group. :;; net) device_driver_group_net=selected;; pcmcia) # Pull in group `net'. device_driver_group net device_driver_group_pcmcia=selected;; scsi) device_driver_group_scsi=selected;; wireless) # Pull in group `pcmcia'. device_driver_group pcmcia device_driver_group_wireless=selected;; *)] AC_MSG_ERROR([invalid device driver group `$1'])[;; esac }] AC_DEFUN([AC_OPTION_Linux_group], [ AC_ARG_ENABLE([$1-group], AS_HELP_STRING([--enable-$1-group], [$2])) ]) # # AC_OPTION_Linux_ix86_at(name,description,option[,class]). Process # configuration option --enable-`name' (with description `description'). If # it's set, then `option' is defined with AC_DEFINE. The option optionally # pulls in group `group'; see the comments on device_driver_group for more # information. For ix86-at, the value from $enable_default_device_drivers is # considered when deciding whether to activate the option by default or not. # AC_DEFUN([AC_OPTION_Linux_ix86_at], [ [unset enableval] AC_ARG_ENABLE([$1], AS_HELP_STRING([--enable-$1], [$2])) [if test x$enable_$4_group = xno; then enableval=${enableval-no} fi #TODO. Could use some M4 magic to avoid a lot of shell code. case $host_platform:$host_cpu in at:i?86) case $enable_device_drivers:'$2' in default:*by\ default* | qemu:*for\ qemu*) enableval=${enableval-yes};; *) enableval=${enableval-no};; esac;; *) if [ x"$enableval" = xyes ]; then # TODO. That might not always be true.] AC_MSG_ERROR([cannot enable `$1' in this configuration.]) [fi;; esac] AM_CONDITIONAL([device_driver_]m4_bpatsubst([$1], [-], [_]), [[[ x"$enableval" = xyes ]]]) [if [ x"$enableval" = xyes ]; then have_linux_code=yes] AC_DEFINE([$3], [1], [option $1: $2]) [device_driver_group $4 fi]]) # # AC_OPTION_Linux_ix86_at_nodef() is like AC_OPTION_Linux_ix86_at(), but # doesn't consider $enable_default_device_drivers. # AC_DEFUN([AC_OPTION_Linux_ix86_at_nodef], [ [unset enableval] AC_ARG_ENABLE([$1], AS_HELP_STRING([--enable-$1], [$2])) [#TODO. case $host_platform:$host_cpu in at:i?86) :;; *) if [ x"$enableval" = xyes ]; then # TODO. That might not always be true.] AC_MSG_ERROR([cannot enable `$1' in this configuration.]) [fi;; esac] AM_CONDITIONAL([device_driver_]m4_bpatsubst([$1], [-], [_]), [[[ x"$enableval" = xyes ]]]) [if [ x"$enableval" = xyes ]; then have_linux_code=yes] AC_DEFINE([$3], [1], [option $1: $2]) [device_driver_group $4 fi]]) # # AC_Linux_DRIVER(machname, description, definition, [group]). Convenience. # TODO. The naming of those is nearly everything but reasonable. # AC_DEFUN([AC_Linux_DRIVER], [ AC_OPTION_Linux_ix86_at([$1], [Linux device driver for $2; on ix86-at enabled] [by default], [$3], [$4]) ]) AC_DEFUN([AC_Linux_DRIVER_qemu], [ AC_OPTION_Linux_ix86_at([$1], [Linux device driver for $2; on ix86-at enabled] [by default and for qemu], [$3], [$4]) ]) AC_DEFUN([AC_Linux_DRIVER_nodef], [ AC_OPTION_Linux_ix86_at_nodef([$1], [Linux device driver for $2], [$3], [$4]) ]) # # Configuration options. # AC_Linux_DRIVER_qemu([floppy], [PC floppy], [CONFIG_BLK_DEV_FD]) AC_Linux_DRIVER_qemu([ide], [IDE disk controllers], [CONFIG_BLK_DEV_IDE]) AC_ARG_ENABLE([ide-forcedma], AS_HELP_STRING([--enable-ide-forcedma], [enable forced use of DMA on IDE]), [test x"$enableval" = xno || AC_DEFINE([CONFIG_BLK_DEV_FORCE_DMA], [1], [Force DMA on IDE block devices])]) dnl SCSI controllers. AC_OPTION_Linux_group([scsi], [SCSI drivers]) # Disabled by default. AC_Linux_DRIVER_nodef([53c78xx], [SCSI controller NCR 53C7,8xx], [CONFIG_SCSI_NCR53C7xx], [scsi]) AC_Linux_DRIVER([AM53C974], [SCSI controller AM53/79C974 (am53c974, am79c974)], [CONFIG_SCSI_AM53C974], [scsi]) AC_Linux_DRIVER([BusLogic], [SCSI controller BusLogic], [CONFIG_SCSI_BUSLOGIC], [scsi]) # TODO. What's that? And what about FlashPoint.c? dnl Dirty implementation... AC_ARG_ENABLE([flashpoint], AS_HELP_STRING([--enable-flashpoint], [SCSI flashpoint]), [test x"$enableval" = xno && AC_DEFINE([CONFIG_SCSI_OMIT_FLASHPOINT], [], [scsi omit flashpoint])]) # Disabled by default. AC_Linux_DRIVER_nodef([NCR53c406a], [SCSI controller NCR53c406a chip], [CONFIG_SCSI_NCR53C406A], [scsi]) AC_Linux_DRIVER([advansys], [SCSI controller AdvanSys], [CONFIG_SCSI_ADVANSYS], [scsi]) AC_Linux_DRIVER([aha152x], [SCSI controller Adaptec AHA-152x/2825 (aha152x, aha2825)], [CONFIG_SCSI_AHA152X], [scsi]) AC_Linux_DRIVER([aha1542], [SCSI controller Adaptec AHA-1542], [CONFIG_SCSI_AHA1542], [scsi]) AC_Linux_DRIVER([aha1740], [SCSI controller Adaptec AHA-1740], [CONFIG_SCSI_AHA1740], [scsi]) # Disabled by default. AC_Linux_DRIVER_nodef([aic7xxx], [SCSI controller Adaptec AIC7xxx], [CONFIG_SCSI_AIC7XXX], [scsi]) AC_Linux_DRIVER([dtc], [SCSI controller DTC3180/3280 (dtc3180, dtc3280)], [CONFIG_SCSI_DTC3280], [scsi]) AC_Linux_DRIVER([eata], [SCSI controller EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards)], [CONFIG_SCSI_EATA], [scsi]) # Disabled by default. AC_Linux_DRIVER_nodef([eata_dma], [SCSI controller EATA-DMA (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix)], [CONFIG_SCSI_EATA_DMA], [scsi]) AC_Linux_DRIVER([eata_pio], [SCSI controller EATA-PIO (old DPT PM2001, PM2012A)], [CONFIG_SCSI_EATA_PIO], [scsi]) AC_Linux_DRIVER([fdomain], [SCSI controller Future Domain 16xx], [CONFIG_SCSI_FUTURE_DOMAIN], [scsi]) # Disabled by default. AC_Linux_DRIVER_nodef([g_NCR5380], [SCSI controller Generic NCR5380/53c400 (ncr5380, ncr53c400)], [CONFIG_SCSI_GENERIC_NCR5380], [scsi]) # Disabled by default. AC_Linux_DRIVER_nodef([gdth], [GDT SCSI Disk Array Controller], [CONFIG_SCSI_GDTH], [scsi]) AC_Linux_DRIVER([in2000], [SCSI controller Always IN 2000], [CONFIG_SCSI_IN2000], [scsi]) AC_Linux_DRIVER([ncr53c8xx], [SCSI controller NCR53C8XX (ncr53c8xx, dc390f, dc390u, dc390w)], [CONFIG_SCSI_NCR53C8XX], [scsi]) AC_Linux_DRIVER([pas16], [SCSI controller PAS16], [CONFIG_SCSI_PASS16], [scsi]) AC_Linux_DRIVER([ppa], [IOMEGA Parallel Port ZIP drive], [CONFIG_SCSI_PPA], [scsi]) AC_Linux_DRIVER([qlogicfas], [SCSI controller Qlogic FAS], [CONFIG_SCSI_QLOGIC_FAS], [scsi]) AC_Linux_DRIVER([qlogicisp], [SCSI controller Qlogic ISP], [CONFIG_SCSI_QLOGIC_ISP], [scsi]) AC_Linux_DRIVER([seagate], [SCSI controller Seagate ST02, Future Domain TMC-8xx], [CONFIG_SCSI_SEAGATE], [scsi]) AC_Linux_DRIVER([sym53c8xx], [SCSI controller Symbios 53C8XX], [CONFIG_SCSI_SYM53C8XX], [scsi]) AC_Linux_DRIVER([t128], [SCSI controller Trantor T128/T128F/T228 (t128, t128f, t228)], [CONFIG_SCSI_T128], [scsi]) AC_Linux_DRIVER([tmscsim], [SCSI controller Tekram DC-390(T) (dc390, dc390t)], [CONFIG_SCSI_DC390T], [scsi]) AC_Linux_DRIVER([u14-34f], [SCSI controller UltraStor 14F/34F], [CONFIG_SCSI_U14_34F], [scsi]) AC_Linux_DRIVER([ultrastor], [SCSI controller UltraStor], [CONFIG_SCSI_ULTRASTOR], [scsi]) AC_Linux_DRIVER([wd7000], [SCSI controller WD 7000], [CONFIG_SCSI_7000FASST], [scsi]) dnl Ethernet controllers. AC_OPTION_Linux_group([net], [Network drivers]) AC_Linux_DRIVER([3c501], [Ethernet controller 3COM 501 (3c501) / Etherlink I], [CONFIG_EL1], [net]) AC_Linux_DRIVER([3c503], [Ethernet controller 3Com 503 (3c503) / Etherlink II], [CONFIG_EL2], [net]) AC_Linux_DRIVER([3c505], [Ethernet controller 3Com 505 (3c505, elplus)], [CONFIG_ELPLUS], [net]) AC_Linux_DRIVER([3c507], [Ethernet controller 3Com 507 (3c507, el16)], [CONFIG_EL16], [net]) AC_Linux_DRIVER([3c509], [Ethernet controller 3Com 509/579 (3c509, 3c579) / Etherlink III], [CONFIG_EL3], [net]) AC_Linux_DRIVER([3c59x], [Ethernet controller 3Com 59x/90x (3c59x, 3c590, 3c592, 3c595, 3c597, 3c90x, 3c900, 3c905) "Vortex/Boomerang"], [CONFIG_VORTEX], [net]) AC_Linux_DRIVER([3c515], [Ethernet controller 3Com 515 ISA Fast EtherLink], [CONFIG_3C515], [net]) AC_Linux_DRIVER([ac3200], [Ethernet controller Ansel Communications EISA 3200], [CONFIG_AC3200], [net]) AC_Linux_DRIVER([apricot], [Ethernet controller Apricot XEN-II on board ethernet], [CONFIG_APRICOT], [net]) AC_Linux_DRIVER([at1700], [Ethernet controller AT1700 (Fujitsu 86965)], [CONFIG_AT1700], [net]) # Disabled by default. AC_Linux_DRIVER_nodef([atp], [Ethernet controller AT-LAN-TEC/RealTek pocket adaptor], [CONFIG_ATP], [net]) dnl FIXME: Can't be enabled since it is a pcmcia driver, and we don't dnl have that kind of fluff. dnl linux_DRIVER([cb_shim], [CB_SHIM], [cb_shim], [net]) AC_Linux_DRIVER([de4x5], [Ethernet controller DE4x5 (de4x5, de425, de434, de435, de450, de500)], [CONFIG_DE4X5], [net]) AC_Linux_DRIVER([de600], [Ethernet controller D-Link DE-600], [CONFIG_DE600], [net]) AC_Linux_DRIVER([de620], [Ethernet controller D-Link DE-620], [CONFIG_DE620], [net]) AC_Linux_DRIVER([depca], [Ethernet controller DEPCA (de100, de101, de200, de201, de202, de210, de422)], [CONFIG_DEPCA], [net]) AC_Linux_DRIVER([e2100], [Ethernet controller Cabletron E21xx], [CONFIG_E2100], [net]) AC_Linux_DRIVER([eepro], [Ethernet controller EtherExpressPro], [CONFIG_EEXPRESS_PRO], [net]) AC_Linux_DRIVER([eepro100], [Ethernet controller Intel EtherExpressPro PCI 10+/100B/100+], [CONFIG_EEXPRESS_PRO100B], [net]) AC_Linux_DRIVER([eexpress], [Ethernet controller EtherExpress 16], [CONFIG_EEXPRESS], [net]) AC_Linux_DRIVER([epic100], [Ethernet controller SMC 83c170/175 EPIC/100 (epic, epic100) / EtherPower II], [CONFIG_EPIC], [net]) AC_Linux_DRIVER([eth16i], [Ethernet controller ICL EtherTeam 16i/32 (eth16i, eth32)], [CONFIG_ETH16I], [net]) AC_Linux_DRIVER([ewrk3], [Ethernet controller EtherWORKS 3 (ewrk3, de203, de204, de205)], [CONFIG_EWRK3], [net]) AC_Linux_DRIVER([fmv18x], [Ethernet controller FMV-181/182/183/184], [CONFIG_FMV18X], [net]) AC_Linux_DRIVER([hamachi], [Ethernet controller Packet Engines "Hamachi" GNIC-2 Gigabit Ethernet], [CONFIG_HAMACHI], [net]) AC_Linux_DRIVER([hp-plus], [Ethernet controller HP PCLAN+ (27247B and 27252A)], [CONFIG_HPLAN_PLUS], [net]) AC_Linux_DRIVER([hp], [Ethernet controller HP PCLAN (27245 and other 27xxx series)], [CONFIG_HPLAN], [net]) AC_Linux_DRIVER([hp100], [Ethernet controller HP 10/100VG PCLAN (ISA, EISA, PCI) (hp100, hpj2577, hpj2573, hpj2585, hp27248b)], [CONFIG_HP100], [net]) AC_Linux_DRIVER([intel-gige], [Ethernet controller Intel PCI Gigabit Ethernet], [CONFIG_INTEL_GIGE], [net]) AC_Linux_DRIVER([lance], [Ethernet controller AMD LANCE and PCnet (at1500, ne2100)], [CONFIG_LANCE], [net]) AC_Linux_DRIVER([myson803], [Ethernet controller Myson MTD803 Ethernet adapter series], [CONFIG_MYSON803], [net]) AC_Linux_DRIVER([natsemi], [Ethernet controller National Semiconductor DP8381x series PCI Ethernet], [CONFIG_NATSEMI], [net]) AC_Linux_DRIVER_qemu([ne], [Ethernet controller NE2000/NE1000 ISA (ne, ne1000, ne2000)], [CONFIG_NE2000], [net]) AC_Linux_DRIVER([ne2k-pci], [Ethernet controller PCI NE2000], [CONFIG_NE2K_PCI], [net]) AC_Linux_DRIVER([ni52], [Ethernet controller NI5210], [CONFIG_NI52], [net]) AC_Linux_DRIVER([ni65], [Ethernet controller NI6510], [CONFIG_NI65], [net]) AC_Linux_DRIVER([ns820], [Ethernet controller National Semiconductor DP8382x series PCI Ethernet], [CONFIG_NS820], [net]) AC_Linux_DRIVER([pcnet32], [Ethernet controller AMD PCI PCnet32 (PCI bus NE2100 cards)], [CONFIG_PCNET32], [net]) AC_Linux_DRIVER([rtl8139], [Ethernet controller RealTek 8129/8139 (rtl8129, rtl8139) (not 8019/8029!)], [CONFIG_RTL8139], [net]) AC_Linux_DRIVER([seeq8005], [Ethernet controller Seeq8005], [CONFIG_SEEQ8005], [net]) AC_Linux_DRIVER([sis900], [Ethernet controller SiS 900], [CONFIG_SIS900], [net]) AC_Linux_DRIVER([sk_g16], [Ethernet controller Schneider & Koch G16], [CONFIG_SK_G16], [net]) AC_Linux_DRIVER([smc-ultra], [Ethernet controller SMC Ultra], [CONFIG_ULTRA], [net]) AC_Linux_DRIVER([smc-ultra32], [Ethernet controller SMC Ultra32], [CONFIG_ULTRA32], [net]) AC_Linux_DRIVER([starfire], [Ethernet controller Adaptec Starfire network adapter], [CONFIG_STARFIRE], [net]) AC_Linux_DRIVER([sundance], [Ethernet controller Sundance ST201 "Alta" PCI Ethernet], [CONFIG_SUNDANCE], [net]) AC_Linux_DRIVER([tlan], [Ethernet controller TI ThunderLAN], [CONFIG_TLAN], [net]) AC_Linux_DRIVER([tulip], [Ethernet controller DECchip Tulip (dc21x4x) PCI (elcp, tulip)], [CONFIG_DEC_ELCP], [net]) AC_Linux_DRIVER([via-rhine], [Ethernet controller VIA Rhine], [CONFIG_VIA_RHINE], [net]) # Disabled by default. AC_Linux_DRIVER_nodef([wavelan], [Ethernet controller AT&T WaveLAN & DEC RoamAbout DS], [CONFIG_WAVELAN], [net]) AC_Linux_DRIVER([wd], [Ethernet controller WD80x3], [CONFIG_WD80x3], [net]) AC_Linux_DRIVER([winbond-840], [Ethernet controller Winbond W89c840 PCI Ethernet], [CONFIG_WINBOND840], [net]) AC_Linux_DRIVER([yellowfin], [Ethernet controller Packet Engines Yellowfin Gigabit-NIC], [CONFIG_YELLOWFIN], [net]) AC_Linux_DRIVER([znet], [Ethernet controller Zenith Z-Note (znet, znote)], [CONFIG_ZNET], [net]) dnl PCMCIA device support. AC_OPTION_Linux_group([pcmcia], [PCMCIA drivers]) AC_Linux_DRIVER([i82365], [Intel 82365 PC Card controller], [CONFIG_I82365], [pcmcia]) AC_OPTION_Linux_ix86_at([pcmcia-isa], [isa bus support in the pcmcia core; on ix86-at enabled by default], [CONFIG_ISA], [pcmcia]) dnl PCMCIA device drivers. AC_Linux_DRIVER([3c574_cs], [3Com 3c574 ``RoadRunner'' PCMCIA Ethernet], [CONFIG_3C574_CS], [pcmcia]) AC_Linux_DRIVER([3c589_cs], [3Com 3c589 PCMCIA Ethernet card], [CONFIG_3C589_CS], [pcmcia]) AC_Linux_DRIVER([axnet_cs], [Asix AX88190-based PCMCIA Ethernet adapters], [CONFIG_AXNET_CS], [pcmcia]) AC_Linux_DRIVER([fmvj18x_cs], [fmvj18x chipset based PCMCIA Ethernet cards], [CONFIG_FMVJ18X_CS], [pcmcia]) AC_Linux_DRIVER([nmclan_cs], [New Media Ethernet LAN PCMCIA cards], [CONFIG_NMCLAN_CS], [pcmcia]) AC_Linux_DRIVER([pcnet_cs], [NS8390-based PCMCIA cards], [CONFIG_PCNET_CS], [pcmcia]) AC_Linux_DRIVER([smc91c92_cs], [SMC91c92-based PCMCIA cards], [CONFIG_SMC91C92_CS], [pcmcia]) AC_Linux_DRIVER([xirc2ps_cs], [Xircom CreditCard and Realport PCMCIA ethernet], [CONFIG_XIRC2PS_CS], [pcmcia]) dnl Wireless device drivers. AC_OPTION_Linux_group([wireless], [Wireless drivers]) AC_Linux_DRIVER([orinoco_cs], [Hermes or Prism 2 PCMCIA Wireless adapters (Orinoco)], [CONFIG_ORINOCO_CS], [wireless]) # # Process device driver groups: kinds of drivers that have gobs of source files # that get brought in, need special symbols defined, etc. # [if [ x"$device_driver_group_net" = xselected ]; then] AC_DEFINE([CONFIG_INET], [1], [CONFIG_INET]) AM_CONDITIONAL([device_driver_group_net], [true]) [else] AM_CONDITIONAL([device_driver_group_net], [false]) [fi if [ x"$device_driver_group_pcmcia" = xselected ]; then] AC_DEFINE([CONFIG_PCMCIA], [1], [CONFIG_PCMCIA]) AM_CONDITIONAL([device_driver_group_pcmcia], [true]) [else] AM_CONDITIONAL([device_driver_group_pcmcia], [false]) [fi if [ x"$device_driver_group_scsi" = xselected ]; then] AC_DEFINE([CONFIG_SCSI], [1], [CONFIG_SCSI]) AM_CONDITIONAL([device_driver_group_scsi], [true]) [else] AM_CONDITIONAL([device_driver_group_scsi], [false]) [fi if [ x"$device_driver_group_wireless" = xselected ]; then] AC_DEFINE([CONFIG_WIRELESS], [1], [CONFIG_WIRELESS]) [fi] # # Internals. # AC_DEFUN([hurd_host_CPU], [ AC_DEFINE([CONFIG_M$1], [1], [$1]) AC_DEFINE([CPU], [$1], [CPU])]) [if [ "$have_linux_code" = yes ]; then] AM_CONDITIONAL([CODE_linux], [true]) [case $host_cpu in i386)] hurd_host_CPU([386])[;; i486)] hurd_host_CPU([486])[;; i586)] hurd_host_CPU([586])[;; i686)] hurd_host_CPU([686])[;; *) # TODO. Warn here?] hurd_host_CPU([486])[;; esac] # The glue code dependend code checks for this. AC_DEFINE([LINUX_DEV], [1], [Linux device drivers.]) # Instead of Mach's KERNEL, Linux uses __KERNEL__. Whee. AC_DEFINE([__KERNEL__], [1], [__KERNEL__]) [if [ $mach_ncpus -gt 1 ]; then] AC_DEFINE([__SMP__], [1], [__SMP__]) [fi] # Set up `asm-SYSTYPE' links. AC_CONFIG_LINKS([linux/src/include/asm:linux/src/include/asm-$systype linux/dev/include/asm:linux/dev/include/asm-$systype]) [else] AM_CONDITIONAL([CODE_linux], [false]) [fi] dnl Local Variables: dnl mode: autoconf dnl End: