diff --git a/Rules.make b/Rules.make index bb273a61b1b03394b9463f85b9c13f0107d576da..1fde88a519cd19e56e321768cbfdc0d0aacedd5d 100644 --- a/Rules.make +++ b/Rules.make @@ -43,6 +43,27 @@ obj-m := $(filter-out $(obj-y),$(obj-m)) # first_rule: all_targets +# Handle objects in subdirs +# --------------------------------------------------------------------------- +# o if we encounter foo/ in $(obj-y), replace it by foo/built-in.o +# and add the directory to the list of dirs to descend into: $(subdir-y) +# o if we encounter foo/ in $(obj-m), remove it from $(obj-m) +# and add the directory to the list of dirs to descend into: $(subdir-m) + +__subdir-y := $(patsubst %/,%,$(filter %/, $(obj-y))) +subdir-y += $(__subdir-y) +__subdir-m := $(patsubst %/,%,$(filter %/, $(obj-m))) +subdir-m += $(__subdir-m) +__subdir-n := $(patsubst %/,%,$(filter %/, $(obj-n))) +subdir-n += $(__subdir-n) +__subdir- := $(patsubst %/,%,$(filter %/, $(obj-))) +subdir- += $(__subdir-) +obj-y := $(patsubst %/, %/built-in.o, $(obj-y)) +obj-m := $(filter-out %/, $(obj-m)) + +# If a dir is selected in $(subdir-y) and also mentioned in $(mod-subdirs), +# add it to $(subdir-m) + both-m := $(filter $(mod-subdirs), $(subdir-y)) SUB_DIRS := $(subdir-y) MOD_SUB_DIRS := $(sort $(subdir-m) $(both-m)) diff --git a/drivers/acorn/net/Makefile b/drivers/acorn/net/Makefile index 78b25d0569337dc14f11d52cdb44441dd22ab7cc..2ee3cd707cd2b419db5a1717976fbb733386f846 100644 --- a/drivers/acorn/net/Makefile +++ b/drivers/acorn/net/Makefile @@ -3,7 +3,7 @@ # Makefile for the Acorn ethercard network device drivers # -O_TARGET := acorn-net.o +O_TARGET := built-in.o obj-y := obj-m := diff --git a/drivers/net/Makefile b/drivers/net/Makefile index 3b7793903d5dec6f71ab6d9fbfa1068e86756294..b80a351ece9b2a7412a6e37f83b32bbe0c6a5536 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile @@ -25,18 +25,8 @@ ifeq ($(CONFIG_ISDN_PPP),y) obj-$(CONFIG_ISDN) += slhc.o endif -subdir-$(CONFIG_NET_PCMCIA) += pcmcia -subdir-$(CONFIG_NET_WIRELESS) += wireless - -subdir-$(CONFIG_E100) += e100 -ifeq ($(CONFIG_E100),y) - obj-y += e100/e100.o -endif - -subdir-$(CONFIG_E1000) += e1000 -ifeq ($(CONFIG_E1000),y) - obj-y += e1000/e1000.o -endif +obj-$(CONFIG_E100) += e100/ +obj-$(CONFIG_E1000) += e1000/ # # link order important here @@ -75,17 +65,8 @@ obj-$(CONFIG_STNIC) += stnic.o 8390.o obj-$(CONFIG_FEALNX) += fealnx.o mii.o obj-$(CONFIG_TIGON3) += tg3.o obj-$(CONFIG_TC35815) += tc35815.o - -subdir-$(CONFIG_SK98LIN) += sk98lin -ifeq ($(CONFIG_SK98LIN),y) -obj-y += sk98lin/sk98lin.o -endif - -subdir-$(CONFIG_SKFP) += skfp -ifeq ($(CONFIG_SKFP),y) - obj-y += skfp/skfp.o -endif - +obj-$(CONFIG_SK98LIN) += sk98lin/ +obj-$(CONFIG_SKFP) += skfp/ obj-$(CONFIG_VIA_RHINE) += via-rhine.o mii.o obj-$(CONFIG_ADAPTEC_STARFIRE) += starfire.o @@ -210,60 +191,17 @@ obj-$(CONFIG_MAC89x0) += mac89x0.o obj-$(CONFIG_TUN) += tun.o obj-$(CONFIG_DL2K) += dl2k.o -subdir-$(CONFIG_ARCH_ACORN) += ../acorn/net -ifeq ($(CONFIG_ARCH_ACORN),y) - obj-y += ../acorn/net/acorn-net.o -endif - -subdir-$(CONFIG_NET_FC) += fc -ifeq ($(CONFIG_NET_FC),y) - obj-y += fc/fc.o -endif - -subdir-$(CONFIG_DEV_APPLETALK) += appletalk -ifeq ($(CONFIG_DEV_APPLETALK),y) - obj-y += appletalk/appletalk.o -endif - -subdir-$(CONFIG_TR) += tokenring -ifeq ($(CONFIG_TR),y) - obj-y += tokenring/tr.o -endif - -subdir-$(CONFIG_WAN) += wan -ifeq ($(CONFIG_WAN),y) - obj-y += wan/wan.o -endif - -subdir-$(CONFIG_ARCNET) += arcnet -ifeq ($(CONFIG_ARCNET),y) - obj-y += arcnet/arcnetdrv.o -endif - -subdir-$(CONFIG_NET_PCMCIA) += pcmcia -ifeq ($(CONFIG_NET_PCMCIA),y) - obj-y += pcmcia/pcmcia_net.o -endif - -subdir-$(CONFIG_NET_WIRELESS) += wireless -ifeq ($(CONFIG_NET_WIRELESS),y) - obj-y += wireless/wireless_net.o -endif - -subdir-$(CONFIG_NET_TULIP) += tulip -ifeq ($(CONFIG_NET_TULIP),y) - obj-y += tulip/tulip_net.o -endif - -subdir-$(CONFIG_HAMRADIO) += hamradio -ifeq ($(CONFIG_HAMRADIO),y) - obj-y += hamradio/hamradio.o -endif - -subdir-$(CONFIG_IRDA) += irda -ifeq ($(CONFIG_IRDA),y) - obj-y += irda/irda.o -endif +obj-$(CONFIG_ARCH_ACORN) += ../acorn/net/ +obj-$(CONFIG_NET_FC) += fc/ +obj-$(CONFIG_DEV_APPLETALK) += appletalk/ +obj-$(CONFIG_TR) += tokenring/ +obj-$(CONFIG_WAN) += wan/ +obj-$(CONFIG_ARCNET) += arcnet/ +obj-$(CONFIG_NET_PCMCIA) += pcmcia/ +obj-$(CONFIG_NET_WIRELESS) += wireless/ +obj-$(CONFIG_NET_TULIP) += tulip/ +obj-$(CONFIG_HAMRADIO) += hamradio/ +obj-$(CONFIG_IRDA) += irda/ include $(TOPDIR)/Rules.make diff --git a/drivers/net/appletalk/Makefile b/drivers/net/appletalk/Makefile index f142745095c59a9dc4cb049eb1da9f3b7952b012..557271fd291df7285bb425eb8d2efd8ec6c4e4a2 100644 --- a/drivers/net/appletalk/Makefile +++ b/drivers/net/appletalk/Makefile @@ -6,6 +6,8 @@ # unless it's something special (ie not a .c file). # +O_TARGET := built-in.o + obj-y := obj-n := obj-m := @@ -16,7 +18,5 @@ obj-$(CONFIG_IPDDP) += ipddp.o obj-$(CONFIG_COPS) += cops.o obj-$(CONFIG_LTPC) += ltpc.o -O_TARGET := appletalk.o - include $(TOPDIR)/Rules.make diff --git a/drivers/net/arcnet/Makefile b/drivers/net/arcnet/Makefile index 87d84a8448d321bf72a2cdd9b82abcbf47c97b56..58403cd6be6b1faa7b4df9151bd3c4ae8a7511c4 100644 --- a/drivers/net/arcnet/Makefile +++ b/drivers/net/arcnet/Makefile @@ -5,6 +5,8 @@ # unless it's something special (ie not a .c file). # +O_TARGET := built-in.o + obj-y := obj-n := obj-m := @@ -22,6 +24,4 @@ obj-$(CONFIG_ARCNET_COM20020) += com20020.o obj-$(CONFIG_ARCNET_COM20020_ISA) += com20020-isa.o obj-$(CONFIG_ARCNET_COM20020_PCI) += com20020-pci.o -O_TARGET := arcnetdrv.o - include $(TOPDIR)/Rules.make diff --git a/drivers/net/e100/Makefile b/drivers/net/e100/Makefile index 066956eac1a205a153f157906f66a586570a6514..1df67109a4f68af0f2e948bf3f8adad49a573eb3 100644 --- a/drivers/net/e100/Makefile +++ b/drivers/net/e100/Makefile @@ -7,10 +7,11 @@ # # Note 2! The CFLAGS definitions are now in the main makefile... -O_TARGET := e100.o +O_TARGET := built-in.o -obj-y := e100_main.o e100_config.o e100_proc.o e100_phy.o \ - e100_eeprom.o e100_test.o -obj-m := $(O_TARGET) +obj-$(CONFIG_E100) += e100.o + +e100-objs := e100_main.o e100_config.o e100_proc.o e100_phy.o \ + e100_eeprom.o e100_test.o include $(TOPDIR)/Rules.make diff --git a/drivers/net/e1000/Makefile b/drivers/net/e1000/Makefile index 0e99ae2369e0704f33d1412ae86b77f72f8209cc..0bd0d577bae07d399b165f89de52b8b0009df9f4 100644 --- a/drivers/net/e1000/Makefile +++ b/drivers/net/e1000/Makefile @@ -7,9 +7,11 @@ # # Note 2! The CFLAGS definitions are now in the main makefile... -O_TARGET := e1000.o +O_TARGET := built-in.o -obj-y := e1000_main.o e1000_hw.o e1000_ethtool.o e1000_param.o e1000_proc.o -obj-m := $(O_TARGET) +obj-$(CONFIG_E1000) += e1000.o + +e1000-objs := e1000_main.o e1000_hw.o e1000_ethtool.o e1000_param.o \ + e1000_proc.o include $(TOPDIR)/Rules.make diff --git a/drivers/net/fc/Makefile b/drivers/net/fc/Makefile index f6103ff06078e61ddc44656c643b612e3dcfe319..4f22d0694ffe29affd299ab087f30317028ad13c 100644 --- a/drivers/net/fc/Makefile +++ b/drivers/net/fc/Makefile @@ -5,7 +5,7 @@ # Rewritten to use lists instead of if-statements. # -O_TARGET := fc.o +O_TARGET := built-in.o obj-$(CONFIG_IPHASE5526) += iph5526.o diff --git a/drivers/net/hamradio/Makefile b/drivers/net/hamradio/Makefile index 16c20a7c00579b84bb312db9cf7567e5b78cae7d..ccf5051739b172b1d453c1d9c6ac4d552b98a240 100644 --- a/drivers/net/hamradio/Makefile +++ b/drivers/net/hamradio/Makefile @@ -11,7 +11,7 @@ # -O_TARGET := hamradio.o +O_TARGET := built-in.o export-objs = hdlcdrv.o @@ -26,12 +26,6 @@ obj-$(CONFIG_BAYCOM_SER_FDX) += baycom_ser_fdx.o hdlcdrv.o obj-$(CONFIG_BAYCOM_SER_HDX) += baycom_ser_hdx.o hdlcdrv.o obj-$(CONFIG_BAYCOM_PAR) += baycom_par.o hdlcdrv.o obj-$(CONFIG_BAYCOM_EPP) += baycom_epp.o hdlcdrv.o -obj-$(CONFIG_SOUNDMODEM) += hdlcdrv.o - -subdir-$(CONFIG_SOUNDMODEM) += soundmodem - -ifeq ($(CONFIG_SOUNDMODEM),y) -obj-y += soundmodem/soundmodem.o -endif +obj-$(CONFIG_SOUNDMODEM) += soundmodem/ hdlcdrv.o include $(TOPDIR)/Rules.make diff --git a/drivers/net/hamradio/soundmodem/Makefile b/drivers/net/hamradio/soundmodem/Makefile index 959701ab15bbf63fb20fbf43a8a9a54da52c22a8..6d1ba016ad5e1ca912502f8f1de1515460924f5e 100644 --- a/drivers/net/hamradio/soundmodem/Makefile +++ b/drivers/net/hamradio/soundmodem/Makefile @@ -9,20 +9,21 @@ # parent makes.. # -O_TARGET := soundmodem.o - -obj-y := sm.o -obj-$(CONFIG_SOUNDMODEM_SBC) += sm_sbc.o -obj-$(CONFIG_SOUNDMODEM_WSS) += sm_wss.o -obj-$(CONFIG_SOUNDMODEM_AFSK1200) += sm_afsk1200.o -obj-$(CONFIG_SOUNDMODEM_AFSK2400_7) += sm_afsk2400_7.o -obj-$(CONFIG_SOUNDMODEM_AFSK2400_8) += sm_afsk2400_8.o -obj-$(CONFIG_SOUNDMODEM_AFSK2666) += sm_afsk2666.o -obj-$(CONFIG_SOUNDMODEM_HAPN4800) += sm_hapn4800.o -obj-$(CONFIG_SOUNDMODEM_PSK4800) += sm_psk4800.o -obj-$(CONFIG_SOUNDMODEM_FSK9600) += sm_fsk9600.o - -obj-m := $(O_TARGET) +O_TARGET := built-in.o + +obj-$(CONFIG_SOUNDMODEM) += soundmodem.o + +soundmodem-y := sm.o +soundmodem-$(CONFIG_SOUNDMODEM_SBC) += sm_sbc.o +soundmodem-$(CONFIG_SOUNDMODEM_WSS) += sm_wss.o +soundmodem-$(CONFIG_SOUNDMODEM_AFSK1200) += sm_afsk1200.o +soundmodem-$(CONFIG_SOUNDMODEM_AFSK2400_7) += sm_afsk2400_7.o +soundmodem-$(CONFIG_SOUNDMODEM_AFSK2400_8) += sm_afsk2400_8.o +soundmodem-$(CONFIG_SOUNDMODEM_AFSK2666) += sm_afsk2666.o +soundmodem-$(CONFIG_SOUNDMODEM_HAPN4800) += sm_hapn4800.o +soundmodem-$(CONFIG_SOUNDMODEM_PSK4800) += sm_psk4800.o +soundmodem-$(CONFIG_SOUNDMODEM_FSK9600) += sm_fsk9600.o +soundmodem-objs := $(soundmodem-y) all: all_targets .PHONY: all diff --git a/drivers/net/irda/Makefile b/drivers/net/irda/Makefile index 6b9c37a54534e2a11b2ffd2bd81844ede9aeb31b..069196f6fe02d13f0841473bef80d5fb6508ada3 100644 --- a/drivers/net/irda/Makefile +++ b/drivers/net/irda/Makefile @@ -6,7 +6,7 @@ # Rewritten to use lists instead of if-statements. # -O_TARGET := irda.o +O_TARGET := built-in.o export-objs = irport.o diff --git a/drivers/net/pcmcia/Makefile b/drivers/net/pcmcia/Makefile index 24712eddb2b1c6b595869bd52c941100e4823524..d97f861af7b55d3c7d431d33528d46e628d52d07 100644 --- a/drivers/net/pcmcia/Makefile +++ b/drivers/net/pcmcia/Makefile @@ -4,7 +4,7 @@ # Makefile for the Linux PCMCIA network device drivers. # -O_TARGET := pcmcia_net.o +O_TARGET := built-in.o obj-y := obj-m := diff --git a/drivers/net/sk98lin/Makefile b/drivers/net/sk98lin/Makefile index f60d97f65802aeeb3f36f869d4b5902c7a17f54f..4869e3d5683c7c6f548a7c8957d6a0d73b0239f5 100644 --- a/drivers/net/sk98lin/Makefile +++ b/drivers/net/sk98lin/Makefile @@ -3,12 +3,13 @@ # Makefile for the SysKonnect SK-98xx device driver. # -O_TARGET := sk98lin.o +O_TARGET := built-in.o -obj-y := skge.o skaddr.o skgehwt.o skgeinit.o skgepnmi.o skgesirq.o \ - ski2c.o sklm80.o skqueue.o skrlmt.o sktimer.o skvpd.o \ - skxmac2.o skproc.o skcsum.o -obj-m := $(O_TARGET) +obj-$(CONFIG_SK98LIN) += sk98lin.o + +sk98lin-objs := skge.o skaddr.o skgehwt.o skgeinit.o skgepnmi.o skgesirq.o \ + ski2c.o sklm80.o skqueue.o skrlmt.o sktimer.o skvpd.o \ + skxmac2.o skproc.o skcsum.o # DBGDEF = \ # -DDEBUG diff --git a/drivers/net/skfp/Makefile b/drivers/net/skfp/Makefile index f8cc4b23a69dc36318a8a31f03db32d2715ca586..c48b89c4aff59ffbde5c284ef12aebeb65be0930 100644 --- a/drivers/net/skfp/Makefile +++ b/drivers/net/skfp/Makefile @@ -2,12 +2,14 @@ # Makefile for the SysKonnect FDDI PCI adapter driver # -O_TARGET := skfp.o -obj-y := skfddi.o hwmtm.o fplustm.o smt.o cfm.o \ +O_TARGET := built-in.o + +obj-$(CONFIG_SKFP) += skfp.o + +skfp-objs := skfddi.o hwmtm.o fplustm.o smt.o cfm.o \ ecm.o pcmplc.o pmf.o queue.o rmt.o \ smtdef.o smtinit.o smttimer.o srf.o lnkstat.o \ smtparse.o hwt.o drvfbi.o ess.o -obj-m := skfp.o # NOTE: # Compiling this driver produces some warnings (and some more are @@ -16,7 +18,7 @@ obj-m := skfp.o # drivers, and fixing it for Linux might bring problems on other # projects. To keep the source common for all those drivers (and # thus simplify fixes to it), please do not clean it up! - + EXTRA_CFLAGS += -I. -DPCI -DMEM_MAPPED_IO -Wno-strict-prototypes include $(TOPDIR)/Rules.make diff --git a/drivers/net/tokenring/Makefile b/drivers/net/tokenring/Makefile index 8c1c1ff5eb38e753081e06c8ffdb0da3bd7f01f9..c9bb72cf0f3c4c38c0dc74e8cb705ecf2b87e05f 100644 --- a/drivers/net/tokenring/Makefile +++ b/drivers/net/tokenring/Makefile @@ -6,6 +6,8 @@ # unless it's something special (ie not a .c file). # +O_TARGET := built-in.o + obj-y := obj-n := obj-m := @@ -23,6 +25,4 @@ obj-$(CONFIG_TMSISA) += tmsisa.o obj-$(CONFIG_SMCTR) += smctr.o obj-$(CONFIG_3C359) += 3c359.o -O_TARGET := tr.o - include $(TOPDIR)/Rules.make diff --git a/drivers/net/tulip/Makefile b/drivers/net/tulip/Makefile index abbcef43fa9d9dad41b1077067813b901686614c..e4f682b1425028df53cc6dab6e1ed52291a21928 100644 --- a/drivers/net/tulip/Makefile +++ b/drivers/net/tulip/Makefile @@ -4,7 +4,7 @@ # Makefile for the Linux "Tulip" family network device drivers. # -O_TARGET := tulip_net.o +O_TARGET := built-in.o obj-y := obj-m := diff --git a/drivers/net/wan/Makefile b/drivers/net/wan/Makefile index ebf712b3b8bb440ac21d0eff9c1145b097a455ab..bc8e6ae9acb3a8947bf3e78d2c44f5bce65cea9e 100644 --- a/drivers/net/wan/Makefile +++ b/drivers/net/wan/Makefile @@ -5,7 +5,7 @@ # Rewritten to use lists instead of if-statements. # -O_TARGET := wan.o +O_TARGET := built-in.o export-objs := z85230.o syncppp.o comx.o sdladrv.o cycx_drv.o hdlc_generic.o \ dlci.o pc300_drv.o @@ -51,12 +51,8 @@ obj-$(CONFIG_LANMEDIA) += syncppp.o obj-$(CONFIG_SYNCLINK_SYNCPPP) += syncppp.o obj-$(CONFIG_X25_ASY) += x25_asy.o -subdir-$(CONFIG_LANMEDIA) += lmc +obj-$(CONFIG_LANMEDIA) += lmc/ -ifeq ($(CONFIG_LANMEDIA),y) - obj-y += lmc/lmc.o -endif - obj-$(CONFIG_DLCI) += dlci.o obj-$(CONFIG_SDLA) += sdla.o ifeq ($(CONFIG_WANPIPE_MULTPPP),y) diff --git a/drivers/net/wan/lmc/Makefile b/drivers/net/wan/lmc/Makefile index 222435477d43fae9dc5c73466f89ea65500e9682..ec5cec6735ccf514ff9f0a54c4f4e22c9c402f7c 100644 --- a/drivers/net/wan/lmc/Makefile +++ b/drivers/net/wan/lmc/Makefile @@ -4,10 +4,11 @@ # Specifically the 1000,1200,5200,5245 # -O_TARGET := lmc.o +O_TARGET := built-in.o -obj-y := lmc_debug.o lmc_media.o lmc_main.o lmc_proto.o -obj-m := lmc.o +obj-$(CONFIG_LANMEDIA) += lmc.o + +lmc-objs := lmc_debug.o lmc_media.o lmc_main.o lmc_proto.o # Like above except every packet gets echoed to KERN_DEBUG # in hex diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile index 0b9a00f68654942154807bf3cf6bd9253a665548..14b29aa75e80ef0b70268e99ebde4f934ef285d2 100644 --- a/drivers/net/wireless/Makefile +++ b/drivers/net/wireless/Makefile @@ -4,7 +4,7 @@ # Makefile for the Linux Wireless network device drivers. # -O_TARGET := wireless_net.o +O_TARGET := built-in.o obj-y := obj-m :=