Towards non-recursive makefiles

From: Matthew Wilcox (willy@thepuffingroup.com)
Date: Sun Jan 23 2000 - 18:36:16 EST


I've converted the fs/Makefile to work in a non-recursive style.
It's not a complete solution; in particular I haven't yet done all the
funky things needed for modules (though the genksyms works which was
one of my goals) and I've broken the automatic dependencies. I also get
some icky recursive dependency warnings, and I know why I'm getting them,
I just can't quite think how to fix them.

The compelling part is the removal of more than 800 lines from the fs/
Makefiles and the time difference:

make SUBDIRS=fs modules takes
real 0m1.102s
user 0m0.770s
sys 0m0.280s
instead of
real 0m3.538s
user 0m2.640s
sys 0m0.690s

on my P-II laptop. Identical .configs, blah, blah.

I'd appreciate people looking over the patch, let me know your thoughts.
It's against 2.2.12 because that's what I had available.

Makerules is a copy of Rules.make with a few minor changes. I made the
copy so I can still build the rest of the kernel. We should be able to
get further improvements once the rest of the Makefiles are changed.

diff -urN -X exclude kernel-source-2.2.12/Makerules linux-2.2.12-nonrec/Makerules
--- kernel-source-2.2.12/Makerules Wed Dec 31 19:00:00 1969
+++ linux-2.2.12-nonrec/Makerules Sun Jan 23 15:25:12 2000
@@ -0,0 +1,292 @@
+#
+# This file contains rules which are shared between multiple Makefiles.
+#
+
+#
+# False targets.
+#
+.PHONY: subdirs dummy
+
+#
+# Special variables which should not be exported
+#
+unexport EXTRA_ASFLAGS
+unexport EXTRA_CFLAGS
+unexport EXTRA_LDFLAGS
+unexport EXTRA_ARFLAGS
+unexport SUBDIRS
+unexport SUB_DIRS
+unexport ALL_SUB_DIRS
+unexport MOD_SUB_DIRS
+unexport O_TARGET
+unexport O_OBJS
+unexport L_OBJS
+unexport M_OBJS
+# intermediate objects that form part of a module
+unexport MI_OBJS
+unexport ALL_MOBJS
+# objects that export symbol tables
+unexport OX_OBJS
+unexport LX_OBJS
+unexport MX_OBJS
+unexport MIX_OBJS
+unexport SYMTAB_OBJS
+
+unexport MOD_LIST_NAME
+
+#
+# Common rules
+#
+
+%.s: %.c
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -S $< -o $@
+
+%.i: %.c
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -E $< > $@
+
+%.o: %.c
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -c -o $@ $<
+ @ ( \
+ echo 'ifeq ($(strip $(subst $(comma),:,$(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@))),$$(strip $$(subst $$(comma),:,$$(CFLAGS) $$(EXTRA_CFLAGS) $$(CFLAGS_$@))))' ; \
+ echo 'FILES_FLAGS_UP_TO_DATE += $@' ; \
+ echo 'endif' \
+ ) > $(dir $@)/.$(notdir $@).flags
+
+%.o: %.s
+ $(AS) $(ASFLAGS) $(EXTRA_CFLAGS) -o $@ $<
+
+%.o:: %.o
+ $(LD) $(EXTRA_LDFLAGS) -r -o $@ $^
+
+#
+#
+#
+all_targets: $(O_TARGET) $(L_TARGET) $(OBJ_Y)
+
+#
+# Rule to compile a set of .o files into one .o file
+#
+ifdef O_TARGET
+ALL_O = $(OX_OBJS) $(O_OBJS)
+$(O_TARGET): $(ALL_O)
+ rm -f $@
+ifneq "$(strip $(ALL_O))" ""
+ $(LD) $(EXTRA_LDFLAGS) -r -o $@ $(ALL_O)
+else
+ $(AR) rcs $@
+endif
+ @ ( \
+ echo 'ifeq ($(strip $(subst $(comma),:,$(EXTRA_LDFLAGS) $(ALL_O))),$$(strip $$(subst $$(comma),:,$$(EXTRA_LDFLAGS) $$(ALL_O))))' ; \
+ echo 'FILES_FLAGS_UP_TO_DATE += $@' ; \
+ echo 'endif' \
+ ) > $(dir $@)/.$(notdir $@).flags
+endif # O_TARGET
+
+#
+# Rule to compile a set of .o files into one .a file
+#
+ifdef L_TARGET
+$(L_TARGET): $(LX_OBJS) $(L_OBJS)
+ rm -f $@
+ $(AR) $(EXTRA_ARFLAGS) rcs $@ $(LX_OBJS) $(L_OBJS)
+ @ ( \
+ echo 'ifeq ($(strip $(subst $(comma),:,$(EXTRA_ARFLAGS) $(LX_OBJS) $(L_OBJS))),$$(strip $$(subst $$(comma),:,$$(EXTRA_ARFLAGS) $$(LX_OBJS) $$(L_OBJS))))' ; \
+ echo 'FILES_FLAGS_UP_TO_DATE += $@' ; \
+ echo 'endif' \
+ ) > $(dir $@)/.$(notdir $@).flags
+endif
+
+#
+# This make dependencies quickly
+#
+fastdep: dummy
+ $(TOPDIR)/scripts/mkdep $(wildcard *.[chS] local.h.master) > .depend
+ifdef ALL_SUB_DIRS
+ $(MAKE) $(patsubst %,_sfdep_%,$(ALL_SUB_DIRS)) _FASTDEP_ALL_SUB_DIRS="$(ALL_SUB_DIRS)"
+endif
+
+ifdef _FASTDEP_ALL_SUB_DIRS
+$(patsubst %,_sfdep_%,$(_FASTDEP_ALL_SUB_DIRS)):
+ $(MAKE) -C $(patsubst _sfdep_%,%,$@) fastdep
+endif
+
+
+#
+# A rule to make subdirectories
+#
+sub_dirs: $(patsubst %,_subdir_%,$(SUB_DIRS))
+
+ifdef SUB_DIRS
+$(patsubst %,_subdir_%,$(SUB_DIRS)) : dummy
+ $(MAKE) -C $(patsubst _subdir_%,%,$@)
+endif
+
+#
+# A rule to make modules
+#
+ALL_MOBJS = $(MX_OBJS) $(M_OBJS)
+ifneq "$(strip $(ALL_MOBJS))" ""
+PDWN=$(shell $(CONFIG_SHELL) $(TOPDIR)/scripts/pathdown.sh)
+endif
+
+ifdef MOD_SUB_DIRS
+$(patsubst %,_modsubdir_%,$(MOD_SUB_DIRS)) : dummy
+ $(MAKE) -C $(patsubst _modsubdir_%,%,$@) modules
+endif
+
+ifdef MOD_IN_SUB_DIRS
+$(patsubst %,_modinsubdir_%,$(MOD_IN_SUB_DIRS)) : dummy
+ $(MAKE) -C $(patsubst _modinsubdir_%,%,$@) modules
+endif
+
+modules: $(ALL_MOBJS) $(MIX_OBJS) $(MI_OBJS) dummy \
+ $(patsubst %,_modsubdir_%,$(MOD_SUB_DIRS)) \
+ $(patsubst %,_modinsubdir_%,$(MOD_IN_SUB_DIRS))
+ifneq "$(strip $(MOD_LIST_NAME))" ""
+ rm -f $$TOPDIR/modules/$(MOD_LIST_NAME)
+ for i in $(MOD_SUB_DIRS) $(ALL_MOBJS); do \
+ echo `basename $$i .o`.o >> $$TOPDIR/modules/$(MOD_LIST_NAME); \
+ done
+ifneq "$(strip $(MOD_TO_LIST))" ""
+ echo $(MOD_TO_LIST) >> $$TOPDIR/modules/$(MOD_LIST_NAME)
+endif
+endif
+ifneq "$(strip $(ALL_MOBJS))" ""
+ echo $(PDWN)
+ cd $$TOPDIR/modules; for i in $(ALL_MOBJS); do \
+ ln -sf ../$(PDWN)/$$i `basename $$i`; done
+endif
+
+#
+# A rule to do nothing
+#
+dummy:
+
+#
+# This is useful for testing
+#
+script:
+ $(SCRIPT)
+
+#
+# This sets version suffixes on exported symbols
+# Uses SYMTAB_OBJS
+# Separate the object into "normal" objects and "exporting" objects
+# Exporting objects are: all objects that define symbol tables
+#
+ifdef CONFIG_MODULES
+
+SYMTAB_OBJS = $(SYMTAB_m) $(SYMTAB_y) $(LX_OBJS) $(OX_OBJS) $(MX_OBJS) $(MIX_OBJS)
+
+ifdef CONFIG_MODVERSIONS
+ifneq "$(strip $(SYMTAB_OBJS))" ""
+
+MODINCL = $(TOPDIR)/include/linux/modules
+
+# The -w option (enable warnings) for genksyms will return here in 2.1
+# So where has it gone?
+#
+# Added the SMP separator to stop module accidents between uniprocessor
+# and SMP Intel boxes - AC - from bits by Michael Chastain
+#
+
+ifdef CONFIG_SMP
+ genksyms_smp_prefix := -p smp_
+else
+ genksyms_smp_prefix :=
+endif
+
+$(MODINCL)/%.ver: %.c
+ @if [ ! -r $(MODINCL)/$*.stamp -o $(MODINCL)/$*.stamp -ot $< ]; then \
+ echo '$(CC) $(CFLAGS) -E -D__GENKSYMS__ $<'; \
+ echo '| $(GENKSYMS) $(genksyms_smp_prefix) -k $(VERSION).$(PATCHLEVEL).$(SUBLEVEL) > $@.tmp'; \
+ $(CC) $(CFLAGS) -E -D__GENKSYMS__ $< \
+ | $(GENKSYMS) $(genksyms_smp_prefix) -k $(VERSION).$(PATCHLEVEL).$(SUBLEVEL) > $@.tmp; \
+ if [ -r $@ ] && cmp -s $@ $@.tmp; then echo $@ is unchanged; rm -f $@.tmp; \
+ else echo mv $@.tmp $@; mv -f $@.tmp $@; fi; \
+ fi; touch $(MODINCL)/$*.stamp
+
+$(addprefix $(MODINCL)/,$(SYMTAB_OBJS:.o=.ver)): $(TOPDIR)/include/linux/autoconf.h
+
+$(TOPDIR)/include/linux/modversions.h: $(addprefix $(MODINCL)/,$(SYMTAB_OBJS:.o=.ver))
+ @echo updating $(TOPDIR)/include/linux/modversions.h
+ @(echo "#ifndef _LINUX_MODVERSIONS_H";\
+ echo "#define _LINUX_MODVERSIONS_H"; \
+ echo "#include <linux/modsetver.h>"; \
+ cd $(TOPDIR)/include/linux/modules; \
+ for f in *.ver; do \
+ if [ -f $$f ]; then echo "#include <linux/modules/$${f}>"; fi; \
+ done; \
+ echo "#endif"; \
+ ) > $@
+
+dep fastdep: $(TOPDIR)/include/linux/modversions.h
+
+endif # SYMTAB_OBJS
+
+$(M_OBJS): $(TOPDIR)/include/linux/modversions.h
+ifdef MAKING_MODULES
+$(O_OBJS) $(L_OBJS): $(TOPDIR)/include/linux/modversions.h
+endif
+
+else
+
+$(TOPDIR)/include/linux/modversions.h:
+ @echo "#include <linux/modsetver.h>" > $@
+
+endif # CONFIG_MODVERSIONS
+
+ifneq "$(strip $(SYMTAB_OBJS))" ""
+$(SYMTAB_OBJS): $(TOPDIR)/include/linux/modversions.h $(SYMTAB_OBJS:.o=.c)
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -DEXPORT_SYMTAB -c -o $@ $(@:.o=.c)
+ @ ( \
+ echo 'ifeq ($(strip $(subst $(comma),:,$(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -DEXPORT_SYMTAB)),$$(strip $$(subst $$(comma),:,$$(CFLAGS) $$(EXTRA_CFLAGS) $$(CFLAGS_$@) -DEXPORT_SYMTAB)))' ; \
+ echo 'FILES_FLAGS_UP_TO_DATE += $@' ; \
+ echo 'endif' \
+ ) > $(dir $@)/.$(notdir $@).flags
+endif
+
+endif # CONFIG_MODULES
+
+
+#
+# include dependency files if they exist
+#
+ifneq ($(wildcard .depend),)
+include .depend
+endif
+
+ifneq ($(wildcard $(TOPDIR)/.hdepend),)
+include $(TOPDIR)/.hdepend
+endif
+
+#
+# Find files whose flags have changed and force recompilation.
+# For safety, this works in the converse direction:
+# every file is forced, except those whose flags are positively up-to-date.
+#
+FILES_FLAGS_UP_TO_DATE :=
+
+# For use in expunging commas from flags, which mung our checking.
+comma = ,
+
+FILES_FLAGS_EXIST := $(wildcard .*.flags)
+ifneq ($(FILES_FLAGS_EXIST),)
+include $(FILES_FLAGS_EXIST)
+endif
+
+FILES_FLAGS_CHANGED := $(strip \
+ $(filter-out $(FILES_FLAGS_UP_TO_DATE), \
+ $(O_TARGET) $(O_OBJS) $(OX_OBJS) \
+ $(L_TARGET) $(L_OBJS) $(LX_OBJS) \
+ $(M_OBJS) $(MX_OBJS) \
+ $(MI_OBJS) $(MIX_OBJS) \
+ ))
+
+# A kludge: .S files don't get flag dependencies (yet),
+# because that will involve changing a lot of Makefiles.
+FILES_FLAGS_CHANGED := $(strip \
+ $(filter-out $(patsubst %.S, %.o, $(wildcard *.S)), \
+ $(FILES_FLAGS_CHANGED)))
+
+# .PHONY: $(FILES_FLAGS_CHANGED)
diff -urN -X exclude kernel-source-2.2.12/fs/Makefile linux-2.2.12-nonrec/fs/Makefile
--- kernel-source-2.2.12/fs/Makefile Wed Aug 25 20:29:49 1999
+++ linux-2.2.12-nonrec/fs/Makefile Sun Jan 23 14:25:21 2000
@@ -7,18 +7,19 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
+first_rule: sub_dirs
+ $(MAKE) all_targets
+
 L_TARGET := filesystems.a
 L_OBJS = $(join $(SUB_DIRS),$(SUB_DIRS:%=/%.o))
 O_TARGET := fs.o
 O_OBJS = open.o read_write.o devices.o file_table.o buffer.o \
                 super.o block_dev.o stat.o exec.o pipe.o namei.o fcntl.o \
                 ioctl.o readdir.o select.o fifo.o locks.o filesystems.o \
