#
# Makefile for the linux filesystem.
#
# 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 2! The CFLAGS definitions are now in the main makefile...

SUBDIRS = minix ext ext2 msdos proc isofs nfs xiafs hpfs sysv ifs

ifdef CONFIG_MINIX_FS
FS_SUBDIRS := $(FS_SUBDIRS) minix
ifeq ($(CONFIG_MINIX_FS),CONFIG_MINIX_FS)
FS_LDDIRS := $(FS_LDDIRS) minix
endif
endif
ifdef CONFIG_EXT_FS
FS_SUBDIRS := $(FS_SUBDIRS) ext
ifeq ($(CONFIG_EXT_FS),CONFIG_EXT_FS)
FS_LDDIRS := $(FS_LDDIRS) ext
endif
endif
ifdef CONFIG_EXT2_FS
FS_SUBDIRS := $(FS_SUBDIRS) ext2
ifeq ($(CONFIG_EXT2_FS),CONFIG_EXT2_FS)
FS_LDDIRS := $(FS_LDDIRS) ext2
endif
endif
ifdef CONFIG_MSDOS_FS
FS_SUBDIRS := $(FS_SUBDIRS) msdos
ifeq ($(CONFIG_MSDOS_FS),CONFIG_MSDOS_FS)
FS_LDDIRS := $(FS_LDDIRS) msdos
endif
endif
ifdef CONFIG_PROC_FS
FS_SUBDIRS := $(FS_SUBDIRS) proc
ifeq ($(CONFIG_PROC_FS),CONFIG_PROC_FS)
FS_LDDIRS := $(FS_LDDIRS) proc
endif
endif
ifdef CONFIG_ISO9660_FS
FS_SUBDIRS := $(FS_SUBDIRS) isofs
ifeq ($(CONFIG_ISO9660_FS),CONFIG_ISO9660_FS)
FS_LDDIRS := $(FS_LDDIRS) isofs
endif
endif
ifdef CONFIG_NFS_FS
FS_SUBDIRS := $(FS_SUBDIRS) nfs
ifeq ($(CONFIG_NFS_FS),CONFIG_NFS_FS)
FS_LDDIRS := $(FS_LDDIRS) nfs
endif
endif
ifdef CONFIG_SYSV_FS
FS_SUBDIRS := $(FS_SUBDIRS) sysv
ifeq ($(CONFIG_SYSV_FS),CONFIG_SYSV_FS)
FS_LDDIRS := $(FS_LDDIRS) sysv
endif
endif
ifdef CONFIG_XIA_FS
FS_SUBDIRS := $(FS_SUBDIRS) xiafs
ifeq ($(CONFIG_XIA_FS),CONFIG_XIA_FS)
FS_LDDIRS := $(FS_LDDIRS) xiafs
endif
endif
ifdef CONFIG_HPFS_FS
FS_SUBDIRS := $(FS_SUBDIRS) hpfs
ifeq ($(CONFIG_HPFS_FS),CONFIG_HPFS_FS)
FS_LDDIRS := $(FS_LDDIRS) hpfs
endif
endif
ifdef CONFIG_IFS_FS
FS_SUBDIRS := $(FS_SUBDIRS) ifs
ifeq ($(CONFIG_IFS_FS),CONFIG_IFS_FS)
FS_LDDIRS := $(FS_LDDIRS) ifs
endif
endif


ifdef CONFIG_BINFMT_ELF
BINFMTS := $(BINFMTS) binfmt_elf.o
ifeq ($(CONFIG_BINFMT_ELF),CONFIG_BINFMT_ELF)
LOADFMTS := $(LOADFMTS) binfmt_elf.o
endif
endif
ifdef CONFIG_BINFMT_COFF
BINFMTS := $(BINFMTS) binfmt_coff.o
ifeq ($(CONFIG_BINFMT_COFF),CONFIG_BINFMT_COFF)
LOADFMTS := $(LOADFMTS) binfmt_coff.o
endif
endif
ifdef CONFIG_QUOTA
BINFMTS := $(BINFMTS) quota.o
ifeq ($(CONFIG_QUOTA),CONFIG_QUOTA)
LOADFMTS := $(LOADFMTS) quota.o
endif
endif


.c.s:
	$(CC) $(CFLAGS) -S $<
.c.o:
	$(CC) $(CFLAGS) -c $<
.s.o:
	$(AS) -o $*.o $<

OBJS=	open.o read_write.o inode.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 \
	select.o fifo.o locks.o filesystems.o

all: filesystems.a fs.o

fs.o: $(OBJS) $(BINFMTS)
	ranlib filesystems.a
	$(LD) -r -o fs.o $(OBJS) $(LOADFMTS) filesystems.a

filesystems.a: dummy
	rm -f filesystems.a
	set -e; for i in $(FS_SUBDIRS); do \
	  test ! -d $$i || \
	    { $(MAKE) -C $$i; }; done; \
	set -e; for i in $(FS_LDDIRS); do \
	  test ! -d $$i || \
	    { $(AR) rcs filesystems.a $$i/$$i.o; }; done

depend dep:
	$(CPP) -M *.c > .depend
	set -e; for i in $(SUBDIRS); do \
	  test ! -d $$i || $(MAKE) -C $$i dep; done

dummy:

#
# include a dependency file if one exists
#
ifeq (.depend,$(wildcard .depend))
include .depend
endif
