# -*- makefile -*-

# COMMON

LIBDIR  	:= /tmp/fritz
FRMDIR  	:= $(DESTDIR)/usr/share/isdn
CNFDIR  	:= $(DESTDIR)/etc/isdn
OBJECTS 	:= main.o driver.o tools.o tables.o queue.o capilib_compat.o lib.o
CARDLIB 	:= $(shell getconf LONG_BIT)_$(CARD)-lib.o
CARDFRM2	:= fus2base.frm
CARDFRM3	:= fus3base.frm
CARDCNF 	:= capi.conf
KVERS   	:= $(shell uname -r)
TARGDIR 	:= $(DESTDIR)/lib/modules/$(KVERS)/misc


ifneq ($(KERNELRELEASE),)


# KERNEL

# needed while running inside kernel sources
EXTRA_CFLAGS	+= -D__$(CARD)__ -DTARGET=\"$(CARD)\"
ifndef DEBUG
EXTRA_CFLAGS	+= -DNDEBUG
endif
EXTRA_LDFLAGS	+= $(LIBDIR)/$(CARD)-lib.o

obj-m		:= $(CARD).o
$(CARD)-objs	:= $(OBJECTS)


else


# ARCHIVE

SOURCES		:= $(patsubst %.o,%.c,$(OBJECTS))
HEADERS		:= defs.h driver.h lib.h libdefs.h libstub.h lock.h \
		   main.h queue.h tables.h tools.h

ifeq ($(KDIR),)
KDIR		:= /lib/modules/$(KVERS)/build
endif

all:		$(CARD).ko
	
$(CARD).ko:	$(SOURCES) $(HEADERS)
		install -d $(LIBDIR)
		install -m 644 ../lib/$(CARDLIB) $(LIBDIR)/$(CARD)-lib.o
		@echo ". Go into kernel sources and compile module $(CARD):"
		$(MAKE) -C $(KDIR) M=$(shell pwd) modules
		@echo "."

clean:
		@echo ". Go into kernel sources and compile module $(CARD):"
		$(MAKE) -C $(KDIR) M=$(shell pwd) clean
		@echo "."
		$(RM) $(OBJECTS)
		$(RM) $(CARD).ko
		$(RM) -r $(LIBDIR)
		$(RM) .*.cmd $(CARD).mod.* 

install:	inst_frm inst_cnf inst_mod

inst_frm:
		install -d $(FRMDIR)
		install -m 644 ../frm/$(CARDFRM2) $(FRMDIR)
		install -m 644 ../frm/$(CARDFRM3) $(FRMDIR)

inst_cnf:
		@if [ -e $(CNFDIR)/$(CARDCNF) ] && \
		  [ `grep -c ^$(CARD) $(CNFDIR)/$(CARDCNF)` -gt 0 ]; \
		then \
		    echo "$(CARD) is already configured in $(CNFDIR)/$(CARDCNF)."; \
		else \
		  echo "install -d $(CNFDIR)"; \
		  install -d $(CNFDIR); \
		  echo "install -m 644 ../frm/$(CARDCNF) $(CNFDIR)"; \
		  install -m 644 ../frm/$(CARDCNF) $(CNFDIR); \
		fi

inst_mod:
		install -d $(TARGDIR)
		install -m 644 $(CARD).ko $(TARGDIR)
		@echo "stripping is needed since kernel 2.6.29:"
		strip --strip-debug $(TARGDIR)/$(CARD).ko
		@if [ `which depmod` ]; then depmod -a; fi

uninstall:
# NOT:	$(RM) $(CNFDIR)/$(CARDCNF)
		$(RM) $(FRMDIR)/$(CARDFRM2)
		$(RM) $(FRMDIR)/$(CARDFRM3)
		$(RM) $(TARGDIR)/$(CARD).ko
		@if [ `which depmod` ]; then depmod -a; fi


endif