- dcache.o inode.o attr.o bad_inode.o file.o $(BINFMTS)
+ dcache.o inode.o attr.o bad_inode.o file.o $(BINFMTS_y)
 
 MOD_LIST_NAME := FS_MODULES
-ALL_SUB_DIRS = coda minix ext2 fat msdos vfat proc isofs nfs umsdos ntfs \
- hpfs sysv smbfs ncpfs ufs affs romfs autofs hfs lockd \
- nfsd nls devpts adfs qnx4 efs
+ALL_SUB_DIRS = nls
 
 ifeq ($(CONFIG_QUOTA),y)
 O_OBJS += dquot.o
@@ -26,103 +27,6 @@
 O_OBJS += noquot.o
 endif
 
-ifeq ($(CONFIG_CODA_FS),y)
-SUB_DIRS += coda
-else
- ifeq ($(CONFIG_CODA_FS),m)
- MOD_SUB_DIRS += coda
- endif
-endif
-
-ifeq ($(CONFIG_MINIX_FS),y)
-SUB_DIRS += minix
-else
- ifeq ($(CONFIG_MINIX_FS),m)
- MOD_SUB_DIRS += minix
- endif
-endif
-
-ifeq ($(CONFIG_EXT2_FS),y)
-SUB_DIRS += ext2
-else
- ifeq ($(CONFIG_EXT2_FS),m)
- MOD_SUB_DIRS += ext2
- endif
-endif
-
-ifeq ($(CONFIG_FAT_FS),y)
-SUB_DIRS += fat
-else
- ifeq ($(CONFIG_FAT_FS),m)
- MOD_SUB_DIRS += fat
- endif
-endif
-
-ifeq ($(CONFIG_MSDOS_FS),y)
-SUB_DIRS += msdos
-else
- ifeq ($(CONFIG_MSDOS_FS),m)
- MOD_SUB_DIRS += msdos
- endif
-endif
-
-ifeq ($(CONFIG_VFAT_FS),y)
-SUB_DIRS += vfat
-else
- ifeq ($(CONFIG_VFAT_FS),m)
- MOD_SUB_DIRS += vfat
- endif
-endif
-
-ifdef CONFIG_PROC_FS
-SUB_DIRS += proc
-ifeq ($(CONFIG_SUN_OPENPROMFS),m)
-MOD_IN_SUB_DIRS += proc
-MOD_TO_LIST += openpromfs.o
-endif
-endif
-
-ifeq ($(CONFIG_ISO9660_FS),y)
-SUB_DIRS += isofs
-else
- ifeq ($(CONFIG_ISO9660_FS),m)
- MOD_SUB_DIRS += isofs
- endif
-endif
-
-ifeq ($(CONFIG_HFS_FS),y)
-SUB_DIRS += hfs
-else
- ifeq ($(CONFIG_HFS_FS),m)
- MOD_SUB_DIRS += hfs
- endif
-endif
-
-ifeq ($(CONFIG_NFS_FS),y)
-SUB_DIRS += nfs
-else
- ifeq ($(CONFIG_NFS_FS),m)
- MOD_SUB_DIRS += nfs
- endif
-endif
-
-ifeq ($(CONFIG_NFSD),y)
-CONFIG_LOCKD := y
-SUB_DIRS += nfsd
-else
- ifeq ($(CONFIG_NFSD),m)
- MOD_SUB_DIRS += nfsd
- endif
-endif
-
-ifeq ($(CONFIG_LOCKD),y)
-SUB_DIRS += lockd
-else
- ifeq ($(CONFIG_LOCKD),m)
- MOD_SUB_DIRS := lockd $(MOD_SUB_DIRS)
- endif
-endif
-
 # Since CONFIG_NLS might be set to y while there are modules
 # to be build in the nls/ directory, we need to enter the nls
 # directory every time, but with different rules.
