forked from t4rd15/asterisk-chan-quectel
-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d82d5af
commit 9a1dfc8
Showing
2 changed files
with
370 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
# | ||
# Copyright (C) 2017 - 2018 OpenWrt.org | ||
# | ||
# This is free software, licensed under the GNU General Public License v2. | ||
# See /LICENSE for more information. | ||
# | ||
|
||
include $(TOPDIR)/rules.mk | ||
|
||
PKG_NAME:=asterisk-chan-quectel | ||
PKG_VERSION:=2.1-20211201 | ||
PKG_RELEASE:=1 | ||
|
||
PKG_FIXUP:=autoreconf | ||
|
||
PKG_LICENSE:=GPL-2.0 | ||
PKG_LICENSE_FILES:=COPYRIGHT.txt LICENSE.txt | ||
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu> | ||
|
||
define Build/Prepare | ||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) | ||
$(CP) ./src/* $(PKG_BUILD_DIR)/ | ||
endef | ||
|
||
|
||
|
||
MODULES_DIR:=/usr/lib/asterisk/modules | ||
|
||
include $(INCLUDE_DIR)/package.mk | ||
# asterisk-chan-quectel needs iconv | ||
include $(INCLUDE_DIR)/nls.mk | ||
|
||
define Package/asterisk-chan-quectel/Default | ||
SUBMENU:=Telephony | ||
SECTION:=net | ||
CATEGORY:=Utilities | ||
URL:=https://github.com/IchthysMaranatha/asterisk-chan-quectel | ||
DEPENDS:=$(ICONV_DEPENDS) +kmod-usb-acm +kmod-usb-serial +kmod-usb-serial-option +libusb-1.0 +usb-modeswitch | ||
TITLE:=Asterisk Mobile Telephony Module | ||
endef | ||
|
||
define Package/asterisk16-chan-quectel | ||
$(call Package/asterisk-chan-quectel/Default) | ||
DEPENDS+=asterisk16 | ||
VARIANT:=asterisk16 | ||
endef | ||
|
||
define Package/description/Default | ||
Asterisk channel driver for mobile telephony. | ||
endef | ||
|
||
Package/asterisk16-chan-quectel/description = $(Package/description/Default) | ||
|
||
ifeq ($(BUILD_VARIANT),asterisk16) | ||
CHAN_quectel_AST_HEADERS:=$(STAGING_DIR)/usr/include/asterisk-16/include | ||
CONFIGURE_ARGS+= \ | ||
--with-astversion=16 | ||
endif | ||
|
||
|
||
CONFIGURE_ARGS+= \ | ||
--with-asterisk=$(CHAN_quectel_AST_HEADERS) | ||
|
||
TARGET_CFLAGS+= \ | ||
-I$(CHAN_quectel_AST_HEADERS) | ||
|
||
MAKE_FLAGS+=LD="$(TARGET_CC)" | ||
|
||
CONFIGURE_VARS += \ | ||
DESTDIR="$(MODULES_DIR)" \ | ||
ac_cv_type_size_t=yes \ | ||
ac_cv_type_ssize_t=yes | ||
|
||
|
||
define Package/conffiles/Default | ||
/etc/asterisk/quectel.conf | ||
endef | ||
|
||
Package/asterisk16-chan-quectel/conffiles = $(Package/conffiles/Default) | ||
|
||
define Package/Install/Default | ||
$(INSTALL_DIR) $(1)/etc/asterisk | ||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/etc/quectel.conf $(1)/etc/asterisk | ||
$(INSTALL_DIR) $(1)$(MODULES_DIR) | ||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chan_quectel.so $(1)$(MODULES_DIR) | ||
endef | ||
|
||
Package/asterisk16-chan-quectel/install = $(Package/Install/Default) | ||
|
||
$(eval $(call BuildPackage,asterisk16-chan-quectel)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,280 @@ | ||
dnl init | ||
dnl AC_REVISION($Revision: 1.30 $) | ||
AC_PREREQ([2.60]) | ||
AC_INIT([chan_quectel],[1.1],[https://github.com/bg111/asterisk-chan-quectel/issues],[chan_quectel],[https://github.com/bg111/asterisk-chan-quectel/]) | ||
PACKAGE_REVISION="43gh=47cg" | ||
AC_CANONICAL_TARGET | ||
AM_INIT_AUTOMAKE | ||
AC_CONFIG_HEADERS([config.h]) | ||
AC_CONFIG_SRCDIR([chan_quectel.c]) | ||
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h]) | ||
AC_CANONICAL_SYSTEM | ||
AC_CANONICAL_HOST | ||
|
||
dnl AM_INIT_AUTOMAKE | ||
|
||
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" | ||
|
||
dnl Checks for user settings. | ||
dnl Set asterisk headers patch | ||
AC_ARG_WITH( | ||
[asterisk], | ||
AS_HELP_STRING([--with-asterisk=path], [set asterisk headers location]), | ||
[ if test "x$with_asterisk" = "xyes" -o "x$with_asterisk" = "xno" ; then AC_MSG_ERROR([Invalid --with-asterisk=path value]); fi ], | ||
[ with_asterisk="../include /usr/include /usr/local/include /opt/local/include" ] | ||
) | ||
dnl Set iconv headers patch | ||
AC_ARG_WITH( | ||
[iconv], | ||
AS_HELP_STRING([--with-iconv=path], [set iconv headers location]), | ||
[ if test "x$with_iconv" = "xyes" -o "x$with_iconv" = "xno" ; then AC_MSG_ERROR([Invalid --with-iconv=path value]); fi ], | ||
[ with_iconv="../include /usr/include /usr/local/include /opt/local/include" ] | ||
) | ||
|
||
dnl Required: asterisk version | ||
AC_ARG_WITH( | ||
[astversion], | ||
AS_HELP_STRING([--with-astversion=M.m.u], [set asterisk version; for example: 14 or 13.13.1]), | ||
[ if echo "$with_astversion" | grep -qE '^[[0-9]][[0-9]]?(\.[[0-9]][[0-9]]?){0,2}$' | ||
then with_astversion=$(echo $with_astversion | sed -e 's/.*/&.0.0/' | tr . '\n' | | ||
head -n3 | sed -e 's/^.$/0&/' | tr -d '\n' | sed -e 's/^0*//') | ||
else AC_MSG_ERROR([Invalid --with-astversion=M.m.u value]); fi ], | ||
[ AC_MSG_ERROR([Please set --with-astversion=M.m.u (major.minor.micro)]) ] | ||
) | ||
AC_DEFINE_UNQUOTED([ASTERISK_VERSION_NUM], [$with_astversion], | ||
[The Asterisk version as configured --with-astversion.]) | ||
|
||
AC_ARG_ENABLE( | ||
[debug], | ||
AS_HELP_STRING([--enable-debug], [enable code debugging]), | ||
[ if test "x$enable_debug" != "xyes" ; then enable_debug="no" ; fi], | ||
[ enable_debug="no"] | ||
) | ||
|
||
dnl Optionally disable manager. | ||
AC_ARG_ENABLE( | ||
[manager], | ||
AS_HELP_STRING([--enable-manager], [enable manager code]), | ||
[ if test "x$enable_manager" != "xyes" ; then enable_manager="no" ; fi ], | ||
[ enable_manager="yes" ] | ||
) | ||
|
||
dnl Optionally disable applications | ||
AC_ARG_ENABLE( | ||
[apps], | ||
AS_HELP_STRING([--enable-apps], [enable applications code]), | ||
[ if test "x$enable_apps" != "xyes" ; then enable_apps="no" ; fi], | ||
[ enable_apps="yes" ] | ||
) | ||
|
||
dnl Checks for programs. | ||
AC_PROG_CC([gcc cl cc]) | ||
AC_PROG_CPP | ||
AC_PROG_INSTALL | ||
|
||
AC_CHECK_PROG(STRIP,strip,strip) | ||
if test -z "$STRIP" ; then | ||
AC_MSG_ERROR([Can't find strip]) | ||
fi | ||
AC_CHECK_PROG(RM,rm,rm) | ||
if test -z "$RM" ; then | ||
AC_MSG_ERROR([Can't find rm]) | ||
fi | ||
|
||
dnl Checks for libraries. | ||
dnl AC_CHECK_LIB([pthread], [pthread_create]) # should use ast_pthread_join everywhere? | ||
dnl AC_SEARCH_LIBS([iconv], [c iconv],,AC_MSG_ERROR([iconv library missing])) | ||
AC_CHECK_LIB([iconv], [libiconv]) | ||
|
||
|
||
dnl Checks for header files. | ||
AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/time.h termios.h]) | ||
AC_DEFUN([AC_HEADER_FIND], [ | ||
file=$1 | ||
found=no | ||
for path in $2 ; do | ||
AC_MSG_CHECKING([whether $file in $path]) | ||
if test -f $path/$file ; then | ||
found="yes" | ||
CPPFLAGS="$CPPFLAGS -I${path}" | ||
AC_MSG_RESULT([yes]) | ||
AC_CHECK_HEADER([$file]) | ||
break; | ||
fi | ||
AC_MSG_RESULT([no]) | ||
done | ||
if test "$found" = "no"; then | ||
AC_MSG_ERROR([Can't find "$file"]) | ||
fi | ||
] | ||
) | ||
|
||
AC_HEADER_FIND([asterisk.h], $with_asterisk) | ||
dnl AC_HEADER_FIND([iconv.h], $with_iconv) | ||
dnl AC_CHECK_HEADER([sqlite3.h],,AC_MSG_ERROR([sqlite3.h header file missing])) | ||
|
||
AC_DEFINE([ICONV_CONST],[], [Define to const if you has iconv() const declaration of input buffer]) | ||
AC_MSG_CHECKING([for iconv use const inbuf]) | ||
AC_EGREP_HEADER([^extern.+iconv[[:space:]]*\(.+const], [iconv.h], | ||
[ | ||
AC_DEFINE([ICONV_CONST],[const]) | ||
AC_MSG_RESULT([yes]) | ||
], | ||
[AC_MSG_RESULT([no])] | ||
) | ||
|
||
AC_MSG_CHECKING([for iconv_t in iconv.h]) | ||
AC_EGREP_HEADER([iconv_t], [iconv.h], | ||
[ | ||
AC_DEFINE([ICONV_T], [iconv_t], , [Define to iconv_t if you has iconv_t in iconv.h]) | ||
AC_MSG_RESULT(yes) | ||
], | ||
[ | ||
AC_DEFINE([ICONV_T], [int], [Define to iconv_t if you has iconv_t in iconv.h]) | ||
AC_MSG_RESULT(no) | ||
]) | ||
|
||
AC_MSG_CHECKING([for AST_CONTROL_SRCCHANGE in asterisk/frame.h]) | ||
AC_EGREP_HEADER([AST_CONTROL_SRCCHANGE], [asterisk/frame.h], | ||
[ | ||
AC_DEFINE([HAVE_AST_CONTROL_SRCCHANGE], [], [Define to 1 if you have HAVE_AST_CONTROL_SRCCHANGE in asterisk/frame.h]) | ||
AC_MSG_RESULT([yes]) | ||
], | ||
[AC_MSG_RESULT([no])] | ||
) | ||
|
||
|
||
dnl Checking for library options | ||
|
||
dnl Checks for typedefs, structures, and compiler characteristics. | ||
AC_C_CONST | ||
AC_C_INLINE | ||
AC_TYPE_SIZE_T | ||
AC_TYPE_SSIZE_T | ||
AC_TYPE_UINT64_T | ||
dnl AC_CHECK_TYPE(size_t, unsigned long) | ||
dnl AC_CHECK_TYPE(ssize_t, long) | ||
dnl AC_CHECK_TYPE(uint64_t, unsigned long long) | ||
|
||
dnl checking compiler options | ||
AC_DEFUN([AC_CC_OPT], [ | ||
my_save_cflags="$CFLAGS" | ||
CFLAGS="$1" | ||
AC_MSG_CHECKING([whether CC supports $1]) | ||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], | ||
[AC_MSG_RESULT([yes])] | ||
[AC_CFLAGS="$AC_CFLAGS $2"], | ||
[AC_MSG_RESULT([no])] | ||
) | ||
CFLAGS="$my_save_cflags"] | ||
) | ||
|
||
AC_CFLAGS= | ||
|
||
my_save_cflags="$CFLAGS" | ||
CFLAGS=-fvisibility=hidden | ||
AC_MSG_CHECKING([whether CC supports -fvisibility=hidden]) | ||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], | ||
[AC_MSG_RESULT([yes])] | ||
[TARGET="chan_quectel.so"] | ||
[AC_CFLAGS="$AC_CFLAGS -fvisibility=hidden"], | ||
[AC_MSG_RESULT([no])] | ||
[TARGET="chan_quectels.so"] | ||
) | ||
CFLAGS="$my_save_cflags" | ||
AC_SUBST([TARGET]) | ||
|
||
AC_CC_OPT([-fPIC],[-fPIC]) | ||
AC_CC_OPT([-Wall],[-Wall]) | ||
AC_CC_OPT([-Wextra],[-Wextra]) | ||
AC_CC_OPT([-MD -MT conftest.o -MF /dev/null -MP],[-MD -MT \$@ -MF .\$(subst /,_,\$@).d -MP]) | ||
|
||
AC_DEFUN([AC_CHECK_DESTDIR], [ | ||
if test -z "$DESTDIR" ; then | ||
found=no | ||
for path in $1 ; do | ||
AC_MSG_CHECKING([whether DESTDIR is $path]) | ||
if test -f $path/pbx_config.so ; then | ||
AC_MSG_RESULT([yes]) | ||
found="yes" | ||
DESTDIR=$path | ||
break; | ||
fi | ||
AC_MSG_RESULT([no]) | ||
done | ||
if test "$found" = "no"; then | ||
AC_MSG_ERROR([DESTDIR is unknown, please be explicit: ./configure DESTDIR=/usr/lib/asterisk/modules]) | ||
fi | ||
fi | ||
]) | ||
|
||
dnl This detection is kind of flaky. Don't rely on it. The module | ||
dnl directory could be lib64 or x86_64-linux-gnu or even somewhere | ||
dnl completely custom. | ||
AC_CHECK_DESTDIR([ \ | ||
/usr/lib/asterisk/modules /usr/lib64/asterisk/modules \ | ||
/usr/local/lib/asterisk/modules /opt/local/lib/asterisk/modules]) | ||
|
||
dnl Checks for library functions. | ||
AC_FUNC_MEMCMP | ||
AC_CHECK_FUNCS([memchr memmove memset memmem strcasecmp strchr strncasecmp strtol realpath]) | ||
|
||
|
||
dnl Apply options to defines | ||
if test "x$enable_debug" = "xyes" ; then | ||
CFLAGS="$CFLAGS -O0 -g" | ||
AC_DEFINE([__DEBUG__], [1], [Build with debugging]) | ||
fi | ||
|
||
dnl Asterisk header files use lots of old style declarations, ignore those. | ||
dnl > warning: ‘inline’ is not at beginning of declaration [-Wold-style-declaration] | ||
dnl > static void force_inline _ast_assert(...) | ||
CFLAGS="$CFLAGS -Wno-old-style-declaration" | ||
|
||
if test "x$enable_manager" = "xyes" ; then | ||
AC_DEFINE([BUILD_MANAGER],[1], [Build Manager extensions]) | ||
fi | ||
|
||
if test "x$enable_apps" = "xyes" ; then | ||
AC_DEFINE([BUILD_APPLICATIONS],[1],[Build Application extensions]) | ||
fi | ||
|
||
case "$target_os" in | ||
linux*) | ||
SOLINK="-shared -Xlinker -x" | ||
DC_LDFLAGS="" | ||
;; | ||
freebsd*) | ||
SOLINK="-shared -Xlinker -x" | ||
DC_LDFLAGS="-L/usr/local/lib" | ||
;; | ||
openbsd*) | ||
SOLINK="-shared -Xlinker -x" | ||
DC_LDFLAGS="-L/usr/local/lib -pthread" | ||
AC_CFLAGS="$AC_CFLAGS -pthread" | ||
;; | ||
darwin*) | ||
SOLINK="-dynamic -bundle -Xlinker -macosx_version_min -Xlinker 10.4 -Xlinker -undefined -Xlinker dynamic_lookup -force_flat_namespace" | ||
DC_LDFLAGS="-L/opt/local/lib" | ||
[ `/usr/bin/sw_vers -productVersion | cut -c1-4` == "10.6" ] && SOLINK="$SOLINK /usr/lib/bundle1.o" | ||
esac | ||
|
||
LDFLAGS="$LDFLAGS $DC_LDFLAGS" | ||
|
||
dnl AC_DEFINE_UNQUOTED([MODULE_], "$PACKAGE_", []) | ||
dnl AC_DEFINE_UNQUOTED([MODULE_], "$PACKAGE_", []) | ||
AC_DEFINE_UNQUOTED([MODULE_BUGREPORT], "$PACKAGE_BUGREPORT", [Define to the address where bug reports for this package should be sent]) | ||
AC_DEFINE_UNQUOTED([MODULE_URL], "$PACKAGE_URL", [Define to the home page for this package]) | ||
AC_DEFINE_UNQUOTED([MODULE_VERSION], "$PACKAGE_VERSION", [Define to the version of this package]) | ||
AC_DEFINE_UNQUOTED([AST_MODULE],"$PACKAGE_NAME",[name of asterisk module]) | ||
AC_DEFINE_UNQUOTED([PACKAGE_REVISION], "$PACKAGE_REVISION",[Revision of package]) | ||
|
||
AC_SUBST([SOLINK]) | ||
AC_SUBST([PACKAGE_TARNAME]) | ||
AC_SUBST([PACKAGE_REVISION]) | ||
AC_SUBST([PACKAGE_VERSION]) | ||
AC_SUBST([DESTDIR]) | ||
AC_SUBST([AC_CFLAGS]) | ||
AC_CONFIG_FILES([Makefile]) | ||
AC_OUTPUT |