git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1181 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2006-04-18 00:24:52 +00:00
parent c0ac721693
commit 021ea0e724
10 changed files with 326 additions and 323 deletions

View File

@ -118,7 +118,7 @@ CLEANFILES = src/include/switch_version.h
lib_LTLIBRARIES = libfreeswitch.la lib_LTLIBRARIES = libfreeswitch.la
libfreeswitch_la_CFLAGS = $(AM_CFLAGS) -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -g libfreeswitch_la_CFLAGS = $(AM_CFLAGS) -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -g
libfreeswitch_la_LDFLAGS = -version-info 1:0:0 libfreeswitch_la_LDFLAGS = -version-info 1:0:0
libfreeswitch_la_LIBADD = -lteletone -lresample -lsrtp -lsqlite3 libfreeswitch_la_LIBADD = -lteletone -lresample -lsrtp -lsqlite3 -ljitterbuffer
nodist_libfreeswitch_la_SOURCES = src/include/switch_version.h nodist_libfreeswitch_la_SOURCES = src/include/switch_version.h
bin_PROGRAMS = freeswitch bin_PROGRAMS = freeswitch
@ -156,6 +156,7 @@ depends:
./build/buildlib.sh . libresample-0.1.3.tgz --prefix=$(PREFIX) ./build/buildlib.sh . libresample-0.1.3.tgz --prefix=$(PREFIX)
./build/buildlib.sh . install libteletone --prefix=$(PREFIX) ./build/buildlib.sh . install libteletone --prefix=$(PREFIX)
./build/buildlib.sh . install srtp --prefix=$(PREFIX) ./build/buildlib.sh . install srtp --prefix=$(PREFIX)
./build/buildlib.sh . install jitterbuffer --prefix=$(PREFIX)
rm build/freeswitch.env rm build/freeswitch.env

View File

@ -333,7 +333,7 @@ CLEANFILES = src/include/switch_version.h
lib_LTLIBRARIES = libfreeswitch.la lib_LTLIBRARIES = libfreeswitch.la
libfreeswitch_la_CFLAGS = $(AM_CFLAGS) -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -g libfreeswitch_la_CFLAGS = $(AM_CFLAGS) -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -g
libfreeswitch_la_LDFLAGS = -version-info 1:0:0 libfreeswitch_la_LDFLAGS = -version-info 1:0:0
libfreeswitch_la_LIBADD = -lteletone -lresample -lsrtp -lsqlite3 libfreeswitch_la_LIBADD = -lteletone -lresample -lsrtp -lsqlite3 -ljitterbuffer
nodist_libfreeswitch_la_SOURCES = src/include/switch_version.h nodist_libfreeswitch_la_SOURCES = src/include/switch_version.h
freeswitch_SOURCES = src/switch.c\ freeswitch_SOURCES = src/switch.c\
src/include/switch_version.h src/include/switch_version.h
@ -1056,6 +1056,7 @@ depends:
./build/buildlib.sh . libresample-0.1.3.tgz --prefix=$(PREFIX) ./build/buildlib.sh . libresample-0.1.3.tgz --prefix=$(PREFIX)
./build/buildlib.sh . install libteletone --prefix=$(PREFIX) ./build/buildlib.sh . install libteletone --prefix=$(PREFIX)
./build/buildlib.sh . install srtp --prefix=$(PREFIX) ./build/buildlib.sh . install srtp --prefix=$(PREFIX)
./build/buildlib.sh . install jitterbuffer --prefix=$(PREFIX)
rm build/freeswitch.env rm build/freeswitch.env
modules: $(NAME) modules: $(NAME)

172
aclocal.m4 vendored
View File

