
EXECS = fuse.o fuse.ko
OBJS = dev.o dir.o file.o inode.o

all: $(EXECS)

ifdef CONFIG_LINUXDIR
VERSION := $(shell sed -n -e 's/^\([A-Z]*\)\ =\ \([-0-9.A-Za-z]*\)$$/\1=\2/p' -e 's/^\([A-Z]*\)\ =\ \(-[-a-z0-9]*\)$$/\1=\2/p' ${ROOTDIR}/${CONFIG_LINUXDIR}/Makefile | grep VERSION)
PATCHLEVEL := $(shell sed -n -e 's/^\([A-Z]*\)\ =\ \([-0-9.A-Za-z]*\)$$/\1=\2/p' -e 's/^\([A-Z]*\)\ =\ \(-[-a-z0-9]*\)$$/\1=\2/p' ${ROOTDIR}/${CONFIG_LINUXDIR}/Makefile | grep PATCHLEVEL)
RELEASE := $(shell awk -F \" '/[ 	]*\#[ 	]*define[ 	]*UTS_RELEASE[ 	]*/ { print $$2 }' ${ROOTDIR}/${CONFIG_LINUXDIR}/include/linux/version.h|tail -n 1)
VERSION_CODE := $(shell awk '/[ 	]*\#[ 	]*define[ 	]*LINUX_VERSION_CODE[   ]*/ { print $$3 }' ${ROOTDIR}/${CONFIG_LINUXDIR}/include/linux/version.h|tail -n 1)
else
VERSION_CODE := 0
endif

CFLAGS = -fno-builtin -nostdinc -D__uClinux__ -D__KERNEL__ -I${ROOTDIR}/${CONFIG_LINUXDIR}/include -Wall -Wstrict-prototypes -Wno-trigraphs -O1 -fno-strict-aliasing -fno-common -I$(GCC_DIR)/include -pipe -DNO_MM -DNO_FPU $(CPUFLAGS) -Wa,-S -Wa,$(CPUFLAGS) -DUTS_SYSNAME="uClinux" -D__linux__ -DMODULE  -nostdinc -iwithprefix include
CFLAGS += -DFUSE_VERSION=\"2.2\"

CFLAGS += -I../include
CFLAGS += -D_FILE_OFFSET_BITS=64
CFLAGS += -DFUSE_USE_VERSION=22

LDFLAGS = -r

COMPOBJ = compat/parser.o

fuse.o: $(OBJS) $(COMPOBJ)
	# ugly way to set kernel version variables
	$(LD) $(LDFLAGS) -o $@ $(OBJS) $(COMPOBJ)

ifeq ($(shell if [ $(VERSION_CODE) -ge 132608 ]; then echo y; fi),y)
CFLAGS += -DKBUILD_MODNAME=fuse
OBJMOD = fuse.mod.o
else
# romptr not valid for 2.6.x
CFLAGS += -DMAGIC_ROM_PTR
OBJMOD = 
endif

fuse.ko: $(OBJS) $(OBJMOD)
	$(LD) $(LDFLAGS) -o $@ $(OBJS) $(OBJMOD)

romfs:
	mkdir -p ${ROMFSDIR}/lib/modules/${RELEASE}
ifeq ($(shell if [ $(VERSION_CODE) -ge 132608 ]; then echo y; fi),y)
	$(ROMFSINST) /lib/modules/${RELEASE}/fuse.ko
else
	$(ROMFSINST) /lib/modules/${RELEASE}/fuse.o
endif

install:
	install -d $(INSTALLDIR)/lib/modules/$(RELEASE)
	install fuse.o $(INSTALLDIR)/lib/modules/$(RELEASE)/fuse.o

clean:
	rm -f $(EXECS) *~ *.gdb *.elf *.o *.ko *.s *.i $(COMPOBJ)