@@ -135,160 +39,49 @@
   endif
 endif
 
-ifeq ($(CONFIG_UMSDOS_FS),y)
-SUB_DIRS += umsdos
-else
- ifeq ($(CONFIG_UMSDOS_FS),m)
- MOD_SUB_DIRS += umsdos
- endif
-endif
-
-ifeq ($(CONFIG_SYSV_FS),y)
-SUB_DIRS += sysv
-else
- ifeq ($(CONFIG_SYSV_FS),m)
- MOD_SUB_DIRS += sysv
- endif
-endif
-
-ifeq ($(CONFIG_SMB_FS),y)
-SUB_DIRS += smbfs
-else
- ifeq ($(CONFIG_SMB_FS),m)
- MOD_SUB_DIRS += smbfs
- endif
-endif
-
-ifeq ($(CONFIG_NCP_FS),y)
-SUB_DIRS += ncpfs
-else
- ifeq ($(CONFIG_NCP_FS),m)
- MOD_SUB_DIRS += ncpfs
- endif
-endif
-
-ifeq ($(CONFIG_HPFS_FS),y)
-SUB_DIRS += hpfs
-else
- ifeq ($(CONFIG_HPFS_FS),m)
- MOD_SUB_DIRS += hpfs
- endif
-endif
-
-ifeq ($(CONFIG_NTFS_FS),y)
-SUB_DIRS += ntfs
-else
- ifeq ($(CONFIG_NTFS_FS),m)
- MOD_SUB_DIRS += ntfs
- endif
-endif
-
-ifeq ($(CONFIG_UFS_FS),y)
-SUB_DIRS += ufs
-else
- ifeq ($(CONFIG_UFS_FS),m)
- MOD_SUB_DIRS += ufs
- endif
-endif
-
-ifeq ($(CONFIG_AFFS_FS),y)
-SUB_DIRS += affs
-else
- ifeq ($(CONFIG_AFFS_FS),m)
- MOD_SUB_DIRS += affs
- endif
-endif
-
-ifeq ($(CONFIG_ROMFS_FS),y)
-SUB_DIRS += romfs
-else
- ifeq ($(CONFIG_ROMFS_FS),m)
- MOD_SUB_DIRS += romfs
- endif
-endif
-
-ifeq ($(CONFIG_QNX4FS_FS),y)
-SUB_DIRS += qnx4
-else
- ifeq ($(CONFIG_QNX4FS_FS),m)
- MOD_SUB_DIRS += qnx4
- endif
-endif
-
-ifeq ($(CONFIG_EFS_FS),y)
-SUB_DIRS += efs
-else
- ifeq ($(CONFIG_EFS_FS),m)
- MOD_SUB_DIRS += efs
- endif
-endif
-
-ifeq ($(CONFIG_AUTOFS_FS),y)
-SUB_DIRS += autofs
-else
- ifeq ($(CONFIG_AUTOFS_FS),m)
- MOD_SUB_DIRS += autofs
- endif
-endif
-
-ifeq ($(CONFIG_ADFS_FS),y)
-SUB_DIRS += adfs
-else
- ifeq ($(CONFIG_ADFS_FS),m)
- MOD_SUB_DIRS += adfs
- endif
-endif
-
-ifeq ($(CONFIG_DEVPTS_FS),y)
-SUB_DIRS += devpts
-else
- ifeq ($(CONFIG_DEVPTS_FS),m)
- MOD_SUB_DIRS += devpts
- endif
-endif
-
-ifeq ($(CONFIG_BINFMT_ELF),y)
-BINFMTS += binfmt_elf.o
-else
- ifeq ($(CONFIG_BINFMT_ELF),m)
- M_OBJS += binfmt_elf.o
- endif
-endif
-
-ifeq ($(CONFIG_BINFMT_AOUT),y)
-BINFMTS += binfmt_aout.o
-else
- ifeq ($(CONFIG_BINFMT_AOUT),m)
- M_OBJS += binfmt_aout.o
- endif
-endif
-
-ifeq ($(CONFIG_BINFMT_JAVA),y)
-BINFMTS += binfmt_java.o
-else
- ifeq ($(CONFIG_BINFMT_JAVA),m)
- M_OBJS += binfmt_java.o
- endif
-endif
-
-ifeq ($(CONFIG_BINFMT_EM86),y)
-BINFMTS += binfmt_em86.o
-else
- ifeq ($(CONFIG_BINFMT_EM86),m)
- M_OBJS += binfmt_em86.o
- endif
-endif
+BINFMTS_$(CONFIG_BINFMT_ELF) += binfmt_elf.o
+BINFMTS_$(CONFIG_BINFMT_AOUT) += binfmt_aout.o
+BINFMTS_$(CONFIG_BINFMT_JAVA) += binfmt_java.o
+BINFMTS_$(CONFIG_BINFMT_EM86) += binfmt_em86.o
+BINFMTS_$(CONFIG_BINFMT_MISC) += binfmt_misc.o
+# binfmt_script is always there
+BINFMTS_y += binfmt_script.o
 
