# # Makefile for Zaptel driver modules and utilities # # Copyright (C) 2001-2005 Digium, Inc. # # BASEADDR=0xd0000 HOSTCC=gcc # 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_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_X86-64) LCFLAGS=-fPIC $(CFLAGS) -DBUILDING_TONEZONE 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) KFLAGS+=$(shell if uname -r | grep -q 2.4; then if uname -m | grep -q x86_64; then echo "-mcmodel=kernel"; fi; fi) # # Features are now configured in zconfig.h # KFLAGS+=-DSTANDALONE_ZAPATA CFLAGS+=-DSTANDALONE_ZAPATA ROOT_PREFIX= INSTALL_PREFIX=$(DESTDIR) CONFIG_FILE=$(INSTALL_PREFIX)/etc/zaptel.conf CFLAGS+=-DZAPTEL_CONFIG=\"$(CONFIG_FILE)\" 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 else ifneq (,$(wildcard $(ROOT_PREFIX)/etc/conf.modules)) MODCONF:=$(ROOT_PREFIX)/etc/conf.modules endif 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") endif ifeq (${BUILDVER},linux26) #Tests for newer linux-2.6 udev support DYNFS:=$(shell ps ax | grep -v grep | grep udevd && echo "yes") endif CHKCONFIG:=$(shell sh -c 'type -p chkconfig' 2> /dev/null) ifndef CHKCONFIG CHKCONFIG:=: endif TZOBJS:=zonedata.lo tonezone.lo LIBTONEZONE_SO:=libtonezone.so LIBTONEZONE_SO_MAJOR_VER:=1 LIBTONEZONE_SO_MINOR_VER:=0 MODULES:=zaptel tor2 torisa wcusb wcfxo wctdm wctdm24xxp \ 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) 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) all: $(BUILDVER) $(LIBTONEZONE_SO) linux24: $(MODULESO) $(BINS) linux26: prereq $(BINS) @echo $(KSRC) @if [ -z "$(KSRC)" -o ! -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) #ifneq ($(TOPDIR),) #include $(TOPDIR)/Rules.make #endif MOD_DESTDIR:=zaptel devel: tor2ee tests: patgen pattest patlooptest hdlcstress hdlctest hdlcgen hdlcverify timertest tor2.o: tor2-hw.h tor2fw.h zaptel.h zaptel.o: zaptel.h digits.h arith.h sec.h mec.h sec-2.h mec2.h mec3.h zconfig.h torisa.o: zaptel.h torisa.h wcusb.o: wcusb.h zaptel.h wcfxsusb.o: wcfxsusb.h zaptel.h wcfxo.o: zaptel.h wct1xxp.o: zaptel.h wcte11xp.o: zaptel.h ztd-loc.o: zaptel.h wct4xxp.o: zaptel.h wctdm.o: zaptel.h wctdm.h wctdm24xxp.o: zaptel.h wctdm.h pciradio.o: zaptel.h radfw.h wcs3200p.o: zaptel.h ztdummy.o: ztdummy.h ztdynamic.o: zaptel.h 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 $@ $^ -lpci zonedata.lo: zonedata.c $(CC) -c $(LCFLAGS) -o $@ $^ tonezone.lo: tonezone.c $(CC) -c $(LCFLAGS) -o $@ $^ torisatool: torisatool.o $(CC) -o $@ $^ tones.h: gendigits ./gendigits tor2fw.h: makefw tormenta2.rbt ./makefw tormenta2.rbt tor2fw > tor2fw.h radfw.h: makefw pciradio.rbt ./makefw pciradio.rbt radfw > radfw.h gendigits: gendigits.o $(CC) -o $@ $^ -lm zaptel.c: tones.h prereq: tones.h tor2fw.h radfw.h zttool.o: zttool.c zaptel.h ztprovision.o: ztprovision.c zaptel.h ztmonitor.o: ztmonitor.c zaptel.h ztspeed.o: ztspeed.c $(CC) -o $@ -c $^ zttool: zttool.o $(CC) -o $@ $^ -lnewt ztmonitor: ztmonitor.o $(CC) -o $@ $^ ztspeed: ztspeed.o $(CC) -o $@ $^ sethdlc-new: sethdlc-new.o $(CC) -o $@ $^ sethdlc-new.o: sethdlc-new.c $(CC) -o $@ -c $(CFLAGS) -I$(KINCLUDES) $^ libtonezone.a: $(TZOBJS) ar rcs libtonezone.a $^ $(LIBTONEZONE_SO): $(TZOBJS) $(CC) -shared -Wl,-soname,$(LIBTONEZONE_SO).$(LIBTONEZONE_SO_MAJOR_VER) -lm -o $@ $^ ztcfg.c: ztcfg.h ztcfg-shared: ztcfg.o $(LIBTONEZONE_SO) $(CC) -o $@ $^ -lm ztcfg: ztcfg.o libtonezone.a $(CC) -o $@ $^ -lm ztcfg-dude: ztcfg-dude.o mknotch.o complex.o $(LIBTONEZONE_SO) $(CC) -o $@ $^ -lm mknotch.o: mknotch.cc $(CC) -o $@ -c $^ complex.o: complex.cc $(CC) -o $@ -c $^ usbfxstest.o: usbfxstest.c $(CC) -o $@ -g -c $^ usbfxstest: usbfxstest.o $(CC) -o $@ $^ -lzap fxstest: fxstest.o $(LIBTONEZONE_SO) $(CC) -o $@ $^ -lm fxotune: fxotune.o $(CC) -o $@ $^ -lm fxsdump: fxsdump.o $(CC) -o $@ $^ -lm stackcheck: checkstack $(BUILDVER) ./checkstack *.o ztdiag: ztdiag.o $(CC) -o $@ $^ devices: ifndef DYNFS mkdir -p $(INSTALL_PREFIX)/dev/zap rm -f $(INSTALL_PREFIX)/dev/zap/ctl rm -f $(INSTALL_PREFIX)/dev/zap/channel rm -f $(INSTALL_PREFIX)/dev/zap/pseudo rm -f $(INSTALL_PREFIX)/dev/zap/timer rm -f $(INSTALL_PREFIX)/dev/zap/253 rm -f $(INSTALL_PREFIX)/dev/zap/252 rm -f $(INSTALL_PREFIX)/dev/zap/251 rm -f $(INSTALL_PREFIX)/dev/zap/250 mknod $(INSTALL_PREFIX)/dev/zap/ctl c 196 0 mknod $(INSTALL_PREFIX)/dev/zap/timer c 196 253 mknod $(INSTALL_PREFIX)/dev/zap/channel c 196 254 mknod $(INSTALL_PREFIX)/dev/zap/pseudo c 196 255 N=1; \ while [ $$N -lt 250 ]; do \ rm -f $(INSTALL_PREFIX)/dev/zap/$$N; \ mknod $(INSTALL_PREFIX)/dev/zap/$$N c 196 $$N; \ N=$$[$$N+1]; \ done else # DYNFS @echo "**** Dynamic filesystem detected -- not creating device nodes" @echo "**** If you are running udev, read README.udev" endif 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; \ elif [ -f sethdlc ]; then \ 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); do \ rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/extra/$$x ; \ done; \ $(MAKE) -C $(KSRC) SUBDIRS=$(PWD) INSTALL_MOD_PATH=$(INSTALL_PREFIX) INSTALL_MOD_DIR=misc modules_install; \ if ! [ -f wcfxsusb.ko ]; then \ rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxsusb.ko; \ fi; \ rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxs.ko; \ else \ for x in $(MODULESO); do \ install -D -m 644 $$x $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/$$x ; \ done; \ if ! [ -f wcfxsusb.o ]; then \ rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxsusb.o; \ fi; \ rm -f $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/wcfxs.o; \ fi install -D -m 755 $(LIBTONEZONE_SO) $(INSTALL_PREFIX)/usr/lib/$(LIBTONEZONE_SO).$(LIBTONEZONE_SO_MAJOR_VER).$(LIBTONEZONE_SO_MINOR_VER) [ `id -u` = 0 ] && /sbin/ldconfig || : rm -f $(INSTALL_PREFIX)/usr/lib/$(LIBTONEZONE_SO) ln -sf $(LIBTONEZONE_SO).$(LIBTONEZONE_SO_MAJOR_VER) $(INSTALL_PREFIX)/usr/lib/$(LIBTONEZONE_SO) if [ -x /usr/sbin/sestatus ] && (/usr/sbin/sestatus | grep "SELinux status:" | grep -q "enabled") ; then restorecon -v $(INSTALL_PREFIX)/usr/lib/$(LIBTONEZONE_SO); 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 install -m 644 doc/ztcfg.8 $(INSTALL_PREFIX)/usr/share/man/man8 install -m 644 doc/zttool.8 $(INSTALL_PREFIX)/usr/share/man/man8 if [ -n "$(MODCONF)" ]; then \ if [ -f $(MODCONF) ]; then mv -f $(MODCONF) $(MODCONF).bak ; fi; \ cat $(MODCONF).bak | grep -v "alias char-major-250" | \ grep -v "post-install torisa /sbin/ztcfg" | \ grep -v "post-install wcfxsusb /sbin/ztcfg" | \ grep -v "alias wctdm" | \ grep -v "post-install wctdm /sbin/ztcfg" > $(MODCONF); \ if ! grep "options torisa" $(MODCONF); then \ echo "options torisa base=$(BASEADDR)" >> $(MODCONF); \ fi; \ if ! grep "alias char-major-196" $(MODCONF); then \ echo "alias char-major-196 $(PRIMARY)" >> $(MODCONF); \ fi; \ for x in $(MODULES); do \ if ! grep -q "post-install $$x" $(MODCONF); then \ if ! grep -q "install $$x " $(MODCONF); then \ if [ "$$x" != "zaptel" ] ; then \ if [ -f zaptel.ko ]; then echo "install $$x /sbin/modprobe --ignore-install $$x && /sbin/ztcfg" >> $(MODCONF); \ else echo "post-install $$x /sbin/ztcfg" >> $(MODCONF); \ fi; \ fi; \ fi; \ fi; \ done; \ if ! grep "ias wcfxs" $(MODCONF); then \ echo "alias wcfxs wctdm" >> $(MODCONF); \ fi; \ if ! grep "alias wct2xxp" $(MODCONF); then \ echo "alias wct2xxp wct4xxp" >> $(MODCONF); \ fi; \ fi if [ -d /etc/modutils ]; then \ /sbin/update-modules ; \ fi [ `id -u` = 0 ] && /sbin/depmod -a $(KVERS) || : [ -f $(CONFIG_FILE) ] || install -D -m 644 zaptel.conf.sample $(CONFIG_FILE) install-udev: install -m 444 udev/zaptel.rules $(INSTALL_PREFIX)/etc/udev/rules.d install -m 444 udev/zaptel.permissions $(INSTALL_PREFIX)/etc/udev/permissions.d config: if [ -d $(INSTALL_PREFIX)/etc/rc.d/init.d ]; then \ install -D -m 755 zaptel.init $(INSTALL_PREFIX)/etc/rc.d/init.d/zaptel; \ $(CHKCONFIG) --add zaptel; \ elif [ -d $(INSTALL_PREFIX)/etc/init.d ]; then \ install -D -m 755 zaptel.init $(INSTALL_PREFIX)/etc/init.d/zaptel; \ $(CHKCONFIG) --add zaptel; \ fi if [ -d /etc/default ] && [ ! -f /etc/default/zaptel ]; then \ install -D -m 644 zaptel.sysconfig $(INSTALL_PREFIX)/etc/default/zaptel; \ fi if [ -d /etc/sysconfig ] && [ ! -f /etc/sysconfig/zaptel ]; then \ install -D -m 644 zaptel.sysconfig $(INSTALL_PREFIX)/etc/sysconfig/zaptel; \ fi if [ -d /etc/sysconfig/network-scripts ]; then \ install -D -m 755 ifup-hdlc $(INSTALL_PREFIX)/etc/sysconfig/network-scripts/ifup-hdlc; \ fi update: @if [ -d CVS ]; then \ echo "Updating from CVS..." ; \ cvs -q -z3 update -Pd; \ else \ echo "Not CVS"; \ fi clean: rm -f torisatool makefw tor2fw.h radfw.h rm -f ${BINS} rm -f *.o ztcfg tzdriver sethdlc sethdlc-new rm -f $(TZOBJS) $(LIBTONEZONE_SO) *.lo rm -f *.ko *.mod.c .*o.cmd rm -rf .tmp_versions rm -f gendigits tones.h rm -f libtonezone* rm -f tor2ee rm -f fxotune rm -f core rm -f ztcfg-shared fxstest