# For <shared.h> and <stage1.h>.
INCLUDES = -I$(top_srcdir)/stage2 -I$(top_srcdir)/stage1

# Don't build the netboot support by default.
if NETBOOT_SUPPORT
LIBDRIVERS = libdrivers.a
else
LIBDRIVERS =
endif

noinst_LIBRARIES = $(LIBDRIVERS)

libdrivers_a_SOURCES = cards.h config.c etherboot.h \
	fsys_tftp.c linux-asm-io.h linux-asm-string.h \
	main.c misc.c nic.h osdep.h pci.c pci.h timer.c timer.h
EXTRA_libdrivers_a_SOURCES = 3c509.c 3c509.h 3c595.c 3c595.h 3c90x.c \
	cs89x0.c cs89x0.h davicom.c depca.c eepro.c eepro100.c \
	epic100.c epic100.h fa311.c i82586.c lance.c natsemi.c \
	ni5010.c ns8390.c ns8390.h otulip.c otulip.h rtl8139.c \
	sis900.c sis900.h sk_g16.c sk_g16.h smc9000.c smc9000.h \
	tiara.c tlan.c tulip.c via-rhine.c w89c840.c
libdrivers_a_CFLAGS = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	-DFSYS_TFTP=1 $(NET_CFLAGS) $(NET_EXTRAFLAGS)
# Filled by configure.
libdrivers_a_LIBADD = @NETBOOT_DRIVERS@
libdrivers_a_DEPENDENCIES = $(libdrivers_a_LIBADD)

EXTRA_DIST = README.netboot 3c90x.txt cs89x0.txt sis900.txt tulip.txt

# These below are several special rules for the device drivers.
# We cannot use a simple rule for them...

# What objects are derived from a driver?
3c509_drivers = 3c509.o 3c529.o
3c595_drivers = 3c595.o
3c90x_drivers = 3c90x.o
cs89x0_drivers = cs89x0.o
davicom_drivers = davicom.o
depca_drivers = depca.o
eepro_drivers = eepro.o
eepro100_drivers = eepro100.o
epic100_drivers = epic100.o
#fa311_drivers = fa311.o
i82586_drivers = 3c507.o exos205.o ni5210.o
lance_drivers = lance.o ne2100.o ni6510.o
natsemi_drivers = natsemi.o
ni5010_drivers = ni5010.o
ns8390_drivers = 3c503.o ne.o ns8390.o wd.o
otulip_drivers = otulip.o
rtl8139_drivers = rtl8139.o
sis900_drivers = sis900.o
sk_g16_drivers = sk_g16.o
smc9000_drivers = smc9000.o
tiara_drivers = tiara.o
#tlan_drivers = tlan.o
tulip_drivers = tulip.o
via_rhine_drivers = via_rhine.o
w89c840_drivers = w89c840.o

# Is it really necessary to specify dependecies explicitly?
$(3c509_drivers): 3c509.c 3c509.h
$(3c509_drivers): %.o: 3c509.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(3c595_drivers): 3c595.c 3c595.h
$(3c595_drivers): %.o: 3c595.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(3c90x_drivers): 3c90x.c
$(3c90x_drivers): %.o: 3c90x.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(cs89x0_drivers): cs89x0.c cs89x0.h
$(cs89x0_drivers): %.o: cs89x0.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(davicom_drivers): davicom.c
$(davicom_drivers): %.o: davicom.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(depca_drivers): depca.c
$(depca_drivers): %.o: depca.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(eepro_drivers): eepro.c
$(eepro_drivers): %.o: eepro.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(eepro100_drivers): eepro100.c
$(eepro100_drivers): %.o: eepro100.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(epic100_drivers): epic100.c epic100.h
$(epic100_drivers): %.o: epic100.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