+OBJ_y :=
+OBJ_m :=
+OBJ_n :=
+SYMTAB_y :=
+SYMTAB_m :=
+SYMTAB_n :=
+
+include adfs/Makefile
+include affs/Makefile
+include autofs/Makefile
+include coda/Makefile
+include devpts/Makefile
+include efs/Makefile
+include ext2/Makefile
+include fat/Makefile
+include hfs/Makefile
+include hpfs/Makefile
+include isofs/Makefile
+include lockd/Makefile
+include minix/Makefile
+include msdos/Makefile
+include ncpfs/Makefile
+include nfs/Makefile
+include nfsd/Makefile
+include ntfs/Makefile
+include proc/Makefile
+include qnx4/Makefile
+include romfs/Makefile
+include smbfs/Makefile
+include sysv/Makefile
+include umsdos/Makefile
+include vfat/Makefile
+include ufs/Makefile
 
-ifeq ($(CONFIG_BINFMT_MISC),y)
-BINFMTS += binfmt_misc.o
-else
- ifeq ($(CONFIG_BINFMT_MISC),m)
- M_OBJS += binfmt_misc.o
- endif
-endif
-
-# binfmt_script is always there
-BINFMTS += binfmt_script.o
+L_OBJS += $(OBJ_y)
+M_OBJS += $(OBJ_m) $(BINFMTS_m)
 
-include $(TOPDIR)/Rules.make
+include $(TOPDIR)/Makerules
diff -urN -X exclude kernel-source-2.2.12/fs/adfs/Makefile linux-2.2.12-nonrec/fs/adfs/Makefile
--- kernel-source-2.2.12/fs/adfs/Makefile Wed Jun 24 17:30:09 1998
+++ linux-2.2.12-nonrec/fs/adfs/Makefile Sun Jan 23 13:18:14 2000
@@ -7,8 +7,8 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := adfs.o
-O_OBJS := dir.o file.o inode.o map.o namei.o super.o
-M_OBJS := $(O_TARGET)
+OBJ := adfs/adfs.o
+OBJS := dir.o file.o inode.o map.o namei.o super.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_ADFS_FS) += $(OBJ)
+$(OBJ) : $(addprefix adfs/,$OBJS)
diff -urN -X exclude kernel-source-2.2.12/fs/affs/Makefile linux-2.2.12-nonrec/fs/affs/Makefile
--- kernel-source-2.2.12/fs/affs/Makefile Wed Jun 24 17:30:09 1998
+++ linux-2.2.12-nonrec/fs/affs/Makefile Sun Jan 23 14:09:14 2000
@@ -7,8 +7,8 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := affs.o
-O_OBJS := super.o namei.o inode.o file.o dir.o amigaffs.o bitmap.o symlink.o
-M_OBJS := $(O_TARGET)
+OBJ := affs/affs.o
+OBJS := super.o namei.o inode.o file.o dir.o amigaffs.o bitmap.o symlink.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_AFFS_FS) += $(OBJ)
+$(OBJ) : $(addprefix affs/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/autofs/Makefile linux-2.2.12-nonrec/fs/autofs/Makefile
--- kernel-source-2.2.12/fs/autofs/Makefile Wed May 14 01:41:14 1997
+++ linux-2.2.12-nonrec/fs/autofs/Makefile Sun Jan 23 14:28:42 2000
@@ -4,32 +4,8 @@
 # We can build this either out of the kernel tree or the autofs tools tree.
 #
 
-O_TARGET := autofs.o
-O_OBJS := dir.o dirhash.o init.o inode.o root.o symlink.o waitq.o
+OBJ := autofs/autofs.o
+OBJS := dir.o dirhash.o init.o inode.o root.o symlink.o waitq.o
 
-M_OBJS := $(O_TARGET)
-
-ifdef TOPDIR
-#
-# Part of the kernel code
-#
-include $(TOPDIR)/Rules.make
-else
-#
-# Standalone (handy for development)
-#
-include ../Makefile.rules
-
-CFLAGS += -D__KERNEL__ -DMODULE $(KFLAGS) -I../include -I$(KINCLUDE) $(MODFLAGS)
-
-all: $(O_TARGET)
-
-$(O_TARGET): $(O_OBJS)
- $(LD) -r -o $(O_TARGET) $(O_OBJS)
-
-install: $(O_TARGET)
- install -c $(O_TARGET) /lib/modules/`uname -r`/fs
-
-clean:
- rm -f *.o *.s
-endif
+OBJ_$(CONFIG_AUTOFS_FS) += $(OBJ)
+$(OBJ) : $(addprefix autofs/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/coda/Makefile linux-2.2.12-nonrec/fs/coda/Makefile
--- kernel-source-2.2.12/fs/coda/Makefile Fri Dec 18 15:45:00 1998
+++ linux-2.2.12-nonrec/fs/coda/Makefile Sun Jan 23 15:07:21 2000
@@ -2,14 +2,9 @@
 # Makefile for the Linux Coda filesystem routines.
 #
 
-O_TARGET := coda.o
-O_OBJS := psdev.o cache.o cnode.o inode.o dir.o file.o upcall.o coda_linux.o\
- symlink.o pioctl.o sysctl.o
-M_OBJS := $(O_TARGET)
-
-# If you want debugging output, please uncomment the following line.
-
-# EXTRA_CFLAGS += -DDEBUG -DDEBUG_SMB_MALLOC=1
-
-include $(TOPDIR)/Rules.make
+OBJ := coda/coda.o
+OBJS := psdev.o cache.o cnode.o inode.o dir.o file.o upcall.o \
+ coda_linux.o symlink.o pioctl.o sysctl.o
 
+OBJ_$(CONFIG_CODA_FS) += $(OBJ)
+$(OBJ) : $(addprefix coda/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/devpts/Makefile linux-2.2.12-nonrec/fs/devpts/Makefile
--- kernel-source-2.2.12/fs/devpts/Makefile Wed Jun 24 17:30:09 1998
+++ linux-2.2.12-nonrec/fs/devpts/Makefile Sun Jan 23 14:28:57 2000
@@ -2,9 +2,8 @@
 # Makefile for the Linux /dev/pts virtual filesystem.
 #
 
-O_TARGET := devpts.o
-O_OBJS := root.o inode.o
+OBJ := devpts/devpts.o
+OBJS := root.o inode.o
 
-M_OBJS := $(O_TARGET)
-
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_DEVPTS_FS) += $(OBJ)
+$(OBJ) : $(addprefix devpts/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/efs/Makefile linux-2.2.12-nonrec/fs/efs/Makefile
--- kernel-source-2.2.12/fs/efs/Makefile Mon Aug 9 15:04:41 1999
+++ linux-2.2.12-nonrec/fs/efs/Makefile Sun Jan 23 13:29:40 2000
@@ -7,8 +7,8 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile...
 
-O_TARGET := efs.o
-O_OBJS := super.o inode.o namei.o dir.o file.o symlink.o
-M_OBJS := $(O_TARGET)
+OBJ := efs/efs.o
+OBJS := super.o inode.o namei.o dir.o file.o symlink.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_EFS_FS) += $(OBJ)
+$(OBJ) : $(OBJS)
diff -urN -X exclude kernel-source-2.2.12/fs/ext2/Makefile linux-2.2.12-nonrec/fs/ext2/Makefile
--- kernel-source-2.2.12/fs/ext2/Makefile Mon Sep 23 01:38:18 1996
+++ linux-2.2.12-nonrec/fs/ext2/Makefile Sun Jan 23 15:07:43 2000
@@ -7,9 +7,9 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile...
 
-O_TARGET := ext2.o
-O_OBJS := acl.o balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
- ioctl.o namei.o super.o symlink.o truncate.o
-M_OBJS := $(O_TARGET)
+OBJ := ext2/ext2.o
+OBJS := acl.o balloc.o bitmap.o dir.o file.o fsync.o ialloc.o \
+ inode.o ioctl.o namei.o super.o symlink.o truncate.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_EXT2_FS) += $(OBJ)
+$(OBJ) : $(addprefix ext2/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/fat/Makefile linux-2.2.12-nonrec/fs/fat/Makefile
--- kernel-source-2.2.12/fs/fat/Makefile Wed Jun 24 17:30:09 1998
+++ linux-2.2.12-nonrec/fs/fat/Makefile Sun Jan 23 15:04:15 2000
@@ -7,9 +7,10 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := fat.o
-O_OBJS := buffer.o cache.o dir.o file.o inode.o misc.o mmap.o tables.o cvf.o
-OX_OBJS := fatfs_syms.o
-M_OBJS := $(O_TARGET)
+OBJ := fat/fat.o
+OBJS_X := fat/fatfs_syms.o
+OBJS := buffer.o cache.o dir.o file.o inode.o misc.o mmap.o tables.o cvf.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_FAT_FS) += $(OBJ)
+SYMTAB_$(CONFIG_FAT_FS) += $(OBJS_X)
+$(OBJ) : $(OBJS_X) $(addprefix fat/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/hfs/Makefile linux-2.2.12-nonrec/fs/hfs/Makefile
--- kernel-source-2.2.12/fs/hfs/Makefile Wed Jun 24 17:30:10 1998
+++ linux-2.2.12-nonrec/fs/hfs/Makefile Sun Jan 23 13:35:24 2000
@@ -7,12 +7,11 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := hfs.o
-O_OBJS := balloc.o bdelete.o bfind.o bins_del.o binsert.o bitmap.o bitops.o \
- bnode.o brec.o btree.o catalog.o dir.o dir_cap.o dir_dbl.o \
- dir_nat.o extent.o file.o file_cap.o file_hdr.o inode.o mdb.o \
- part_tbl.o string.o super.o sysdep.o trans.o version.o
+OBJ := hfs/hfs.o
+OBJS := balloc.o bdelete.o bfind.o bins_del.o binsert.o bitmap.o bitops.o \
+ bnode.o brec.o btree.o catalog.o dir.o dir_cap.o dir_dbl.o \
+ dir_nat.o extent.o file.o file_cap.o file_hdr.o inode.o mdb.o \
+ part_tbl.o string.o super.o sysdep.o trans.o version.o
 
-M_OBJS := $(O_TARGET)
-
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_HFS_FS) += $(OBJ)
+$(OBJ) : $(addprefix hfs/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/hpfs/Makefile linux-2.2.12-nonrec/fs/hpfs/Makefile
--- kernel-source-2.2.12/fs/hpfs/Makefile Wed Jun 24 17:30:10 1998
+++ linux-2.2.12-nonrec/fs/hpfs/Makefile Sun Jan 23 13:31:34 2000
@@ -7,8 +7,8 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := hpfs.o
-O_OBJS := hpfs_fs.o hpfs_caps.o
-M_OBJS := $(O_TARGET)
+OBJ := hpfs/hpfs.o
+OBJS := hpfs_fs.o hpfs_caps.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_HPFS_FS) += $(OBJ)
+$(OBJ) : $(addprefix hpfs/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/isofs/Makefile linux-2.2.12-nonrec/fs/isofs/Makefile
--- kernel-source-2.2.12/fs/isofs/Makefile Wed Jun 24 17:30:10 1998
+++ linux-2.2.12-nonrec/fs/isofs/Makefile Sun Jan 23 15:08:17 2000
@@ -7,13 +7,10 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := isofs.o
-O_OBJS := namei.o inode.o file.o dir.o util.o rock.o symlink.o
+OBJ := isofs/isofs.o
+OBJS_y := namei.o inode.o file.o dir.o util.o rock.o symlink.o
 
-ifdef CONFIG_JOLIET
-O_OBJS += joliet.o
-endif
+OBJS_$(CONFIG_JOLIET) += joliet.o
 
-M_OBJS := $(O_TARGET)
-
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_ISO9660_FS) += $(OBJ)
+$(OBJ) : $(addprefix isofs/,$(OBJS_y))
diff -urN -X exclude kernel-source-2.2.12/fs/lockd/Makefile linux-2.2.12-nonrec/fs/lockd/Makefile
--- kernel-source-2.2.12/fs/lockd/Makefile Mon Apr 7 14:35:30 1997
+++ linux-2.2.12-nonrec/fs/lockd/Makefile Sun Jan 23 14:21:16 2000
@@ -7,10 +7,11 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile...
 
-O_TARGET := lockd.o
-O_OBJS := clntlock.o clntproc.o host.o svc.o svclock.o svcshare.o \
+OBJ := lockd/lockd.o
+OBJS_X := lockd/lockd_syms.o
+OBJS := clntlock.o clntproc.o host.o svc.o svclock.o svcshare.o \
             svcproc.o svcsubs.o mon.o xdr.o
-OX_OBJS := lockd_syms.o
-M_OBJS := $(O_TARGET)
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_LOCKD) += $(OBJ)
+SYMTAB_$(CONFIG_LOCKD) += $(OBJS_X)
+$(OBJ) : $(OBJS_X) $(addprefix lockd/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/minix/Makefile linux-2.2.12-nonrec/fs/minix/Makefile
--- kernel-source-2.2.12/fs/minix/Makefile Wed Jun 24 17:30:10 1998
+++ linux-2.2.12-nonrec/fs/minix/Makefile Sun Jan 23 15:26:40 2000
@@ -7,8 +7,8 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := minix.o
-O_OBJS := bitmap.o truncate.o namei.o inode.o file.o dir.o symlink.o fsync.o
-M_OBJS := $(O_TARGET)
+OBJ := minix/minix.o
+OBJS := bitmap.o truncate.o namei.o inode.o file.o dir.o symlink.o fsync.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_MINIX_FS) += $(OBJ)
+$(OBJ) : $(addprefix minix/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/msdos/Makefile linux-2.2.12-nonrec/fs/msdos/Makefile
--- kernel-source-2.2.12/fs/msdos/Makefile Wed Jun 24 17:30:10 1998
+++ linux-2.2.12-nonrec/fs/msdos/Makefile Sun Jan 23 12:11:53 2000
@@ -7,9 +7,10 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := msdos.o
-O_OBJS := namei.o
-OX_OBJS := msdosfs_syms.o
-M_OBJS := $(O_TARGET)
+OBJ := msdos/msdos.o
+OBJS_X := msdos/msdosfs_syms.o
+OBJS := msdos/namei.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_MSDOS_FS) += $(OBJ)
+SYMTAB_$(CONFIG_MSDOS_FS) += $(OBJS_X)
+$(OBJ) : $(OBJS) $(OBJS_X)
diff -urN -X exclude kernel-source-2.2.12/fs/ncpfs/Makefile linux-2.2.12-nonrec/fs/ncpfs/Makefile
--- kernel-source-2.2.12/fs/ncpfs/Makefile Tue Apr 20 18:17:20 1999
+++ linux-2.2.12-nonrec/fs/ncpfs/Makefile Sun Jan 23 14:08:58 2000
@@ -7,14 +7,14 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := ncpfs.o
-O_OBJS := dir.o file.o inode.o ioctl.o mmap.o ncplib_kernel.o sock.o \
+OBJ := ncpfs/ncpfs.o
+OBJS := dir.o file.o inode.o ioctl.o mmap.o ncplib_kernel.o sock.o \
                 symlink.o ncpsign_kernel.o
