# # Based on: # Makefile for DAHDI Linux kernel modules # # Copyright (C) 2001-2009 Digium, Inc. # # License: # # # This package allow: # A. test-building modules vs. DAHDI # B. generating a single patch of all the modules vs. the DAHDI tree. # # The default target here is to build all the modules. This requires various # DAHDI headers installed under /usr/include/dahdi . Some drivers will also # need some adjustment to include those files from there rather than from # the working directory. # # make # just build # make test-install # install under testroot/ # # The modules built here are likely not to be useful as-is due to the # missing symbols from DAHDI. However they should expose most (if not # all) build warnings and errors. # # Some extra useful switches: # # KVERS= # build with kernel version # KSRC= # build with kernel tree from /full/path # C=1/C=2 # Check with sparse (1: just when building, 2: all) # # The patch is generated by running: # # make gen-patch # # This generates a patch vs. dahdi in the file: dahdi_linux_extra.diff # # Other targets: # # make clean # make stackcheck # FIXME: doesn't work? # PWD:=$(shell pwd) DAHDI_LINUX_BRANCH = branches/2.3 DAHDI_LINUX_URL = http://svn.asterisk.org/svn/dahdi/linux/$(DAHDI_LINUX_BRANCH) SVN_DIR_SRC = dahdi-svn-orig SVN_DIR_DST = dahdi-svn-new ORIGIN = http://git.tzafrir.org.il/?p=dahdi-extra.git BASE_DIR = drivers/dahdi MODULE_DIRS = $(BASE_DIR) $(BASE_DIR)/zaphfc drivers/staging/echo DAHDI_LINUX_DIFF = dahdi_linux_extra.diff # Files we shouldn't copy: OVERRIDE_FILES = Kbuild dahdi_echocan_oslec.c proslic.h fxo_modes.h # If you want to build for a kernel other than the current kernel, set KVERS ifndef KVERS KVERS:=$(shell uname -r) endif ifndef KSRC ifneq (,$(wildcard /lib/modules/$(KVERS)/build)) KSRC:=/lib/modules/$(KVERS)/build else KSRC_SEARCH_PATH:=/usr/src/linux KSRC:=$(shell for dir in $(KSRC_SEARCH_PATH); do if [ -d $$dir ]; then echo $$dir; break; fi; done) endif endif KVERS_MAJ:=$(shell echo $(KVERS) | cut -d. -f1-2) KINCLUDES:=$(KSRC)/include # We use the kernel's .config file as an indication that the KSRC # directory is indeed a valid and configured kernel source (or partial # source) directory. # # We also source it, as it has the format of Makefile variables list. # Thus we will have many CONFIG_* variables from there. KCONFIG:=$(KSRC)/.config ifneq (,$(wildcard $(KCONFIG))) HAS_KSRC:=yes include $(KCONFIG) else HAS_KSRC:=no endif PATCH_HEADER = \ Subject: dahdi-extra: out-of-tree DAHDI drivers \ \nOrigin: $(ORIGIN) \ \nForwarded: No \ \nLast-Update: `date -I` \ \n \ \nThis patch includes a number of out-of-tree DAHDI drivers from the \ \ndahdi-extra repository. They are all out-of-tree and are highly likely \ \n not to be included in DAHDI-linux in the forseeable future. \ \n \ \nGit-Commit: `git show-ref -s -h HEAD` \ \n---\n CHECKSTACK=$(KSRC)/scripts/checkstack.pl DAHDI_BUILD_ALL:=m KMAKE=$(MAKE) -C $(KSRC) SUBDIRS=$(PWD)/drivers/dahdi ifneq (,$(wildcard $(DESTDIR)/etc/udev/rules.d)) DYNFS:=yes endif ROOT_PREFIX:= ifneq ($(wildcard .version),) DAHDIVERSION:=$(shell cat .version) else ifneq ($(wildcard .svn),) DAHDIVERSION:=$(shell build_tools/make_version . dahdi/linux) endif endif TESTROOT:=testroot all: modules modules: ifeq (no,$(HAS_KSRC)) @echo "You do not appear to have the sources for the $(KVERS) kernel installed." @exit 1 endif $(KMAKE) modules DAHDI_BUILD_ALL=$(DAHDI_BUILD_ALL) stackcheck: $(CHECKSTACK) modules objdump -d drivers/dahdi/*.ko drivers/dahdi/*/*.ko | $(CHECKSTACK) install: modules $(KMAKE) INSTALL_MOD_PATH=$(DESTDIR) INSTALL_MOD_DIR=dahdi modules_install [ `id -u` = 0 ] && /sbin/depmod -a $(KVERS) || : clean: ifneq (no,$(HAS_KSRC)) $(KMAKE) clean endif rm -rf $(SVN_DIR_SRC) $(SVN_DIR_DST) $(DAHDI_LINUX_DIFF) $(TESTROOT) test-install: $(MAKE) install DESTDIR=$(PWD)/$(TESTROOT) gen-patch: rm -rf $(SVN_DIR_SRC) $(SVN_DIR_DST) svn export -q $(DAHDI_LINUX_URL) $(SVN_DIR_SRC) cp -a $(SVN_DIR_SRC) $(SVN_DIR_DST) for dir in $(MODULE_DIRS); do \ mkdir -p $(SVN_DIR_DST)/$$dir; \ cp $$dir/*.[ch] $$dir/Kbuild $(SVN_DIR_DST)/$$dir/ ; \ done find $(SVN_DIR_DST) -name \*.mod.c -exec rm -f '{}' \; # Preserve base Kbuild: for file in $(OVERRIDE_FILES); do \ cp $(SVN_DIR_SRC)/$(BASE_DIR)/$$file $(SVN_DIR_DST)/$(BASE_DIR)/; \ done find $(SVN_DIR_DST)/$(BASE_DIR) -name \*.mod.c | xargs rm -rf dummyfile cat drivers/dahdi/Kconfig >>$(SVN_DIR_DST)/drivers/dahdi/Kconfig sed -e '/^####### END OF DATA ########/,$$d' drivers/dahdi/Kbuild \ | sed -i -e R/dev/stdin $(SVN_DIR_DST)/drivers/dahdi/Kbuild echo -e "$(PATCH_HEADER)" >$(DAHDI_LINUX_DIFF) diff -urN $(SVN_DIR_SRC) $(SVN_DIR_DST) >>$(DAHDI_LINUX_DIFF) \ || [ $$? -eq 1 ] .PHONY: clean all install modules stackcheck test-install gen-patch