@ -143,7 +143,7 @@ rm="rm -f"
default_ofile=libtool default_ofile=libtool
can_build_shared=yes can_build_shared=yes
# All known linkers require a `.a' archive for static linking (except MSVC, # All known linkers require a `.a' archive for static linking (except M$VC,
# which needs '.lib'). # which needs '.lib').
libext=a libext=a
ltmain="$ac_aux_dir/ltmain.sh" ltmain="$ac_aux_dir/ltmain.sh"
@ -359,8 +359,8 @@ if test "X${echo_test_string+set}" != Xset; then
# find a string as large as possible, as long as the shell can cope with it # find a string as large as possible, as long as the shell can cope with it
for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
# expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
if (echo_test_string=`eval $cmd`) 2>/dev/null && if (echo_test_string="`eval $cmd`") 2>/dev/null &&
echo_test_string=`eval $cmd` && echo_test_string="`eval $cmd`" &&
(test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
then then
break break
@ -529,7 +529,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
# Find out which ABI we are using. # Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in case "`/usr/bin/file conftest.o`" in
*32-bit*) *32-bit*)
case $host in case $host in
x86_64-*linux*) x86_64-*linux*)
@ -611,7 +611,7 @@ AC_CACHE_CHECK([$1], [$2],
# with a dollar sign (not a hyphen), so the echo should work correctly. # with a dollar sign (not a hyphen), so the echo should work correctly.
# The option is referenced via a variable to avoid confusing sed. # The option is referenced via a variable to avoid confusing sed.
lt_compile=`echo "$ac_compile" | $SED \ lt_compile=`echo "$ac_compile" | $SED \
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'` -e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
@ -650,7 +650,7 @@ AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
LDFLAGS="$LDFLAGS $3" LDFLAGS="$LDFLAGS $3"
printf "$lt_simple_link_test_code" > conftest.$ac_ext printf "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
# The linker can only warn and ignore the option if not recognized # The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings # So say no if there are warnings
if test -s conftest.err; then if test -s conftest.err; then
# Append any errors to the config.log. # Append any errors to the config.log.
@ -725,7 +725,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
elif test -x /usr/sbin/sysctl; then elif test -x /usr/sbin/sysctl; then
lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
else else
lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs lt_cv_sys_max_cmd_len=65536 # usable default for *BSD
fi fi
# And add a safety zone # And add a safety zone
lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
@ -737,7 +737,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
# nice to cause kernel panics so lets avoid the loop below. # nice to cause kernel panics so lets avoid the loop below.
# First set a reasonable default. # First set a reasonable default.
lt_cv_sys_max_cmd_len=16384 lt_cv_sys_max_cmd_len=16384
# #
if test -x /sbin/sysconfig; then if test -x /sbin/sysconfig; then
case `/sbin/sysconfig -q proc exec_disable_arg_limit` in case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
*1*) lt_cv_sys_max_cmd_len=-1 ;; *1*) lt_cv_sys_max_cmd_len=-1 ;;
@ -854,7 +854,7 @@ int main ()
}] }]
EOF EOF
if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
(./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null (./conftest; exit; ) 2>/dev/null
lt_status=$? lt_status=$?
case x$lt_status in case x$lt_status in
x$lt_dlno_uscore) $1 ;; x$lt_dlno_uscore) $1 ;;
@ -1003,7 +1003,7 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
# Note that $ac_compile itself does not contain backslashes and begins # Note that $ac_compile itself does not contain backslashes and begins
# with a dollar sign (not a hyphen), so the echo should work correctly. # with a dollar sign (not a hyphen), so the echo should work correctly.
lt_compile=`echo "$ac_compile" | $SED \ lt_compile=`echo "$ac_compile" | $SED \
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'` -e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
@ -1021,7 +1021,7 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
fi fi
fi fi
chmod u+w . 2>&AS_MESSAGE_LOG_FD chmod u+w .
$rm conftest* $rm conftest*
# SGI C++ compiler will create directory out/ii_files/ for # SGI C++ compiler will create directory out/ii_files/ for
# template instantiation # template instantiation
@ -1281,8 +1281,7 @@ cygwin* | mingw* | pw32*)
dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
dldir=$destdir/`dirname \$dlpath`~ dldir=$destdir/`dirname \$dlpath`~
test -d \$dldir || mkdir -p \$dldir~ test -d \$dldir || mkdir -p \$dldir~
$install_prog $dir/$dlname \$dldir/$dlname~ $install_prog $dir/$dlname \$dldir/$dlname'
chmod a+x \$dldir/$dlname'
postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
dlpath=$dir/\$dldll~ dlpath=$dir/\$dldll~
$rm \$dlpath' $rm \$dlpath'
@ -1335,7 +1334,7 @@ darwin* | rhapsody*)
soname_spec='${libname}${release}${major}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext'
shlibpath_overrides_runpath=yes shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
# Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
if test "$GCC" = yes; then if test "$GCC" = yes; then
sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
@ -1373,14 +1372,7 @@ kfreebsd*-gnu)
freebsd* | dragonfly*) freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new # DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this. # versioning mechanism, adjust this.
if test -x /usr/bin/objformat; then objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
objformat=`/usr/bin/objformat`
else
case $host_os in
freebsd[[123]]*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
version_type=freebsd-$objformat version_type=freebsd-$objformat
case $version_type in case $version_type in
freebsd-elf*) freebsd-elf*)
@ -1425,7 +1417,7 @@ hpux9* | hpux10* | hpux11*)
version_type=sunos version_type=sunos
need_lib_prefix=no need_lib_prefix=no
need_version=no need_version=no
case $host_cpu in case "$host_cpu" in
ia64*) ia64*)
shrext_cmds='.so' shrext_cmds='.so'
hardcode_into_libs=yes hardcode_into_libs=yes
@ -1821,7 +1813,7 @@ AC_DEFUN([AC_LIBTOOL_DLOPEN],
# AC_LIBTOOL_WIN32_DLL # AC_LIBTOOL_WIN32_DLL
# -------------------- # --------------------
# declare package support for building win32 DLLs # declare package support for building win32 dll's
AC_DEFUN([AC_LIBTOOL_WIN32_DLL], AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
])# AC_LIBTOOL_WIN32_DLL ])# AC_LIBTOOL_WIN32_DLL
@ -1995,7 +1987,7 @@ dnl not every word. This closes a longstanding sh security hole.
if test -n "$file_magic_test_file"; then if test -n "$file_magic_test_file"; then
case $deplibs_check_method in case $deplibs_check_method in
"file_magic "*) "file_magic "*)
file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
MAGIC_CMD="$lt_cv_path_MAGIC_CMD" MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
$EGREP "$file_magic_regex" > /dev/null; then $EGREP "$file_magic_regex" > /dev/null; then
@ -2105,7 +2097,7 @@ AC_CACHE_VAL(lt_cv_path_LD,
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
lt_cv_path_LD="$ac_dir/$ac_prog" lt_cv_path_LD="$ac_dir/$ac_prog"
# Check to see if the program is GNU ld. I'd rather use --version, # Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some variants of GNU ld only accept -v. # but apparently some GNU ld's only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer. # Break only if it was the GNU/non-GNU ld that we prefer.
case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*) *GNU* | *'with BFD'*)
@ -2137,7 +2129,7 @@ AC_PROG_LD_GNU
AC_DEFUN([AC_PROG_LD_GNU], AC_DEFUN([AC_PROG_LD_GNU],
[AC_REQUIRE([AC_PROG_EGREP])dnl [AC_REQUIRE([AC_PROG_EGREP])dnl
AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
[# I'd rather use --version here, but apparently some GNU lds only accept -v. [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
case `$LD -v 2>&1 </dev/null` in case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*) *GNU* | *'with BFD'*)
lt_cv_prog_gnu_ld=yes lt_cv_prog_gnu_ld=yes
@ -2251,7 +2243,7 @@ gnu*)
hpux10.20* | hpux11*) hpux10.20* | hpux11*)
lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_cmd=/usr/bin/file
case $host_cpu in case "$host_cpu" in
ia64*) ia64*)
lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
@ -2425,13 +2417,13 @@ esac
# ----------------------------------- # -----------------------------------
# sets LIBLTDL to the link flags for the libltdl convenience library and # sets LIBLTDL to the link flags for the libltdl convenience library and
# LTDLINCL to the include flags for the libltdl header and adds # LTDLINCL to the include flags for the libltdl header and adds
# --enable-ltdl-convenience to the configure arguments. Note that # --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL
# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
# it is assumed to be `libltdl'. LIBLTDL will be prefixed with # DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will
# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' # be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
# (note the single quotes!). If your package is not flat and you're not # '${top_srcdir}/' (note the single quotes!). If your package is not
# using automake, define top_builddir and top_srcdir appropriately in # flat and you're not using automake, define top_builddir and
# the Makefiles. # top_srcdir appropriately in the Makefiles.
AC_DEFUN([AC_LIBLTDL_CONVENIENCE], AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
case $enable_ltdl_convenience in case $enable_ltdl_convenience in
@ -2450,13 +2442,13 @@ AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
# ----------------------------------- # -----------------------------------
# sets LIBLTDL to the link flags for the libltdl installable library and # sets LIBLTDL to the link flags for the libltdl installable library and
# LTDLINCL to the include flags for the libltdl header and adds # LTDLINCL to the include flags for the libltdl header and adds
# --enable-ltdl-install to the configure arguments. Note that # --enable-ltdl-install to the configure arguments. Note that LIBLTDL
# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, # and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
# and an installed libltdl is not found, it is assumed to be `libltdl'. # DIRECTORY is not provided and an installed libltdl is not found, it is
# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with # assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
# '${top_srcdir}/' (note the single quotes!). If your package is not # and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
# flat and you're not using automake, define top_builddir and top_srcdir # quotes!). If your package is not flat and you're not using automake,
# appropriately in the Makefiles. # define top_builddir and top_srcdir appropriately in the Makefiles.
# In the future, this macro may have to be called after AC_PROG_LIBTOOL. # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
AC_DEFUN([AC_LIBLTDL_INSTALLABLE], AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
@ -2635,7 +2627,7 @@ test "$can_build_shared" = "no" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and # On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC. # are all built from PIC.
case $host_os in case "$host_os" in
aix3*) aix3*)
test "$enable_shared" = yes && enable_static=no test "$enable_shared" = yes && enable_static=no
if test -n "$RANLIB"; then if test -n "$RANLIB"; then
@ -2702,7 +2694,7 @@ _LT_AC_TAGVAR(postdeps, $1)=
_LT_AC_TAGVAR(compiler_lib_search_path, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)=
# Source file extension for C++ test sources. # Source file extension for C++ test sources.
ac_ext=cpp ac_ext=cc
# Object file extension for compiled C++ test sources. # Object file extension for compiled C++ test sources.
objext=o objext=o
@ -2918,7 +2910,7 @@ case $host_os in
# Exported symbols can be pulled into shared objects from archives # Exported symbols can be pulled into shared objects from archives
_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
# This is similar to how AIX traditionally builds its shared libraries. # This is similar to how AIX traditionally builds it's shared libraries.
_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi fi
fi fi
@ -2957,7 +2949,7 @@ case $host_os in
fi fi
;; ;;
darwin* | rhapsody*) darwin* | rhapsody*)
case $host_os in case "$host_os" in
rhapsody* | darwin1.[[012]]) rhapsody* | darwin1.[[012]])
_LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
;; ;;
@ -2995,7 +2987,7 @@ case $host_os in
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
fi fi
_LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
if test "X$lt_int_apple_cc_single_mod" = Xyes ; then if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
else else
@ -3008,7 +3000,7 @@ case $host_os in
output_verbose_link_cmd='echo' output_verbose_link_cmd='echo'
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
_LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
_LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;; ;;
@ -3088,7 +3080,7 @@ case $host_os in
;; ;;
hpux10*|hpux11*) hpux10*|hpux11*)
if test $with_gnu_ld = no; then if test $with_gnu_ld = no; then
case $host_cpu in case "$host_cpu" in
hppa*64*) hppa*64*)
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
@ -3104,7 +3096,7 @@ case $host_os in
;; ;;
esac esac
fi fi
case $host_cpu in case "$host_cpu" in
hppa*64*) hppa*64*)
_LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no
_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
@ -3130,7 +3122,7 @@ case $host_os in
_LT_AC_TAGVAR(ld_shlibs, $1)=no _LT_AC_TAGVAR(ld_shlibs, $1)=no
;; ;;
aCC*) aCC*)
case $host_cpu in case "$host_cpu" in
hppa*64*|ia64*) hppa*64*|ia64*)
_LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
;; ;;
@ -3151,7 +3143,7 @@ case $host_os in
*) *)
if test "$GXX" = yes; then if test "$GXX" = yes; then
if test $with_gnu_ld = no; then if test $with_gnu_ld = no; then
case $host_cpu in case "$host_cpu" in
ia64*|hppa*64*) ia64*|hppa*64*)
_LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
;; ;;
@ -3252,7 +3244,7 @@ case $host_os in
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
;; ;;
cxx*) cxx*)
# Compaq C++ # Compaq C++
@ -3484,11 +3476,10 @@ case $host_os in
case $cc_basename in case $cc_basename in
CC*) CC*)
# Sun C++ 4.2, 5.x and Centerline C++ # Sun C++ 4.2, 5.x and Centerline C++
_LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
$CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
@ -3508,7 +3499,15 @@ case $host_os in
esac esac
_LT_AC_TAGVAR(link_all_deplibs, $1)=yes _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
output_verbose_link_cmd='echo' # Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
#
# There doesn't appear to be a way to prevent this compiler from
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
# Archives containing C++ object files must be created using # Archives containing C++ object files must be created using
# "CC -xar", where "CC" is the Sun C++ compiler. This is # "CC -xar", where "CC" is the Sun C++ compiler. This is
@ -3665,7 +3664,7 @@ if AC_TRY_EVAL(ac_compile); then
# The `*' in the case matches for architectures that use `case' in # The `*' in the case matches for architectures that use `case' in
# $output_verbose_cmd can trigger glob expansion during the loop # $output_verbose_cmd can trigger glob expansion during the loop
# eval without this substitution. # eval without this substitution.
output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
for p in `eval $output_verbose_link_cmd`; do for p in `eval $output_verbose_link_cmd`; do
case $p in case $p in
@ -3741,21 +3740,6 @@ fi
$rm -f confest.$objext $rm -f confest.$objext
# PORTME: override above test on systems where it is broken
ifelse([$1],[CXX],
[case $host_os in
solaris*)
case $cc_basename in
CC*)
# Adding this requires a known-good setup of shared libraries for
# Sun compiler versions before 5.6, else PIC objects from an old
# archive will be linked into the output, leading to subtle bugs.
_LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
;;
esac
esac
])
case " $_LT_AC_TAGVAR(postdeps, $1) " in case " $_LT_AC_TAGVAR(postdeps, $1) " in
*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
esac esac
@ -3825,7 +3809,7 @@ test "$can_build_shared" = "no" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and # On AIX, shared libraries and static libraries use the same namespace, and
# are all built from PIC. # are all built from PIC.
case $host_os in case "$host_os" in
aix3*) aix3*)
test "$enable_shared" = yes && enable_static=no test "$enable_shared" = yes && enable_static=no
if test -n "$RANLIB"; then if test -n "$RANLIB"; then
@ -4724,7 +4708,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
hpux*) hpux*)
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX. # not for PA HP-UX.
case $host_cpu in case "$host_cpu" in
hppa*64*|ia64*) hppa*64*|ia64*)
;; ;;
*) *)
@ -4793,7 +4777,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
aCC*) aCC*)
_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
case $host_cpu in case "$host_cpu" in
hppa*64*|ia64*) hppa*64*|ia64*)
# +Z the default # +Z the default
;; ;;
@ -4834,7 +4818,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
# Portland Group C++ compiler. # Portland Group C++ compiler.
_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
;; ;;
cxx*) cxx*)
# Compaq C++ # Compaq C++
@ -4998,7 +4982,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
hpux*) hpux*)
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX. # not for PA HP-UX.
case $host_cpu in case "$host_cpu" in
hppa*64*|ia64*) hppa*64*|ia64*)
# +Z the default # +Z the default
;; ;;
@ -5045,7 +5029,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
# PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
# not for PA HP-UX. # not for PA HP-UX.
case $host_cpu in case "$host_cpu" in
hppa*64*|ia64*) hppa*64*|ia64*)
# +Z the default # +Z the default
;; ;;
@ -5075,12 +5059,12 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
;; ;;
pgcc* | pgf77* | pgf90* | pgf95*) pgcc* | pgf77* | pgf90*)
# Portland Group compilers (*not* the Pentium gcc compiler, # Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project) # which looks to be a dead project)
_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
;; ;;
ccc*) ccc*)
_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
@ -5163,7 +5147,7 @@ if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
_LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
fi fi
case $host_os in case "$host_os" in
# For platforms which do not support PIC, -DPIC is meaningless: # For platforms which do not support PIC, -DPIC is meaningless:
*djgpp*) *djgpp*)
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
@ -5259,7 +5243,7 @@ ifelse([$1],[CXX],[
if test "$with_gnu_ld" = yes; then if test "$with_gnu_ld" = yes; then
# If archive_cmds runs LD, not CC, wlarc should be empty # If archive_cmds runs LD, not CC, wlarc should be empty
wlarc='${wl}' wlarc='${wl}'
# Set some defaults for GNU ld with shared library support. These # Set some defaults for GNU ld with shared library support. These
# are reset later if shared libraries are not supported. Putting them # are reset later if shared libraries are not supported. Putting them
# here allows them to be overridden if necessary. # here allows them to be overridden if necessary.
@ -5280,7 +5264,7 @@ ifelse([$1],[CXX],[
*\ 2.11.*) ;; # other 2.11 versions *\ 2.11.*) ;; # other 2.11 versions
*) supports_anon_versioning=yes ;; *) supports_anon_versioning=yes ;;
esac esac
# See if GNU ld supports shared libraries. # See if GNU ld supports shared libraries.
case $host_os in case $host_os in
aix3* | aix4* | aix5*) aix3* | aix4* | aix5*)
@ -5354,11 +5338,11 @@ EOF
tmp_addflag= tmp_addflag=
case $cc_basename,$host_cpu in case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler pgcc*) # Portland Group C compiler
_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
tmp_addflag=' $pic_flag' tmp_addflag=' $pic_flag'
;; ;;
pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers pgf77* | pgf90* ) # Portland Group f77 and f90 compilers
_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
tmp_addflag=' $pic_flag -Mnomain' ;; tmp_addflag=' $pic_flag -Mnomain' ;;
ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
tmp_addflag=' -i_dynamic' ;; tmp_addflag=' -i_dynamic' ;;
@ -5564,7 +5548,7 @@ EOF
# Exported symbols can be pulled into shared objects from archives # Exported symbols can be pulled into shared objects from archives
_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
# This is similar to how AIX traditionally builds its shared libraries. # This is similar to how AIX traditionally builds it's shared libraries.
_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi fi
fi fi
@ -5604,7 +5588,7 @@ EOF
;; ;;
darwin* | rhapsody*) darwin* | rhapsody*)
case $host_os in case "$host_os" in
rhapsody* | darwin1.[[012]]) rhapsody* | darwin1.[[012]])
_LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
;; ;;
@ -5633,7 +5617,7 @@ EOF
output_verbose_link_cmd='echo' output_verbose_link_cmd='echo'
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
_LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
_LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
else else
@ -5642,7 +5626,7 @@ EOF
output_verbose_link_cmd='echo' output_verbose_link_cmd='echo'
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
_LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
_LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;; ;;
@ -5708,7 +5692,7 @@ EOF
hpux10* | hpux11*) hpux10* | hpux11*)
if test "$GCC" = yes -a "$with_gnu_ld" = no; then if test "$GCC" = yes -a "$with_gnu_ld" = no; then
case $host_cpu in case "$host_cpu" in
hppa*64*|ia64*) hppa*64*|ia64*)
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;; ;;
@ -5717,7 +5701,7 @@ EOF
;; ;;
esac esac
else else
case $host_cpu in case "$host_cpu" in
hppa*64*|ia64*) hppa*64*|ia64*)
_LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
;; ;;
@ -5727,7 +5711,7 @@ EOF
esac esac
fi fi
if test "$with_gnu_ld" = no; then if test "$with_gnu_ld" = no; then
case $host_cpu in case "$host_cpu" in
hppa*64*) hppa*64*)
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'