-M_OBJS := $(O_TARGET)
 
 # If you want debugging output, please uncomment the following line
-# EXTRA_CFLAGS += -DDEBUG_NCP=1
+# $(OBJS) : EXTRA_CFLAGS += -DDEBUG_NCP=1
 
 CFLAGS_ncplib_kernel.o := -finline-functions
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_NCP_FS) += $(OBJ)
+$(OBJ) : $(addprefix ncpfs/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/nfs/Makefile linux-2.2.12-nonrec/fs/nfs/Makefile
--- kernel-source-2.2.12/fs/nfs/Makefile Wed Jun 24 17:30:10 1998
+++ linux-2.2.12-nonrec/fs/nfs/Makefile Sun Jan 23 14:16:43 2000
@@ -7,14 +7,10 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := nfs.o
-O_OBJS := inode.o file.o read.o write.o dir.o symlink.o proc.o \
- nfs2xdr.o
+OBJ := nfs/nfs.o
+OBJS_y := inode.o file.o read.o write.o dir.o symlink.o proc.o nfs2xdr.o
 
-ifdef CONFIG_ROOT_NFS
- O_OBJS += nfsroot.o mount_clnt.o
-endif
+OBJS_$(CONFIG_ROOT_NFS) += nfsroot.o mount_clnt.o
 
-M_OBJS := $(O_TARGET)
-
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_NFS_FS) += $(OBJ)
+$(OBJ) : $(addprefix nfs/,$(OBJS_y))
diff -urN -X exclude kernel-source-2.2.12/fs/nfsd/Makefile linux-2.2.12-nonrec/fs/nfsd/Makefile
--- kernel-source-2.2.12/fs/nfsd/Makefile Tue Dec 29 14:42:25 1998
+++ linux-2.2.12-nonrec/fs/nfsd/Makefile Sun Jan 23 14:23:56 2000
@@ -7,11 +7,9 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := nfsd.o
-O_OBJS := nfssvc.o nfsctl.o nfsproc.o nfsfh.o vfs.o \
- export.o auth.o lockd.o nfscache.o nfsxdr.o \
- stats.o
+OBJ := nfsd/nfsd.o
+OBJS := nfssvc.o nfsctl.o nfsproc.o nfsfh.o vfs.o export.o auth.o \
+ lockd.o nfscache.o nfsxdr.o stats.o
 
