📄 makefile
字号:
VERSION = 00.60.00.1CVSVERSION = "$Experimental work Michel Xhaard && Reza Jelveh 03/02/2004"DEFINES =#### The following flags enable experimental features.# By default, these are enabled for development versions of the driver, and# disabled for release versions.# Optional: Enable driver debuggingDEFINES += -DSPCA50X_ENABLE_DEBUG# Optional: Enable direct register read/write for PAC207 development#DEFINES += -DSPCA5XX_ENABLE_REGISTERPLAY#### The following flags enable features that aren't yet implemented, and# therefore are disabled by default.# Optional: Enable compressionDEFINES += -DSPCA50X_ENABLE_COMPRESSION#### Rest of Makefile follows here. You probably won't need to touch this.# Setup definesDEFINES += -DCONFIG_USB_SPCA5XX_MODULE=1 -DMODULE -D__KERNEL__DEFINES += -DVID_HARDWARE_SPCA5XX=0xFF -DSPCA5XX_VERSION=\"$(VERSION)\"/********************************************************************** 以下这段是针对2.5 2.6内核版本 因此全部注释掉了 前加#jw 表示我注释的内容**********************************************************************/#jw ifneq ($(shell uname -r | cut -d. -f1,2), 2.4)#jw ifneq ($(KERNELRELEASE),) # We were called by kbuild#jw CFLAGS += $(DEFINES) #jw obj-m += spca5xx.o#jw spca5xx-objs := drivers/usb/spca5xx.o drivers/usb/spcadecoder.o #jw else # We were called from command line#jw KERNEL_VERSION = `uname -r`#jw KERNELDIR := /lib/modules/$(KERNEL_VERSION)/build#jw PWD := $(shell pwd)#jw MODULE_INSTALLDIR = /lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/media/# Targets, don't change!#jw default:#jw @echo ' Building SPCA5XX driver for 2.5/2.6 kernel.'#jw @echo ' Remember: you must have read/write access to your kernel source tree.'#jw $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) CC=$(CC) modules#jw install:#jw mkdir -p $(MODULE_INSTALLDIR)#jw rm -f $(MODULE_INSTALLDIR)spca50x.ko#jw rm -f $(MODULE_INSTALLDIR)et61x.ko#jw install -c -m 0644 spca5xx.ko $(MODULE_INSTALLDIR)#jw /sbin/depmod -ae#jw uninstall:#jw rm -f $(MODULE_INSTALLDIR)/spca5xx.ko#jw /sbin/depmod -aq#jw endif#jw else # kernel version test/********************************************************************** 以下这段是针对2.4内核版本 是修改的重点 前加#jw 表示我注释掉的内容 注释完后会紧跟我修改的内容**********************************************************************/############################################################################## For Linux 2.4 users.# Change the following lines according to your system configuration.# It is important to configure your particular source tree ("make dep") before# compiling this module!################################################################################# This makefile will build the spca50x driver module external to the kernel# source tree. It makes it easier to swap kernels.#jw KERNEL_VERSION = `uname -r` //最先的内容#jw KERNEL_VERSION = 2.4.25-jaywoo //原来填内核版本KERNEL_VERSION = 3.3.2 //后来正确编译时填交叉编译工具版本 个人觉得这里填啥无所谓#### Location of the header files (most importantly the config files)# for the kernel you want to build the module against.# This should be correct for the currently installed kernel on your machine.#jw KINCLUDE = /lib/modules/$(KERNEL_VERSION)/build/include //原来内容#jw KINCLUDE = /lib/modules/2.4.25-jaywoo/build/include //后来改内核库文件所在目录KINCLUDE = /usr/local/arm/3.3.2/arm-linux/sys-include //正确编译时的交叉工具库目录 //思考下应该填交叉工具目录 因为编译工具使用交叉工具 不是原来带的gcc因此也不能用原来内核的库//原来内核使用的库跟交叉编译工具使用的库可能存在差异 导致编译不通过KERNEL_ACFILE = $(KINCLUDE)/linux/autoconf.hKERNEL_MODVERSIONSFILE = $(KINCLUDE)/linux/modversions.h//以下指明模块安装目录 个人觉得问题不是很大#jw MODULE_INSTALLDIR = /lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/MODULE_INSTALLDIR = /lib/modules/2.4.25-jaywoo/kernel/drivers/usb/# Detect module versioning supportifneq ($(strip $(shell grep 'define CONFIG_MODVERSIONS 1' $(KERNEL_ACFILE))),) DEFINES += -DMODVERSIONS -include $(KERNEL_MODVERSIONSFILE)endif# Detect SMP supportifneq ($(strip $(shell grep 'define CONFIG_SMP 1' $(KERNEL_ACFILE))),) DEFINES += -D__SMP__ -DSMPendif//以下指明交叉编译工具 很关键# Setup the tools#jw CC = gcc //原来使用默认的自带的gcc编译器和ld工具CC = /usr/local/arm/3.3.2/bin/arm-linux-gcc //修改使用交叉编译工具#jw LD = ldLD = /usr/local/arm/3.3.2/bin/arm-linux-ld# Setup compiler warningsWARNINGS = -Wall -Wpointer-arithWARNINGS += -Wcast-align -Wwrite-strings -Wstrict-prototypesWARNINGS += -Wuninitialized -Wreturn-type -Wunused -Wparentheses# Setup compiler flagsCFLAGS = -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe#jw原来有这句 CFLAGS += -mpreferred-stack-boundary=2 //参考网友说要注释掉否则编译不通过#jw CFLAGS += -I$(KINCLUDE) -Idrivers/usb#jw CFLAGS += -I/lib/modules/2.4.25-jaywoo/build/include -Idrivers/usb CFLAGS += -I/usr/local/arm/3.3.2/arm-linux/sys-include -Idrivers/usb //使用交叉编译工具的库//应使用交叉工具库目录 而非内核目录# Setup link flagsLDFLAGS = --strip-debug -r# Setup the list of files to be included in a distributionDIST_FILES = CHANGELOG \ README \ Makefile \ drivers/usb/Config.in \ drivers/usb/spcadecoder.c \ drivers/usb/spcadecoder.h \ drivers/usb/spcagamma.h \ drivers/usb/spcaCompat.h \ drivers/usb/spcausb.h \ drivers/usb/spca500_init.h \ drivers/usb/spca501_init.h \ drivers/usb/sp5xxfw2.dat \ drivers/usb/sp5xxfw2.h \ drivers/usb/spca505_init.h \ drivers/usb/spca506.h \ drivers/usb/spca508_init.h \ drivers/usb/spca561.h \ drivers/usb/sonix.h \ drivers/usb/cs2102.h \ drivers/usb/hv7131b.h \ drivers/usb/icm105a.h \ drivers/usb/hv7131c.h \ drivers/usb/hdcs2020.h \ drivers/usb/pb0330.h \ drivers/usb/tas5130c.h \ drivers/usb/zc3xx.h\ drivers/usb/tv8532.h\ drivers/usb/cxlib.h\ drivers/usb/sn9cxxx.h\ drivers/usb/cx11646.h\ drivers/usb/pac207.h\ drivers/usb/spca5xx.c \ drivers/usb/spca5xx.h OBJS = drivers/usb/spcadecoder.o \ drivers/usb/spca5xx.oBINARY = spca5xx.o#### Targets follow herebinary: $(OBJS) @echo Linking $(BINARY) @$(LD) $(LDFLAGS) -o $(BINARY) $(OBJS)install: binary @echo Installing.. Your root password may be required. su -c "make install-root"install-root: @echo Installing.. @mkdir -p /lib/modules/`uname -r`/kernel/drivers/usb @rm -f /lib/modules/`uname -r`/kernel/drivers/usb/spca50x.o @rm -f /lib/modules/`uname -r`/kernel/drivers/usb/et61x.o @cp spca5xx.o /lib/modules/`uname -r`/kernel/drivers/usb/spca5xx.o @/sbin/depmoddist: clean binary @echo Making distributable archives @rm -f spca5xx-src-$(VERSION).tar.gz @tar zcf spca5xx-src-$(VERSION).tar.gz $(DIST_FILES) @rm -f spca5xx-module-$(VERSION).tar.gz @cp $(BINARY) spca5xx-$(VERSION).o @tar zcf spca5xx-module-$(VERSION).tar.gz spca5xx-$(VERSION).o README @rm spca5xx-$(VERSION).o.c.o: Makefile $*.c @echo Compiling $*.c @$(CC) $(CFLAGS) $(WARNINGS) $(DEFINES) -c $*.c -o $*.o#### Dependencies follow heredrivers/usb/spca5xx.o: drivers/usb/spca5xx.h \ drivers/usb/spcaCompat.h \ drivers/usb/spcausb.h \ drivers/usb/sonix.h \ drivers/usb/spca500_init.h \ drivers/usb/spca501_init.h \ drivers/usb/sp5xxfw2.h \ drivers/usb/spca505_init.h \ drivers/usb/spca506.h \ drivers/usb/spca508_init.h \ drivers/usb/spca561.h \ drivers/usb/zc3xx.h\ drivers/usb/tv8532.h\ drivers/usb/cx11646.h\ drivers/usb/mr97311.h\ drivers/usb/sn9cxxx.h\ drivers/usb/pac207.h\ drivers/usb/spcadecoder.o: drivers/usb/spcadecoder.h \ drivers/usb/spcagamma.h \ //由于将针对2.5 2.6的全部注释掉因此这句也要注释掉 因为已经破坏了分支结构#jw endif # End kernel version test ############################################################################## # OTHER TARGETS ##############################################################################clean: rm -r -f drivers/usb/*.o drivers/usb/.spcadecoder.o.cmd \ drivers/usb/.spca5xx.o.cmd *.o *.ko *.mod.* .[a-z]* core *.i ##############################################################################
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -