[Asterisk-cvs] zaptel Makefile,1.74,1.75

kpfleming at lists.digium.com kpfleming at lists.digium.com
Sat May 21 13:44:37 CDT 2005


Update of /usr/cvsroot/zaptel
In directory mongoose.digium.com:/tmp/cvs-serv26858

Modified Files:
	Makefile 
Log Message:
major cleanup:
  allow builds against any installed kernel using KVERS
  allow builds against any kernel sources using KSRC
  for 2.6 kernels, use the kernel's "module_install" script instead of doing it ourselves
  don't make extraneous libtonezone symlinks
  efficiency improvements (don't use $(shell) when not needed, and only one time when needed)
  use more concise rules

ideas came from bug #4280, along with some of the implementation

tested against make-3.80 and make-3.79.1
tested against 2.6.11.10, 2.4.30 and 2.6.8-(mumble) SUSE kernels



Index: Makefile
===================================================================
RCS file: /usr/cvsroot/zaptel/Makefile,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -d -r1.74 -r1.75
--- Makefile	15 May 2005 06:12:28 -0000	1.74
+++ Makefile	21 May 2005 17:49:12 -0000	1.75
@@ -1,29 +1,40 @@
 #
-# Makefile for tormenta/carrier driver and utilities
-# $Id$
+# Makefile for Zaptel driver modules and utilities
 #
-BASEADDR=0xd0000
-
+# Copyright (C) 2001-2005 Digium, Inc.
 #
-# Okay, the people at RedHat have to break everything they can possibly even attempt to.
-# So, we have to look in /usr/src/linux-2.4/include for header files given their brain dead
-# crappy installation.  (Mind you, I'm a RedHat user myself, so I suppose I'm just as
-# stupid as they are).  Everyone else who is mildly sane of course links /usr/include/linux
-# to their working kernel source directory, the way God himself does, of course
-# (assuming He's running Linux -- which we all know He must).
 #
+BASEADDR=0xd0000
+
 HOSTCC=gcc
-KINCLUDES=$(shell if [ -d /usr/src/linux-2.4/include ]; then echo /usr/src/linux-2.4/include ; else echo /usr/src/linux/include ; fi)
+# 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-2.4 /usr/src/linux
+    KSRC:=$(shell for dir in $(KSRC_SEARCH_PATH); do if [ -d $$dir ]; then echo $dir; break; fi; done)
+  endif
+endif
+KINCLUDES:=$(KSRC)/include
 
 CFLAGS+=-I. -O4 -g -Wall -DBUILDING_TONEZONE #-DTONEZONE_DRIVER
-CFLAGS+=$(shell if uname -m | grep -q ppc; then echo "-fsigned-char"; fi)
-CFLAGS+=$(shell if uname -m | grep -q x86_64; then echo "-m64"; fi)
+CFLAGS_PPC:=$(shell if uname -m | grep -q ppc; then echo "-fsigned-char"; fi)
+CFLAGS_X86-64:=$(shell if uname -m | grep -q x86_64; then echo "-m64"; fi)
+CFLAGS+=$(CFLAGS_PPC) $(CFLAGS_X64-64)
 LCFLAGS=-fPIC $(CFLAGS) -DBUILDING_TONEZONE
-KFLAGS+=-I/usr/src/linux-2.4/include -O6
-KFLAGS+=-DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -I/usr/src/linux/drivers/net \
-	-Wall -I. -Wstrict-prototypes -fomit-frame-pointer -I/usr/src/linux/drivers/net/wan -I /usr/src/linux/include -I/usr/src/linux/include/net
-KFLAGS+=$(shell if [ -f $(KINCLUDES)/linux/modversions.h ] ; then echo "-DMODVERSIONS -include $(KINCLUDES)/linux/modversions.h" ; fi)
-KFLAGS+=$(shell if uname -m | grep -q ppc; then echo "-msoft-float -fsigned-char"; fi)
+KFLAGS=-I$(KINCLUDES) -O6
+KFLAGS+=-DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -I$(KSRC)/drivers/net \
+	-Wall -I. -Wstrict-prototypes -fomit-frame-pointer -I$(KSRC)/drivers/net/wan -I$(KINCLUDES)/net
+ifneq (,$(wildcard $(KINCLUDES)/linux/modversions.h))
+  KFLAGS+=-DMODVERSIONS -include $(KINCLUDES)/linux/modversions.h
+endif
+KFLAGS_PPC:=$(shell if uname -m | grep -q ppc; then echo "-msoft-float -fsigned-char"; fi)
+KFLAGS+=$(KFLAGS_PPC)
+
 #
 # Features are now configured in zconfig.h
 #
@@ -38,124 +49,135 @@
 CONFIG_FILE=$(INSTALL_PREFIX)/etc/zaptel.conf
 CFLAGS+=-DZAPTEL_CONFIG=\"$(CONFIG_FILE)\"
 
-BUILDVER=$(shell if uname -r | grep -q ^2.6; then echo "linux26"; else echo "linux24"; fi)
-MODCONF=$(shell if [ -d $(ROOT_PREFIX)/etc/modprobe.d ]; then echo "$(ROOT_PREFIX)/etc/modprobe.d/zaptel"; elif [ -d $(ROOT_PREFIX)/etc/modutils ]; then echo "$(ROOT_PREFIX)/etc/modutils/zaptel"; elif [ -f $(ROOT_PREFIX)/etc/modprobe.conf ]; then echo "$(ROOT_PREFIX)/etc/modprobe.conf"; elif [ -f $(ROOT_PREFIX)/etc/modules.conf ]; then echo "$(ROOT_PREFIX)/etc/modules.conf"; else echo $(ROOT_PREFIX)/etc/conf.modules ; fi)
+ifeq (2.6,$(shell echo $(KVERS) | cut -d. -f1-2))
+  BUILDVER:=linux26
+else
+  BUILDVER:=linux24
+endif
+
+ifeq ($(BUILDVER),linux26)
+  ifneq (,$(wildcard $(ROOT_PREFIX)/etc/modprobe.d))
+    MODCONF:=$(ROOT_PREFIX)/etc/modprobe.d/zaptel
+   else
+    ifneq (,$(wildcard $(ROOT_PREFIX)/etc/modprobe.conf))
+      MODCONF:=$(ROOT_PREFIX)/etc/modprobe.conf
+     endif
+  endif
+else # BUILDVER == linux24
+  ifneq (,$(wildcard $(ROOT_PREFIX)/etc/modutils))
+    MODCONF:=$(ROOT_PREFIX)/etc/modutils/zaptel
+   else
+    ifneq (,$(wildcard $(ROOT_PREFIX)/etc/modules.conf))
+      MODCONF:=$(ROOT_PREFIX)/etc/modules.conf
+     endif
+  endif
+endif
 
 ifeq (${BUILDVER},linux24)
 #We only support DEVFS in linux 2.4 kernels, since its considered obsolete post 2.4
-DYNFS=$(shell ps ax | grep -v grep | grep -q devfsd && echo "yes")
+DYNFS:=$(shell ps ax | grep -v grep | grep -q devfsd && echo "yes")
 endif
 ifeq (${BUILDVER},linux26)
 #Tests for newer linux-2.6 udev support
-DYNFS=$(shell ps ax | grep -v grep | grep udevd && echo "yes")
+DYNFS:=$(shell ps ax | grep -v grep | grep udevd && echo "yes")
 endif
 
-CHKCONFIG=$(shell sh -c 'type -p chkconfig' 2> /dev/null)
-ifeq ($(CHKCONFIG),)
-CHKCONFIG=:
+CHKCONFIG:=$(shell sh -c 'type -p chkconfig' 2> /dev/null)
+ifndef CHKCONFIG
+CHKCONFIG:=:
 endif
 
-TZOBJS=zonedata.lo tonezone.lo
-LIBTONEZONE=libtonezone.so.1.0
-MODULES=zaptel tor2 torisa wcusb wcfxo wctdm \
-	ztdynamic ztd-eth wct1xxp wct4xxp wcte11xp pciradio \
-        ztd-loc # ztdummy
+TZOBJS:=zonedata.lo tonezone.lo
+LIBTONEZONE:=libtonezone.so.1.0
+MODULES:=zaptel tor2 torisa wcusb wcfxo wctdm \
+	 ztdynamic ztd-eth wct1xxp wct4xxp wcte11xp pciradio \
+         ztd-loc # ztdummy
 #MODULES+=wcfxsusb
+# build ztdummy by default for 2.6 kernels
+ifeq (${BUILDVER},linux26)
+MODULES+=ztdummy
+endif
+MODULESO:=$(MODULES:%=%.o)
+MODULESKO:=$(MODULES:%=%.ko)
 
-MODULESO=$(shell for x in $(MODULES); do echo "$$x.o "; done )
-MODULESKO=$(shell for x in $(MODULES); do echo "$$x.ko "; done )
-
-ZTTOOL=$(shell if [ -f /usr/include/newt.h ]; then echo zttool; fi)
+ifneq (,$(wildcard /usr/include/newt.h))
+ZTTOOL:=zttool
+endif
 BINS=ztcfg torisatool makefw ztmonitor ztspeed $(ZTTOOL) zttest fxotune
 
 #PRIMARY=wcfxsusb
 PRIMARY=torisa
 #PRIMARY=wcfxo
-PWD=$(shell pwd)
-KERNEL_SOURCE?=/lib/modules/`uname -r`
+PWD:=$(shell pwd)
 
 all: $(BUILDVER) $(LIBTONEZONE)
 
 linux24: $(MODULESO) $(BINS)
 
-linux26: 
 linux26: prereq $(BINS)
-	@if ! [ -d $(KERNEL_SOURCE) ]; then echo "You do not appear to have the kernel sources for your current kernel installed."; exit 1 ; fi
-	make -C $(KERNEL_SOURCE)/build SUBDIRS=$(PWD) modules
+	@if ! [ -d $(KSRC) ]; then echo "You do not appear to have the sources for the $(KVERS) kernel installed."; exit 1 ; fi
+	$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) modules
 