-M_OBJS := $(O_TARGET)
-
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_NFSD) += $(OBJ)
+$(OBJ) : $(addprefix nfsd/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/nls/Makefile linux-2.2.12-nonrec/fs/nls/Makefile
--- kernel-source-2.2.12/fs/nls/Makefile Wed Aug 25 20:29:49 1999
+++ linux-2.2.12-nonrec/fs/nls/Makefile Sun Jan 23 13:16:06 2000
@@ -4,313 +4,49 @@
 
 MOD_LIST_NAME := NLS_MODULES
 
-NLS = nls_base.o
+OBJS_y = nls_base.o
 
-ifeq ($(CONFIG_NLS_CODEPAGE_437),y)
-NLS += nls_cp437.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_437),m)
- M_OBJS += nls_cp437.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_737),y)
-NLS += nls_cp737.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_737),m)
- M_OBJS += nls_cp737.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_775),y)
-NLS += nls_cp775.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_775),m)
- M_OBJS += nls_cp775.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_850),y)
-NLS += nls_cp850.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_850),m)
- M_OBJS += nls_cp850.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_852),y)
-NLS += nls_cp852.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_852),m)
- M_OBJS += nls_cp852.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_855),y)
-NLS += nls_cp855.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_855),m)
- M_OBJS += nls_cp855.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_857),y)
-NLS += nls_cp857.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_857),m)
- M_OBJS += nls_cp857.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_860),y)
-NLS += nls_cp860.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_860),m)
- M_OBJS += nls_cp860.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_861),y)
-NLS += nls_cp861.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_861),m)
- M_OBJS += nls_cp861.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_862),y)
-NLS += nls_cp862.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_862),m)
- M_OBJS += nls_cp862.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_863),y)
-NLS += nls_cp863.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_863),m)
- M_OBJS += nls_cp863.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_864),y)
-NLS += nls_cp864.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_864),m)
- M_OBJS += nls_cp864.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_865),y)
-NLS += nls_cp865.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_865),m)
- M_OBJS += nls_cp865.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_866),y)
-NLS += nls_cp866.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_866),m)
- M_OBJS += nls_cp866.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_869),y)
-NLS += nls_cp869.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_869),m)
- M_OBJS += nls_cp869.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_874),y)
-NLS += nls_cp874.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_874),m)
- M_OBJS += nls_cp874.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_1250),y)
-NLS += nls_cp1250.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_1250),m)
- M_OBJS += nls_cp1250.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_1251),y)
-NLS += nls_cp1251.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_1251),m)
- M_OBJS += nls_cp1251.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_1252),y)
-NLS += nls_cp1252.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_1252),m)
- M_OBJS += nls_cp1252.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_1253),y)
-NLS += nls_cp1253.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_1253),m)
- M_OBJS += nls_cp1253.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_1254),y)
-NLS += nls_cp1254.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_1254),m)
- M_OBJS += nls_cp1254.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_1255),y)
-NLS += nls_cp1255.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_1255),m)
- M_OBJS += nls_cp1255.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_1256),y)
-NLS += nls_cp1256.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_1256),m)
- M_OBJS += nls_cp1256.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_1257),y)
-NLS += nls_cp1257.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_1257),m)
- M_OBJS += nls_cp1257.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_CODEPAGE_1258),y)
-NLS += nls_cp1258.o
-else
- ifeq ($(CONFIG_NLS_CODEPAGE_1258),m)
- M_OBJS += nls_cp1258.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_1),y)
-NLS += nls_iso8859-1.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_1),m)
- M_OBJS += nls_iso8859-1.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_2),y)
-NLS += nls_iso8859-2.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_2),m)
- M_OBJS += nls_iso8859-2.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_3),y)
-NLS += nls_iso8859-3.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_3),m)
- M_OBJS += nls_iso8859-3.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_4),y)
-NLS += nls_iso8859-4.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_4),m)
- M_OBJS += nls_iso8859-4.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_5),y)
-NLS += nls_iso8859-5.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_5),m)
- M_OBJS += nls_iso8859-5.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_6),y)
-NLS += nls_iso8859-6.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_6),m)
- M_OBJS += nls_iso8859-6.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_7),y)
-NLS += nls_iso8859-7.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_7),m)
- M_OBJS += nls_iso8859-7.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_8),y)
-NLS += nls_iso8859-8.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_8),m)
- M_OBJS += nls_iso8859-8.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_9),y)
-NLS += nls_iso8859-9.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_9),m)
- M_OBJS += nls_iso8859-9.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_10),y)
-NLS += nls_iso8859-10.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_10),m)
- M_OBJS += nls_iso8859-10.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_14),y)
-NLS += nls_iso8859-14.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_14),m)
- M_OBJS += nls_iso8859-14.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_ISO8859_15),y)
-NLS += nls_iso8859-15.o
-else
- ifeq ($(CONFIG_NLS_ISO8859_15),m)
- M_OBJS += nls_iso8859-15.o
- endif
-endif
-
-ifeq ($(CONFIG_NLS_KOI8_R),y)
-NLS += nls_koi8-r.o
-else
- ifeq ($(CONFIG_NLS_KOI8_R),m)
- M_OBJS += nls_koi8-r.o
- endif
-endif
+OBJS_$(CONFIG_NLS_CODEPAGE_437) += nls_cp437.o
+OBJS_$(CONFIG_NLS_CODEPAGE_737) += nls_cp737.o
+OBJS_$(CONFIG_NLS_CODEPAGE_775) += nls_cp775.o
+OBJS_$(CONFIG_NLS_CODEPAGE_850) += nls_cp850.o
+OBJS_$(CONFIG_NLS_CODEPAGE_852) += nls_cp852.o
+OBJS_$(CONFIG_NLS_CODEPAGE_855) += nls_cp855.o
+OBJS_$(CONFIG_NLS_CODEPAGE_857) += nls_cp857.o
+OBJS_$(CONFIG_NLS_CODEPAGE_860) += nls_cp860.o
+OBJS_$(CONFIG_NLS_CODEPAGE_861) += nls_cp861.o
+OBJS_$(CONFIG_NLS_CODEPAGE_862) += nls_cp862.o
+OBJS_$(CONFIG_NLS_CODEPAGE_863) += nls_cp863.o
+OBJS_$(CONFIG_NLS_CODEPAGE_864) += nls_cp864.o
+OBJS_$(CONFIG_NLS_CODEPAGE_865) += nls_cp865.o
+OBJS_$(CONFIG_NLS_CODEPAGE_866) += nls_cp866.o
+OBJS_$(CONFIG_NLS_CODEPAGE_869) += nls_cp869.o
+OBJS_$(CONFIG_NLS_CODEPAGE_874) += nls_cp874.o
+OBJS_$(CONFIG_NLS_CODEPAGE_1250) += nls_cp1250.o
+OBJS_$(CONFIG_NLS_CODEPAGE_1251) += nls_cp1251.o
+OBJS_$(CONFIG_NLS_CODEPAGE_1252) += nls_cp1252.o
+OBJS_$(CONFIG_NLS_CODEPAGE_1253) += nls_cp1253.o
+OBJS_$(CONFIG_NLS_CODEPAGE_1254) += nls_cp1254.o
+OBJS_$(CONFIG_NLS_CODEPAGE_1255) += nls_cp1255.o
+OBJS_$(CONFIG_NLS_CODEPAGE_1256) += nls_cp1256.o
+OBJS_$(CONFIG_NLS_CODEPAGE_1257) += nls_cp1257.o
+OBJS_$(CONFIG_NLS_CODEPAGE_1258) += nls_cp1258.o
+OBJS_$(CONFIG_NLS_ISO8859_1) += nls_iso8859-1.o
+OBJS_$(CONFIG_NLS_ISO8859_2) += nls_iso8859-2.o
+OBJS_$(CONFIG_NLS_ISO8859_3) += nls_iso8859-3.o
+OBJS_$(CONFIG_NLS_ISO8859_4) += nls_iso8859-4.o
+OBJS_$(CONFIG_NLS_ISO8859_5) += nls_iso8859-5.o
+OBJS_$(CONFIG_NLS_ISO8859_6) += nls_iso8859-6.o
+OBJS_$(CONFIG_NLS_ISO8859_7) += nls_iso8859-7.o
+OBJS_$(CONFIG_NLS_ISO8859_8) += nls_iso8859-8.o
+OBJS_$(CONFIG_NLS_ISO8859_9) += nls_iso8859-9.o
+OBJS_$(CONFIG_NLS_ISO8859_10) += nls_iso8859-10.o
+OBJS_$(CONFIG_NLS_ISO8859_14) += nls_iso8859-14.o
+OBJS_$(CONFIG_NLS_ISO8859_15) += nls_iso8859-15.o
+OBJS_$(CONFIG_NLS_KOI8_R) += nls_koi8-r.o
 
 O_TARGET = nls.o
-OX_OBJS = $(NLS)
+OX_OBJS = $(OBJS_y)
+M_OBJS = $(OBJS_m)
 
 include $(TOPDIR)/Rules.make
diff -urN -X exclude kernel-source-2.2.12/fs/ntfs/Makefile linux-2.2.12-nonrec/fs/ntfs/Makefile
--- kernel-source-2.2.12/fs/ntfs/Makefile Mon Apr 12 13:05:58 1999
+++ linux-2.2.12-nonrec/fs/ntfs/Makefile Sun Jan 23 15:09:21 2000
@@ -1,9 +1,10 @@
 # Rules for making the NTFS driver
 
-O_TARGET := ntfs.o
-O_OBJS := fs.o sysctl.o support.o util.o inode.o dir.o super.o attr.o
-M_OBJS := $(O_TARGET)
-EXTRA_CFLAGS = -DNTFS_IN_LINUX_KERNEL -DNTFS_VERSION=\"990411\"
+OBJ := ntfs/ntfs.o
+OBJS := fs.o sysctl.o support.o util.o inode.o dir.o super.o attr.o
 
-include $(TOPDIR)/Rules.make
+CFLAGS_ntfs/fs.o = -DNTFS_VERSION=\"990411\"
+$(OBJS) : EXTRA_CFLAGS += -DNTFS_IN_LINUX_KERNEL
 
