summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile178
1 files changed, 178 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d05f769
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,178 @@
+#
+# Based on:
+# Makefile for DAHDI Linux kernel modules
+#
+# Copyright (C) 2001-2009 Digium, Inc.
+#
+# License: <fill in stanza. Basically: GPLv2>
+#
+
+#
+# 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=<version> # build with kernel version <version>
+# KSRC=</full/path> # 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
+