diff options
Diffstat (limited to 'trunk/build_tools')
-rw-r--r-- | trunk/build_tools/cflags.xml | 62 | ||||
-rw-r--r-- | trunk/build_tools/embed_modules.xml | 26 | ||||
-rw-r--r-- | trunk/build_tools/get_makeopts | 3 | ||||
-rw-r--r-- | trunk/build_tools/get_moduleinfo | 3 | ||||
-rwxr-xr-x | trunk/build_tools/make_build_h | 20 | ||||
-rwxr-xr-x | trunk/build_tools/make_buildopts_h | 37 | ||||
-rwxr-xr-x | trunk/build_tools/make_defaults_h | 28 | ||||
-rwxr-xr-x | trunk/build_tools/make_linker_eo_script | 27 | ||||
-rwxr-xr-x | trunk/build_tools/make_sample_voicemail | 25 | ||||
-rwxr-xr-x | trunk/build_tools/make_version | 66 | ||||
-rwxr-xr-x | trunk/build_tools/make_version_c | 33 | ||||
-rw-r--r-- | trunk/build_tools/menuselect-deps.in | 47 | ||||
-rwxr-xr-x | trunk/build_tools/mkpkgconfig | 50 | ||||
-rwxr-xr-x | trunk/build_tools/prep_tarball | 13 | ||||
-rwxr-xr-x | trunk/build_tools/strip_nonapi | 29 |
15 files changed, 469 insertions, 0 deletions
diff --git a/trunk/build_tools/cflags.xml b/trunk/build_tools/cflags.xml new file mode 100644 index 000000000..fa69c1263 --- /dev/null +++ b/trunk/build_tools/cflags.xml @@ -0,0 +1,62 @@ + <category name="MENUSELECT_CFLAGS" displayname="Compiler Flags" positive_output="yes" remove_on_change=".lastclean"> + <member name="DONT_OPTIMIZE" displayname="Disable Optimizations by the Compiler"> + </member> + <member name="DEBUG_THREADS" displayname="Enable Thread Debugging"> + </member> + <member name="STATIC_BUILD" displayname="Build static binaries"> + </member> + <member name="LOADABLE_MODULES" displayname="Runtime module loading"> + <defaultenabled>yes</defaultenabled> + </member> + <member name="LOW_MEMORY" displayname="Optimize for Low Memory Usage"> + </member> + <member name="LOTS_OF_SPANS" displayname="More than 32 Zaptel spans"> + </member> + <member name="MTX_PROFILE" displayname="Enable Code Profiling Using TSC Counters"> + </member> + <member name="RADIO_RELAX" displayname="Relax DTMF for Radio Applications"> + </member> + <member name="G711_NEW_ALGORITHM" displayname="Use the NEW ulaw/alaw codecs (slower, but cleaner)"> + <defaultenabled>no</defaultenabled> + </member> + <member name="G711_REDUCED_BRANCHING" displayname="New ulaw/alaw codec, reduced branching (might help it run faster in some architectures)"> + <defaultenabled>yes</defaultenabled> + <depend>G711_NEW_ALGORITHM</depend> + </member> + <member name="TEST_CODING_TABLES" displayname="New ulaw/alaw codec, turn on table tests on init"> + <depend>G711_NEW_ALGORITHM</depend> + </member> + <member name="TEST_TANDEM_TRANSCODING" displayname="New ulaw/alaw codec, turn on transcoding tests on init"> + <depend>G711_NEW_ALGORITHM</depend> + </member> + <member name="DEBUG_CHANNEL_LOCKS" displayname="Debug Channel Locking"> + </member> + <member name="DEBUG_SCHEDULER" displayname="Enable Scheduler Debugging Output"> + </member> + <member name="DEBUG_THREADLOCALS" displayname="Enable Thread-Local-Storage Debugging"> + </member> + <member name="DETECT_DEADLOCKS" displayname="Detect Deadlocks"> + <depend>DEBUG_THREADS</depend> + </member> + <member name="DUMP_SCHEDULER" displayname="Dump Scheduler Contents for Debugging"> + </member> + <member name="MALLOC_DEBUG" displayname="Keep Track of Memory Allocations"> + </member> + <member name="TRACE_FRAMES" displayname="Trace Frame Allocations"> + </member> + <member name="DO_CRASH" displayname="Crash on fatal errors"> + </member> + <member name="THREAD_CRASH" displayname="Crash on mutex errors"> + </member> + <member name="BUSYDETECT_TONEONLY" displayname="Enable additional comparision of only the tone duration not the silence part"> + <conflict>BUSYDETECT_COMPARE_TONE_AND_SILENCE</conflict> + <defaultenabled>no</defaultenabled> + </member> + <member name="BUSYDETECT_COMPARE_TONE_AND_SILENCE" displayname="Assume that tone and silence have the same duration"> + <conflict>BUSYDETECT_TONEONLY</conflict> + <defaultenabled>no</defaultenabled> + </member> + <member name="BUSYDETECT_DEBUG" displayname="Enable additional busy detection debugging"> + <defaultenabled>no</defaultenabled> + </member> + </category> diff --git a/trunk/build_tools/embed_modules.xml b/trunk/build_tools/embed_modules.xml new file mode 100644 index 000000000..054e1dfad --- /dev/null +++ b/trunk/build_tools/embed_modules.xml @@ -0,0 +1,26 @@ + <category name="MENUSELECT_EMBED" displayname="Module Embedding" positive_output="yes" remove_on_change="main/asterisk"> + <member name="APPS" displayname="Applications" remove_on_change="apps/*.o"> + <depend>gnu_ld</depend> + </member> + <member name="CDR" displayname="Call Detail Recording" remove_on_change="cdr/*.o"> + <depend>gnu_ld</depend> + </member> + <member name="CHANNELS" displayname="Channels" remove_on_change="channels/*.o channels/misdn/*.o"> + <depend>gnu_ld</depend> + </member> + <member name="CODECS" displayname="Coders/Decoders" remove_on_change="codecs/*.o codecs/gsm/src/*.o codecs/ilbc/*.o codecs/lpc10/*.o codecs/gsm/lib/libgsm.a codecs/lpc10/liblpc10.a codecs/ilbc/libilbc.a codecs/g722/libg722.a"> + <depend>gnu_ld</depend> + </member> + <member name="FORMATS" displayname="File Formats" remove_on_change="formats/*.o"> + <depend>gnu_ld</depend> + </member> + <member name="FUNCS" displayname="Dialplan Functions" remove_on_change="funcs/*.o"> + <depend>gnu_ld</depend> + </member> + <member name="PBX" displayname="PBX Functionality" remove_on_change="pbx/*.o pbx/ael/*.o"> + <depend>gnu_ld</depend> + </member> + <member name="RES" displayname="Resource Modules" remove_on_change="res/*.o res/snmp/*.o"> + <depend>gnu_ld</depend> + </member> + </category> diff --git a/trunk/build_tools/get_makeopts b/trunk/build_tools/get_makeopts new file mode 100644 index 000000000..e63622afd --- /dev/null +++ b/trunk/build_tools/get_makeopts @@ -0,0 +1,3 @@ +/\/\*\*\* MAKEOPTS/ {printit=1; next} +/\*\*\*\// {if (printit) exit} +// {if (printit) print} diff --git a/trunk/build_tools/get_moduleinfo b/trunk/build_tools/get_moduleinfo new file mode 100644 index 000000000..d17c28e06 --- /dev/null +++ b/trunk/build_tools/get_moduleinfo @@ -0,0 +1,3 @@ +/\/\*\*\* MODULEINFO/ {printit=1; next} +/\*\*\*\// {if (printit) exit} +// {if (printit) print} diff --git a/trunk/build_tools/make_build_h b/trunk/build_tools/make_build_h new file mode 100755 index 000000000..b7dadfc33 --- /dev/null +++ b/trunk/build_tools/make_build_h @@ -0,0 +1,20 @@ +#!/bin/sh +HOSTNAME=`uname -n` +KERNEL=`uname -r` +MACHINE=`uname -m` +OS=`uname -s` +USER=`${ID} -un` +DATE=`date -u "+%Y-%m-%d %H:%M:%S"` +cat << END +/* + * build.h + * Automatically generated + */ +#define BUILD_HOSTNAME "${HOSTNAME}" +#define BUILD_KERNEL "${KERNEL}" +#define BUILD_MACHINE "${MACHINE}" +#define BUILD_OS "${OS}" +#define BUILD_DATE "${DATE} UTC" +#define BUILD_USER "${USER}" + +END diff --git a/trunk/build_tools/make_buildopts_h b/trunk/build_tools/make_buildopts_h new file mode 100755 index 000000000..ace404555 --- /dev/null +++ b/trunk/build_tools/make_buildopts_h @@ -0,0 +1,37 @@ +#!/bin/sh + +cat << END +/* + * buildopts.h + * Automatically generated + */ + +END +TMP=`${GREP} MENUSELECT_CFLAGS menuselect.makeopts | sed 's/MENUSELECT_CFLAGS\=//g' | sed 's/-D//g'` +for x in ${TMP}; do + echo "#define ${x} 1" +done +TMP=`${GREP} MENUSELECT_BUILD_DEPS menuselect.makeopts | sed 's/MENUSELECT_BUILD_DEPS\=//g'` +for x in ${TMP}; do + x2=`echo ${x} | tr a-z A-Z` + echo "#define AST_MODULE_${x2} 1" +done +if ${GREP} AST_DEVMODE makeopts | ${GREP} -q yes +then + echo "#define AST_DEVMODE 1" + TMP="${TMP} AST_DEVMODE" +fi + +case ${OSARCH} in # actually we should check build_os +*BSD|mingw|darwin*) + BUILDSUM=`echo ${TMP} | md5 | cut -c1-32` + ;; +SunOS) + BUILDSUM=`echo ${TMP} | digest -a md5 | cut -c1-32` + ;; +*) + BUILDSUM=`echo ${TMP} | md5sum | cut -c1-32` + ;; +esac + +echo "#define AST_BUILDOPT_SUM \"${BUILDSUM}\"" diff --git a/trunk/build_tools/make_defaults_h b/trunk/build_tools/make_defaults_h new file mode 100755 index 000000000..0aae60804 --- /dev/null +++ b/trunk/build_tools/make_defaults_h @@ -0,0 +1,28 @@ +#!/bin/sh +cat << END +/* + * defaults.h + * Automatically generated from build options, + * only used in main/asterisk.c + */ +#define DEFAULT_CONFIG_FILE "${INSTALL_PATH}${ASTCONFPATH}" + +#define DEFAULT_CONFIG_DIR "${INSTALL_PATH}${ASTETCDIR}" +#define DEFAULT_MODULE_DIR "${INSTALL_PATH}${MODULES_DIR}" +#define DEFAULT_AGI_DIR "${INSTALL_PATH}${AGI_DIR}" +#define DEFAULT_LOG_DIR "${INSTALL_PATH}${ASTLOGDIR}" + +#define DEFAULT_RUN_DIR "${INSTALL_PATH}${ASTVARRUNDIR}" +#define DEFAULT_SOCKET "${INSTALL_PATH}${ASTVARRUNDIR}/asterisk.ctl" +#define DEFAULT_PID "${INSTALL_PATH}${ASTVARRUNDIR}/asterisk.pid" + +#define DEFAULT_VAR_DIR "${INSTALL_PATH}${ASTVARLIBDIR}" +#define DEFAULT_DB "${INSTALL_PATH}${ASTVARLIBDIR}/astdb" + +#define DEFAULT_DATA_DIR "${INSTALL_PATH}${ASTDATADIR}" +#define DEFAULT_KEY_DIR "${INSTALL_PATH}${ASTDATADIR}/keys" + +#define DEFAULT_SPOOL_DIR "${INSTALL_PATH}${ASTSPOOLDIR}" +#define DEFAULT_TMP_DIR "${INSTALL_PATH}${ASTSPOOLDIR}/tmp" + +END diff --git a/trunk/build_tools/make_linker_eo_script b/trunk/build_tools/make_linker_eo_script new file mode 100755 index 000000000..39456c058 --- /dev/null +++ b/trunk/build_tools/make_linker_eo_script @@ -0,0 +1,27 @@ +#!/bin/sh + +cat << EOF +SECTIONS { +.text : { *(.text) } +.data : { __${1}_data_start = . ; *(.data) __${1}_data_end = . ;} +.rodata : { *(.rodata*) } +.bss : { __${1}_bss_start = . ; *(.bss) __${1}_bss_end = . ;} +.debug_abbrev : { *(.debug_abbrev) } +.debug_info : { *(.debug_info) } +.debug_line : { *(.debug_line) } +.debug_macinfo : { *(.debug_macinfo) } +.dtors : { *(.dtors) } +.ctors : { *(.ctors) } +.data.rel.local : { *(.data.rel.local) } +.data.rel.ro.local : { *(.data.rel.ro.local) } +.debug_frame : { *(.debug_frame) } +.eh_frame : { *(.eh_frame) } +.debug_loc : { *(.debug_loc) } +.debug_pubname : { *(.debug_pubname) } +.debug_aranges : { *(.debug_aranges) } +.debug_ranges : { *(.debug_ranges) } +.debug_str : { *(.debug_str) } +.comment : { *(.comment) } +.note.GNU-stack : { *(.note.GNU-stack) } +} +EOF diff --git a/trunk/build_tools/make_sample_voicemail b/trunk/build_tools/make_sample_voicemail new file mode 100755 index 000000000..272cf379a --- /dev/null +++ b/trunk/build_tools/make_sample_voicemail @@ -0,0 +1,25 @@ +#!/bin/sh -e + +for lang in /en/ /fr/ /es/ + do + for format in ulaw alaw wav gsm g729 g722 + do + [ ! -f ${1}/sounds${lang}vm-isunavail.${format} ] && continue + + mkdir -p ${2}/voicemail/default/1234${lang} + + : > ${2}/voicemail/default/1234${lang}unavail.${format} + + for file in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isunavail + do + cat ${1}/sounds${lang}${file}.${format} >> ${2}/voicemail/default/1234${lang}unavail.${format} + done + + : > ${2}/voicemail/default/1234${lang}busy.${format} + + for file in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isonphone + do + cat ${1}/sounds${lang}${file}.${format} >> ${2}/voicemail/default/1234${lang}busy.${format} + done + done +done diff --git a/trunk/build_tools/make_version b/trunk/build_tools/make_version new file mode 100755 index 000000000..4e9901dc5 --- /dev/null +++ b/trunk/build_tools/make_version @@ -0,0 +1,66 @@ +#!/bin/sh + +if [ -f ${1}/.version ]; then + cat ${1}/.version +elif [ -d .svn ]; then + PARTS=`LANG=C svn info ${1} | ${GREP} URL | ${AWK} '{print $2;}' | sed -e 's:^.*/svn/asterisk/::' | sed -e 's:/: :g'` + BRANCH=0 + TEAM=0 + TAG=0 + + REV=`svnversion -c ${1} | cut -d: -f2` + + BASE=`LANG=C svn pg svnmerge-integrated ${1} | cut -d: -f1` + + if [ "${PARTS}" = "trunk" ] ; then + echo SVN-trunk-r${REV} + exit 0 + fi + + for PART in $PARTS ; do + if [ ${TAG} != 0 ] ; then + RESULT="${PART}" + break + fi + + if [ ${BRANCH} != 0 ] ; then + if [ -z ${RESULT} ] ; then + RESULT="${PART}" + else + RESULT="${RESULT}-${PART}" + fi + break + fi + + if [ ${TEAM} != 0 ] ; then + if [ -z ${RESULT} ] ; then + RESULT="${PART}" + else + RESULT="${RESULT}-${PART}" + fi + continue + fi + + if [ "${PART}" = "branches" ] ; then + BRANCH=1 + RESULT="branch" + continue + fi + + if [ "${PART}" = "tags" ] ; then + TAG=1 + continue + fi + + if [ "${PART}" = "team" ] ; then + TEAM=1 + continue + fi + done + + if [ ${TAG} != 0 ] ; then + echo ${RESULT} + else + echo SVN-${RESULT}-r${REV}${BASE:+-${BASE}} + fi +fi diff --git a/trunk/build_tools/make_version_c b/trunk/build_tools/make_version_c new file mode 100755 index 000000000..291290ddd --- /dev/null +++ b/trunk/build_tools/make_version_c @@ -0,0 +1,33 @@ +#!/bin/sh +if [ ! -f ../.flavor ]; then + EXTRA="" +else + aadkver=`cat ../.version` + aadkflavor=`cat ../.flavor` + EXTRA=" (${aadkflavor} ${aadkver})" +fi +cat << END +/* + * version.c + * Automatically generated + */ + +#include "asterisk.h" + +#include "asterisk/version.h" + +static const char asterisk_version[] = "${ASTERISKVERSION}${EXTRA}"; + +static const char asterisk_version_num[] = "${ASTERISKVERSIONNUM}"; + +const char *ast_get_version(void) +{ + return asterisk_version; +} + +const char *ast_get_version_num(void) +{ + return asterisk_version_num; +} + +END diff --git a/trunk/build_tools/menuselect-deps.in b/trunk/build_tools/menuselect-deps.in new file mode 100644 index 000000000..f29ab8920 --- /dev/null +++ b/trunk/build_tools/menuselect-deps.in @@ -0,0 +1,47 @@ +ASOUND=@PBX_ALSA@ +CRYPTO=@PBX_CRYPTO@ +CURL=@PBX_CURL@ +FREETDS=@PBX_FREETDS@ +GNU_LD=@GNU_LD@ +GSM=@PBX_GSM@ +GTK2=@PBX_GTK2@ +GTK=@PBX_GTK@ +H323=@PBX_H323@ +ICONV=@PBX_ICONV@ +IKSEMEL=@PBX_IKSEMEL@ +IMAP_TK=@PBX_IMAP_TK@ +ISDNNET=@PBX_ISDNNET@ +IXJUSER=@PBX_IXJUSER@ +JACK=@PBX_JACK@ +LTDL=@PBX_LTDL@ +LUA=@PBX_LUA@ +MISDN=@PBX_MISDN@ +NBS=@PBX_NBS@ +NETSNMP=@PBX_NETSNMP@ +NEWT=@PBX_NEWT@ +OGG=@PBX_OGG@ +OPENH323=@PBX_OPENH323@ +OSPTK=@PBX_OSPTK@ +OSSAUDIO=@PBX_OSS@ +PGSQL=@PBX_PGSQL@ +POPT=@PBX_POPT@ +PORTAUDIO=@PBX_PORTAUDIO@ +PRI=@PBX_PRI@ +RADIUS=@PBX_RADIUS@ +SPEEX=@PBX_SPEEX@ +SPEEXDSP=@PBX_SPEEXDSP@ +SQLITE3=@PBX_SQLITE3@ +SQLITE=@PBX_SQLITE@ +SS7=@PBX_SS7@ +SSL=@PBX_OPENSSL@ +SUPPSERV=@PBX_SUPPSERV@ +TONEZONE=@PBX_TONEZONE@ +UNIXODBC=@PBX_UNIXODBC@ +USB=@PBX_USB@ +VORBIS=@PBX_VORBIS@ +VPBAPI=@PBX_VPB@ +WINARCH=@WINARCH@ +ZAPTEL=@PBX_ZAPTEL@ +ZAPTEL_TRANSCODE=@PBX_ZAPTEL_TRANSCODE@ +ZAPTEL_VLDTMF=@PBX_ZAPTEL_VLDTMF@ +ZLIB=@PBX_ZLIB@ diff --git a/trunk/build_tools/mkpkgconfig b/trunk/build_tools/mkpkgconfig new file mode 100755 index 000000000..ceea7ebc0 --- /dev/null +++ b/trunk/build_tools/mkpkgconfig @@ -0,0 +1,50 @@ +#!/bin/bash +PPATH=$1 +## Make sure we were called from Makefile + +if [ "x$ASTERISKVERSIONNUM" = "x" ]; then + echo " ** Do not call this script directly" + exit +fi + +## Create a pkgconfig spec file for 3rd party modules (pkg-config asterisk --cflags) + +if [ ! -d $PPATH ]; then + exit +fi + +#Solaris (and some others) don't have sed -r. perl -p is equivalent +if [[ `echo "xxx" | sed -r 's/x/y/g' 2>/dev/null | ${GREP} -c "yyy"` != 0 ]]; then + EXTREGEX="sed -r -e" +else + EXTREGEX="perl -pe" +fi + +## Clean out CFLAGS for the spec file. + +LOCAL_CFLAGS=`echo $CFLAGS | ${EXTREGEX} 's/\s*-pipe\s*//g' | ${EXTREGEX} 's/-[Wmp]\S*\s*//g' | \ + ${EXTREGEX} 's/-I(include|\.\.\/include) //g' | \ + ${EXTREGEX} 's/-DINSTALL_PREFIX=\S* //g' | \ + ${EXTREGEX} 's/-DASTERISK_VERSION=\S* //g' | \ + ${EXTREGEX} 's/-DAST(ETCDIR|LIBDIR|VARLIBDIR|VARRUNDIR|SPOOLDIR|LOGDIR|CONFPATH|MODDIR|AGIDIR)=\S* //g'` + + +cat <<EOF > $PPATH/asterisk.pc +install_prefix=$INSTALL_PREFIX +version_number=$ASTERISKVERSIONNUM +etcdir=$ASTETCDIR +libdir=$ASTLIBDIR +varlibdir=$ASTVARLIBDIR +varrundir=$ASTVARRUNDIR +spooldir=$ASTSPOOLDIR +logdir=$ASTLOGDIR +confpath=$ASTCONFPATH +moddir=$MODULES_DIR +agidir=$AGI_DIR + +Name: asterisk +Description: Open Source PBX and telephony toolkit +Version: $ASTERISKVERSION +Libs: $LIBS +Cflags: $LOCAL_CFLAGS +EOF diff --git a/trunk/build_tools/prep_tarball b/trunk/build_tools/prep_tarball new file mode 100755 index 000000000..5877a8a7b --- /dev/null +++ b/trunk/build_tools/prep_tarball @@ -0,0 +1,13 @@ +#!/bin/sh -e + +# This script will be executed by the 'mkrelease' script to do any tasks +# necessary during tarball creation of this project. +# +# It will be executed from the top-level directory of the project. + +make -C sounds MENUSELECT_CORE_SOUNDS=CORE-SOUNDS-EN-GSM MENUSELECT_MOH=MOH-FREEPLAY-WAV WGET=wget DOWNLOAD=wget all +make AWK=awk GREP=grep menuselect-tree + +VERSION=`cat .version` +sed -i -e "s/ASTERISKVERSION/${VERSION}/" doc/tex/asterisk.tex +cd doc/tex && rubber --pdf asterisk.tex && latex2html asterisk.tex diff --git a/trunk/build_tools/strip_nonapi b/trunk/build_tools/strip_nonapi new file mode 100755 index 000000000..8a8d06fcc --- /dev/null +++ b/trunk/build_tools/strip_nonapi @@ -0,0 +1,29 @@ +#!/bin/sh -e + +# This script is designed to remove all non-API global symbols from an object +# file. The only global symbols that should be retained are those that belong +# to the official namespace. Unfortunately doing this is platform-specific, as +# the object file manipulation tools are not consistent across platforms. +# +# On platforms where this script does not know what to do, the object file +# will retain non-API global symbols, and this may have unpleasant side effects. +# +# Prefixes that belong to the official namespace are: +# ast_ +# _ast_ +# __ast_ +# astman_ +# pbx_ +# resample_ + +FILTER="${GREP} -v -e ^ast_ -e ^_ast_ -e ^__ast_ -e ^astman_ -e ^pbx_ -e ^resample_" + +case "${OSARCH}" in + linux-gnu|FreeBSD) + nm ${1} | ${GREP} -e " T " | cut -d" " -f3 | ${FILTER} > striplist + sed -e "s/^/-N /" striplist | xargs ${STRIP} ${1} + rm -f striplist + ;; + *) + ;; +esac |