Rewritten to use lists. Applies cleanly to t9/t10p1/t10p2. Tested.

--
Bartlomiej Zolnierkiewicz
<[EMAIL PROTECTED]>
--- linux-240t9/drivers/parport/Makefile        Sun Oct  3 14:57:30 1999
+++ linux/drivers/parport/Makefile      Sat Oct  7 18:26:35 2000
@@ -1,101 +1,51 @@
 #
-# Makefile for the kernel miscellaneous drivers.
+# Makefile for the kernel Parallel port device drivers.
 #
-# Note! Dependencies are done automagically by 'make dep', which also
-# removes any old dependencies. DON'T put your own dependencies here
-# unless it's something special (ie not a .c file).
+# Note! Parport is the Borg.  We have assimilated some other
+# drivers in the `char', `net' and `scsi' directories,
+# but left them there to allay suspicion.
 #
-# Note 2! The CFLAGS definitions are now inherited from the
-# parent makes..
+# 7 October 2000, Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
+# Rewritten to use lists instead of if-statements.
 #
-# Note 3! Parport is the Borg.  We have assimilated some other
-# drivers in the `char', `net' and `scsi' directories, but left them
-# there to allay suspicion.
-
-SUB_DIRS     := 
-MOD_SUB_DIRS := $(SUB_DIRS)
-ALL_SUB_DIRS := $(SUB_DIRS)
 
 L_TARGET := parport.a
-MX_OBJS  :=
-LX_OBJS  := 
-MI_OBJS  :=
-MIX_OBJS :=
-
-ifeq ($(CONFIG_PARPORT),y)
-  L_OBJS += share.o ieee1284.o ieee1284_ops.o procfs.o
-
-  ifeq ($(CONFIG_PARPORT_1284),y)
-    L_OBJS += daisy.o probe.o
-  endif
-
-  ifeq ($(CONFIG_PARPORT_PC),y)
-    LX_OBJS += parport_pc.o
-  else
-    ifeq ($(CONFIG_PARPORT_PC),m)
-      MX_OBJS += parport_pc.o
-    endif
-  endif
-  ifeq ($(CONFIG_PARPORT_AMIGA),y)
-    LX_OBJS += parport_amiga.o
-  else
-    ifeq ($(CONFIG_PARPORT_AMIGA),m)
-      M_OBJS += parport_amiga.o
-    endif
-  endif
-  ifeq ($(CONFIG_PARPORT_MFC3),y)
-    LX_OBJS += parport_mfc3.o
-  else
-    ifeq ($(CONFIG_PARPORT_MFC3),m)
-      M_OBJS += parport_mfc3.o
-    endif
-  endif
-  ifeq ($(CONFIG_PARPORT_ATARI),y)
-    LX_OBJS += parport_atari.o
-  else
-    ifeq ($(CONFIG_PARPORT_ATARI),m)
-      M_OBJS += parport_atari.o
-    endif
-  endif
-  ifeq ($(CONFIG_PARPORT_SUNBPP),y)
-    LX_OBJS += parport_sunbpp.o
-  else
-    ifeq ($(CONFIG_PARPORT_SUNBPP),m)
-      MX_OBJS += parport_sunbpp.o
-    endif
-  endif
-  LX_OBJS += init.o
-else
-  ifeq ($(CONFIG_PARPORT),m)
-    MI_OBJS += share.o ieee1284.o ieee1284_ops.o
-    ifeq ($(CONFIG_PARPORT_1284),y)
-      MI_OBJS += daisy.o probe.o
-    endif
-    ifneq ($(CONFIG_PROC_FS),n) 
-      MI_OBJS += procfs.o
-    endif
-    MIX_OBJS += init.o
-    M_OBJS += parport.o
-  endif
-  ifeq ($(CONFIG_PARPORT_PC),m)
-    MX_OBJS += parport_pc.o
-  endif
-  ifeq ($(CONFIG_PARPORT_AMIGA),m)
-    M_OBJS += parport_amiga.o
-  endif
-  ifeq ($(CONFIG_PARPORT_MFC3),m)
-    M_OBJS += parport_mfc3.o
-  endif
-  ifeq ($(CONFIG_PARPORT_ATARI),m)
-    M_OBJS += parport_atari.o
-  endif
-  ifeq ($(CONFIG_PARPORT_SUNBPP),m)
-    M_OBJS += parport_sunbpp.o
-  endif
+
+export-objs    := init.o parport_pc.o
+
+list-multi     := parport.o
+parport-objs   := share.o ieee1284.o ieee1284_ops.o init.o procfs.o
+
+ifeq ($(CONFIG_PARPORT_1284),y)
+       parport-objs    += daisy.o probe.o
 endif
 
+obj-$(CONFIG_PARPORT)          += parport.o
+obj-$(CONFIG_PARPORT_PC)       += parport_pc.o
+obj-$(CONFIG_PARPORT_AMIGA)    += parport_amiga.o
+obj-$(CONFIG_PARPORT_MFC3)     += parport_mfc3.o
+obj-$(CONFIG_PARPORT_ATARI)    += parport_atari.o
+obj-$(CONFIG_PARPORT_SUNBPP)   += parport_sunbpp.o
+
+# Extract lists of the multi-part drivers.
+# The 'int-*' lists are the intermediate files used to build the multi's.
+multi-y                := $(filter $(list-multi), $(obj-y))
+multi-m                := $(filter $(list-multi), $(obj-m))
+int-y          := $(sort $(foreach m, $(multi-y), $($(basename $(m))-objs)))
+int-m          := $(sort $(foreach m, $(multi-m), $($(basename $(m))-objs)))
+
+# Take multi-part drivers out of obj-y and put components in.
+obj-y          := $(filter-out $(list-multi), $(obj-y)) $(int-y)
+
+# Translate to Rules.make lists.
+L_OBJS         := $(filter-out $(export-objs), $(obj-y))
+LX_OBJS                := $(filter     $(export-objs), $(obj-y))
+M_OBJS         := $(sort $(filter-out  $(export-objs), $(obj-m)))
+MX_OBJS                := $(sort $(filter      $(export-objs), $(obj-m)))
+MI_OBJS                := $(sort $(filter-out  $(export-objs), $(int-m)))
+MIX_OBJS       := $(sort $(filter      $(export-objs), $(int-m)))
+
 include $(TOPDIR)/Rules.make
 
-# Special rule to build the composite parport.o module
-parport.o: $(MI_OBJS) $(MIX_OBJS)
-       $(LD) $(LD_RFLAG) -r -o $@ $(MI_OBJS) $(MIX_OBJS)
+parport.o: $(parport-objs)
+       $(LD) -r -o $@ $(parport-objs)

Reply via email to