wanpipe/Makefile

334 lines
12 KiB
Makefile
Raw Normal View History

2021-12-29 16:59:00 +00:00
#
# Makefile WANPIPE WAN Router Installation/Removal Makefile
#
# Copyright (c) 2007, Sangoma Technologies Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
# ----------------------------------------------------------------------------
# Author: Nenad Corbic <ncorbic@sangoma.com>
#
PWD=$(shell pwd)
KBUILD_VERBOSE=0
2021-12-29 17:26:11 +00:00
ifdef DAHDI_DIR
ZAPDIR=$(DAHDI_DIR)
endif
2021-12-29 16:59:00 +00:00
ifndef ZAPDIR
2021-12-29 17:25:26 +00:00
ZAPDIR=/usr/src/dahdi
2021-12-29 17:26:11 +00:00
ifneq (,$(wildcard ./.pbxdir))
ZAPDIR=$(shell cat .pbxdir)
endif
2021-12-29 16:59:00 +00:00
endif
2021-12-29 17:30:35 +00:00
$(shell echo $(ZAPDIR) > .pbxdir)
2021-12-29 17:26:11 +00:00
2021-12-29 16:59:00 +00:00
#Kernel version and location
ifndef KVER
KVER=$(shell uname -r)
endif
ifndef KMOD
KMOD=/lib/modules/$(KVER)
endif
ifndef KDIR
KDIR=$(KMOD)/build
endif
ifndef KINSTDIR
KINSTDIR=$(KMOD)/kernel
endif
ifndef ARCH
ARCH=$(shell uname -m)
endif
2021-12-29 17:18:25 +00:00
ifndef ASTDIR
ASTDIR=/usr/src/asterisk
endif
2021-12-29 17:27:14 +00:00
2021-12-29 17:30:35 +00:00
INSTALLPREFIX=
2021-12-29 17:27:14 +00:00
2021-12-29 16:59:00 +00:00
#Local wanpipe includes
WINCLUDE=patches/kdrivers/include
HWECINC=patches/kdrivers/wanec/oct6100_api
KMODDIR=patches/kdrivers
#Location of wanpipe source in release
WAN_DIR=$(PWD)/$(KMODDIR)/src/net
WANEC_DIR=$(PWD)/$(KMODDIR)/wanec
MODTYPE=ko
#Setup include path and extra cflags
2021-12-29 17:30:35 +00:00
EXTRA_CFLAGS := -I$(PWD)/$(WINCLUDE) -I$(PWD)/$(WINCLUDE)/annexg -I$(PWD)/patches/kdrivers/wanec -D__LINUX__
2021-12-29 16:59:00 +00:00
EXTRA_CFLAGS += -I$(WANEC_DIR) -I$(WANEC_DIR)/oct6100_api -I$(WANEC_DIR)/oct6100_api/include
#Setup utility extra flags and include path
2021-12-29 17:25:26 +00:00
EXTRA_UTIL_FLAGS = -I$(PWD)/$(WINCLUDE) -I$(INSTALLPREFIX)/include -I$(INSTALLPREFIX)/usr/include
2021-12-29 16:59:00 +00:00
EXTRA_UTIL_FLAGS += -I$(PWD)/patches/kdrivers/wanec -I$(PWD)/patches/kdrivers/wanec/oct6100_api/include
ENABLE_WANPIPEMON_ZAP=NO
2021-12-29 17:14:12 +00:00
ZAPHDLC_PRIV=/etc/wanpipe/.zaphdlc
2021-12-29 16:59:00 +00:00
#Check if zaptel exists
2021-12-29 17:18:25 +00:00
ifneq (,$(wildcard $(ZAPDIR)/zaptel.h))
ZAPDIR_PRIV=$(ZAPDIR)
ENABLE_WANPIPEMON_ZAP=YES
2021-12-29 17:25:26 +00:00
EXTRA_CFLAGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE
2021-12-29 17:18:25 +00:00
ZAP_OPTS= --zaptel-path=$(ZAPDIR)
ZAP_PROT=TDM
2021-12-29 17:24:47 +00:00
PROTS=DEF-TDM
2021-12-29 17:18:25 +00:00
else
2021-12-29 17:20:30 +00:00
ifneq (,$(wildcard $(ZAPDIR)/kernel/zaptel.h))
ZAPDIR_PRIV=$(ZAPDIR)
ENABLE_WANPIPEMON_ZAP=YES
2021-12-29 17:25:26 +00:00
EXTRA_CFLAGS+= -DSTANDALONE_ZAPATA -DBUILDING_TONEZONE -I$(ZAPDIR)/kernel
2021-12-29 17:20:30 +00:00
ZAP_OPTS= --zaptel-path=$(ZAPDIR)
ZAP_PROT=TDM
2021-12-29 17:22:56 +00:00
PROTS=DEF-TDM
2021-12-29 17:20:30 +00:00
else
2021-12-29 17:25:26 +00:00
ifneq (,$(wildcard $(ZAPDIR)/include/dahdi/kernel.h))
ZAPDIR_PRIV=$(ZAPDIR)
ENABLE_WANPIPEMON_ZAP=YES
EXTRA_CFLAGS+= -DSTANDALONE_ZAPATA -DCONFIG_PRODUCT_WANPIPE_TDM_VOICE_DCHAN_ZAPTEL -DDAHDI_ISSUES -DBUILDING_TONEZONE -I$(ZAPDIR)/include -I$(ZAPDIR)/include/dahdi -I$(ZAPDIR)/drivers/dahdi
2021-12-29 17:30:35 +00:00
ZAP_OPTS= --zaptel-path=$(ZAPDIR)
2021-12-29 17:25:26 +00:00
ZAP_PROT=TDM
PROTS=DEF-TDM
else
ZAP_OPTS=
ZAP_PROT=
ZAPDIR_PRIV=
ENABLE_WANPIPEMON_ZAP=NO
PROTS=DEF
endif
2021-12-29 17:20:30 +00:00
endif
2021-12-29 17:18:25 +00:00
endif
2021-12-29 16:59:00 +00:00
2021-12-29 17:25:26 +00:00
EXTRA_CFLAGS += -I$(KDIR)/include/linux -I$(ZAPDIR)
2021-12-29 17:20:30 +00:00
2021-12-29 17:18:25 +00:00
RM = @rm -rf
JUNK = *~ *.bak DEADJOE
2021-12-29 16:59:00 +00:00
# First pass, kernel Makefile reads module objects
ifneq ($(KERNELRELEASE),)
obj-m := sdladrv.o wanrouter.o wanpipe.o wanpipe_syncppp.o wanec.o
# Second pass, the actual build.
else
#This will check for zaptel, kenrel source and build utilites and kernel modules
#within local directory structure
2021-12-29 17:30:35 +00:00
all: _checkzap _checksrc all_bin_kmod all_util
2021-12-29 17:26:11 +00:00
2021-12-29 17:30:35 +00:00
all_src: _checkzap _checksrc all_kmod all_util all_lib
2021-12-29 17:14:12 +00:00
2021-12-29 16:59:00 +00:00
#Build only kernel modules
all_kmod: _checkzap _checksrc _cleanoldwanpipe _check_kver
2021-12-29 17:18:25 +00:00
$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C $(KDIR) SUBDIRS=$(WAN_DIR) EXTRA_FLAGS="$(EXTRA_CFLAGS) $(shell cat ./patches/kfeatures)" ZAPDIR=$(ZAPDIR_PRIV) ZAPHDLC=$(ZAPHDLC_PRIV) HOMEDIR=$(PWD) modules
2021-12-29 17:14:12 +00:00
all_bin_kmod: _checkzap _checksrc _cleanoldwanpipe _check_kver
@if [ -e $(PWD)/ast_build_dir ]; then \
rm -rf $(PWD)/ast_build_dir; \
fi
@mkdir -p $(PWD)/ast_build_dir
2021-12-29 17:22:56 +00:00
./Setup drivers --builddir=$(PWD)/ast_build_dir --with-linux=$(KDIR) $(ZAP_OPTS) --usr-cc=$(CC) --protocol=$(PROTS) --no-zaptel-compile --noautostart --arch=$(ARCH) --silent
2021-12-29 17:14:12 +00:00
@eval "./patches/copy_modules.sh $(PWD)/ast_build_dir $(WAN_DIR)"
2021-12-29 16:59:00 +00:00
#Clean utilites and kernel modules
2021-12-29 17:30:35 +00:00
clean: clean_util _cleanoldwanpipe
2021-12-29 16:59:00 +00:00
$(MAKE) -C $(KDIR) SUBDIRS=$(WAN_DIR) clean
@find patches/kdrivers -name '.*.cmd' | xargs rm -f
2021-12-29 17:23:59 +00:00
@find . -name 'Module.symver*' | xargs rm -f
2021-12-29 16:59:00 +00:00
#Clean old wanpipe headers from linux include
_cleanoldwanpipe: _checksrc
@eval "./patches/build_links.sh"
@eval "./patches/clean_old_wanpipe.sh $(WINCLUDE) $(KDIR)/include/linux"
#Check for linux headers
_checksrc:
@if [ ! -e $(KDIR) ]; then \
echo " Error linux headers/source not found: $(KDIR) !"; \
echo ; \
exit 1; \
fi
@if [ ! -e $(KDIR)/.config ]; then \
echo " Error linux headers/source not configured: missing $(KDIR)/.config !"; \
echo ; \
exit 1; \
fi
@if [ ! -e $(KDIR)/include ]; then \
echo " Error linux headers/source incomplete: missing $(KDIR)/include dir !"; \
echo ; \
exit 1; \
fi
_check_kver:
@eval "./patches/kern_i_private_check.sh $(KDIR)"
@echo > ./patches/kfeatures;
@if [ -e ./patches/i_private_found ]; then \
echo "-DWANPIPE_USE_I_PRIVATE " >> ./patches/kfeatures; \
fi
#Check for zaptel
_checkzap:
@echo
@echo " +--------- Wanpipe Build Info --------------+"
2021-12-29 17:18:25 +00:00
@echo
2021-12-29 17:25:26 +00:00
@if [ ! -e $(ZAPDIR)/zaptel.h ] && [ ! -e $(ZAPDIR)/kernel/zaptel.h ] && [ ! -e $(ZAPDIR)/include/dahdi/kernel.h ] ; then \
2021-12-29 17:30:35 +00:00
echo " Compiling Wanpipe without ZAPTEL/DAHDI Support!"; \
echo " Zaptel/Dahdi Dir: $(ZAPDIR)"; \
2021-12-29 16:59:00 +00:00
ZAPDIR_PRIV=; \
ENABLE_WANPIPEMON_ZAP=NO; \
else \
2021-12-29 17:25:26 +00:00
if [ -e $(ZAPDIR)/include/dahdi/kernel.h ]; then \
2021-12-29 17:30:35 +00:00
echo " Compiling Wanpipe with DAHDI Support!"; \
echo " Dahdi Dir: $(ZAPDIR)"; \
2021-12-29 17:25:26 +00:00
echo; \
ZAPDIR_PRIV=$(ZAPDIR); \
ENABLE_WANPIPEMON_ZAP=YES; \
2021-12-29 17:30:35 +00:00
cp -f $(ZAPDIR)/drivers/dahdi/Module.symvers $(WAN_DIR)/; \
2021-12-29 17:25:26 +00:00
else \
2021-12-29 17:30:35 +00:00
echo " Compiling Wanpipe with ZAPTEL Support!"; \
echo " Zaptel Dir: $(ZAPDIR)"; \
2021-12-29 17:25:26 +00:00
echo; \
eval "$(PWD)/patches/sangoma-zaptel-patch.sh $(ZAPDIR)"; \
ZAPDIR_PRIV=$(ZAPDIR); \
ENABLE_WANPIPEMON_ZAP=YES; \
if [ -f $(ZAPDIR)/kernel/Module.symvers ]; then \
cp -f $(ZAPDIR)/kernel/Module.symvers $(WAN_DIR)/; \
2021-12-29 17:30:35 +00:00
elif [ -f -f $(ZAPDIR)/Module.symvers ]; then \
2021-12-29 17:25:26 +00:00
cp -f $(ZAPDIR)/Module.symvers $(WAN_DIR)/; \
else \
echo "Error: Zaptel source not compiled, missing Module.symvers file"; \
echo " Please recompile zaptel directory first"; \
fi; \
echo ; \
2021-12-29 17:30:35 +00:00
echo "Please recompile and reinstall ZAPTEL after installation"; \
2021-12-29 17:25:26 +00:00
fi \
2021-12-29 16:59:00 +00:00
fi
@echo
@echo " +-------------------------------------------+"
@echo
@sleep 2;
#Install all utilities etc and modules
2021-12-29 17:30:35 +00:00
install: install_util install_etc install_kmod install_inc install_lib
2021-12-29 16:59:00 +00:00
#Install kernel modules only
install_kmod:
install -m 644 -D $(WAN_DIR)/wanrouter.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/wanrouter.${MODTYPE}
install -m 644 -D $(WAN_DIR)/af_wanpipe.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/af_wanpipe.${MODTYPE}
install -m 644 -D $(WAN_DIR)/wanec.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/wanec.${MODTYPE}
install -m 644 -D $(WAN_DIR)/wan_aften.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/wan_aften.${MODTYPE}
install -m 644 -D $(WAN_DIR)/sdladrv.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/sdladrv.${MODTYPE}
install -m 644 -D $(WAN_DIR)/wanpipe.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/wanpipe.${MODTYPE}
@rm -f $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/wanpipe_syncppp.${MODTYPE}
2021-12-29 17:18:25 +00:00
@if [ -f $(WAN_DIR)/wanpipe_syncppp.${MODTYPE} ]; then \
2021-12-29 17:14:12 +00:00
echo "install -m 644 -D $(WAN_DIR)/wanpipe_syncppp.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/wanpipe_syncppp.${MODTYPE}"; \
2021-12-29 16:59:00 +00:00
install -m 644 -D $(WAN_DIR)/wanpipe_syncppp.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/drivers/net/wan/wanpipe_syncppp.${MODTYPE}; \
fi
@rm -f $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/wanpipe_lip.${MODTYPE};
2021-12-29 17:18:25 +00:00
@if [ -f $(WAN_DIR)/wanpipe_lip.${MODTYPE} ]; then \
2021-12-29 17:14:12 +00:00
echo "install -m 644 -D $(WAN_DIR)/wanpipe_lip.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/wanpipe_lip.${MODTYPE}"; \
2021-12-29 16:59:00 +00:00
install -m 644 -D $(WAN_DIR)/wanpipe_lip.${MODTYPE} $(INSTALLPREFIX)/$(KINSTDIR)/net/wanrouter/wanpipe_lip.${MODTYPE}; \
fi
@eval "./patches/rundepmod.sh"
endif
#Compile utilities only
2021-12-29 17:23:59 +00:00
all_util: install_inc
2021-12-29 16:59:00 +00:00
$(MAKE) -C util all EXTRA_FLAGS="$(EXTRA_UTIL_FLAGS)" SYSINC="$(PWD)/$(WINCLUDE) -I $(PWD)/api/libsangoma/include" CC=$(CC) \
PREFIX=$(INSTALLPREFIX) HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" ARCH=$(ARCH)
$(MAKE) -C util all_wancfg EXTRA_FLAGS="$(EXTRA_UTIL_FLAGS)" SYSINC="$(PWD)/$(WINCLUDE) -I$(PWD)/api/libsangoma/include" CC=$(CC) \
PREFIX=$(INSTALLPREFIX) HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" HOSTCFLAGS="$(EXTRA_UTIL_FLAGS)" ARCH=$(ARCH)
#Clean utilities only
clean_util:
$(MAKE) -C util clean SYSINC=$(PWD)/$(WINCLUDE) CC=$(CC) PREFIX=$(INSTALLPREFIX)
#Install utilities only
install_util:
$(MAKE) -C util install SYSINC=$(PWD)/$(WINCLUDE) CC=$(CC) PREFIX=$(INSTALLPREFIX)
2021-12-29 17:30:35 +00:00
all_lib:
$(shell cd api/libsangoma; ./init-automake.sh > /dev/null; ./configure --prefix=/usr > /dev/null;)
$(MAKE) -C api/libsangoma clean
$(MAKE) -C api/libsangoma all
$(shell cd api/libstelephony; ./init-automake.sh > /dev/null; ./configure --prefix=/usr > /dev/null;)
$(MAKE) -C api/libstelephony clean
$(MAKE) -C api/libstelephony all
install_lib:
$(MAKE) -C api/libsangoma install
$(MAKE) -C api/libstelephony install
2021-12-29 17:18:25 +00:00
install_smgbri:
$(MAKE) -C ssmg/sangoma_mgd.trunk/ install SYSINC=$(PWD)/$(WINCLUDE) CC=$(CC) PREFIX=$(INSTALLPREFIX)
install -D -m 755 ssmg/sangoma_bri/smg_ctrl $(INSTALLPREFIX)/usr/sbin/smg_ctrl
2021-12-29 17:30:35 +00:00
install -D -m 755 ssmg/sangoma_bri/sangoma_brid $(INSTALLPREFIX)/usr/sbin/sangoma_brid
2021-12-29 17:18:25 +00:00
$(MAKE) -C ssmg/libsangoma.trunk/ install DESTDIR=$(INSTALLPREFIX)
$(MAKE) -C ssmg/sangoma_mgd.trunk/lib/libteletone install DESTDIR=$(INSTALLPREFIX)
2021-12-29 16:59:00 +00:00
#Install etc files
install_etc:
@if [ ! -e $(INSTALLPREFIX)/etc/wanpipe ]; then \
mkdir -p $(INSTALLPREFIX)/etc/wanpipe; \
fi
@if [ ! -e $(INSTALLPREFIX)/etc/wanpipe/wanrouter.rc ]; then \
install -D -m 644 samples/wanrouter.rc $(INSTALLPREFIX)/etc/wanpipe/wanrouter.rc; \
fi
@if [ ! -e $(INSTALLPREFIX)/etc/wanpipe/lib ]; then \
mkdir -p $(INSTALLPREFIX)/etc/wanpipe/lib; \
fi
@\cp -f util/wancfg_legacy/lib/* $(INSTALLPREFIX)/etc/wanpipe/lib/
@\cp -rf firmware $(INSTALLPREFIX)/etc/wanpipe/
@if [ ! -f $(INSTALLPREFIX)/etc/wanpipe/interfaces ]; then \
mkdir -p $(INSTALLPREFIX)/etc/wanpipe/interfaces; \
fi
@\cp -rf samples $(INSTALLPREFIX)/etc/wanpipe
@if [ ! -d $(INSTALLPREFIX)/etc/wanpipe/scripts ]; then \
mkdir -p $(INSTALLPREFIX)/etc/wanpipe/scripts; \
fi
@\cp -rf wan_ec $(INSTALLPREFIX)/etc/wanpipe/
@install -D -m 755 samples/wanrouter $(INSTALLPREFIX)/usr/sbin/wanrouter
@echo
@echo "Wanpipe etc installed in $(INSTALLPREFIX)/etc/wanpipe";
@echo
install_inc:
@if [ -e $(INSTALLPREFIX)/usr/include/wanpipe ]; then \
\rm -rf $(INSTALLPREFIX)/usr/include/wanpipe; \
fi
@\mkdir -p $(INSTALLPREFIX)/usr/include/wanpipe
2021-12-29 17:23:59 +00:00
@ln -s $(INSTALLPREFIX)/usr/include/wanpipe/ $(INSTALLPREFIX)/usr/include/wanpipe/linux
2021-12-29 16:59:00 +00:00
@\cp -f $(PWD)/patches/kdrivers/include/*.h $(INSTALLPREFIX)/usr/include/wanpipe/
@\cp -rf $(PWD)/patches/kdrivers/wanec/oct6100_api/include/ $(INSTALLPREFIX)/usr/include/wanpipe/oct6100_api
@\cp -rf $(PWD)/patches/kdrivers/wanec/*.h $(INSTALLPREFIX)/usr/include/wanpipe/
2021-12-29 17:18:25 +00:00
smgbri:
2021-12-29 17:30:35 +00:00
@cd ssmg/libsangoma.trunk; ./configure --prefix=/usr ; cd ../..;
2021-12-29 17:18:25 +00:00
$(MAKE) -C ssmg/libsangoma.trunk/ CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
2021-12-29 17:30:35 +00:00
@cd ssmg/sangoma_mgd.trunk/lib/libteletone; ./configure --prefix=/usr ; cd ../../..;
2021-12-29 17:18:25 +00:00
$(MAKE) -C ssmg/sangoma_mgd.trunk/lib/libteletone CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
$(MAKE) -C ssmg/sangoma_mgd.trunk/ CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR) ASTDIR=$(ASTDIR)
clean_smgbri:
$(MAKE) -C ssmg/libsangoma.trunk/ clean CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
$(MAKE) -C ssmg/sangoma_mgd.trunk/lib/libteletone clean CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
$(MAKE) -C ssmg/sangoma_mgd.trunk/ clean CC=$(CC) PREFIX=$(INSTALLPREFIX) KDIR=$(KDIR)
2021-12-29 17:26:11 +00:00
distclean: clean
2021-12-29 17:30:35 +00:00
rm -f .pbxdir