# # 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 =trunk 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 BASE_DIR = drivers/dahdi MODULE_DIRS = drivers/staging/echo DAHDI_LINUX_DIFF = dahdi_linux_extra.diff # Files we shouldn't copy: OVERRIDE_FILES = Kbuild dahdi_echocan_oslec.c # 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 CHECKSTACK=$(KSRC)/scripts/checkstack.pl # Set HOTPLUG_FIRMWARE=no to override automatic building with hotplug support # if it is enabled in the kernel. ifeq (yes,$(HAS_KSRC)) HOTPLUG_FIRMWARE:=$(shell if grep -q '^CONFIG_FW_LOADER=[ym]' $(KCONFIG); then echo "yes"; else echo "no"; fi) endif MODULE_ALIASES:=wcfxs wctdm8xxp wct2xxp INST_HEADERS:=kernel.h user.h fasthdlc.h wctdm_user.h dahdi_config.h DAHDI_BUILD_ALL:=m KMAKE=$(MAKE) -C $(KSRC) SUBDIRS=$(PWD)/drivers/dahdi ifneq (,$(wildcard $(DESTDIR)/etc/udev/rules.d)) DYNFS:=yes endif ROOT_PREFIX:= ASCIIDOC:=asciidoc ASCIIDOC_CMD:=$(ASCIIDOC) -n -a toc -a toclevels=4 GENERATED_DOCS:=README.html dahdi-api.html 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 # 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 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 diff -urN $(SVN_DIR_SRC) $(SVN_DIR_DST) >$(DAHDI_LINUX_DIFF) \ || [ $$? -eq 1 ] .PHONY: clean all install modules stackcheck test-install gen-patch