TOP	= ..
HDRS	= $(TOP)/crash.h $(TOP)/def.h

include	$(TOP)/Rules.make

ifeq ($(XFS),yes)
CSRCS		= table.c clean_mount.c mount.c pagebuf.c clean_vfs.c vfs.c\
		  clean_inode.c inode.c clean_log.c log.c clean_trans.c\
		  trans.c clean_ag.c clean_alloc.c alloc.c clean_quota.c\
		  quota.c
CSRCS_pagebuf	= clean_pagebuf.c
GENHEAD		= flags_inode.h flags_mount.h flags_pagebuf.h flags_trans.h\
		  flags_log_priv.h
else
CSRCS		= noxfs.c
endif

OBJS		= $(CSRCS:.c=.o)
OBJS_pagebuf	= $(CSRCS_pagebuf:.c=.o)

ifneq ($(origin CONFDIR),undefined)
INCLUDE = -I$(CONFDIR)
endif

INCLUDE		+= -I$(TOP) -I$(INCDIR)
ifeq ($(ARCH),i386)
INCLUDE		+= -I$(KERNELDIR)/include/asm/mach-default
endif
ifeq ($(wildcard $(KERNELDIR)/fs/xfs/quota),$(KERNELDIR)/fs/xfs/quota)
INCLUDE		+= -I$(KERNELDIR)/fs/xfs/quota
endif

CFLAGS		= $(CDEBUG) $(INCLUDE) '-DKBUILD_BASENAME="dummy"'

XFSDIR		= $(KERNELDIR)/fs/xfs
XFSLINUXDIR	= $(XFSDIR)/linux
ifeq ($(wildcard $(XFSDIR)/linux-2.6),$(XFSDIR)/linux-2.6)
XFSLINUXDIR	= $(XFSDIR)/linux-2.6
endif
ifeq ($(wildcard $(XFSDIR)/linux-2.4),$(XFSDIR)/linux-2.4)
XFSLINUXDIR	= $(XFSDIR)/linux-2.4
endif

XFSINCLUDE	= -I$(XFSDIR) -I$(KERNELDIR)/fs -I$(XFSLINUXDIR)
ifeq ($(PBDIR),no)
PB_INCLUDE	= -I$(XFSDIR) -I$(XFSLINUXDIR)
else
PB_INCLUDE	= -I$(XFSDIR)/pagebuf
endif
TARGET		= libxfs.a
DEPFILE		= Makefile.dep

ifeq ($(wildcard $(XFSDIR)/pagebuf/avl.h),$(XFSDIR)/pagebuf/avl.h)
PB_INCLUDE	+= -DHAVE_AVL
endif

ifeq ($(wildcard $(XFSDIR)/pagebuf/page_buf_internal.h),$(XFSDIR)/pagebuf/page_buf_internal.h)
PB_INCLUDE	+= -DHAVE_PB_INTERNAL
endif

all:	$(TARGET)

$(TARGET): $(GENHEAD) $(OBJS) $(OBJS_pagebuf)
	$(AR) cr $(TARGET) $(OBJS) $(OBJS_pagebuf)

$(OBJS) $(OBJS_pagebuf): $(HDRS)

$(OBJS): %.o: %.c
	$(CC) -c $(CFLAGS) $(XFSINCLUDE) $*.c

$(OBJS_pagebuf): %.o: %.c
	$(CC) -c $(CFLAGS) $(PB_INCLUDE) $*.c

flags_inode.h:
	$(BITNAME) $(XFSDIR)/xfs_inode.h $@

flags_mount.h:
	$(BITNAME) mflags:XFS_MOUNT_ $(XFSDIR)/xfs_mount.h $@

flags_trans.h:
	$(BITNAME) $(XFSDIR)/xfs_trans.h $@

ifeq ($(PBDIR),no)
flags_pagebuf.h:
	$(BITNAME) $(XFSLINUXDIR)/xfs_buf.h $@
else
ifeq ($(PBDIR),old)
flags_pagebuf.h:
	$(BITNAME) $(KERNELDIR)/include/linux/page_buf.h $@
else
flags_pagebuf.h:
	$(BITNAME) $(XFSDIR)/pagebuf/page_buf.h $@
endif
endif

flags_log_priv.h:
	$(BITNAME) $(XFSDIR)/xfs_log_priv.h $@

clean:
	/bin/rm -f $(TARGET) $(DEPFILE) *.o *~ *.swp $(GENHEAD)

depend:
	makedepend -f- $(INCLUDE) $(XFSINCLUDE) $(PB_INCLUDE) $(CSRCS) > $(DEPFILE)

ifeq ($(wildcard $(DEPFILE)),$(DEPFILE))
include $(DEPFILE)
endif