-obj-m := $(MODULESO) ztdummy.o
+obj-m := $(MODULESO)
 
 #ifneq ($(TOPDIR),)
 #include $(TOPDIR)/Rules.make
 #endif
 
-MOD_DESTDIR := zaptel
+MOD_DESTDIR:=zaptel
 
 devel: tor2ee 
 
 tests: patgen pattest patlooptest hdlcstress hdlctest hdlcgen hdlcverify timertest
 
-tor2.o: tor2.c tor2-hw.h tor2fw.h zaptel.h
-	$(HOSTCC) $(KFLAGS) -c tor2.c
+tor2.o: tor2-hw.h tor2fw.h zaptel.h
 
-zaptel.o: zaptel.c zaptel.h digits.h arith.h sec.h mec.h sec-2.h mec2.h mec3.h zconfig.h
-	$(HOSTCC) $(KFLAGS) -c zaptel.c
+zaptel.o: zaptel.h digits.h arith.h sec.h mec.h sec-2.h mec2.h mec3.h zconfig.h
 
-torisa.o: torisa.c zaptel.h torisa.h
-	$(HOSTCC) $(KFLAGS) -c torisa.c
+torisa.o: zaptel.h torisa.h
 
-wcusb.o: wcusb.c wcusb.h zaptel.h
-	$(HOSTCC) $(KFLAGS) -c wcusb.c
+wcusb.o: wcusb.h zaptel.h
 