#$(fa311_drivers): fa311.c
#$(fa311_drivers): %.o: fa311.c
#	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
#	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(i82586_drivers): i82586.c
$(i82586_drivers): %.o: i82586.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(lance_drivers): lance.c
$(lance_drivers): %.o: lance.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(natsemi_drivers): natsemi.c
$(natsemi_drivers): %.o: natsemi.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(ni5010_drivers): ni5010.c
$(ni5010_drivers): %.o: ni5010.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(ns8390_drivers): ns8390.c ns8390.h
$(ns8390_drivers): %.o: ns8390.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(otulip_drivers): otulip.c otulip.h
$(otulip_drivers): %.o: otulip.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(rtl8139_drivers): rtl8139.c
$(rtl8139_drivers): %.o: rtl8139.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(sis900_drivers): sis900.c
$(sis900_drivers): %.o: sis900.c sis900.h
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(sk_g16_drivers): sk_g16.c sk_g16.h
$(sk_g16_drivers): %.o: sk_g16.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(smc9000_drivers): smc9000.c smc9000.h
$(smc9000_drivers): %.o: smc9000.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(tiara_drivers): tiara.c
$(tiara_drivers): %.o: tiara.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

#$(tlan_drivers): tlan.c
#$(tlan_drivers): %.o: tlan.c
#	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
#	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(tulip_drivers): tulip.c
$(tulip_drivers): %.o: tulip.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(via_rhine_drivers): via-rhine.c
$(via_rhine_drivers): %.o: via-rhine.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

$(w89c840_drivers): w89c840.c
$(w89c840_drivers): %.o: w89c840.c
	$(COMPILE) $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
	  $(NET_EXTRAFLAGS) $($(basename $@)_o_CFLAGS) -o $@ -c $<

# Per-object flags.
3c509_o_CFLAGS = -DINCLUDE_3C509=1
3c529_o_CFLAGS = -DINCLUDE_3C529=1
3c595_o_CFLAGS = -DINCLUDE_3C595=1
3c90x_o_CFLAGS = -DINCLUDE_3C90X=1
cs89x0_o_CFLAGS = -DINCLUDE_CS89X0=1
davicom_o_CFLAGS = -DINCLUDE_DAVICOM=1
depca_o_CFLAGS = -DINCLUDE_DEPCA=1
eepro_o_CFLAGS = -DINCLUDE_EEPRO=1
eepro100_o_CFLAGS = -DINCLUDE_EEPRO100=1
epic100_o_CFLAGS = -DINCLUDE_EPIC100=1
#fa311_o_CFLAGS = -DINCLUDE_FA311=1
3c507_o_CFLAGS = -DINCLUDE_3C507=1
exos205_o_CFLAGS = -DINCLUDE_EXOS205=1
ni5210_o_CFLAGS = -DINCLUDE_NI5210=1
lance_o_CFLAGS = -DINCLUDE_LANCE=1
ne2100_o_CFLAGS = -DINCLUDE_NE2100=1
ni6510_o_CFLAGS = -DINCLUDE_NI6510=1
natsemi_o_CFLAGS = -DINCLUDE_NATSEMI=1
ni5010_o_CFLAGS = -DINCLUDE_NI5010=1
3c503_o_CFLAGS = -DINCLUDE_3C503=1
ne_o_CFLAGS = -DINCLUDE_NE=1
ns8390_o_CFLAGS = -DINCLUDE_NS8390=1
wd_o_CFLAGS = -DINCLUDE_WD=1
otulip_o_CFLAGS = -DINCLUDE_OTULIP=1
rtl8139_o_CFLAGS = -DINCLUDE_RTL8139=1
sis900_o_CFLAGS = -DINCLUDE_SIS900=1
sk_g16_o_CFLAGS = -DINCLUDE_SK_G16=1
smc9000_o_CFLAGS = -DINCLUDE_SMC9000=1
tiara_o_CFLAGS = -DINCLUDE_TIARA=1
#tlan_o_CFLAGS = -DINCLUDE_TLAN=1
tulip_o_CFLAGS = -DINCLUDE_TULIP=1
via_rhine_o_CFLAGS = -DINCLUDE_VIA_RHINE=1
w89c840_o_CFLAGS = -DINCLUDE_W89C840=1
