export CURRENT:=$(shell head -1 /usr/include/linux/version.h|( read i j k; echo $$k|sed s/\"//g))
#CURRENT=$(shell uname -r)

export KERNEL_LOCATION=/usr/src/linux

CARD = dvb

export CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
	  else if [ -x /bin/bash ]; then echo /bin/bash; \
	  else echo sh; fi ; fi)
export TOPDIR=$(KERNEL_LOCATION)

M_OBJS       = saa7146_v4l.o VES1893.o VES1820.o L64781.o SP8870.o stv0299.o \
		tda8083.o tuner.o 
MX_OBJS      = saa7146_core.o dmxdev.o dvb_demux.o dvb_net.o \
		dvb_filter.o dvb_firm.o dvb_frontend.o dvbdev.o $(CARD).o

obj-m        = $(MX_OBJS) $(M_OBJS)
export-objs := $(MX_OBJS)

EXTRA_CFLAGS = -I ../ost/include -I . -D__DVB_PACK__ -g -DUSE_OSD 

here:
	DIR=`pwd`; (cd $(KERNEL_LOCATION); make SUBDIRS=$$DIR modules)
	@echo

install:
	su -c "mkdir -p /lib/modules/$(CURRENT)/misc; cp -v $(M_OBJS) $(MX_OBJS) /lib/modules/$(CURRENT)/misc"

reload:
	make
	sync
	(	\
	rmmod $(CARD);		\
	rmmod dvb_frontend;     \
	rmmod dvb_demux;        \
	rmmod dmxdev;           \
	rmmod dvb_net;           \
	insmod dvb_net.o;                \
	insmod dmxdev.o;                \
	insmod dvb_demux.o;             \
	insmod dvb_frontend.o;     \
	insmod $(CARD).o init_chan=2 pids_off=0;	\
	)
	sync


insmod: 
	./makedev.napi
	make
	(	\
	insmod dvbdev.o; \
	insmod dvb_net.o;                \
	insmod i2c-core; \
	insmod videodev;		\
	insmod dvb_filter.o;                \
	insmod dmxdev.o;                \
	insmod VES1893.o;		\
	insmod VES1820.o;		\
	insmod L64781.o;		\
	insmod SP8870.o debug=1;	\
	insmod tda8083.o;		\
	insmod stv0299.o;		\
	insmod tuner.o;			\
	insmod saa7146_core.o mode=0;	\
	insmod saa7146_v4l.o;		\
	insmod dvb_demux.o;             \
	insmod dvb_frontend.o;           \
	insmod $(CARD).o init_chan=2 pids_off=0;	\
	)
	sync

rmmod:
	(	\
	rmmod $(CARD);		\
	rmmod dvb_frontend;     \
	rmmod dvb_demux;        \
	rmmod dmxdev;           \
	rmmod saa7146_v4l;	\
	rmmod saa7146_core;	\
	rmmod dvb_filter;       \
	rmmod videodev;		\
	rmmod L64781;		\
	rmmod SP8870;		\
	rmmod VES1820;		\
	rmmod VES1893;		\
	rmmod stv0299;		\
	rmmod tda8083;		\
	rmmod tuner;		\
	rmmod i2c-core;		\
	rmmod dvb_net;          \
	rmmod dvbdev;		\
	)

newfirm: 
	DIR=`pwd`/arm_firm; (cd ./arm_firm/dvb25/; make ARM_FIRM=$$DIR)
	cp ./arm_firm/dvb25/arm_firm25/DPRAM arm_firm/Dpram
	cp ./arm_firm/dvb25/arm_firm25/ROOT arm_firm/Root

newfirm_dist: 
	DIR=`pwd`/arm_firm; (cd ./arm_firm/dvb25/; make ARM_FIRM=$$DIR FIRM_DIST=1)
	cp ./arm_firm/dvb25/arm_firm25/DPRAM Dpram
	cp ./arm_firm/dvb25/arm_firm25/ROOT Root

ftest: 
	DIR=`pwd`/arm_firm; (cd ./arm_firm/test/; make ARM_FIRM=$$DIR)
	cp ./arm_firm/test/arm_firm25/DPRAM arm_firm/Dpram
	cp ./arm_firm/test/arm_firm25/ROOT arm_firm/Root

ftest2: 
	DIR=`pwd`/arm_firm; (cd ./arm_firm/test2/; make test test.asm ARM_FIRM=$$DIR)

firmclean: 
	(cd ./arm_firm/dvb25/; make clean)

dvb_firm.h: Root Dpram fdump
	./fdump > dvb_firm.h

fdump: fdump.cc 
	g++ -O2 -o fdump fdump.cc

clean:
	-rm -f $(M_OBJS) $(MX_OBJS) *.o .*.o.flags *~

$(CARD).o: $(CARD).h dvb_demux.h dmxdev.h dvb_frontend.h dvb_filter.h dvb_firm.h

dvb_firm.o: dvb_firm.h

dvb_demux.o: dvb_demux.h dmxdev.h

dmxdev.o: dmxdev.h dvb_demux.h

VES1893.o: VES1893.c dvb_frontend.h

VES1820.o: VES1820.c dvb_frontend.h

L64781.o: L64781.c dvb_frontend.h

SP8870.o: SP8870.c dvb_frontend.h

stv0299.o: stv0299.c dvb_frontend.h

tda8083.o: tda8083.c dvb_frontend.h

dvb_filter.o: dvb_filter.c dvb_filter.h

include $(KERNEL_LOCATION)/Rules.make