-wcfxsusb.o: wcfxsusb.c wcfxsusb.h zaptel.h
-	$(HOSTCC) $(KFLAGS) -c wcfxsusb.c
+wcfxsusb.o: wcfxsusb.h zaptel.h
 
-wcfxo.o: wcfxo.c zaptel.h
-	$(HOSTCC) $(KFLAGS) -c wcfxo.c
+wcfxo.o: zaptel.h
 
-wct1xxp.o:wct1xxp.c zaptel.h
-	$(HOSTCC) $(KFLAGS) -c wct1xxp.c
+wct1xxp.o: zaptel.h
 
-wcte11xp.o:wcte11xp.c zaptel.h
-	$(HOSTCC) $(KFLAGS) -c wcte11xp.c
+wcte11xp.o: zaptel.h
 
-ztd-loc.o:ztd-loc.c zaptel.h
-	$(HOSTCC) $(KFLAGS) -c ztd-loc.c
+ztd-loc.o: zaptel.h
 
-wct4xxp.o:wct4xxp.c zaptel.h
-	$(HOSTCC) $(KFLAGS) -c wct4xxp.c
+wct4xxp.o: zaptel.h
 
-wctdm.o:wctdm.c zaptel.h wctdm.h
-	$(HOSTCC) $(KFLAGS) -c wctdm.c
+wctdm.o: zaptel.h wctdm.h
 