323
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -46,6 +46,12 @@ extern "C" {
struct switch_frame { struct switch_frame {
/*! a pointer to the codec information */ /*! a pointer to the codec information */
switch_codec *codec; switch_codec *codec;
/*! the originating source of the frame */
const char *source;
/*! the raw packet */
void *packet;
/*! the size of the raw packet when applicable*/
uint32_t packetlen;
/*! the frame data */ /*! the frame data */
void *data; void *data;
/*! the size of the buffer that is in use */ /*! the size of the buffer that is in use */
@ -56,6 +62,10 @@ struct switch_frame {
uint32_t samples; uint32_t samples;
/*! the rate of the frame */ /*! the rate of the frame */
uint32_t rate; uint32_t rate;
/*! the payload of the frame */
uint32_t payload;
/*! the timestamp of the frame */
uint32_t timestamp;
/*! frame flags */ /*! frame flags */
switch_frame_flag flags; switch_frame_flag flags;
}; };

View File

@ -244,15 +244,24 @@ SWITCH_DECLARE(switch_status) switch_rtp_read(switch_rtp *rtp_session, void *dat
*/ */
SWITCH_DECLARE(switch_status) switch_rtp_zerocopy_read(switch_rtp *rtp_session, void **data, uint32_t *datalen, int *payload_type, switch_frame_flag *flags); SWITCH_DECLARE(switch_status) switch_rtp_zerocopy_read(switch_rtp *rtp_session, void **data, uint32_t *datalen, int *payload_type, switch_frame_flag *flags);
/*!
\brief Read data from a given RTP session without copying
\param rtp_session the RTP session to read from
\param frame a frame to populate with information
\return the number of bytes read
*/
SWITCH_DECLARE(switch_status) switch_rtp_zerocopy_read_frame(switch_rtp *rtp_session, switch_frame *frame);
/*! /*!
\brief Write data to a given RTP session \brief Write data to a given RTP session
\param rtp_session the RTP session to write to \param rtp_session the RTP session to write to
\param data data to write \param data data to write
\param datalen the size of the data \param datalen the size of the data
\param ts then number of bytes to increment the timestamp by \param ts then number of bytes to increment the timestamp by
\param flags frame flags
\return the number of bytes written \return the number of bytes written
*/ */
SWITCH_DECLARE(int) switch_rtp_write(switch_rtp *rtp_session, void *data, uint32_t datalen, uint32_t ts); SWITCH_DECLARE(int) switch_rtp_write(switch_rtp *rtp_session, void *data, uint32_t datalen, uint32_t ts, switch_frame_flag *flags);
/*! /*!
\brief Write data with a specified payload and sequence number to a given RTP session \brief Write data with a specified payload and sequence number to a given RTP session
@ -262,9 +271,10 @@ SWITCH_DECLARE(int) switch_rtp_write(switch_rtp *rtp_session, void *data, uint32
\param payload the IANA payload number \param payload the IANA payload number
\param ts then number of bytes to increment the timestamp by \param ts then number of bytes to increment the timestamp by
\param mseq the specific sequence number to use \param mseq the specific sequence number to use
\param flags frame flags
\return the number of bytes written \return the number of bytes written
*/ */
SWITCH_DECLARE(int) switch_rtp_write_payload(switch_rtp *rtp_session, void *data, uint16_t datalen, uint8_t payload, uint32_t ts, uint16_t mseq); SWITCH_DECLARE(int) switch_rtp_write_payload(switch_rtp *rtp_session, void *data, uint16_t datalen, uint8_t payload, uint32_t ts, uint16_t mseq, switch_frame_flag *flags);
/*! /*!
\brief Retrieve the SSRC from a given RTP session \brief Retrieve the SSRC from a given RTP session

View File

@ -103,6 +103,7 @@ SWITCH_DECLARE_DATA extern switch_directories SWITCH_GLOBAL_dirs;
SWITCH_RTP_FLAG_USE_TIMER - Timeout Reads and replace with a CNG Frame SWITCH_RTP_FLAG_USE_TIMER - Timeout Reads and replace with a CNG Frame
SWITCH_RTP_FLAG_SECURE - Secure RTP SWITCH_RTP_FLAG_SECURE - Secure RTP
SWITCH_RTP_FLAG_AUTOADJ - Auto-Adjust the dest based on the source SWITCH_RTP_FLAG_AUTOADJ - Auto-Adjust the dest based on the source
SWITCH_RTP_FLAG_RAW_WRITE - Try to forward packets unscathed
</pre> </pre>
*/ */
typedef enum { typedef enum {
@ -110,7 +111,8 @@ typedef enum {
SWITCH_RTP_FLAG_IO = (1 << 1), SWITCH_RTP_FLAG_IO = (1 << 1),
SWITCH_RTP_FLAG_USE_TIMER = (1 << 2), SWITCH_RTP_FLAG_USE_TIMER = (1 << 2),
SWITCH_RTP_FLAG_SECURE = (1 << 3), SWITCH_RTP_FLAG_SECURE = (1 << 3),
SWITCH_RTP_FLAG_AUTOADJ = (1 << 4) SWITCH_RTP_FLAG_AUTOADJ = (1 << 4),
SWITCH_RTP_FLAG_RAW_WRITE = (1 << 5)
} switch_rtp_flag_t; } switch_rtp_flag_t;
/*! /*!
@ -316,11 +318,13 @@ typedef enum {
\brief Frame Flags \brief Frame Flags
<pre> <pre>
CF_CNG = (1 << 0) - Frame represents comfort noise SFF_CNG = (1 << 0) - Frame represents comfort noise
SFF_RAW_RTP = (1 << 1) - Frame has raw rtp accessible
</pre> </pre>
*/ */
typedef enum { typedef enum {
SFF_CNG = (1 << 0) SFF_CNG = (1 << 0),
SFF_RAW_RTP = (1 << 1)
} switch_frame_flag; } switch_frame_flag;

View File

@ -815,7 +815,7 @@ static switch_status channel_write_frame(switch_core_session *session, switch_fr
for (x = 0; x < loops; x++) { for (x = 0; x < loops; x++) {
switch_rtp_write_payload(tech_pvt->rtp_session, tech_pvt->out_digit_packet, 4, 101, ts, tech_pvt->out_digit_seq); switch_rtp_write_payload(tech_pvt->rtp_session, tech_pvt->out_digit_packet, 4, 101, ts, tech_pvt->out_digit_seq, &frame->flags);
/* /*
printf("Send %s packet for [%c] ts=%d sofar=%u dur=%d\n", loops == 1 ? "middle" : "end", tech_pvt->out_digit, ts, printf("Send %s packet for [%c] ts=%d sofar=%u dur=%d\n", loops == 1 ? "middle" : "end", tech_pvt->out_digit, ts,
tech_pvt->out_digit_sofar, duration); tech_pvt->out_digit_sofar, duration);
@ -840,7 +840,7 @@ static switch_status channel_write_frame(switch_core_session *session, switch_fr
ts = tech_pvt->timestamp_dtmf += samples; ts = tech_pvt->timestamp_dtmf += samples;
tech_pvt->out_digit_seq++; tech_pvt->out_digit_seq++;
for (x = 0; x < 3; x++) { for (x = 0; x < 3; x++) {
switch_rtp_write_payload(tech_pvt->rtp_session, tech_pvt->out_digit_packet, 4, 101, ts, tech_pvt->out_digit_seq); switch_rtp_write_payload(tech_pvt->rtp_session, tech_pvt->out_digit_packet, 4, 101, ts, tech_pvt->out_digit_seq, &frame->flags);
/* /*
printf("Send start packet for [%c] ts=%d sofar=%u dur=%d\n", tech_pvt->out_digit, ts, printf("Send start packet for [%c] ts=%d sofar=%u dur=%d\n", tech_pvt->out_digit, ts,
tech_pvt->out_digit_sofar, 0); tech_pvt->out_digit_sofar, 0);
@ -858,7 +858,7 @@ static switch_status channel_write_frame(switch_core_session *session, switch_fr
//printf("%s send %d bytes %d samples in %d frames ts=%d\n", switch_channel_get_name(channel), frame->datalen, samples, frames, tech_pvt->timestamp_send); //printf("%s send %d bytes %d samples in %d frames ts=%d\n", switch_channel_get_name(channel), frame->datalen, samples, frames, tech_pvt->timestamp_send);
if (switch_rtp_write(tech_pvt->rtp_session, frame->data, frame->datalen, samples) < 0) { if (switch_rtp_write(tech_pvt->rtp_session, frame->data, frame->datalen, samples, &frame->flags) < 0) {
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
tech_pvt->timestamp_send += (int) samples; tech_pvt->timestamp_send += (int) samples;

View File

@ -604,15 +604,12 @@ static switch_status exosip_read_frame(switch_core_session *session, switch_fram
&& tech_pvt->read_frame.datalen == 0) { && tech_pvt->read_frame.datalen == 0) {
now = switch_time_now(); now = switch_time_now();
tech_pvt->read_frame.flags = 0; tech_pvt->read_frame.flags = 0;
if (switch_rtp_zerocopy_read(tech_pvt->rtp_session, if (switch_rtp_zerocopy_read_frame(tech_pvt->rtp_session, &tech_pvt->read_frame) != SWITCH_STATUS_SUCCESS) {
&tech_pvt->read_frame.data,
&tech_pvt->read_frame.datalen,
&payload,
&tech_pvt->read_frame.flags) != SWITCH_STATUS_SUCCESS) {
return SWITCH_STATUS_FALSE; return SWITCH_STATUS_FALSE;
} }
payload = tech_pvt->read_frame.payload;
if (timeout > -1) { if (timeout > -1) {
elapsed = (unsigned int)((switch_time_now() - started) / 1000); elapsed = (unsigned int)((switch_time_now() - started) / 1000);
if (elapsed >= (unsigned int)timeout) { if (elapsed >= (unsigned int)timeout) {
@ -735,7 +732,7 @@ static switch_status exosip_write_frame(switch_core_session *session, switch_fra
for (x = 0; x < loops; x++) { for (x = 0; x < loops; x++) {
switch_rtp_write_payload(tech_pvt->rtp_session, tech_pvt->out_digit_packet, 4, 101, ts, tech_pvt->out_digit_seq); switch_rtp_write_payload(tech_pvt->rtp_session, tech_pvt->out_digit_packet, 4, 101, ts, tech_pvt->out_digit_seq, &frame->flags);
printf("Send %s packet for [%c] ts=%d sofar=%u dur=%d\n", printf("Send %s packet for [%c] ts=%d sofar=%u dur=%d\n",
loops == 1 ? "middle" : "end", loops == 1 ? "middle" : "end",
tech_pvt->out_digit, tech_pvt->out_digit,
@ -762,7 +759,7 @@ static switch_status exosip_write_frame(switch_core_session *session, switch_fra
ts = tech_pvt->timestamp_dtmf += samples; ts = tech_pvt->timestamp_dtmf += samples;
tech_pvt->out_digit_seq++; tech_pvt->out_digit_seq++;
for (x = 0; x < 3; x++) { for (x = 0; x < 3; x++) {
switch_rtp_write_payload(tech_pvt->rtp_session, tech_pvt->out_digit_packet, 4, 101, ts, tech_pvt->out_digit_seq); switch_rtp_write_payload(tech_pvt->rtp_session, tech_pvt->out_digit_packet, 4, 101, ts, tech_pvt->out_digit_seq, &frame->flags);
printf("Send start packet for [%c] ts=%d sofar=%u dur=%d\n", tech_pvt->out_digit, ts, printf("Send start packet for [%c] ts=%d sofar=%u dur=%d\n", tech_pvt->out_digit, ts,
tech_pvt->out_digit_sofar, 0); tech_pvt->out_digit_sofar, 0);
} }
@ -776,7 +773,7 @@ static switch_status exosip_write_frame(switch_core_session *session, switch_fra
//printf("%s %s->%s send %d bytes %d samples in %d frames taking up %d ms ts=%d\n", switch_channel_get_name(channel), tech_pvt->local_sdp_audio_ip, tech_pvt->remote_sdp_audio_ip, frame->datalen, samples, frames, ms, tech_pvt->timestamp_send); //printf("%s %s->%s send %d bytes %d samples in %d frames taking up %d ms ts=%d\n", switch_channel_get_name(channel), tech_pvt->local_sdp_audio_ip, tech_pvt->remote_sdp_audio_ip, frame->datalen, samples, frames, ms, tech_pvt->timestamp_send);
switch_rtp_write(tech_pvt->rtp_session, frame->data, (int) frame->datalen, samples); switch_rtp_write(tech_pvt->rtp_session, frame->data, (int) frame->datalen, samples, &frame->flags);
tech_pvt->timestamp_send += (int) samples; tech_pvt->timestamp_send += (int) samples;
switch_clear_flag(tech_pvt, TFLAG_WRITING); switch_clear_flag(tech_pvt, TFLAG_WRITING);

View File

@ -487,7 +487,7 @@ SWITCH_DECLARE(void) switch_rtp_clear_flag(switch_rtp *rtp_session, switch_rtp_f
} }
static int rtp_common_read(switch_rtp *rtp_session, void *data, int *payload_type, switch_frame_flag *flags) static int rtp_common_read(switch_rtp *rtp_session, int *payload_type, switch_frame_flag *flags)
{ {
switch_size_t bytes; switch_size_t bytes;
switch_status status; switch_status status;
@ -566,17 +566,19 @@ static int rtp_common_read(switch_rtp *rtp_session, void *data, int *payload_typ
*flags |= SFF_CNG; *flags |= SFF_CNG;
} }
return (int)(bytes - rtp_header_len); return (int) bytes;
} }
SWITCH_DECLARE(switch_status) switch_rtp_read(switch_rtp *rtp_session, void *data, uint32_t *datalen, int *payload_type, switch_frame_flag *flags) SWITCH_DECLARE(switch_status) switch_rtp_read(switch_rtp *rtp_session, void *data, uint32_t *datalen, int *payload_type, switch_frame_flag *flags)
{ {
int bytes = rtp_common_read(rtp_session, data, payload_type, flags); int bytes = rtp_common_read(rtp_session, payload_type, flags);
if (bytes < 0) { if (bytes < 0) {
*datalen = 0; *datalen = 0;
return SWITCH_STATUS_GENERR; return SWITCH_STATUS_GENERR;
} else {
bytes -= rtp_header_len;
} }
*datalen = bytes; *datalen = bytes;
@ -586,58 +588,91 @@ SWITCH_DECLARE(switch_status) switch_rtp_read(switch_rtp *rtp_session, void *dat
return SWITCH_STATUS_SUCCESS; return SWITCH_STATUS_SUCCESS;
} }
SWITCH_DECLARE(switch_status) switch_rtp_zerocopy_read_frame(switch_rtp *rtp_session, switch_frame *frame)
{
int bytes = rtp_common_read(rtp_session, &frame->payload, &frame->flags);
frame->data = rtp_session->recv_msg.body;
frame->packet = &rtp_session->recv_msg;
frame->packetlen = bytes;
frame->source = __FILE__;
frame->flags |= SFF_RAW_RTP;
if (bytes < 0) {
frame->datalen = 0;
return SWITCH_STATUS_GENERR;
} else {
bytes -= rtp_header_len;
}
frame->datalen = bytes;
return SWITCH_STATUS_SUCCESS;
}
SWITCH_DECLARE(switch_status) switch_rtp_zerocopy_read(switch_rtp *rtp_session, void **data, uint32_t *datalen, int *payload_type, switch_frame_flag *flags) SWITCH_DECLARE(switch_status) switch_rtp_zerocopy_read(switch_rtp *rtp_session, void **data, uint32_t *datalen, int *payload_type, switch_frame_flag *flags)
{ {
int bytes = rtp_common_read(rtp_session, data, payload_type, flags); int bytes = rtp_common_read(rtp_session, payload_type, flags);
*data = rtp_session->recv_msg.body; *data = rtp_session->recv_msg.body;
if (bytes < 0) { if (bytes < 0) {
*datalen = 0; *datalen = 0;
return SWITCH_STATUS_GENERR; return SWITCH_STATUS_GENERR;
} else {
bytes -= rtp_header_len;
} }
*datalen = bytes; *datalen = bytes;
return SWITCH_STATUS_SUCCESS; return SWITCH_STATUS_SUCCESS;
} }
static int rtp_common_write(switch_rtp *rtp_session, void *data, uint32_t datalen, uint8_t payload) static int rtp_common_write(switch_rtp *rtp_session, void *data, uint32_t datalen, uint8_t payload, switch_frame_flag *flags)
{ {
switch_size_t bytes; switch_size_t bytes;
uint8_t fwd = (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_RAW_WRITE) && (*flags & SFF_RAW_RTP)) ? 1 : 0;
rtp_msg_t *send_msg;
if (rtp_session->packet_size > datalen && (payload == rtp_session->payload)) { if (fwd) {
if (!rtp_session->packet_buffer) { bytes = datalen;
if (switch_buffer_create(rtp_session->pool, &rtp_session->packet_buffer, rtp_session->packet_size * 2) != SWITCH_STATUS_SUCCESS) { send_msg = (rtp_msg_t *) data;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Buffer memory error\n");
return -1;
}
}
switch_buffer_write(rtp_session->packet_buffer, data, datalen);
if (switch_buffer_inuse(rtp_session->packet_buffer) >= rtp_session->packet_size) {
switch_buffer_read(rtp_session->packet_buffer, rtp_session->send_msg.body, rtp_session->packet_size);
datalen = rtp_session->packet_size;
} else {
return datalen;
}
} else { } else {
memcpy(rtp_session->send_msg.body, data, datalen); send_msg = &rtp_session->send_msg;
send_msg->header.pt = rtp_session->payload;
if (rtp_session->packet_size > datalen && (payload == rtp_session->payload)) {
if (!rtp_session->packet_buffer) {
if (switch_buffer_create(rtp_session->pool, &rtp_session->packet_buffer, rtp_session->packet_size * 2) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Buffer memory error\n");
return -1;
}
}
switch_buffer_write(rtp_session->packet_buffer, data, datalen);
if (switch_buffer_inuse(rtp_session->packet_buffer) >= rtp_session->packet_size) {
switch_buffer_read(rtp_session->packet_buffer, send_msg->body, rtp_session->packet_size);
datalen = rtp_session->packet_size;
} else {
return datalen;
}
} else {
memcpy(send_msg->body, data, datalen);
}
bytes = datalen + rtp_header_len;
} }
bytes = datalen + rtp_header_len;
if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE)) { if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_SECURE)) {
int sbytes = (int)bytes; int sbytes = (int)bytes;
err_status_t stat; err_status_t stat;
stat = srtp_protect(rtp_session->send_ctx, &rtp_session->send_msg.header, &sbytes); stat = srtp_protect(rtp_session->send_ctx, &send_msg->header, &sbytes);
if (stat) { if (stat) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "error: srtp unprotection failed with code %d\n", stat); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "error: srtp unprotection failed with code %d\n", stat);
} }
bytes = sbytes; bytes = sbytes;
} }
rtp_session->send_msg.header.pt = rtp_session->payload;
switch_socket_sendto(rtp_session->sock, rtp_session->remote_addr, 0, (void*)&rtp_session->send_msg, &bytes);
switch_socket_sendto(rtp_session->sock, rtp_session->remote_addr, 0, (void*)send_msg, &bytes);
if (rtp_session->ice_user) { if (rtp_session->ice_user) {
if (ice_out(rtp_session) != SWITCH_STATUS_SUCCESS) { if (ice_out(rtp_session) != SWITCH_STATUS_SUCCESS) {
return -1; return -1;
@ -648,7 +683,7 @@ static int rtp_common_write(switch_rtp *rtp_session, void *data, uint32_t datale
} }
SWITCH_DECLARE(int) switch_rtp_write(switch_rtp *rtp_session, void *data, uint32_t datalen, uint32_t ts) SWITCH_DECLARE(int) switch_rtp_write(switch_rtp *rtp_session, void *data, uint32_t datalen, uint32_t ts, switch_frame_flag *flags)
{ {
if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO) || !rtp_session->remote_addr) { if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO) || !rtp_session->remote_addr) {
@ -661,11 +696,11 @@ SWITCH_DECLARE(int) switch_rtp_write(switch_rtp *rtp_session, void *data, uint32
rtp_session->send_msg.header.seq = rtp_session->seq; rtp_session->send_msg.header.seq = rtp_session->seq;
rtp_session->send_msg.header.ts = htonl(rtp_session->ts); rtp_session->send_msg.header.ts = htonl(rtp_session->ts);
return rtp_common_write(rtp_session, data, datalen, rtp_session->payload); return rtp_common_write(rtp_session, data, datalen, rtp_session->payload, flags);
} }
SWITCH_DECLARE(int) switch_rtp_write_payload(switch_rtp *rtp_session, void *data, uint16_t datalen, uint8_t payload, uint32_t ts, uint16_t mseq) SWITCH_DECLARE(int) switch_rtp_write_payload(switch_rtp *rtp_session, void *data, uint16_t datalen, uint8_t payload, uint32_t ts, uint16_t mseq, switch_frame_flag *flags)
{ {
if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO) || !rtp_session->remote_addr) { if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO) || !rtp_session->remote_addr) {
@ -676,7 +711,7 @@ SWITCH_DECLARE(int) switch_rtp_write_payload(switch_rtp *rtp_session, void *data
rtp_session->send_msg.header.seq = htons(mseq); rtp_session->send_msg.header.seq = htons(mseq);
rtp_session->send_msg.header.ts = htonl(rtp_session->ts); rtp_session->send_msg.header.ts = htonl(rtp_session->ts);
return rtp_common_write(rtp_session, data, datalen, payload); return rtp_common_write(rtp_session, data, datalen, payload, flags);
} }
SWITCH_DECLARE(uint32_t) switch_rtp_get_ssrc(switch_rtp *rtp_session) SWITCH_DECLARE(uint32_t) switch_rtp_get_ssrc(switch_rtp *rtp_session)