
.EXPORT_ALL_VARIABLES:

EXECS = owfs owfs.static
OBJS = owfs.o owfs_callback.o

ifndef FUSE_DIR
FUSE_DIR := ../../../../../fuse
endif
ifndef OWFS_DIR
OWFS_DIR := ../../../..
endif
ifndef USB_DIR
USB_DIR := ../../../../../libusb
endif

all: $(EXECS)

CFLAGS += -I${FUSE_DIR}/include -I${OWFS_DIR}/module/owlib/src/include -I../include -I${OWFS_DIR}/src/include

ifdef ENABLE_CACHE
CFLAGS += -DOW_CACHE
endif
ifdef ENABLE_MT
CFLAGS += -DOW_MT
endif
ifdef ENABLE_USB
CFLAGS += -DOW_USB
CFLAGS += -I${USB_DIR}
USBLIBS = ${USB_DIR}/libusb.a
endif

FUSELIBS = ${FUSE_DIR}/lib/libfuse.a
OWLIBS = ${OWFS_DIR}/module/owlib/src/c/libow.a
EXTRALIBS =

LDFLAGS  += -mshared-library-id=0
ifdef LIBFUSE_SHARED
LDFLAGS  += -mshared-library-id=$(LIBFUSE_ID)
LDLIBS   += -L${FUSE_DIR}/lib/ -Wl,-R,${FUSE_DIR}/lib/libfuse.gdb -lfuse
else
EXTRALIBS += $(FUSELIBS)
endif

ifdef LIBOW_SHARED
LDFLAGS  += -mshared-library-id=$(LIBOW_ID)
LDLIBS   += -L${OWFS_DIR}/module/owlib/src/c/ -Wl,-R,${OWFS_DIR}/module/owlib/src/c/libow.gdb -low
else
EXTRALIBS += $(OWLIBS)
endif

EXTRALIBS += $(USBLIBS)

$(FUSELIBS):
	cd ${FUSE_DIR} ; make

$(OWLIBS):
	cd ${OWFS_DIR}/module/owlib ; make

owfs: $(OBJS) $(FUSELIBS) $(OWLIBS) $(USBLIBS)
	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTRALIBS) $(LDLIBS) $(LIBPTHREAD)

owfs.static: $(OBJS) $(FUSELIBS) $(OWLIBS) $(USBLIBS)
	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(EXTRALIBS) $(LDLIBS) $(LIBPTHREAD) -static

romfs:
	$(ROMFSINST) /usr/bin/owfs

install:
	install -d $(INSTALLDIR)/usr/bin
	install owfs $(INSTALLDIR)/usr/bin/owfs
	install owfs.static $(INSTALLDIR)/usr/bin/owfs.static

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