-pciradio.o:pciradio.c zaptel.h radfw.h
-	$(HOSTCC) $(KFLAGS) -c pciradio.c
+pciradio.o: zaptel.h radfw.h
 
-wcs3200p.o:wcs3200p.c zaptel.h
-	$(HOSTCC) $(KFLAGS) -c wcs3200p.c
+wcs3200p.o: zaptel.h
 
-ztdummy.o:ztdummy.c ztdummy.h
-	$(HOSTCC) $(KFLAGS) -c ztdummy.c
+ztdummy.o: ztdummy.h
 
-ztdynamic.o: ztdynamic.c zaptel.h
-	$(HOSTCC) $(KFLAGS)  -c ztdynamic.c
+ztdynamic.o: zaptel.h
 
-ztd-eth.o: ztd-eth.c zaptel.h
-	$(HOSTCC) $(KFLAGS)  -c ztd-eth.c
+ztd-eth.o: zaptel.h
+
+$(MODULESO): %.o: %.c zaptel.h
+	$(HOSTCC) $(KFLAGS) -o $@ -c $^
 
 tor2ee.o: tor2-hw.h
 
 tor2ee: tor2ee.o
-	$(CC) $(CFLAGS) -o tor2ee tor2ee.o -lpci
+	$(CC) $(CFLAGS) -o $@ $^ -lpci
 
 zonedata.lo: zonedata.c
-	$(CC) -c $(LCFLAGS) -o zonedata.lo zonedata.c
+	$(CC) -c $(LCFLAGS) -o $@ $^
 
 tonezone.lo: tonezone.c
-	$(CC) -c $(LCFLAGS) -o tonezone.lo tonezone.c
+	$(CC) -c $(LCFLAGS) -o $@ $^
 
 torisatool: torisatool.o
-	$(CC) -o torisatool torisatool.o
+	$(CC) -o $@ $^
 
 tones.h: gendigits
 	./gendigits
@@ -167,7 +189,7 @@
 	./makefw pciradio.rbt radfw > radfw.h
 
 gendigits: gendigits.o
-	$(CC) -o gendigits gendigits.o -lm
+	$(CC) -o $@ $^ -lm
 
 zaptel.c: tones.h 
 
@@ -180,78 +202,69 @@
 ztmonitor.o: ztmonitor.c zaptel.h
 
 ztspeed.o: ztspeed.c
-	$(CC) -c ztspeed.c
+	$(CC) -o $@ -c $^
 
 zttool: zttool.o
-	$(CC) -o zttool zttool.o -lnewt
-
-ztprovision: ztprovision.o
-	$(CC) -o ztprovision ztprovision.o -lnewt
+	$(CC) -o $@ $^ -lnewt
 
 ztmonitor: ztmonitor.o
-	$(CC) -o ztmonitor ztmonitor.o
-
-ztcat: ztcat.o
-	$(CC) -o ztcat ztcat.o -ltonezone
+	$(CC) -o $@ $^
 
 ztspeed: ztspeed.o