+OBJ_$(CONFIG_NTFS_FS) += $(OBJ)
+$(OBJ) : $(addprefix ntfs/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/proc/Makefile linux-2.2.12-nonrec/fs/proc/Makefile
--- kernel-source-2.2.12/fs/proc/Makefile Wed Jun 24 17:30:10 1998
+++ linux-2.2.12-nonrec/fs/proc/Makefile Sun Jan 23 14:55:39 2000
@@ -7,25 +7,21 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := proc.o
-O_OBJS := inode.o root.o base.o generic.o mem.o link.o fd.o array.o \
+OBJ := proc/proc.o
+OBJS_X := proc/procfs_syms.o
+OBJS_y := inode.o root.o base.o generic.o mem.o link.o fd.o array.o \
                 kmsg.o scsi.o proc_tty.o
-ifdef CONFIG_OMIRR
-O_OBJS := $(O_OBJS) omirr.o
-endif
-OX_OBJS := procfs_syms.o
-M_OBJS :=
+
+OBJS_$(CONFIG_OMIRR) += omirr.o
+
+OBJS_$(CONFIG_PROC_DEVICETREE) += proc_devtree.o
 
 ifeq ($(CONFIG_SUN_OPENPROMFS),y)
-O_OBJS += openpromfs.o
+OBJS_y += openpromfs.o
 else
- ifeq ($(CONFIG_SUN_OPENPROMFS),m)
- M_OBJS += openpromfs.o
- endif
-endif
-
-ifeq ($(CONFIG_PROC_DEVICETREE),y)
-O_OBJS += proc_devtree.o
+OBJ_$(CONFIG_SUN_OPENPROMFS) += proc/openpromfs.o
 endif
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_PROC_FS) += $(OBJ)
+SYMTAB_$(CONFIG_PROC_FS) += $(OBJS_X)
+$(OBJ) : $(OBJS_X) $(addprefix proc/,$(OBJS_y))
diff -urN -X exclude kernel-source-2.2.12/fs/qnx4/Makefile linux-2.2.12-nonrec/fs/qnx4/Makefile
--- kernel-source-2.2.12/fs/qnx4/Makefile Mon Aug 31 16:01:35 1998
+++ linux-2.2.12-nonrec/fs/qnx4/Makefile Sun Jan 23 13:20:33 2000
@@ -7,9 +7,9 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile...
 
-O_TARGET := qnx4.o
-O_OBJS := inode.o dir.o namei.o file.o bitmap.o symlinks.o truncate.o \
-fsync.o
-M_OBJS := $(O_TARGET)
+OBJ := qnx4/qnx4.o
+OBJS := inode.o dir.o namei.o file.o bitmap.o symlinks.o truncate.o \
+ fsync.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_QNX4_FS) += $(OBJ)
+$(OBJ) : $(addprefix qnx4,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/romfs/Makefile linux-2.2.12-nonrec/fs/romfs/Makefile
--- kernel-source-2.2.12/fs/romfs/Makefile Wed Jun 24 17:30:10 1998
+++ linux-2.2.12-nonrec/fs/romfs/Makefile Sun Jan 23 14:11:12 2000
@@ -7,8 +7,8 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := romfs.o
-O_OBJS := inode.o
-M_OBJS := $(O_TARGET)
+OBJ := romfs/romfs.o
+OBJS := romfs/inode.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_ROMFS_FS) += $(OBJ)
+$(OBJ) : $(OBJS)
diff -urN -X exclude kernel-source-2.2.12/fs/smbfs/Makefile linux-2.2.12-nonrec/fs/smbfs/Makefile
--- kernel-source-2.2.12/fs/smbfs/Makefile Sun Oct 12 13:17:05 1997
+++ linux-2.2.12-nonrec/fs/smbfs/Makefile Sun Jan 23 15:05:40 2000
@@ -7,12 +7,10 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile...
 
-O_TARGET := smbfs.o
-O_OBJS := proc.o dir.o cache.o sock.o inode.o file.o ioctl.o
-M_OBJS := $(O_TARGET)
-
+OBJ := smbfs/smbfs.o
+OBJS := proc.o dir.o cache.o sock.o inode.o file.o ioctl.o
 # If you want debugging output, please uncomment the following line
+# $(OBJS) : EXTRA_CFLAGS += -DDEBUG -DDEBUG_SMB_MALLOC=1
 
-# EXTRA_CFLAGS += -DDEBUG -DDEBUG_SMB_MALLOC=1
-
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_SMB_FS) += $(OBJ)
+$(OBJ) : $(addprefix smbfs/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/sysv/Makefile linux-2.2.12-nonrec/fs/sysv/Makefile
--- kernel-source-2.2.12/fs/sysv/Makefile Thu Jun 25 13:57:35 1998
+++ linux-2.2.12-nonrec/fs/sysv/Makefile Sun Jan 23 13:32:53 2000
@@ -7,9 +7,9 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := sysv.o
-O_OBJS := ialloc.o balloc.o inode.o file.o dir.o symlink.o namei.o \
+OBJ := sysv/sysv.o
+OBJS := ialloc.o balloc.o inode.o file.o dir.o symlink.o namei.o \
                 fsync.o truncate.o
-M_OBJS := $(O_TARGET)
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_SYSV_FS) += $(OBJ)
+$(OBJ) : $(addprefix sysv/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/ufs/Makefile linux-2.2.12-nonrec/fs/ufs/Makefile
--- kernel-source-2.2.12/fs/ufs/Makefile Sun Jul 26 04:20:22 1998
+++ linux-2.2.12-nonrec/fs/ufs/Makefile Sun Jan 23 15:29:11 2000
@@ -7,9 +7,9 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile.
 
-O_TARGET := ufs.o
-O_OBJS := acl.o balloc.o cylinder.o dir.o file.o ialloc.o inode.o \
+OBJ := ufs/ufs.o
+OBJS := acl.o balloc.o cylinder.o dir.o file.o ialloc.o inode.o \
                 namei.o super.o symlink.o truncate.o util.o
-M_OBJS := $(O_TARGET)
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_UFS_FS) += $(OBJ)
+$(OBJ) : $(addprefix ufs/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/umsdos/Makefile linux-2.2.12-nonrec/fs/umsdos/Makefile
--- kernel-source-2.2.12/fs/umsdos/Makefile Wed Sep 9 12:01:19 1998
+++ linux-2.2.12-nonrec/fs/umsdos/Makefile Sun Jan 23 15:06:32 2000
@@ -6,20 +6,10 @@
 # unless it's something special (not a .c file).
 #
 # Note 2: the CFLAGS definitions are now in the main makefile.
-O_TARGET := umsdos.o
 
-O_OBJS := dir.o file.o inode.o ioctl.o mangle.o namei.o \
+OBJ := umsdos/umsdos.o
+OBJS := dir.o file.o inode.o ioctl.o mangle.o namei.o \
                 rdir.o symlink.o emd.o check.o
 
-M_OBJS := $(O_TARGET)
-
-include $(TOPDIR)/Rules.make
-
-clean:
- rm -f core *.o *.a *.s
-
-p:
- proto *.c >/usr/include/linux/umsdos_fs.p
-
-doc:
- nadoc -i -p umsdos.doc - /tmp/umsdos.mpg
+OBJ_$(CONFIG_UMSDOS_FS) += $(OBJ)
+$(OBJ) : $(addprefix umsdos/,$(OBJS))
diff -urN -X exclude kernel-source-2.2.12/fs/vfat/Makefile linux-2.2.12-nonrec/fs/vfat/Makefile
--- kernel-source-2.2.12/fs/vfat/Makefile Thu Oct 23 17:00:15 1997
+++ linux-2.2.12-nonrec/fs/vfat/Makefile Sun Jan 23 12:16:38 2000
@@ -7,9 +7,10 @@
 #
 # Note 2! The CFLAGS definitions are now in the main makefile...
 
-O_TARGET := vfat.o
-O_OBJS := namei.o
-OX_OBJS := vfatfs_syms.o
-M_OBJS := $(O_TARGET)
+OBJ := vfat/vfat.o
+OBJS_X := vfat/vfatfs_syms.o
+OBJS := vfat/namei.o
 
-include $(TOPDIR)/Rules.make
+OBJ_$(CONFIG_VFAT_FS) += $(OBJ)
+SYMTAB_$(CONFIG_VFAT_FS) += $(OBJS_X)
+$(OBJ) : $(OBJS) $(OBJS_X)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jan 31 2000 - 21:00:11 EST