ifeq ($(obj),) obj = . endif ################################################# # configuration include $(obj)/Make.config # symbol exports export-objs := video-buf.o v4l1-compat.o v4l2-common.o export-objs += ir-common.o export-objs += bttv-if.o btcx-risc.o export-objs += cx88-cards.o cx88-core.o # drivers objects bttv-objs := bttv-driver.o bttv-cards.o bttv-risc.o bttv-if.o \ bttv-vbi.o bttv-i2c.o saa7134-objs := saa7134-core.o saa7134-i2c.o saa7134-video.o \ saa7134-vbi.o saa7134-tvaudio.o saa7134-oss.o \ saa7134-cards.o saa7134-ts.o saa7134-input.o \ saa7134-alsa.o cx88xx-objs := cx88-cards.o cx88-core.o cx88-i2c.o cx88-tvaudio.o \ cx88-input.o cx8800-objs := cx88-video.o cx88-vbi.o cx8802-objs := cx88-mpeg.o tuner-objs := tuner-core.o tuner-simple.o mt20xx.o tda8290.o tea5767.o list-multi := bttv.o saa7134.o cx88xx.o cx8800.o cx88-alsa.o cx8802.o em2820-objs := em2820-video.o em2820-i2c.o em2820-cards.o em2820-core.o \ em2820-input.o # what to build obj-m := video-buf.o v4l1-compat.o v4l2-common.o obj-$(CONFIG_VIDEO_BTTV) += btcx-risc.o ir-common.o bttv.o tveeprom.o obj-$(CONFIG_VIDEO_CX88) += btcx-risc.o cx88xx.o cx8800.o cx8802.o \ cx88-blackbird.o tveeprom.o obj-$(CONFIG_TVP5150) += tvp5150.o obj-$(CONFIG_SAA7113) += saa7113.o obj-$(CONFIG_EM2820) += em2820.o # THIS IS NOT FINISHED YET --- IT IS HERE ONLY FOR DEVELOPERS !!!! ifeq ($(CONFIG_VIDEO_ALSA),m) cx8801-objs := cx88-alsa.o obj-$(CONFIG_VIDEO_CX88) += cx88-alsa.o endif obj-$(CONFIG_VIDEO_SAA7134) += saa7134.o saa7134-empress.o saa6752hs.o obj-$(CONFIG_VIDEO_IR) += ir-common.o obj-$(CONFIG_VIDEO_TUNER) += tuner.o tda9887.o saa6588.o obj-$(CONFIG_VIDEO_TVAUDIO) += msp3400.o tvaudio.o tvmixer.o wm8775.o obj-$(CONFIG_VIDEO_CX88_DVB) += video-buf-dvb.o cx88-dvb.o obj-$(CONFIG_VIDEO_SAA7134_DVB) += video-buf-dvb.o saa7134-dvb.o obj-$(CONFIG_DVB_BT8XX) += bt878.o dvb-bt8xx.o dst.o dst_ca.o obj-$(CONFIG_DVB_FRONTENDS) += cx22702.o dvb-pll.o or51132.o lgdt330x.o \ mt352.o tda1004x.o sp887x.o nxt6000.o \ cx24110.o or51211.o # 2.6-only stuff ifeq ($(VERSION).$(PATCHLEVEL),2.6) ifeq ($(CONFIG_VIDEO_BTTV),m) bttv-objs += bttv-gpio.o obj-$(CONFIG_VIDEO_IR) += ir-kbd-gpio.o ir-kbd-i2c.o endif ifeq ($(CONFIG_VIDEO_SAA7134),m) obj-$(CONFIG_VIDEO_IR) += ir-kbd-i2c.o endif endif # for DVB EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/dvb-core/ EXTRA_CFLAGS += -I$(srctree)/drivers/media/dvb/frontends/ ifeq ($(CONFIG_VIDEO_CX88_DVB),m) EXTRA_CFLAGS += -DCONFIG_VIDEO_CX88_DVB_MODULE=1 EXTRA_CFLAGS += -DHAVE_CX22702=1 EXTRA_CFLAGS += -DHAVE_OR51132=1 EXTRA_CFLAGS += -DHAVE_LGDT330X=1 EXTRA_CFLAGS += -DHAVE_MT352=1 endif ifeq ($(CONFIG_VIDEO_SAA7134_DVB),m) EXTRA_CFLAGS += -DHAVE_MT352=1 EXTRA_CFLAGS += -DHAVE_TDA1004X=1 endif ifeq ($(CONFIG_VIDEO_BUF_DVB),m) EXTRA_CFLAGS += -DHAVE_VIDEO_BUF_DVB=1 endif ################################################# # compile modules ifneq ($(KERNELRELEASE),) ifeq ($(VERSION).$(PATCHLEVEL),2.6) export-objs := list-multi := else multi-m := $(filter $(list-multi), $(obj-m)) int-m := $(sort $(foreach m, $(multi-m), $($(basename $(m))-objs))) export-objs := $(filter $(int-m) $(obj-m),$(export-objs)) endif CC += -I$(obj) EXTRA_CFLAGS += -g EXTRA_CFLAGS += $(if $(wildcard $(srctree)/.mm), -DMM_KERNEL) snapshot := $(wildcard $(obj)/.snapshot) ifneq ($(snapshot),) SNAPSHOT_CFLAGS := -DSNAPSHOT='$(shell cat $(snapshot))' EXTRA_CFLAGS += $(SNAPSHOT_CFLAGS) endif bttv.o: $(bttv-objs) $(LD) -r -o $@ $(bttv-objs) cx8800.o: $(cx8800-objs) $(LD) -g -r -o $@ $(cx8800-objs) cx88xx.o: $(cx88xx-objs) $(LD) -g -r -o $@ $(cx88xx-objs) saa7134.o: $(saa7134-objs) $(LD) -g -r -o $@ $(saa7134-objs) -include $(TOPDIR)/Rules.make else # take version info from last module build if available -include $(obj)/.version endif KDIR := /lib/modules/$(KERNELRELEASE)/build PWD := $(shell pwd) DEST := /lib/modules/$(KERNELRELEASE)/$(MDIR) KDIR26 := /lib/modules/$(KERNELRELEASE)/kernel/drivers/media KDIRUSB := /lib/modules/$(KERNELRELEASE)/kernel/drivers/usb/media ifeq ($(VERSION).$(PATCHLEVEL),2.6) CPPFLAGS := -I$(SUBDIRS)/../linux/include $(CPPFLAGS) -I$(SUBDIRS)/ MYCFLAGS := else MYCFLAGS := CFLAGS="-I../linux/include -D__KERNEL__ -I$(KDIR)/include -DEXPORT_SYMTAB" endif # which files to install? inst-m := $(wildcard *.ko) ifeq ($(inst-m),) inst-m := $(obj-m) endif inst_common := ir-common.ko inst_video := btcx-risc.ko bttv.ko tda9887.ko tuner.ko tvaudio.ko tveeprom.ko saa6588.ko inst_video += tvmixer.ko v4l1-compat.ko v4l2-common.ko inst_video += video-buf.ko video-buf-dvb.ko inst_video += ir-kbd-gpio.ko ir-kbd-i2c.ko msp3400.ko inst_video += tvp5150.ko saa7113.ko inst_cx88 := cx8800.ko cx8802.ko cx88-alsa.ko inst_cx88 += cx88-blackbird.ko cx88xx.ko cx88-dvb.ko inst_saa7134 := saa6752hs.ko saa7134.ko saa7134-empress.ko saa7134-dvb.ko inst_usb := em2820.ko inst_bt8xx := bt878.ko dvb-bt8xx.ko dst.ko dst_ca.ko inst_frontends := cx22702.ko dvb-pll.ko lgdt330x.ko or51132.ko tda1004x.ko inst_frontends += mt352.ko sp887x.ko nxt6000.ko cx24110.ko or51211.ko v4l_modules := $(shell lsmod|cut -d' ' -f1 ) $(patsubst %.ko,%,$(inst-m)) # locales seem to cause trouble sometimes. LC_ALL = POSIX export LC_ALL default:: links .version $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) $(MYCFLAGS) modules links:: @echo creating symbolic links... @find ../linux/drivers/media/video -name '*.[c,h]' -type f -exec ln -sf '{}' . \; @find ../linux/drivers/usb/media -name '*.[c,h]' -type f -exec ln -sf '{}' . \; # for merged-trees: @find ../linux/drivers -name '*.[c,h]' -type l -exec ln -sf '{}' . \; # @find ../linux/include -name '*.[h]' -type f -exec ln -sf '{}' . \; @ln -sf ../linux/drivers/media/common/ir-common.c . install:: rminstall @echo -e "\nInstalling new V4L modules at corresponding Kernel dir..." @strip --strip-debug $(inst-m) -install -d $(KDIR26)/common -install -m 644 -c $(inst_common) $(KDIR26)/common -install -d $(KDIR26)/video -install -m 644 -c $(inst_video) $(KDIR26)/video -install -d $(KDIR26)/video/cx88 -install -m 644 -c $(inst_cx88) $(KDIR26)/video/cx88 -install -d $(KDIR26)/video/saa7134 -install -m 644 -c $(inst_saa7134) $(KDIR26)/video/saa7134 -install -d $(KDIRUSB) -install -m 644 -c $(inst_usb) $(KDIRUSB)/ /sbin/depmod -a v4l_install:: rminstall @echo -e "\nInstalling new V4L modules at $(DEST)..." @strip --strip-debug $(inst-m) -install -d $(DEST) install -m 644 -c $(inst-m) $(DEST) /sbin/depmod -a kernel-links:: merge-trees cd ..; v4l/scripts/makelinks.sh $(KDIR) merge-trees:: @scripts/merge-trees.sh unmerge-trees:: @scripts/unmerge-trees.sh dvb-install:: dvb-rminstall @echo -e "\nInstalling new DVB modules at corresponding Kernel dir..." @strip --strip-debug $(inst-m) install -d $(KDIR26)/dvb/frontends install -m 644 -c $(inst_frontends) $(KDIR26)/dvb/frontends install -d $(KDIR26)/dvb/bt8xx install -m 644 -c $(inst_bt8xx) $(KDIR26)/dvb/bt8xx /sbin/depmod -a dvb-rminstall:: @echo -e "\nEliminating old DVB modules (errors on this step is not a problem).." -@rm -r $(DEST) \ $(addprefix $(KDIR26)/dvb/bt8xx/, $(inst_bt8xx)) \ $(addprefix $(KDIR26)/dvb/bt8xx/, $(addsuffix .gz,$(inst_bt8xx))) \ $(addprefix $(KDIR26)/dvb/frontends/, $(addsuffix .gz,$(inst_frontends))) 2>/dev/null @echo rminstall:: @echo -e "\nEliminating old V4L modules (errors on this step is not a problem).." -@rm -r $(DEST) \ $(addprefix $(KDIR26)/common/, $(inst_common)) \ $(addprefix $(KDIR26)/dvb/frontends/, $(inst_frontends)) \ $(addprefix $(KDIR26)/video/, $(inst_video)) \ $(addprefix $(KDIR26)/video/cx88/, $(inst_cx88)) \ $(addprefix $(KDIR26)/video/saa7134/, $(inst_saa7134)) \ $(addprefix $(KDIRUSB)/, $(inst_usb)) \ $(addprefix $(KDIR26)/common/, $(addsuffix .gz,$(inst_common))) \ $(addprefix $(KDIR26)/dvb/frontends/, $(addsuffix .gz,$(inst_frontends))) \ $(addprefix $(KDIR26)/video/, $(addsuffix .gz,$(inst_video))) \ $(addprefix $(KDIR26)/video/cx88/, $(addsuffix .gz,$(inst_cx88))) \ $(addprefix $(KDIR26)/video/saa7134/, $(addsuffix .gz,$(inst_saa7134))) 2>/dev/null \ $(addprefix $(KDIRUSB)/, $(addsuffix .gz,$(inst_usb))) 2>/dev/null @echo rmmodules:: rmmod -w $(shell echo "$(v4l_modules)"|sed s,' ','\n',g|sed s,'-','_',g|sort|uniq -d) clean:: find . -name '*.c' -type l -exec rm '{}' \; find . -name '*.h' -type l -exec rm '{}' \; -rm -f *~ *.o *.ko *.mod.c distclean:: clean -rm -f .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd -rm -rf .tmp_versions change changes changelog:: make -C .. changelog cvscommit cvs commit:: cd ..; cvs commit .version: ifneq ($(KERNELRELEASE),) echo -e VERSION=$(VERSION)\\nPATCHLEVEL:=$(PATCHLEVEL)\\nSUBLEVEL:=$(SUBLEVEL)\\nKERNELRELEASE:=$(KERNELRELEASE) > $(obj)/.version else echo "No version yet." uname -r|perl -ne 'if (/^([0-9]*)\.([0-9])*\.([0-9]*)(.*)$$/) { printf ("VERSION=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELRELEASE:=%s.%s.%s%s\n",$$1,$$2,$$3,$$1,$$2,$$3,$$4); };' > $(obj)/.version endif ################################################# # build tarballs RPWD := $(shell cd .. && pwd) thisdir := $(notdir $(RPWD)) name := $(thisdir) date := $(shell date +%Y%m%d) tardest ?= . snapdir := $(HOME)/snapshot snap := $(name) snapshot snap tarball: clean echo $(thisdir) echo $(name) echo $(date) > .snapshot (cd ..; tar czf $(snapdir)/$(snap)-$(date).tar.gz .) cp ChangeLog /$(snapdir)/$(snap)-ChangeLog-$(date) $(MAKE) -C $(snapdir) ################################################# # other stuff %.asm: %.o objdump -S $< > $@ card cardlist cardlists: scripts/cardlist