-	$(CC) -o ztspeed ztspeed.o
+	$(CC) -o $@ $^
 
 sethdlc-new: sethdlc-new.o
-	$(CC) -o sethdlc-new sethdlc-new.o
+	$(CC) -o $@ $^
 
 sethdlc-new.o: sethdlc-new.c
-	$(CC) -c $(CFLAGS) -I$(KINCLUDES) sethdlc-new.c
+	$(CC) -o $@ -c $(CFLAGS) -I$(KINCLUDES) $^
 
 libtonezone.a: $(TZOBJS)
 	ar rcs libtonezone.a $(TZOBJS)
 
 $(LIBTONEZONE): $(TZOBJS)
-	$(CC) -shared -Wl,-soname,$(LIBTONEZONE) -lm -o $@ $(TZOBJS)
-	[ `id -u` = 0 ] && /sbin/ldconfig || :
-	ln -sf $(LIBTONEZONE) libtonezone.so                                  
-	ln -sf $(LIBTONEZONE) libtonezone.so.1                                  
+	$(CC) -shared -Wl,-soname,$(LIBTONEZONE) -lm -o $@ $^
 
 ztcfg.c: ztcfg.h
 
 ztcfg-shared: ztcfg.o $(LIBTONEZONE)
-	$(CC) -o ztcfg-shared ztcfg.o -lm -L. -ltonezone
+	$(CC) -o $@ $^ -lm
 
 ztcfg: ztcfg.o libtonezone.a
-	$(CC) -o ztcfg ztcfg.o -lm -L. libtonezone.a
+	$(CC) -o $@ $^ -lm
 
 ztcfg-dude: ztcfg-dude.o mknotch.o complex.o $(LIBTONEZONE)
-	$(CC) -o ztcfg ztcfg-dude.o mknotch.o complex.o -lm -L. -ltonezone
+	$(CC) -o $@ $^ -lm
 
 mknotch.o: mknotch.cc
-	$(CC) -c mknotch.cc
+	$(CC) -o $@ -c $^
 
 complex.o: complex.cc
-	$(CC) -c complex.cc
+	$(CC) -o $@ -c $^
 
 usbfxstest.o: usbfxstest.c
-	$(CC) -g -c usbfxstest.c
+	$(CC) -o $@ -g -c $^
 
 usbfxstest: usbfxstest.o 
-	$(CC) -o usbfxstest usbfxstest.o -lzap
+	$(CC) -o $@ $^ -lzap
 
-fxstest: fxstest.o 
-	$(CC) -o fxstest fxstest.o -L. -ltonezone -lm
+fxstest: fxstest.o $(LIBTONEZONE)
+	$(CC) -o $@ $^ -lm
 
 fxotune: fxotune.o
-	$(CC) -o fxotune fxotune.o -lm
+	$(CC) -o $@ $^ -lm
 
 fxsdump: fxsdump.o
-	$(CC) -o fxsdump fxsdump.o -lm
+	$(CC) -o $@ $^ -lm
 
 stackcheck: checkstack $(BUILDVER)
 	./checkstack *.o
 
 ztdiag: ztdiag.o 
-	$(CC) -o ztdiag ztdiag.o
+	$(CC) -o $@ $^
 
 devices:
-ifeq ($(DYNFS),)
+ifndef DYNFS
 	mkdir -p $(INSTALL_PREFIX)/dev/zap
 	rm -f $(INSTALL_PREFIX)/dev/zap/ctl
 	rm -f $(INSTALL_PREFIX)/dev/zap/channel
@@ -271,12 +284,12 @@
 		mknod $(INSTALL_PREFIX)/dev/zap/$$N c 196 $$N; \
 		N=$$[$$N+1]; \
 	done
-else
+else # DYNFS
 	@echo "**** Dynamic filesystem detected -- not creating device nodes"
 	@echo "**** If you are running udev, read README.udev"
 endif
 
-install:  all devices
+install: all devices
 	install -D -m 755 ztcfg $(INSTALL_PREFIX)/sbin/ztcfg
 	if [ -f sethdlc-new ]; then \
 		install -D -m 755 sethdlc-new $(INSTALL_PREFIX)/sbin/sethdlc; \
@@ -284,32 +297,28 @@
 		install -D -m 755 sethdlc $(INSTALL_PREFIX)/sbin/sethdlc ; \
 	fi
 	if [ -f zttool ]; then install -D -m 755 zttool $(INSTALL_PREFIX)/sbin/zttool; fi
-
 	if [ -f zaptel.ko ]; then \
-		for x in $(MODULESKO) ztdummy.ko; do \
-			install -D -m 644 $$x $(INSTALL_PREFIX)/$(KERNEL_SOURCE)/misc/$$x ; \
-		done; \
+		$(MAKE) -C $(KSRC) SUBDIRS=$(PWD) INSTALL_MOD_PATH=$(INSTALL_PREFIX) modules_install; \
 		if ! [ -f wcfxsusb.ko ]; then \
-			rm -f $(INSTALL_PREFIX)/$(KERNEL_SOURCE)/misc/wcfxsusb.ko; \
+			rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxsusb.ko; \
 		fi; \
-		rm -f $(INSTALL_PREFIX)/$(KERNEL_SOURCE)/misc/wcfxs.ko; \
+		rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxs.ko; \
 	else \
 		for x in $(MODULESO); do \
-			install -D -m 644 $$x $(INSTALL_PREFIX)/$(KERNEL_SOURCE)/misc/$$x ; \
+			install -D -m 644 $$x $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/$$x ; \
 		done; \
 		if ! [ -f wcfxsusb.o ]; then \
-			rm -f $(INSTALL_PREFIX)/$(KERNEL_SOURCE)/misc/wcfxsusb.o; \
+			rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxsusb.o; \
 		fi; \
-		rm -f $(INSTALL_PREFIX)/$(KERNEL_SOURCE)/misc/wcfxs.o; \
+		rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxs.o; \
 	fi
-
 	install -D -m 755 $(LIBTONEZONE) $(INSTALL_PREFIX)/usr/lib/$(LIBTONEZONE)
 	if [ -x /usr/sbin/sestatus ] && (/usr/sbin/sestatus | grep "SELinux status:" | grep -q "enabled") ; then restorecon -v $(INSTALL_PREFIX)/usr/lib/$(LIBTONEZONE); fi
 	install -D -m 644 zaptel.h $(INSTALL_PREFIX)/usr/include/linux/zaptel.h
 	install -D -m 644 torisa.h $(INSTALL_PREFIX)/usr/include/linux/torisa.h
 	install -D -m 644 tonezone.h $(INSTALL_PREFIX)/usr/include/tonezone.h
-	( cd $(INSTALL_PREFIX)/usr/lib ; rm -f libtonezone.so ; ln -sf $(LIBTONEZONE) libtonezone.so )
-	( cd $(INSTALL_PREFIX)/usr/lib ; rm -f libtonezone.so.1 ; ln -sf $(LIBTONEZONE) libtonezone.so.1 )
+	rm -f $(INSTALL_PREFIX)/usr/lib/libtonezone.so
+	rm -f $(INSTALL_PREFIX)/usr/lib/libtonezone.so.1
 	[ `id -u` = 0 ] && /sbin/ldconfig || :
 	if [ -f $(MODCONF) ]; then mv -f $(MODCONF) $(MODCONF).bak ; fi
 	cat $(MODCONF).bak | grep -v "alias char-major-250" | \
@@ -335,8 +344,7 @@
 	done
 	if ! grep "alias wcfxs" $(MODCONF); then \
 		echo "alias wcfxs wctdm" >> $(MODCONF); \
-	fi \
-
+	fi
 	if [ -d /etc/modutils ]; then \
 		/sbin/update-modules ; \
 	fi
@@ -385,4 +393,3 @@
 	rm -f tor2ee
 	rm -f fxotune
 	rm -f core
-




More information about the svn-commits mailing list