From 831823773e16aff2a237335145effd426d5ebf87 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Sat, 23 Nov 2013 07:13:40 +0000 Subject: Fixed #1713: Enable building the libraries as shared libraries/DLLs for GNU targets git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4656 74dad513-b988-da41-8d7b-12977e46ad98 --- Makefile | 18 +-- aconfigure | 226 ++++++++++++++++-------------- aconfigure.ac | 13 +- build.mak.in | 138 ++++++++++++++---- build/rules.mak | 79 ++++++++--- libpjproject.pc.in | 4 +- pjlib-util/build/Makefile | 56 +++++--- pjlib/build/Makefile | 51 ++++--- pjlib/build/os-auto.mak.in | 2 +- pjlib/build/os-darwinos.mak | 2 +- pjlib/build/os-linux-kernel.mak | 2 +- pjlib/build/os-linux.mak | 2 +- pjlib/build/os-rtems.mak | 2 +- pjlib/build/os-sunos.mak | 2 +- pjlib/build/os-win32.mak | 2 +- pjmedia/build/Makefile | 140 ++++++++++++------ pjmedia/include/pjmedia-videodev/config.h | 4 + pjnath/build/Makefile | 74 +++++----- pjsip-apps/build/Makefile | 30 ++-- pjsip-apps/build/Samples.mak | 34 ++--- pjsip/build/Makefile | 139 +++++++++++++----- third_party/build/g7221/Makefile | 20 ++- third_party/build/gsm/Makefile | 20 ++- third_party/build/ilbc/Makefile | 20 ++- third_party/build/milenage/Makefile | 20 ++- third_party/build/portaudio/Makefile | 20 ++- third_party/build/resample/Makefile | 41 +++--- third_party/build/speex/Makefile | 20 ++- third_party/build/srtp/Makefile | 20 ++- 29 files changed, 780 insertions(+), 421 deletions(-) diff --git a/Makefile b/Makefile index 837477e0..72310ae0 100644 --- a/Makefile +++ b/Makefile @@ -105,20 +105,20 @@ pjsip-test: pjsip/bin/pjsip-test-$(TARGET_NAME) pjsua-test: cd tests/pjsua && python runall.py -prefix = $(ac_prefix) - install: - mkdir -p $(DESTDIR)$(prefix)/lib - cp -f $(APP_LIB_FILES) $(DESTDIR)$(prefix)/lib/ - mkdir -p $(DESTDIR)$(prefix)/include + mkdir -p $(DESTDIR)$(libdir)/ + cp -af $(APP_LIB_FILES) $(DESTDIR)$(libdir)/ + mkdir -p $(DESTDIR)$(includedir)/ for d in pjlib pjlib-util pjnath pjmedia pjsip; do \ - cp -RLf $$d/include/* $(DESTDIR)$(prefix)/include/; \ + cp -RLf $$d/include/* $(DESTDIR)$(includedir)/; \ done - mkdir -p $(DESTDIR)$(prefix)/lib/pkgconfig - sed -e "s!@PREFIX@!$(DESTDIR)$(prefix)!" libpjproject.pc.in | \ + mkdir -p $(DESTDIR)$(libdir)/pkgconfig + sed -e "s!@PREFIX@!$(prefix)!" libpjproject.pc.in | \ + sed -e "s!@INCLUDEDIR@!$(includedir)!" | \ + sed -e "s!@LIBDIR@!$(libdir)!" | \ sed -e "s/@PJ_VERSION@/$(PJ_VERSION)/" | \ sed -e "s!@PJ_LDLIBS@!$(PJ_LDLIBS)!" | \ - sed -e "s!@PJ_INSTALL_CFLAGS@!$(PJ_INSTALL_CFLAGS)!" > $(DESTDIR)/$(prefix)/lib/pkgconfig/libpjproject.pc + sed -e "s!@PJ_INSTALL_CFLAGS@!$(PJ_INSTALL_CFLAGS)!" > $(DESTDIR)/$(libdir)/pkgconfig/libpjproject.pc uninstall: $(RM) $(DESTDIR)$(libdir)/pkgconfig/libpjproject.pc diff --git a/aconfigure b/aconfigure index 3efafe64..a1e87a42 100755 --- a/aconfigure +++ b/aconfigure @@ -1,9 +1,11 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for pjproject 2.x. +# Generated by GNU Autoconf 2.68 for pjproject 2.x. # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -132,31 +134,6 @@ export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh @@ -190,8 +167,7 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" +test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && @@ -236,25 +212,21 @@ IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : @@ -356,14 +328,6 @@ $as_echo X"$as_dir" | } # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take @@ -485,10 +449,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -523,16 +483,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -544,8 +504,28 @@ else as_mkdir_p=false fi -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -672,6 +652,7 @@ ac_external_pa ac_pjmedia_snd ac_external_gsm ac_external_speex +ac_shared_libraries ac_os_objs EGREP GREP @@ -758,6 +739,7 @@ ac_user_opts=' enable_option_checking enable_floating_point enable_epoll +enable_shared with_external_speex with_external_gsm enable_sound @@ -1262,6 +1244,8 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1424,6 +1408,7 @@ Optional Features: --disable-floating-point Disable floating point where possible --enable-epoll Use /dev/epoll ioqueue on Linux (experimental) + --enable-shared Build shared libraries --disable-sound Exclude sound (i.e. use null sound) --disable-oss Disable OSS audio (default: not disabled) --disable-video Disable video feature @@ -1569,9 +1554,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF pjproject configure 2.x -generated by GNU Autoconf 2.69 +generated by GNU Autoconf 2.68 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1685,7 +1670,7 @@ $as_echo "$ac_try_echo"; } >&5 test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - test -x conftest$ac_exeext + $as_test_x conftest$ac_exeext }; then : ac_retval=0 else @@ -1972,7 +1957,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by pjproject $as_me 2.x, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2497,7 +2482,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2537,7 +2522,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2590,7 +2575,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2631,7 +2616,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -2689,7 +2674,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2733,7 +2718,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3179,7 +3164,8 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include -struct stat; +#include +#include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -3292,7 +3278,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3336,7 +3322,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3545,7 +3531,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3585,7 +3571,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3639,7 +3625,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3683,7 +3669,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4454,7 +4440,7 @@ do for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -4520,7 +4506,7 @@ do for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -5646,6 +5632,22 @@ fi +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; if test "$enable_shared" = "yes"; then + ac_shared_libraries=1 + CFLAGS="$CFLAGS -fPIC" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Building shared libraries... yes" >&5 +$as_echo "Building shared libraries... yes" >&6; } + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Building shared libraries... no" >&5 +$as_echo "Building shared libraries... no" >&6; } + +fi + + + case $target in *mingw* | *cygw* | *win32* | *w32* ) ac_os_objs="$ac_os_objs file_access_win32.o file_io_win32.o os_core_win32.o os_error_win32.o os_time_win32.o os_timestamp_win32.o guid_win32.o" @@ -6324,7 +6326,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6370,7 +6372,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6475,7 +6477,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_PKG_CONFIG="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8157,16 +8159,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' + as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi else - as_ln_s='cp -pR' + as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -8226,16 +8228,28 @@ else as_mkdir_p=false fi - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -8257,7 +8271,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by pjproject $as_me 2.x, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -8319,10 +8333,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ pjproject config.status 2.x -configured by $0, generated by GNU Autoconf 2.69, +configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -8410,7 +8424,7 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' diff --git a/aconfigure.ac b/aconfigure.ac index d814e786..8d77ffa3 100644 --- a/aconfigure.ac +++ b/aconfigure.ac @@ -423,6 +423,18 @@ AC_ARG_ENABLE(epoll, AC_MSG_RESULT([select()]) ]) +AC_SUBST(ac_shared_libraries) +AC_ARG_ENABLE(shared, + AC_HELP_STRING([--enable-shared], + [Build shared libraries]), + [if test "$enable_shared" = "yes"; then + [ac_shared_libraries=1] + CFLAGS="$CFLAGS -fPIC" + AC_MSG_RESULT([Building shared libraries... yes]) + fi], + AC_MSG_RESULT([Building shared libraries... no]) + ) + dnl ###################### dnl # OS specific files @@ -824,7 +836,6 @@ AC_ARG_ENABLE(libsamplerate, AC_MSG_RESULT([Skipping libsamplerate detection]) ) -dnl # Include libsamplerate AC_SUBST(ac_resample_dll) AC_ARG_ENABLE(resample_dll, AC_HELP_STRING([--enable-resample-dll], diff --git a/build.mak.in b/build.mak.in index 09463002..477c1ece 100644 --- a/build.mak.in +++ b/build.mak.in @@ -12,22 +12,41 @@ export CROSS_COMPILE := @ac_cross_compile@ export LINUX_POLL := @ac_linux_poll@ export SHLIB_SUFFIX := @ac_shlib_suffix@ -export ac_prefix := @prefix@ +export prefix := @prefix@ +export exec_prefix := @exec_prefix@ +export includedir := @includedir@ +export libdir := @libdir@ LIB_SUFFIX = $(TARGET_NAME).a +ifeq (@ac_shared_libraries@,1) +export PJ_SHARED_LIBRARIES := 1 +endif + # Determine which party libraries to use -export APP_THIRD_PARTY_LIBS := -lmilenage-$(TARGET_NAME) -lsrtp-$(TARGET_NAME) export APP_THIRD_PARTY_EXT := +export APP_THIRD_PARTY_LIBS := export APP_THIRD_PARTY_LIB_FILES := $(PJ_DIR)/third_party/lib/libmilenage-$(LIB_SUFFIX) $(PJ_DIR)/third_party/lib/libsrtp-$(LIB_SUFFIX) +ifeq ($(PJ_SHARED_LIBRARIES),) +APP_THIRD_PARTY_LIBS += -lmilenage-$(TARGET_NAME) -lsrtp-$(TARGET_NAME) +else +APP_THIRD_PARTY_LIBS += -lmilenage -lsrtp +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libmilenage.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libmilenage.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/third_party/lib/libsrtp.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libsrtp.$(SHLIB_SUFFIX) +endif +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample-$(LIB_SUFFIX) +ifeq ($(PJ_SHARED_LIBRARIES),) ifeq (@ac_resample_dll@,1) export PJ_RESAMPLE_DLL := 1 -export APP_THIRD_PARTY_LIBS := -lresample $(APP_THIRD_PARTY_LIBS) -export APP_THIRD_PARTY_LIB_FILES := $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX) $(APP_THIRD_PARTY_LIB_FILES) +APP_THIRD_PARTY_LIBS += -lresample +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX) else -export APP_THIRD_PARTY_LIBS := -lresample-$(TARGET_NAME) $(APP_THIRD_PARTY_LIBS) -export APP_THIRD_PARTY_LIB_FILES := $(PJ_DIR)/third_party/lib/libresample-$(LIB_SUFFIX) $(APP_THIRD_PARTY_LIB_FILES) +APP_THIRD_PARTY_LIBS += -lresample-$(TARGET_NAME) +endif +else +APP_THIRD_PARTY_LIBS += -lresample +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libresample.$(SHLIB_SUFFIX) endif ifneq (@ac_no_gsm_codec@,1) @@ -35,8 +54,13 @@ ifeq (@ac_external_gsm@,1) # External GSM library APP_THIRD_PARTY_EXT += -lgsm else -APP_THIRD_PARTY_LIBS += -lgsmcodec-$(TARGET_NAME) APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libgsmcodec-$(LIB_SUFFIX) +ifeq ($(PJ_SHARED_LIBRARIES),) +APP_THIRD_PARTY_LIBS += -lgsmcodec-$(TARGET_NAME) +else +APP_THIRD_PARTY_LIBS += -lgsmcodec +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libgsmcodec.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libgsmcodec.$(SHLIB_SUFFIX) +endif endif endif @@ -44,19 +68,34 @@ ifneq (@ac_no_speex_codec@,1) ifeq (@ac_external_speex@,1) APP_THIRD_PARTY_EXT += -lspeex -lspeexdsp else -APP_THIRD_PARTY_LIBS += -lspeex-$(TARGET_NAME) APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libspeex-$(LIB_SUFFIX) +ifeq ($(PJ_SHARED_LIBRARIES),) +APP_THIRD_PARTY_LIBS += -lspeex-$(TARGET_NAME) +else +APP_THIRD_PARTY_LIBS += -lspeex +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libspeex.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libspeex.$(SHLIB_SUFFIX) +endif endif endif ifneq (@ac_no_ilbc_codec@,1) -APP_THIRD_PARTY_LIBS += -lilbccodec-$(TARGET_NAME) APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libilbccodec-$(LIB_SUFFIX) +ifeq ($(PJ_SHARED_LIBRARIES),) +APP_THIRD_PARTY_LIBS += -lilbccodec-$(TARGET_NAME) +else +APP_THIRD_PARTY_LIBS += -lilbccodec +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libilbccodec.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libilbccodec.$(SHLIB_SUFFIX) +endif endif ifneq (@ac_no_g7221_codec@,1) -APP_THIRD_PARTY_LIBS += -lg7221codec-$(TARGET_NAME) APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libg7221codec-$(LIB_SUFFIX) +ifeq ($(PJ_SHARED_LIBRARIES),) +APP_THIRD_PARTY_LIBS += -lg7221codec-$(TARGET_NAME) +else +APP_THIRD_PARTY_LIBS += -lg7221codec +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libg7221codec.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libg7221codec.$(SHLIB_SUFFIX) +endif endif ifneq ($(findstring pa,@ac_pjmedia_snd@),) @@ -64,8 +103,13 @@ ifeq (@ac_external_pa@,1) # External PA APP_THIRD_PARTY_EXT += -lportaudio else -APP_THIRD_PARTY_LIBS += -lportaudio-$(TARGET_NAME) APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libportaudio-$(LIB_SUFFIX) +ifeq ($(PJ_SHARED_LIBRARIES),) +APP_THIRD_PARTY_LIBS += -lportaudio-$(TARGET_NAME) +else +APP_THIRD_PARTY_LIBS += -lportaudio +APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libportaudio.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libportaudio.$(SHLIB_SUFFIX) +endif endif endif @@ -122,21 +166,6 @@ export APP_LDFLAGS := -L$(PJDIR)/pjlib/lib\ -L$(PJDIR)/third_party/lib\ $(PJ_VIDEO_LDFLAGS) \ @LDFLAGS@ -export APP_LDLIBS := -lpjsua-$(TARGET_NAME)\ - -lpjsip-ua-$(TARGET_NAME)\ - -lpjsip-simple-$(TARGET_NAME)\ - -lpjsip-$(TARGET_NAME)\ - -lpjmedia-codec-$(TARGET_NAME)\ - -lpjmedia-videodev-$(TARGET_NAME)\ - -lpjmedia-$(TARGET_NAME)\ - -lpjmedia-audiodev-$(TARGET_NAME)\ - -lpjmedia-$(TARGET_NAME)\ - -lpjnath-$(TARGET_NAME)\ - -lpjlib-util-$(TARGET_NAME)\ - $(APP_THIRD_PARTY_LIBS)\ - $(APP_THIRD_PARTY_EXT)\ - -lpj-$(TARGET_NAME)\ - @LIBS@ export APP_LIB_FILES = $(PJ_DIR)/pjsip/lib/libpjsua-$(LIB_SUFFIX) \ $(PJ_DIR)/pjsip/lib/libpjsip-ua-$(LIB_SUFFIX) \ $(PJ_DIR)/pjsip/lib/libpjsip-simple-$(LIB_SUFFIX) \ @@ -150,6 +179,59 @@ export APP_LIB_FILES = $(PJ_DIR)/pjsip/lib/libpjsua-$(LIB_SUFFIX) \ $(APP_THIRD_PARTY_LIB_FILES) \ $(PJ_DIR)/pjlib/lib/libpj-$(LIB_SUFFIX) +ifeq ($(PJ_SHARED_LIBRARIES),) +export PJLIB_LDLIB := -lpj-$(TARGET_NAME) +export PJLIB_UTIL_LDLIB := -lpjlib-util-$(TARGET_NAME) +export PJNATH_LDLIB := -lpjnath-$(TARGET_NAME) +export PJMEDIA_AUDIODEV_LDLIB := -lpjmedia-audiodev-$(TARGET_NAME) +export PJMEDIA_VIDEODEV_LDLIB := -lpjmedia-videodev-$(TARGET_NAME) +export PJMEDIA_LDLIB := -lpjmedia-$(TARGET_NAME) +export PJMEDIA_CODEC_LDLIB := -lpjmedia-codec-$(TARGET_NAME) +export PJSIP_LDLIB := -lpjsip-$(TARGET_NAME) +export PJSIP_SIMPLE_LDLIB := -lpjsip-simple-$(TARGET_NAME) +export PJSIP_UA_LDLIB := -lpjsip-ua-$(TARGET_NAME) +export PJSUA_LIB_LDLIB := -lpjsua-$(TARGET_NAME) +else +export PJLIB_LDLIB := -lpj +export PJLIB_UTIL_LDLIB := -lpjlib-util +export PJNATH_LDLIB := -lpjnath +export PJMEDIA_AUDIODEV_LDLIB := -lpjmedia-audiodev +export PJMEDIA_VIDEODEV_LDLIB := -lpjmedia-videodev +export PJMEDIA_LDLIB := -lpjmedia +export PJMEDIA_CODEC_LDLIB := -lpjmedia-codec +export PJSIP_LDLIB := -lpjsip +export PJSIP_SIMPLE_LDLIB := -lpjsip-simple +export PJSIP_UA_LDLIB := -lpjsip-ua +export PJSUA_LIB_LDLIB := -lpjsua + +APP_LIB_FILES += $(PJ_DIR)/pjsip/lib/libpjsua.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjsip/lib/libpjsua.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjsip/lib/libpjsip-ua.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjsip/lib/libpjsip-ua.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjsip/lib/libpjsip-simple.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjsip/lib/libpjsip-simple.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjsip/lib/libpjsip.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjsip/lib/libpjsip.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjmedia/lib/libpjmedia-codec.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjmedia/lib/libpjmedia-codec.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjmedia/lib/libpjmedia-videodev.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjmedia/lib/libpjmedia-videodev.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjmedia/lib/libpjmedia.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjmedia/lib/libpjmedia.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjmedia/lib/libpjmedia-audiodev.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjmedia/lib/libpjmedia-audiodev.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjnath/lib/libpjnath.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjnath/lib/libpjnath.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjlib-util/lib/libpjlib-util.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjlib-util/lib/libpjlib-util.$(SHLIB_SUFFIX) \ + $(PJ_DIR)/pjlib/lib/libpj.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/pjlib/lib/libpj.$(SHLIB_SUFFIX) +endif + +export APP_LDLIBS := $(PJSUA_LIB_LDLIB) \ + $(PJSIP_UA_LDLIB) \ + $(PJSIP_SIMPLE_LDLIB) \ + $(PJSIP_LDLIB) \ + $(PJMEDIA_CODEC_LDLIB) \ + $(PJMEDIA_LDLIB) \ + $(PJMEDIA_VIDEODEV_LDLIB) \ + $(PJMEDIA_AUDIODEV_LDLIB) \ + $(PJNATH_LDLIB) \ + $(PJLIB_UTIL_LDLIB) \ + $(APP_THIRD_PARTY_LIBS)\ + $(APP_THIRD_PARTY_EXT)\ + $(PJLIB_LDLIB) \ + @LIBS@ + # Here are the variabels to use if application is using the library # from within the source distribution export PJ_CC := $(APP_CC) @@ -163,8 +245,8 @@ export PJ_LIB_FILES := $(APP_LIB_FILES) # And here are the variables to use if application is using the # library from the install location (i.e. --prefix) export PJ_INSTALL_DIR := @prefix@ -export PJ_INSTALL_INC_DIR := $(PJ_INSTALL_DIR)/include -export PJ_INSTALL_LIB_DIR := $(PJ_INSTALL_DIR)/lib +export PJ_INSTALL_INC_DIR := @includedir@ +export PJ_INSTALL_LIB_DIR := @libdir@ export PJ_INSTALL_CFLAGS := -I$(PJ_INSTALL_INC_DIR) -DPJ_AUTOCONF=1 @CFLAGS@ export PJ_INSTALL_CXXFLAGS := $(PJ_INSTALL_CFLAGS) export PJ_INSTALL_LDFLAGS := -L$(PJ_INSTALL_LIB_DIR) $(APP_LDLIBS) diff --git a/build/rules.mak b/build/rules.mak index 49798a37..a939db47 100644 --- a/build/rules.mak +++ b/build/rules.mak @@ -6,17 +6,22 @@ BINDIR = ../bin endif # -# The full path of output lib file (e.g. ../lib/libapp.a). -# -LIB = $($(APP)_LIB) - -# -# The full path of output lib file (e.g. ../lib/libapp.a). +# The name(s) of output lib file(s) (e.g. libapp.a). # +LIB := $($(APP)_LIB) SHLIB = $($(APP)_SHLIB) +SONAME = $($(APP)_SONAME) + +ifeq ($(SHLIB_SUFFIX),so) +SHLIB_OPT := -shared -Wl,-soname,$(SHLIB) +else ifeq ($(SHLIB_SUFFIX),dylib) +SHLIB_OPT := -dynamiclib -undefined dynamic_lookup -flat_namespace +else +SHLIB_OPT := +endif # -# The full path of output executable file (e.g. ../bin/app.exe). +# The name of output executable file (e.g. app.exe). # EXE = $($(APP)_EXE) @@ -76,27 +81,46 @@ print_common: @echo RANLIB=$(RANLIB) print_bin: print_common - @echo EXE=$(EXE) + @echo EXE=$(subst /,$(HOST_PSEP),$(BINDIR)/$(EXE)) @echo BINDIR=$(BINDIR) - + print_lib: print_common - @echo LIB=$(LIB) +ifneq ($(LIB),) + @echo LIB=$(subst /,$(HOST_PSEP),$(LIBDIR)/$(LIB)) +endif +ifneq ($(SHLIB),) + @echo SHLIB=$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SHLIB)) +endif +ifneq ($(SONAME),) + @echo SONAME=$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SONAME)) +endif @echo LIBDIR=$(LIBDIR) -$(LIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) +ifneq ($(LIB),) +$(subst /,$(HOST_PSEP),$(LIBDIR)/$(LIB)): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)); fi - $(AR) $(AR_FLAGS) $(LIB) $(OBJS) - $(RANLIB) $(LIB) + $(AR) $(AR_FLAGS) $@ $(OBJS) + $(RANLIB) $@ +endif -$(SHLIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) +ifneq ($(SHLIB),) +$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SHLIB)): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)); fi - $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$(SHLIB)) \ - $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS) + $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$@) \ + $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS) $(SHLIB_OPT) +endif + +ifneq ($(SONAME),) +$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SONAME)): $(subst /,$(HOST_PSEP),$(LIBDIR)/$(SHLIB)) + ln -sf $(SHLIB) $@ +endif -$(EXE): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) +ifneq ($(EXE),) +$(subst /,$(HOST_PSEP),$(BINDIR)/$(EXE)): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(BINDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(BINDIR)),$(HOST_MKDIR)); fi - $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$(EXE)) \ + $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$(BINDIR)/$(EXE)) \ $(subst /,$(HOST_PSEP),$(OBJS)) $($(APP)_LDFLAGS) +endif $(OBJDIR)/$(app).o: $(OBJDIRS) $(OBJS) $(CROSS_COMPILE)ld -r -o $@ $(OBJS) @@ -147,13 +171,13 @@ $(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.cpp $(subst /,$(HOST_PSEP),$<) $(OBJDIRS): - $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) + $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) $(LIBDIR): - $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)) + $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) $(BINDIR): - $(subst @@,$(subst /,$(HOST_PSEP),$(BINDIR)),$(HOST_MKDIR)) + $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) clean: $(subst @@,$(subst /,$(HOST_PSEP),$(OBJDIR)/*),$(HOST_RMR)) @@ -168,7 +192,18 @@ gcov-report: done realclean: clean - $(subst @@,$(subst /,$(HOST_PSEP),$(LIB)) $(subst /,$(HOST_PSEP),$(EXE)),$(HOST_RM)) +ifneq ($(LIB),) + $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)/$(LIB)),$(HOST_RM)) +endif +ifneq ($(SHLIB),) + $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SHLIB)),$(HOST_RM)) +endif +ifneq ($(SONAME),) + $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)/$(SONAME)),$(HOST_RM)) +endif +ifneq ($(EXE),) + $(subst @@,$(subst /,$(HOST_PSEP),$(BINDIR)/$(EXE)),$(HOST_RM)) +endif $(subst @@,$(DEP_FILE),$(HOST_RM)) ifeq ($(OS_NAME),linux-kernel) rm -f ../lib/$(app).ko diff --git a/libpjproject.pc.in b/libpjproject.pc.in index 7cd4313f..fb7c8b17 100644 --- a/libpjproject.pc.in +++ b/libpjproject.pc.in @@ -2,8 +2,8 @@ prefix=@PREFIX@ exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${prefix}/include +libdir=@LIBDIR@ +includedir=@INCLUDEDIR@ Name: libpjproject Description: Multimedia communication library diff --git a/pjlib-util/build/Makefile b/pjlib-util/build/Makefile index b89cae15..33c82879 100644 --- a/pjlib-util/build/Makefile +++ b/pjlib-util/build/Makefile @@ -6,10 +6,20 @@ include ../../build.mak include ../../version.mak include $(PJDIR)/build/common.mak +export LIBDIR := ../lib +export BINDIR := ../bin + RULES_MAK := $(PJDIR)/build/rules.mak PJLIB_LIB:=$(PJDIR)/pjlib/lib/libpj-$(TARGET_NAME)$(LIBEXT) -export PJLIB_UTIL_LIB:=../lib/libpjlib-util-$(TARGET_NAME)$(LIBEXT) + +export PJLIB_UTIL_LIB := libpjlib-util-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export PJLIB_UTIL_SONAME := libpjlib-util.$(SHLIB_SUFFIX) +export PJLIB_UTIL_SHLIB := $(PJLIB_UTIL_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -18,10 +28,8 @@ export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ $(CFLAGS) $(CC_INC)../include $(CC_INC)../../pjlib/include export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ $(HOST_CXXFLAGS) $(CXXFLAGS) -export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJLIB_UTIL_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJLIB_LIB)) \ - $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ - $(LDFLAGS) +export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ + $(APP_LDFLAGS) $(LDFLAGS) ############################################################################### # Defines for building PJLIB-UTIL library @@ -35,6 +43,7 @@ export PJLIB_UTIL_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ stun_simple_client.o xml.o export PJLIB_UTIL_CFLAGS += $(_CFLAGS) export PJLIB_UTIL_CXXFLAGS += $(_CXXFLAGS) +export PJLIB_UTIL_LDFLAGS += $(PJLIB_LDLIB) $(_LDFLAGS) ############################################################################### # Defines for building test application @@ -44,8 +53,8 @@ export UTIL_TEST_OBJS += xml.o encryption.o stun.o resolver_test.o test.o \ http_client.o export UTIL_TEST_CFLAGS += $(_CFLAGS) export UTIL_TEST_CXXFLAGS += $(_CXXFLAGS) -export UTIL_TEST_LDFLAGS += $(_LDFLAGS) -export UTIL_TEST_EXE:=../bin/pjlib-util-test-$(TARGET_NAME)$(HOST_EXE) +export UTIL_TEST_LDFLAGS += $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS) +export UTIL_TEST_EXE:=pjlib-util-test-$(TARGET_NAME)$(HOST_EXE) export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT @@ -54,7 +63,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := pjlib-util pjlib-util-test +TARGETS := $(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SONAME) $(UTIL_TEST_EXE) all: $(TARGETS) @@ -72,26 +81,28 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend clean realclean distclean +.PHONY: all dep depend clean realclean distclean .PHONY: $(TARGETS) -.PHONY: $(PJLIB_UTIL_LIB) $(UTIL_TEST_EXE) +.PHONY: $(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SONAME) +.PHONY: $(UTIL_TEST_EXE) -pjlib-util: $(PJLIB_UTIL_LIB) -$(PJLIB_UTIL_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $(PJLIB_UTIL_LIB) +pjlib-util: $(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SONAME) +$(PJLIB_UTIL_SONAME): $(PJLIB_UTIL_LIB) +$(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SONAME): $(PJLIB_LIB) $(PJLIB_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjlib-util-test: $(UTIL_TEST_EXE) -$(UTIL_TEST_EXE): $(PJLIB_UTIL_LIB) - $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $(UTIL_TEST_EXE) +$(UTIL_TEST_EXE): $(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SONAME) + $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $(subst /,$(HOST_PSEP),$(BINDIR)/$@) -.PHONY: ../lib/pjlib-util.ko -../lib/pjlib-util.ko: +.PHONY: pjlib-util.ko +pjlib-util.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $@ + $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -.PHONY: ../lib/pjlib-util-test.ko -../lib/pjlib-util-test.ko: - $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $@ +.PHONY: pjlib-util-test.ko +pjlib-util-test.ko: + $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean: $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $@ @@ -106,6 +117,5 @@ realclean: depend: $(MAKE) -f $(RULES_MAK) APP=PJLIB_UTIL app=pjlib-util $@ $(MAKE) -f $(RULES_MAK) APP=UTIL_TEST app=pjlib-util-test $@ - echo '$(UTIL_TEST_EXE): $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjlib-util-test-$(TARGET_NAME).depend; \ - + echo '$(BINDIR)/$(UTIL_TEST_EXE): $(LIBDIR)/$(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjlib-util-test-$(TARGET_NAME).depend; \ diff --git a/pjlib/build/Makefile b/pjlib/build/Makefile index a1c9acf9..56e5ead2 100644 --- a/pjlib/build/Makefile +++ b/pjlib/build/Makefile @@ -2,10 +2,18 @@ include ../../build.mak include ../../version.mak include $(PJDIR)/build/common.mak +export LIBDIR := ../lib +export BINDIR := ../bin + RULES_MAK := $(PJDIR)/build/rules.mak +export PJLIB_LIB := libpj-$(TARGET_NAME)$(LIBEXT) -export PJLIB_LIB := ../lib/libpj-$(TARGET_NAME)$(LIBEXT) +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export PJLIB_SONAME := libpj.$(SHLIB_SUFFIX) +export PJLIB_SHLIB := $(PJLIB_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -14,9 +22,9 @@ export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ $(CFLAGS) $(CC_INC)../include export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ $(HOST_CXXFLAGS) $(CXXFLAGS) -export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJLIB_LIB)) \ - $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ - $(LDFLAGS) +export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ + $(APP_LDFLAGS) $(LDFLAGS) + ############################################################################### # Defines for building PJLIB library @@ -31,6 +39,7 @@ export PJLIB_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ string.o timer.o types.o export PJLIB_CFLAGS += $(_CFLAGS) export PJLIB_CXXFLAGS += $(_CXXFLAGS) +export PJLIB_LDFLAGS += $(_LDFLAGS) ############################################################################### # Defines for building test application @@ -46,10 +55,10 @@ export TEST_OBJS += activesock.o atomic.o echo_clt.o errno.o exception.o \ util.o export TEST_CFLAGS += $(_CFLAGS) export TEST_CXXFLAGS += $(_CXXFLAGS) -export TEST_LDFLAGS += $(_LDFLAGS) -export TEST_EXE := ../bin/pjlib-test-$(TARGET_NAME)$(HOST_EXE) +export TEST_LDFLAGS += $(PJLIB_LDLIB) $(_LDFLAGS) +export TEST_EXE := pjlib-test-$(TARGET_NAME)$(HOST_EXE) + - export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT ############################################################################### # Main entry @@ -76,34 +85,38 @@ print: depend: ../include/pj/config_site.h $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib depend $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test depend - echo '$(TEST_EXE): $(PJLIB_LIB)' >> .pjlib-test-$(TARGET_NAME).depend + echo '$(BINDIR)/$(TEST_EXE): $(LIBDIR)/$(PJLIB_LIB)' >> .pjlib-test-$(TARGET_NAME).depend -.PHONY: dep depend clean realclean distclean +.PHONY: all dep depend clean realclean distclean .PHONY: $(TARGETS) -.PHONY: $(PJLIB_LIB) $(TEST_EXE) +.PHONY: $(PJLIB_LIB) $(PJLIB_SONAME) +.PHONY: $(TEST_EXE) dep: depend pjlib: $(PJLIB_LIB) $(PJLIB_LIB): ../include/pj/config_site.h - $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib $(PJLIB_LIB) + +$(PJLIB_SONAME): $(PJLIB_LIB) +$(PJLIB_LIB) $(PJLIB_SONAME): + $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) ../include/pj/config_site.h: touch ../include/pj/config_site.h pjlib-test: $(TEST_EXE) -$(TEST_EXE): $(PJLIB_LIB) - $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test $(TEST_EXE) +$(TEST_EXE): $(PJLIB_LIB) $(PJLIB_SONAME) + $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test $(subst /,$(HOST_PSEP),$(BINDIR)/$@) -.PHONY: ../lib/pjlib.ko -../lib/pjlib.ko: +.PHONY: pjlib.ko +pjlib.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib $@ + $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -.PHONY: ../lib/pjlib-test.ko -../lib/pjlib-test.ko: - $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test $@ +.PHONY: pjlib-test.ko +pjlib-test.ko: + $(MAKE) -f $(RULES_MAK) APP=TEST app=pjlib-test $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean: $(MAKE) -f $(RULES_MAK) APP=PJLIB app=pjlib clean diff --git a/pjlib/build/os-auto.mak.in b/pjlib/build/os-auto.mak.in index a4a2b8aa..3f35dce6 100644 --- a/pjlib/build/os-auto.mak.in +++ b/pjlib/build/os-auto.mak.in @@ -29,7 +29,7 @@ export TEST_LDFLAGS += @LDFLAGS@ @LIBS@ # TARGETS are make targets in the Makefile, to be executed for this given # operating system. # -export TARGETS = pjlib pjlib-test +export TARGETS = $(PJLIB_LIB) $(PJLIB_SONAME) $(TEST_EXE) diff --git a/pjlib/build/os-darwinos.mak b/pjlib/build/os-darwinos.mak index ee83decb..a0d99e71 100644 --- a/pjlib/build/os-darwinos.mak +++ b/pjlib/build/os-darwinos.mak @@ -33,5 +33,5 @@ export TEST_LDFLAGS += -lm # TARGETS are make targets in the Makefile, to be executed for this given # operating system. # -export TARGETS = pjlib pjlib-test +export TARGETS = $(PJLIB_LIB) $(PJLIB_SONAME) $(TEST_EXE) diff --git a/pjlib/build/os-linux-kernel.mak b/pjlib/build/os-linux-kernel.mak index 934c8898..28cfbc79 100644 --- a/pjlib/build/os-linux-kernel.mak +++ b/pjlib/build/os-linux-kernel.mak @@ -42,6 +42,6 @@ export TEST_LDFLAGS += -lgcc # TARGETS are make targets in the Makefile, to be executed for this given # operating system. # -export TARGETS := ../lib/pjlib.ko ../lib/pjlib-test.ko +export TARGETS := pjlib.ko pjlib-test.ko diff --git a/pjlib/build/os-linux.mak b/pjlib/build/os-linux.mak index 11c6fa73..78123efd 100644 --- a/pjlib/build/os-linux.mak +++ b/pjlib/build/os-linux.mak @@ -35,5 +35,5 @@ export TEST_LDFLAGS += -lm # TARGETS are make targets in the Makefile, to be executed for this given # operating system. # -export TARGETS = pjlib pjlib-test +export TARGETS = $(PJLIB_LIB) $(PJLIB_SONAME) $(TEST_EXE) diff --git a/pjlib/build/os-rtems.mak b/pjlib/build/os-rtems.mak index 1501dd9b..30a81f9b 100644 --- a/pjlib/build/os-rtems.mak +++ b/pjlib/build/os-rtems.mak @@ -40,7 +40,7 @@ export TEST_LDFLAGS += # TARGETS are make targets in the Makefile, to be executed for this given # operating system. # -export TARGETS = pjlib pjlib-test +export TARGETS = $(PJLIB_LIB) $(TEST_EXE) diff --git a/pjlib/build/os-sunos.mak b/pjlib/build/os-sunos.mak index f0043ad6..7aa658da 100644 --- a/pjlib/build/os-sunos.mak +++ b/pjlib/build/os-sunos.mak @@ -32,5 +32,5 @@ export TEST_LDFLAGS += -lm # TARGETS are make targets in the Makefile, to be executed for this given # operating system. # -export TARGETS = pjlib pjlib-test +export TARGETS = $(PJLIB_LIB) $(PJLIB_SONAME) $(TEST_EXE) diff --git a/pjlib/build/os-win32.mak b/pjlib/build/os-win32.mak index 0290fea9..5be3c8e5 100644 --- a/pjlib/build/os-win32.mak +++ b/pjlib/build/os-win32.mak @@ -29,5 +29,5 @@ export TEST_OBJS += main.o # TARGETS are make targets in the Makefile, to be executed for this given # operating system. # -export TARGETS = pjlib pjlib-test +export TARGETS = $(PJLIB_LIB) $(TEST_EXE) diff --git a/pjmedia/build/Makefile b/pjmedia/build/Makefile index dec360ec..e21e9c03 100644 --- a/pjmedia/build/Makefile +++ b/pjmedia/build/Makefile @@ -9,17 +9,34 @@ SRTP_INC=$(CC_INC)$(THIRD_PARTY)/build/srtp \ include $(PJDIR)/build/common.mak +export LIBDIR := ../lib +export BINDIR := ../bin + RULES_MAK := $(PJDIR)/build/rules.mak PJLIB_LIB:=$(PJDIR)/pjlib/lib/libpj-$(TARGET_NAME)$(LIBEXT) PJLIB_UTIL_LIB:=$(PJDIR)/pjlib-util/lib/libpjlib-util-$(TARGET_NAME)$(LIBEXT) PJNATH_LIB:=$(PJDIR)/pjnath/lib/libpjnath-$(TARGET_NAME)$(LIBEXT) -export PJMEDIA_LIB:=../lib/libpjmedia-$(TARGET_NAME)$(LIBEXT) -export PJMEDIA_CODEC_LIB:=../lib/libpjmedia-codec-$(TARGET_NAME)$(LIBEXT) -export PJSDP_LIB:=../lib/libpjsdp-$(TARGET_NAME)$(LIBEXT) -export PJMEDIA_AUDIODEV_LIB:=../lib/libpjmedia-audiodev-$(TARGET_NAME)$(LIBEXT) -export PJMEDIA_VIDEODEV_LIB:=../lib/libpjmedia-videodev-$(TARGET_NAME)$(LIBEXT) +export PJMEDIA_LIB:=libpjmedia-$(TARGET_NAME)$(LIBEXT) +export PJMEDIA_CODEC_LIB:=libpjmedia-codec-$(TARGET_NAME)$(LIBEXT) +export PJSDP_LIB:=libpjsdp-$(TARGET_NAME)$(LIBEXT) +export PJMEDIA_AUDIODEV_LIB:=libpjmedia-audiodev-$(TARGET_NAME)$(LIBEXT) +export PJMEDIA_VIDEODEV_LIB:=libpjmedia-videodev-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export PJMEDIA_SONAME:=libpjmedia.$(SHLIB_SUFFIX) +export PJMEDIA_SHLIB:=$(PJMEDIA_SONAME).$(PJ_VERSION_MAJOR) +export PJMEDIA_CODEC_SONAME:=libpjmedia-codec.$(SHLIB_SUFFIX) +export PJMEDIA_CODEC_SHLIB:=$(PJMEDIA_CODEC_SONAME).$(PJ_VERSION_MAJOR) +export PJSDP_SONAME:=libpjsdp.$(SHLIB_SUFFIX) +export PJSDP_SHLIB:=$(PJSDP_SONAME).$(PJ_VERSION_MAJOR) +export PJMEDIA_AUDIODEV_SONAME:=libpjmedia-audiodev.$(SHLIB_SUFFIX) +export PJMEDIA_AUDIODEV_SHLIB:=$(PJMEDIA_AUDIODEV_SONAME).$(PJ_VERSION_MAJOR) +export PJMEDIA_VIDEODEV_SONAME:=libpjmedia-videodev.$(SHLIB_SUFFIX) +export PJMEDIA_VIDEODEV_SHLIB:=$(PJMEDIA_VIDEODEV_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### @@ -35,18 +52,11 @@ export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ $(SRTP_INC) export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ $(HOST_CXXFLAGS) $(CXXFLAGS) -export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJMEDIA_VIDEODEV_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJMEDIA_CODEC_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJMEDIA_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJMEDIA_AUDIODEV_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJLIB_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJLIB_UTIL_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJNATH_LIB)) \ - -L$(PJDIR)/third_party/lib \ - $(APP_THIRD_PARTY_LIBS) \ + +export _LDFLAGS := $(APP_THIRD_PARTY_LIBS) \ $(APP_THIRD_PARTY_EXT) \ $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ - $(LDFLAGS) + $(APP_LDFLAGS) $(LDFLAGS) ############################################################################### # Defines for building PJMEDIA library @@ -74,6 +84,12 @@ export PJMEDIA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ export PJMEDIA_CFLAGS += $(_CFLAGS) export PJMEDIA_CXXFLAGS += $(_CXXFLAGS) +export PJMEDIA_LDFLAGS += $(PJMEDIA_VIDEODEV_LDLIB) \ + $(PJMEDIA_AUDIODEV_LDLIB) \ + $(PJLIB_LDLIB) \ + $(PJLIB_UTIL_LDLIB) \ + $(PJNATH_LDLIB) \ + $(_LDFLAGS) ############################################################################### @@ -86,6 +102,8 @@ export PJMEDIA_AUDIODEV_OBJS += audiodev.o audiotest.o errno.o \ android_jni_dev.o opensl_dev.o export PJMEDIA_AUDIODEV_CFLAGS += $(_CFLAGS) export PJMEDIA_AUDIODEV_CXXFLAGS += $(_CXXFLAGS) +export PJMEDIA_AUDIODEV_LDFLAGS += $(PJLIB_LDLIB) \ + $(_LDFLAGS) ############################################################################### @@ -96,6 +114,8 @@ export PJMEDIA_VIDEODEV_OBJS += errno.o videodev.o avi_dev.o ffmpeg_dev.o \ colorbar_dev.o v4l2_dev.o export PJMEDIA_VIDEODEV_CFLAGS += $(_CFLAGS) export PJMEDIA_VIDEODEV_CXXFLAGS += $(_CXXFLAGS) +export PJMEDIA_VIDEODEV_LDFLAGS += $(PJLIB_LDLIB) \ + $(_LDFLAGS) ############################################################################### @@ -109,6 +129,10 @@ export PJSDP_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ errno.o sdp.o sdp_cmp.o sdp_neg.o export PJSDP_CFLAGS += $(_CFLAGS) export PJSDP_CXXFLAGS += $(_CXXFLAGS) +export PJSDP_LDFLAGS += $(PJMEDIA_LDLIB) \ + $(PJLIB_LDLIB) \ + $(PJLIB_UTIL_LDLIB) \ + $(_LDFLAGS) ############################################################################### @@ -124,7 +148,9 @@ export PJMEDIA_CODEC_CFLAGS += $(_CFLAGS) $(GSM_CFLAGS) $(SPEEX_CFLAGS) \ $(ILBC_CFLAGS) $(IPP_CFLAGS) $(G7221_CFLAGS) export PJMEDIA_CODEC_CXXFLAGS += $(_CXXFLAGS) $(GSM_CFLAGS) $(SPEEX_CFLAGS) \ $(ILBC_CFLAGS) $(IPP_CFLAGS) $(G7221_CFLAGS) - +export PJMEDIA_CODEC_LDFLAGS += $(PJMEDIA_LDLIB) \ + $(PJLIB_LDLIB) \ + $(_LDFLAGS) ############################################################################### # Defines for building test application @@ -136,8 +162,15 @@ export PJMEDIA_TEST_OBJS += codec_vectors.o jbuf_test.o main.o mips_test.o \ export PJMEDIA_TEST_OBJS += sdp_neg_test.o export PJMEDIA_TEST_CFLAGS += $(_CFLAGS) export PJMEDIA_TEST_CXXFLAGS += $(_CXXFLAGS) -export PJMEDIA_TEST_LDFLAGS += $(_LDFLAGS) -export PJMEDIA_TEST_EXE:=../bin/pjmedia-test-$(TARGET_NAME)$(HOST_EXE) +export PJMEDIA_TEST_LDFLAGS += $(PJMEDIA_CODEC_LDLIB) \ + $(PJMEDIA_VIDEODEV_LDLIB) \ + $(PJMEDIA_LDLIB) \ + $(PJMEDIA_AUDIODEV_LDLIB) \ + $(PJLIB_LDLIB) \ + $(PJLIB_UTIL_LDLIB) \ + $(PJNATH_LDLIB) \ + $(_LDFLAGS) +export PJMEDIA_TEST_EXE:=pjmedia-test-$(TARGET_NAME)$(HOST_EXE) export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT @@ -146,7 +179,12 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := pjmedia pjmedia-videodev pjmedia-audiodev pjmedia-codec pjsdp pjmedia-test +TARGETS := $(PJMEDIA_LIB) $(PJMEDIA_SONAME) \ + $(PJMEDIA_CODEC_LIB) $(PJMEDIA_CODEC_SONAME)\ + $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SONAME) \ + $(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SONAME) \ + $(PJSDP_LIB) $(PJSDP_SONAME) \ + $(PJMEDIA_TEST_EXE) all: $(TARGETS) @@ -164,47 +202,61 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend clean realclean distclean +.PHONY: all dep depend clean realclean distclean .PHONY: $(TARGETS) -.PHONY: $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB) $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_AUDIODEV_LIB) $(PJSDP_LIB) $(PJMEDIA_TEST_EXE) +.PHONY: $(PJMEDIA_LIB) $(PJMEDIA_SONAME) +.PHONY: $(PJMEDIA_CODEC_LIB) $(PJMEDIA_CODEC_SONAME) +.PHONY: $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SONAME) +.PHONY: $(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SONAME) +.PHONY: $(PJSDP_LIB) $(PJSDP_SONAME) +.PHONY: $(PJMEDIA_TEST_EXE) pjmedia: $(PJMEDIA_LIB) -$(PJMEDIA_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $(PJMEDIA_LIB) +$(PJMEDIA_SONAME): $(PJMEDIA_LIB) +$(PJMEDIA_LIB) $(PJMEDIA_SONAME): $(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SONAME) $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjmedia-codec: $(PJMEDIA_CODEC_LIB) -$(PJMEDIA_CODEC_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $(PJMEDIA_CODEC_LIB) +$(PJMEDIA_CODEC_SONAME): $(PJMEDIA_CODEC_LIB) +$(PJMEDIA_CODEC_LIB) $(PJMEDIA_CODEC_SONAME): $(PJMEDIA_LIB) $(PJMEDIA_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjmedia-videodev: $(PJMEDIA_VIDEODEV_LIB) -$(PJMEDIA_VIDEODEV_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_VIDEODEV app=pjmedia-videodev $(PJMEDIA_VIDEODEV_LIB) +$(PJMEDIA_VIDEODEV_SONAME): $(PJMEDIA_VIDEODEV_LIB) +$(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SONAME): + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_VIDEODEV app=pjmedia-videodev $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjmedia-audiodev: $(PJMEDIA_AUDIODEV_LIB) -$(PJMEDIA_AUDIODEV_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_AUDIODEV app=pjmedia-audiodev $(PJMEDIA_AUDIODEV_LIB) +$(PJMEDIA_AUDIODEV_SONAME): $(PJMEDIA_AUDIODEV_LIB) +$(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SONAME): + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_AUDIODEV app=pjmedia-audiodev $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjsdp: $(PJSDP_LIB) -$(PJSDP_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJSDP app=pjsdp $(PJSDP_LIB) +$(PJSDP_SONAME): $(PJSDP_LIB) +$(PJSDP_LIB) $(PJSDP_SONAME): $(PJMEDIA_LIB) $(PJMEDIA_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJSDP app=pjsdp $(LIBDIR)/$@ pjmedia-test: $(PJMEDIA_TEST_EXE) -$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB) - $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $(PJMEDIA_TEST_EXE) - -.PHONY: ../lib/pjmedia.ko -../lib/pjmedia.ko: +$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB) $(PJMEDIA_SONAME) +$(PJMEDIA_TEST_EXE): $(PJMEDIA_AUDIODEV_LIB) $(PJMEDIA_AUDIODEV_SONAME) +$(PJMEDIA_TEST_EXE): $(PJMEDIA_VIDEODEV_LIB) $(PJMEDIA_VIDEODEV_SONAME) +$(PJMEDIA_TEST_EXE): $(PJMEDIA_CODEC_LIB) $(PJMEDIA_CODEC_SONAME) +$(PJMEDIA_TEST_EXE): + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $(BINDIR)/$@ + +.PHONY: pjmedia.ko +pjmedia.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $@ + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $(LIBDIR)/$@ -.PHONY: ../lib/pjmedia-codec.ko -../lib/pjmedia-codec.ko: +.PHONY: pjmedia-codec.ko +pjmedia-codec.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $@ + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $(LIBDIR)/$@ -.PHONY: ../lib/pjmedia-test.ko -../lib/pjmedia-test.ko: - $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $@ +.PHONY: pjmedia-test.ko +pjmedia-test.ko: + $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $(LIBDIR)/$@ clean: $(MAKE) -f $(RULES_MAK) APP=PJMEDIA app=pjmedia $@ @@ -236,6 +288,6 @@ depend: $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_CODEC app=pjmedia-codec $@ $(MAKE) -f $(RULES_MAK) APP=PJMEDIA_TEST app=pjmedia-test $@ $(MAKE) -f $(RULES_MAK) APP=PJSDP app=pjsdp $@ - echo '$(PJMEDIA_TEST_EXE): $(PJMEDIA_LIB) $(PJMEDIA_CODEC_LIB) $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjmedia-test-$(TARGET_NAME).depend + echo '$(BINDIR)/$(PJMEDIA_TEST_EXE): $(LIBDIR)/$(PJMEDIA_LIB) $(LIBDIR)/$(PJMEDIA_CODEC_LIB) $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjmedia-test-$(TARGET_NAME).depend diff --git a/pjmedia/include/pjmedia-videodev/config.h b/pjmedia/include/pjmedia-videodev/config.h index 3159c95b..a0fed9c2 100644 --- a/pjmedia/include/pjmedia-videodev/config.h +++ b/pjmedia/include/pjmedia-videodev/config.h @@ -52,6 +52,8 @@ PJ_BEGIN_DECL #endif +#if defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) + /** * This setting controls whether SDL support should be included. * @@ -144,6 +146,8 @@ PJ_BEGIN_DECL # undef PJMEDIA_SDL_LIB #endif +#endif /* defined(PJMEDIA_HAS_VIDEO) && (PJMEDIA_HAS_VIDEO != 0) */ + /** * @} */ diff --git a/pjnath/build/Makefile b/pjnath/build/Makefile index 24ddfd5d..d00ccb66 100644 --- a/pjnath/build/Makefile +++ b/pjnath/build/Makefile @@ -6,11 +6,21 @@ include ../../build.mak include ../../version.mak include $(PJDIR)/build/common.mak +export LIBDIR := ../lib +export BINDIR := ../bin + RULES_MAK := $(PJDIR)/build/rules.mak PJLIB_LIB:=../../pjlib/lib/libpj-$(TARGET_NAME)$(LIBEXT) PJLIB_UTIL_LIB:=../../pjlib-util/lib/libpjlib-util-$(TARGET_NAME)$(LIBEXT) -export PJNATH_LIB:=../lib/libpjnath-$(TARGET_NAME)$(LIBEXT) + +export PJNATH_LIB:=libpjnath-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export PJNATH_SONAME := libpjnath.$(SHLIB_SUFFIX) +export PJNATH_SHLIB := $(PJNATH_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -20,11 +30,8 @@ export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ $(CC_INC)../../pjlib-util/include export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ $(HOST_CXXFLAGS) $(CXXFLAGS) -export _LDFLAGS := $(subst /,$(HOST_PSEP),$(PJNATH_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJLIB_UTIL_LIB)) \ - $(subst /,$(HOST_PSEP),$(PJLIB_LIB)) \ - $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ - $(LDFLAGS) +export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ + $(APP_LDFLAGS) $(LDFLAGS) ############################################################################### # Defines for building PJNATH library @@ -36,6 +43,7 @@ export PJNATH_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ stun_transaction.o turn_session.o turn_sock.o export PJNATH_CFLAGS += $(_CFLAGS) export PJNATH_CXXFLAGS += $(_CXXFLAGS) +export PJNATH_LDFLAGS += $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS) ############################################################################### # Defines for building test application @@ -45,8 +53,8 @@ export PJNATH_TEST_OBJS += ice_test.o stun.o sess_auth.o server.o concur_test.o stun_sock_test.o turn_sock_test.o test.o export PJNATH_TEST_CFLAGS += $(_CFLAGS) export PJNATH_TEST_CXXFLAGS += $(_CXXFLAGS) -export PJNATH_TEST_LDFLAGS += $(_LDFLAGS) -export PJNATH_TEST_EXE:=../bin/pjnath-test-$(TARGET_NAME)$(HOST_EXE) +export PJNATH_TEST_LDFLAGS += $(PJNATH_LDLIB) $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS) +export PJNATH_TEST_EXE:=pjnath-test-$(TARGET_NAME)$(HOST_EXE) ############################################################################### @@ -56,8 +64,8 @@ export PJTURN_CLIENT_SRCDIR = ../src/pjturn-client export PJTURN_CLIENT_OBJS += client_main.o export PJTURN_CLIENT_CFLAGS += $(_CFLAGS) export PJTURN_CLIENT_CXXFLAGS += $(_CXXFLAGS) -export PJTURN_CLIENT_LDFLAGS += $(_LDFLAGS) -export PJTURN_CLIENT_EXE:=../bin/pjturn-client-$(TARGET_NAME)$(HOST_EXE) +export PJTURN_CLIENT_LDFLAGS += $(PJNATH_LDLIB) $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS) +export PJTURN_CLIENT_EXE:=pjturn-client-$(TARGET_NAME)$(HOST_EXE) ############################################################################### # Defines for building TURN server application @@ -67,8 +75,8 @@ export PJTURN_SRV_OBJS += allocation.o auth.o listener_udp.o \ listener_tcp.o server.o main.o export PJTURN_SRV_CFLAGS += $(_CFLAGS) export PJTURN_SRV_CXXFLAGS += $(_CXXFLAGS) -export PJTURN_SRV_LDFLAGS += $(_LDFLAGS) -export PJTURN_SRV_EXE:=../bin/pjturn-srv-$(TARGET_NAME)$(HOST_EXE) +export PJTURN_SRV_LDFLAGS += $(PJNATH_LDLIB) $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS) +export PJTURN_SRV_EXE:=pjturn-srv-$(TARGET_NAME)$(HOST_EXE) @@ -78,7 +86,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := pjnath pjnath-test pjturn-client pjturn-srv +TARGETS := $(PJNATH_LIB) $(PJNATH_SONAME) $(PJNATH_TEST_EXE) $(PJTURN_CLIENT_EXE) $(PJTURN_SRV_EXE) all: $(TARGETS) @@ -96,34 +104,36 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend clean realclean distclean +.PHONY: all dep depend clean realclean distclean .PHONY: $(TARGETS) -.PHONY: $(PJNATH_LIB) $(PJNATH_TEST_EXE) $(PJTURN_CLIENT_EXE) $(PJTURN_SRV_EXE) +.PHONY: $(PJNATH_LIB) $(PJNATH_SONAME) +.PHONY: $(PJNATH_TEST_EXE) $(PJTURN_CLIENT_EXE) $(PJTURN_SRV_EXE) pjnath: $(PJNATH_LIB) -$(PJNATH_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJNATH app=pjnath $(PJNATH_LIB) +$(PJNATH_SONAME): $(PJNATH_LIB) +$(PJNATH_LIB) $(PJNATH_SONAME): $(PJLIB_LIB) $(PJLIB_SONAME) $(PJLIB_UTIL_LIB) $(PJLIB_UTIL_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJNATH app=pjnath $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjnath-test: $(PJNATH_TEST_EXE) -$(PJNATH_TEST_EXE): $(PJNATH_LIB) - $(MAKE) -f $(RULES_MAK) APP=PJNATH_TEST app=pjnath-test $(PJNATH_TEST_EXE) +$(PJNATH_TEST_EXE): $(PJNATH_LIB) $(PJNATH_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJNATH_TEST app=pjnath-test $(subst /,$(HOST_PSEP),$(BINDIR)/$@) pjturn-client: $(PJTURN_CLIENT_EXE) -$(PJTURN_CLIENT_EXE): $(PJNATH_LIB) - $(MAKE) -f $(RULES_MAK) APP=PJTURN_CLIENT app=pjturn-client $(PJTURN_CLIENT_EXE) +$(PJTURN_CLIENT_EXE): $(PJNATH_LIB) $(PJNATH_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJTURN_CLIENT app=pjturn-client $(subst /,$(HOST_PSEP),$(BINDIR)/$@) pjturn-srv: $(PJTURN_SRV_EXE) -$(PJTURN_SRV_EXE): $(PJNATH_LIB) - $(MAKE) -f $(RULES_MAK) APP=PJTURN_SRV app=pjturn-srv $(PJTURN_SRV_EXE) +$(PJTURN_SRV_EXE): $(PJNATH_LIB) $(PJNATH_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJTURN_SRV app=pjturn-srv $(subst /,$(HOST_PSEP),$(BINDIR)/$@) -.PHONY: ../lib/pjnath.ko -../lib/pjnath.ko: +.PHONY: pjnath.ko +pjnath.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJNATH app=pjnath $@ + $(MAKE) -f $(RULES_MAK) APP=PJNATH app=pjnath $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -.PHONY: ../lib/pjnath-test.ko -../lib/pjnath-test.ko: - $(MAKE) -f $(RULES_MAK) APP=PJNATH_TEST app=pjnath-test $@ +.PHONY: pjnath-test.ko +pjnath-test.ko: + $(MAKE) -f $(RULES_MAK) APP=PJNATH_TEST app=pjnath-test $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean: $(MAKE) -f $(RULES_MAK) APP=PJNATH app=pjnath $@ @@ -146,8 +156,8 @@ depend: $(MAKE) -f $(RULES_MAK) APP=PJNATH_TEST app=pjnath-test $@ $(MAKE) -f $(RULES_MAK) APP=PJTURN_CLIENT app=pjturn-client $@ $(MAKE) -f $(RULES_MAK) APP=PJTURN_SRV app=pjturn-srv $@ - echo '$(PJNATH_TEST_EXE): $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjnath-test-$(TARGET_NAME).depend - echo '$(PJTURN_CLIENT_EXE): $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjturn-client-$(TARGET_NAME).depend - echo '$(PJTURN_SRV_EXE): $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjturn-srv-$(TARGET_NAME).depend + echo '$(BINDIR)/$(PJNATH_TEST_EXE): $(LIBDIR)/$(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjnath-test-$(TARGET_NAME).depend + echo '$(BINDIR)/$(PJTURN_CLIENT_EXE): $(LIBDIR)/$(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjturn-client-$(TARGET_NAME).depend + echo '$(BINDIR)/$(PJTURN_SRV_EXE): $(LIBDIR)/$(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjturn-srv-$(TARGET_NAME).depend diff --git a/pjsip-apps/build/Makefile b/pjsip-apps/build/Makefile index 1c043cb7..71fb151e 100644 --- a/pjsip-apps/build/Makefile +++ b/pjsip-apps/build/Makefile @@ -1,6 +1,8 @@ include ../../build.mak include $(PJDIR)/build/common.mak +export LIBDIR := ../lib +export BINDIR := ../bin RULES_MAK := $(PJDIR)/build/rules.mak @@ -27,6 +29,8 @@ export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ $(CC_INC)../../pjmedia/include export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ $(HOST_CXXFLAGS) $(CXXFLAGS) +export _LDFLAGS := $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ + $(APP_LDFLAGS) $(APP_LDLIBS) $(LDFLAGS) ############################################################################### # Defines for building PJSUA @@ -37,8 +41,8 @@ export PJSUA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ pjsua_app_config.o pjsua_app_legacy.o export PJSUA_CFLAGS += $(_CFLAGS) export PJSUA_CXXFLAGS += $(_CXXFLAGS) -export PJSUA_LDFLAGS += $(APP_LDFLAGS) $(APP_LDLIBS) $(LDFLAGS) -export PJSUA_EXE:=../bin/pjsua-$(TARGET_NAME)$(HOST_EXE) +export PJSUA_LDFLAGS += $(_LDFLAGS) +export PJSUA_EXE:=pjsua-$(TARGET_NAME)$(HOST_EXE) ############################################################################### @@ -49,8 +53,8 @@ export PJSYSTEST_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ systest.o main_console.o export PJSYSTEST_CFLAGS += $(_CFLAGS) export PJSYSTEST_CXXFLAGS += $(_CXXFLAGS) -export PJSYSTEST_LDFLAGS += $(APP_LDFLAGS) $(APP_LDLIBS) $(LDFLAGS) -export PJSYSTEST_EXE:=../bin/pjsystest-$(TARGET_NAME)$(HOST_EXE) +export PJSYSTEST_LDFLAGS += $(_LDFLAGS) +export PJSYSTEST_EXE:=pjsystest-$(TARGET_NAME)$(HOST_EXE) export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT @@ -58,7 +62,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # Main entry # # -TARGETS := pjsua pjsystest samples +TARGETS := $(BINDIR)/$(PJSUA_EXE) $(BINDIR)/$(PJSYSTEST_EXE) samples all: $(TARGETS) @@ -67,32 +71,32 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend clean realclean distclean +.PHONY: all dep depend clean realclean distclean .PHONY: $(TARGETS) .PHONY: $(PJSUA_EXE) $(PJSYSTEST_EXE) pjsua: $(PJSUA_EXE) $(PJSUA_EXE): - $(MAKE) -f $(RULES_MAK) APP=PJSUA app=pjsua $(PJSUA_EXE) + $(MAKE) -f $(RULES_MAK) APP=PJSUA app=pjsua $(subst /,$(HOST_PSEP),$(BINDIR)/$@) pjsystest: $(PJSYSTEST_EXE) $(PJSYSTEST_EXE): - $(MAKE) -f $(RULES_MAK) APP=PJSYSTEST app=pjsystest $(PJSYSTEST_EXE) + $(MAKE) -f $(RULES_MAK) APP=PJSYSTEST app=pjsystest $(subst /,$(HOST_PSEP),$(BINDIR)/$@) samples: $(MAKE) -f Samples.mak -.PHONY: ../lib/pjsua.ko -../lib/pjsua.ko: - $(MAKE) -f $(RULES_MAK) APP=PJSUA app=pjsua $@ +.PHONY: pjsua.ko +pjsua.ko: + $(MAKE) -f $(RULES_MAK) APP=PJSUA app=pjsua $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean depend realclean: $(MAKE) -f $(RULES_MAK) APP=PJSUA app=pjsua $@ $(MAKE) -f $(RULES_MAK) APP=PJSYSTEST app=pjsystest $@ $(MAKE) -f Samples.mak $@ @if test "$@" = "depend"; then \ - echo '$(PJSUA_EXE): $(APP_LIB_FILES)' >> .pjsua-$(TARGET_NAME).depend; \ - echo '$(PJSYSTEST_EXE): $(APP_LIB_FILES)' >> .pjsystest-$(TARGET_NAME).depend; \ + echo '$(BINDIR)/$(PJSUA_EXE): $(APP_LIB_FILES)' >> .pjsua-$(TARGET_NAME).depend; \ + echo '$(BINDIR)/$(PJSYSTEST_EXE): $(APP_LIB_FILES)' >> .pjsystest-$(TARGET_NAME).depend; \ fi diff --git a/pjsip-apps/build/Samples.mak b/pjsip-apps/build/Samples.mak index d5dd1fc7..57daa8bf 100644 --- a/pjsip-apps/build/Samples.mak +++ b/pjsip-apps/build/Samples.mak @@ -1,6 +1,8 @@ - +include ../../build.mak +include ../../version.mak include ../../build/common.mak +RULES_MAK := $(PJDIR)/build/rules.mak ############################################################################### # Gather all flags. @@ -16,7 +18,6 @@ BINDIR := ../bin/samples/$(TARGET_NAME) SAMPLES := auddemo \ aviplay \ aectest \ - aviplay \ clidemo \ confsample \ encdec \ @@ -45,35 +46,22 @@ SAMPLES := auddemo \ tonegen \ vid_streamutil -EXES := $(foreach file, $(SAMPLES), $(BINDIR)/$(file)$(HOST_EXE)) - -all: $(BINDIR) $(OBJDIR) $(EXES) - -$(BINDIR)/%$(HOST_EXE): $(OBJDIR)/%$(OBJEXT) $(PJ_LIB_FILES) - $(LD) $(LDOUT)$(subst /,$(HOST_PSEP),$@) \ - $(subst /,$(HOST_PSEP),$<) \ - $(_LDFLAGS) +EXES := $(foreach file, $(SAMPLES), $(file)$(HOST_EXE)) -$(OBJDIR)/%$(OBJEXT): $(SRCDIR)/%.c - $(CC) $(_CFLAGS) \ - $(CC_OUT)$(subst /,$(HOST_PSEP),$@) \ - $(subst /,$(HOST_PSEP),$<) +.PHONY: $(EXES) -$(OBJDIR): - $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) +all: $(EXES) -$(BINDIR): - $(subst @@,$(subst /,$(HOST_PSEP),$@),$(HOST_MKDIR)) +$(EXES): + $(MAKE) --no-print-directory -f $(RULES_MAK) SAMPLE_SRCDIR=$(SRCDIR) SAMPLE_OBJS=$@.o SAMPLE_CFLAGS="$(_CFLAGS)" SAMPLE_LDFLAGS="$(_LDFLAGS)" SAMPLE_EXE=$@ APP=SAMPLE app=sample $(subst /,$(HOST_PSEP),$(BINDIR)/$@) depend: clean: - $(subst @@,$(subst /,$(HOST_PSEP),$(OBJDIR)/*),$(HOST_RMR)) - $(subst @@,$(subst /,$(HOST_PSEP),$(OBJDIR)),$(HOST_RMDIR)) + $(MAKE) -f $(RULES_MAK) APP=SAMPLE app=sample $@ $(subst @@,$(EXES),$(HOST_RM)) - rm -rf $(BINDIR) + $(subst @@,$(BINDIR),$(HOST_RMDIR)) distclean realclean: clean -# $(subst @@,$(subst /,$(HOST_PSEP),$(EXES)) $(subst /,$(HOST_PSEP),$(EXES)),$(HOST_RM)) -# $(subst @@,$(DEP_FILE),$(HOST_RM)) + $(MAKE) -f $(RULES_MAK) APP=SAMPLE app=sample $@ diff --git a/pjsip/build/Makefile b/pjsip/build/Makefile index 3914cf83..a10fdc7d 100644 --- a/pjsip/build/Makefile +++ b/pjsip/build/Makefile @@ -7,18 +7,32 @@ include ../../build.mak include ../../version.mak include $(PJDIR)/build/common.mak +export LIBDIR := ../lib +export BINDIR := ../bin + RULES_MAK := $(PJDIR)/build/rules.mak PJLIB_LIB:=../../pjlib/lib/libpj-$(TARGET_NAME)$(LIBEXT) PJLIB_UTIL_LIB:=../../pjlib-util/lib/libpjlib-util-$(TARGET_NAME)$(LIBEXT) +PJNATH_LIB:=../../pjnath/lib/libpjnath-$(TARGET_NAME)$(LIBEXT) PJMEDIA_LIB:=../../pjmedia/lib/libpjmedia-$(TARGET_NAME)$(LIBEXT) -PJMEDIA_CODEC_LIB:=../../pjmedia/lib/libpjmedia-codec-$(TARGET_NAME)$(LIBEXT) - -export PJSIP_LIB:=../lib/libpjsip-$(TARGET_NAME)$(LIBEXT) -export PJSIP_UA_LIB:=../lib/libpjsip-ua-$(TARGET_NAME)$(LIBEXT) -export PJSIP_SIMPLE_LIB:=../lib/libpjsip-simple-$(TARGET_NAME)$(LIBEXT) -export PJSUA_LIB_LIB=../lib/libpjsua-$(TARGET_NAME)$(LIBEXT) +export PJSIP_LIB:=libpjsip-$(TARGET_NAME)$(LIBEXT) +export PJSIP_UA_LIB:=libpjsip-ua-$(TARGET_NAME)$(LIBEXT) +export PJSIP_SIMPLE_LIB:=libpjsip-simple-$(TARGET_NAME)$(LIBEXT) +export PJSUA_LIB_LIB:=libpjsua-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export PJSIP_SONAME := libpjsip.$(SHLIB_SUFFIX) +export PJSIP_SHLIB := $(PJSIP_SONAME).$(PJ_VERSION_MAJOR) +export PJSIP_UA_SONAME := libpjsip-ua.$(SHLIB_SUFFIX) +export PJSIP_UA_SHLIB := $(PJSIP_UA_SONAME).$(PJ_VERSION_MAJOR) +export PJSIP_SIMPLE_SONAME := libpjsip-simple.$(SHLIB_SUFFIX) +export PJSIP_SIMPLE_SHLIB := $(PJSIP_SIMPLE_SONAME).$(PJ_VERSION_MAJOR) +export PJSUA_LIB_SONAME := libpjsua.$(SHLIB_SUFFIX) +export PJSUA_LIB_SHLIB := $(PJSUA_LIB_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -31,6 +45,10 @@ export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ $(CC_INC)../../pjmedia/include export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ $(HOST_CXXFLAGS) $(CXXFLAGS) +export _LDFLAGS := $(APP_THIRD_PARTY_LIBS) \ + $(APP_THIRD_PARTY_EXT) \ + $(CC_LDFLAGS) $(OS_LDFLAGS) $(M_LDFLAGS) $(HOST_LDFLAGS) \ + $(APP_LDFLAGS) $(LDFLAGS) ############################################################################### # Defines for building PJSIP core library @@ -49,6 +67,9 @@ export PJSIP_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ sip_dialog.o sip_ua_layer.o export PJSIP_CFLAGS += $(_CFLAGS) export PJSIP_CXXFLAGS += $(_CXXFLAGS) +export PJSIP_LDFLAGS += $(PJLIB_UTIL_LDLIB) \ + $(PJLIB_LDLIB) \ + $(_LDFLAGS) ############################################################################### # Defines for building PJSIP UA library @@ -59,6 +80,12 @@ export PJSIP_UA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ sip_100rel.o sip_timer.o export PJSIP_UA_CFLAGS += $(_CFLAGS) export PJSIP_UA_CXXFLAGS += $(_CXXFLAGS) +export PJSIP_UA_LDFLAGS += $(PJSIP_SIMPLE_LDLIB) \ + $(PJSIP_LDLIB) \ + $(PJMEDIA_LDLIB) \ + $(PJLIB_UTIL_LDLIB) \ + $(PJLIB_LDLIB) \ + $(_LDFLAGS) ############################################################################### @@ -71,6 +98,10 @@ export PJSIP_SIMPLE_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ rpid.o xpidf.o export PJSIP_SIMPLE_CFLAGS += $(_CFLAGS) export PJSIP_SIMPLE_CXXFLAGS += $(_CXXFLAGS) +export PJSIP_SIMPLE_LDFLAGS += $(PJSIP_LDLIB) \ + $(PJLIB_UTIL_LDLIB) \ + $(PJLIB_LDLIB) \ + $(_LDFLAGS) ############################################################################### @@ -83,6 +114,17 @@ export PJSUA_LIB_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ pjsua_dump.o pjsua_aud.o pjsua_vid.o export PJSUA_LIB_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS) export PJSUA_LIB_CXXFLAGS += $(_CXXFLAGS) $(PJ_VIDEO_CFLAGS) +export PJSUA_LIB_LDFLAGS += $(PJSIP_UA_LDLIB) \ + $(PJSIP_SIMPLE_LDLIB) \ + $(PJSIP_LDLIB) \ + $(PJMEDIA_AUDIODEV_LDLIB) \ + $(PJMEDIA_VIDEODEV_LDLIB) \ + $(PJMEDIA_CODEC_LDLIB) \ + $(PJMEDIA_LDLIB) \ + $(PJNATH_LDLIB) \ + $(PJLIB_UTIL_LDLIB) \ + $(PJLIB_LDLIB) \ + $(_LDFLAGS) export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT @@ -100,8 +142,19 @@ export TEST_OBJS += dlg_core_test.o dns_test.o msg_err_test.o \ inv_offer_answer_test.o export TEST_CFLAGS += $(_CFLAGS) export TEST_CXXFLAGS += $(_CXXFLAGS) -export TEST_LDFLAGS += $(PJ_LDFLAGS) $(PJ_LDLIBS) $(LDFLAGS) -export TEST_EXE := ../bin/pjsip-test-$(TARGET_NAME)$(HOST_EXE) +export TEST_LDFLAGS += $(PJSIP_LDLIB) \ + $(PJSIP_UA_LDLIB) \ + $(PJSIP_SIMPLE_LDLIB) \ + $(PJSUA_LDLIB) \ + $(PJMEDIA_CODEC_LDLIB) \ + $(PJMEDIA_VIDEODEV_LDLIB) \ + $(PJMEDIA_LDLIB) \ + $(PJMEDIA_AUDIODEV_LDLIB) \ + $(PJLIB_LDLIB) \ + $(PJLIB_UTIL_LDLIB) \ + $(PJNATH_LDLIB) \ + $(_LDFLAGS) +export TEST_EXE := pjsip-test-$(TARGET_NAME)$(HOST_EXE) export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT @@ -109,7 +162,11 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # Main entry # # -TARGETS := pjsip pjsip-ua pjsip-simple pjsua-lib pjsip-test +TARGETS := $(PJSIP_LIB) $(PJSIP_SONAME) \ + $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME) \ + $(PJSIP_UA_LIB) $(PJSIP_UA_SONAME) \ + $(PJSUA_LIB_LIB) $(PJSUA_LIB_SONAME) \ + $(TEST_EXE) all: $(TARGETS) @@ -127,49 +184,61 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend clean realclean distclean +.PHONY: all dep depend clean realclean distclean .PHONY: $(TARGETS) -.PHONY: $(PJSIP_LIB) $(PJSIP_UA_LIB) $(PJSIP_SIMPLE_LIB) $(PJSUA_LIB_LIB) $(TEST_EXE) +.PHONY: $(PJSIP_LIB) $(PJSIP_SONAME) +.PHONY: $(PJSIP_UA_LIB) $(PJSIP_UA_SONAME) +.PHONY: $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME) +.PHONY: $(PJSUA_LIB_LIB) $(PJSUA_LIB_SONAME) +.PHONY: $(TEST_EXE) pjsip: $(PJSIP_LIB) -$(PJSIP_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $(PJSIP_LIB) +$(PJSIP_SONAME): $(PJSIP_LIB) +$(PJSIP_LIB) $(PJSIP_SONAME): + $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjsip-ua: $(PJSIP_UA_LIB) -$(PJSIP_UA_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $(PJSIP_UA_LIB) +$(PJSIP_UA_SONAME): $(PJSIP_UA_LIB) +$(PJSIP_UA_LIB) $(PJSIP_UA_SONAME): $(PJSIP_LIB) $(PJSIP_SONAME) $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjsip-simple: $(PJSIP_SIMPLE_LIB) -$(PJSIP_SIMPLE_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $(PJSIP_SIMPLE_LIB) +$(PJSIP_SIMPLE_SONAME): $(PJSIP_SIMPLE_LIB) +$(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME): $(PJSIP_LIB) $(PJSIP_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjsua-lib: $(PJSUA_LIB_LIB) -$(PJSUA_LIB_LIB): - $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $(PJSUA_LIB_LIB) +$(PJSUA_LIB_SONAME): $(PJSUA_LIB_LIB) +$(PJSUA_LIB_LIB) $(PJSUA_LIB_SONAME): $(PJSIP_LIB) $(PJSIP_SONAME) $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME) $(PJSIP_UA_LIB) $(PJSIP_UA_SONAME) + $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) pjsip-test: $(TEST_EXE) -$(TEST_EXE): $(PJSUA_LIB_LIB) $(PJSIP_SIMPLE_LIB) $(PJSIP_UA_LIB) $(PJSIP_LIB) - $(MAKE) -f $(RULES_MAK) APP=TEST app=pjsip-test $(TEST_EXE) - -.PHONY: ../lib/pjsip.ko -../lib/pjsip.ko: +$(TEST_EXE): $(PJSIP_LIB) $(PJSIP_SONAME) +$(TEST_EXE): $(PJSIP_UA_LIB) $(PJSIP_UA_SONAME) +$(TEST_EXE): $(PJSIP_SIMPLE_LIB) $(PJSIP_SIMPLE_SONAME) +$(TEST_EXE): $(PJSUA_LIB_LIB) $(PJSUA_LIB_SONAME) +$(TEST_EXE): + $(MAKE) -f $(RULES_MAK) APP=TEST app=pjsip-test $(subst /,$(HOST_PSEP),$(BINDIR)/$@) + +.PHONY: pjsip.ko +pjsip.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $@ + $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -.PHONY: ../lib/pjsip-ua.ko -../lib/pjsip-ua.ko: +.PHONY: pjsip-ua.ko +pjsip-ua.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $@ + $(MAKE) -f $(RULES_MAK) APP=PJSIP_UA app=pjsip-ua $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -.PHONY: ../lib/pjsip-simple.ko -../lib/pjsip-simple.ko: +.PHONY: pjsip-simple.ko +pjsip-simple.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $@ + $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -.PHONY: ../lib/pjsua-lib.ko -../lib/pjsua-lib.ko: +.PHONY: pjsua-lib.ko +pjsua-lib.ko: echo Making $@ - $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $@ + $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean: $(MAKE) -f $(RULES_MAK) APP=PJSIP app=pjsip $@ @@ -184,7 +253,7 @@ depend: $(MAKE) -f $(RULES_MAK) APP=PJSIP_SIMPLE app=pjsip-simple $@ $(MAKE) -f $(RULES_MAK) APP=PJSUA_LIB app=pjsua-lib $@ $(MAKE) -f $(RULES_MAK) APP=TEST app=pjsip-test $@ - echo '$(TEST_EXE): $(PJMEDIA_LIB) $(PJSUA_LIB_LIB) $(PJSIP_SIMPLE_LIB) $(PJSIP_UA_LIB) $(PJSIP_LIB) $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjsip-test-$(TARGET_NAME).depend + echo '$(BINDIR)/$(TEST_EXE): $(PJMEDIA_LIB) $(LIBDIR)/$(PJSUA_LIB_LIB) $(LIBDIR)/$(PJSIP_SIMPLE_LIB) $(LIBDIR)/$(PJSIP_UA_LIB) $(LIBDIR)/$(PJSIP_LIB) $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB)' >> .pjsip-test-$(TARGET_NAME).depend realclean: $(subst @@,$(subst /,$(HOST_PSEP),.pjsip-$(TARGET_NAME).depend),$(HOST_RMR)) diff --git a/third_party/build/g7221/Makefile b/third_party/build/g7221/Makefile index 60590307..d0e75964 100644 --- a/third_party/build/g7221/Makefile +++ b/third_party/build/g7221/Makefile @@ -5,7 +5,13 @@ export LIBDIR := ../../lib RULES_MAK := $(PJDIR)/build/rules.mak -export G7221_CODEC_LIB := ../../lib/libg7221codec-$(TARGET_NAME)$(LIBEXT) +export G7221_CODEC_LIB := libg7221codec-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export G7221_CODEC_SONAME := libg7221codec.$(SHLIB_SUFFIX) +export G7221_CODEC_SHLIB := $(G7221_CODEC_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -34,7 +40,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := libg7221codec +TARGETS := $(G7221_CODEC_LIB) $(G7221_CODEC_SONAME) all: $(TARGETS) @@ -44,10 +50,14 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend libg7221codec clean realclean distclean +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONY: $(G7221_CODEC_LIB) $(G7221_CODEC_SONAME) -libg7221codec: - $(MAKE) -f $(RULES_MAK) APP=G7221_CODEC app=libg7221codec $(G7221_CODEC_LIB) +libg7221codec: $(G7221_CODEC_LIB) +$(G7221_CODEC_SONAME): $(G7221_CODEC_LIB) +$(G7221_CODEC_LIB) $(G7221_CODEC_SONAME): + $(MAKE) -f $(RULES_MAK) APP=G7221_CODEC app=libg7221codec $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean print_lib: $(MAKE) -f $(RULES_MAK) APP=G7221_CODEC app=libg7221codec $@ diff --git a/third_party/build/gsm/Makefile b/third_party/build/gsm/Makefile index a265076e..0b949982 100644 --- a/third_party/build/gsm/Makefile +++ b/third_party/build/gsm/Makefile @@ -5,7 +5,13 @@ export LIBDIR := ../../lib RULES_MAK := $(PJDIR)/build/rules.mak -export GSM_CODEC_LIB := ../../lib/libgsmcodec-$(TARGET_NAME)$(LIBEXT) +export GSM_CODEC_LIB := libgsmcodec-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export GSM_CODEC_SONAME := libgsmcodec.$(SHLIB_SUFFIX) +export GSM_CODEC_SHLIB := $(GSM_CODEC_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -35,7 +41,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := libgsmcodec +TARGETS := $(GSM_CODEC_LIB) $(GSM_CODEC_SONAME) all: $(TARGETS) @@ -45,10 +51,14 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend libgsmcodec clean realclean distclean +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONE: $(GSM_CODEC_LIB) $(GSM_CODEC_SONAME) -libgsmcodec: - $(MAKE) -f $(RULES_MAK) APP=GSM_CODEC app=libgsmcodec $(GSM_CODEC_LIB) +libgsmcodec: $(GSM_CODEC_LIB) +$(GSM_CODEC_SONAME): $(GSM_CODEC_LIB) +$(GSM_CODEC_LIB) $(GSM_CODEC_SONAME): + $(MAKE) -f $(RULES_MAK) APP=GSM_CODEC app=libgsmcodec $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean print_lib: $(MAKE) -f $(RULES_MAK) APP=GSM_CODEC app=libgsmcodec $@ diff --git a/third_party/build/ilbc/Makefile b/third_party/build/ilbc/Makefile index 50b4ab7e..39ac6b2b 100644 --- a/third_party/build/ilbc/Makefile +++ b/third_party/build/ilbc/Makefile @@ -5,7 +5,13 @@ export LIBDIR := ../../lib RULES_MAK := $(PJDIR)/build/rules.mak -export ILBC_LIB := ../../lib/libilbccodec-$(TARGET_NAME)$(LIBEXT) +export ILBC_LIB := libilbccodec-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export ILBC_SONAME := libilbccodec.$(SHLIB_SUFFIX) +export ILBC_SHLIB := $(ILBC_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -36,7 +42,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := libilbccodec +TARGETS := $(ILBC_LIB) $(ILBC_SONAME) all: $(TARGETS) @@ -46,10 +52,14 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend libilbccodec clean realclean distclean +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONY: $(ILBC_LIB) $(ILBC_SONAME) -libilbccodec: - $(MAKE) -f $(RULES_MAK) APP=ILBC app=libilbccodec $(ILBC_LIB) +libilbccodec: $(ILBC_LIB) +$(ILBC_SONAME): $(ILBC_LIB) +$(ILBC_LIB) $(ILBC_SONAME): + $(MAKE) -f $(RULES_MAK) APP=ILBC app=libilbccodec $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean print_lib: $(MAKE) -f $(RULES_MAK) APP=ILBC app=libilbccodec $@ diff --git a/third_party/build/milenage/Makefile b/third_party/build/milenage/Makefile index 094ddeaa..18a48b91 100644 --- a/third_party/build/milenage/Makefile +++ b/third_party/build/milenage/Makefile @@ -5,7 +5,13 @@ export LIBDIR := ../../lib RULES_MAK := $(PJDIR)/build/rules.mak -export MILENAGE_LIB := ../../lib/libmilenage-$(TARGET_NAME)$(LIBEXT) +export MILENAGE_LIB := libmilenage-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export MILENAGE_SONAME := libmilenage.$(SHLIB_SUFFIX) +export MILENAGE_SHLIB := $(MILENAGE_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -29,7 +35,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := libmilenage +TARGETS := $(MILENAGE_LIB) $(MILENAGE_SONAME) all: $(TARGETS) @@ -39,10 +45,14 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend libmilenage clean realclean distclean +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONY: $(MILENAGE_LIB) $(MILENAGE_SONAME) -libmilenage: - $(MAKE) -f $(RULES_MAK) APP=MILENAGE app=libmilenage $(MILENAGE_LIB) +libmilenage: $(MILENAGE_LIB) +$(MILENAGE_SONAME): $(MILENAGE_LIB) +$(MILENAGE_LIB) $(MILENAGE_SONAME): + $(MAKE) -f $(RULES_MAK) APP=MILENAGE app=libmilenage $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean print_lib: $(MAKE) -f $(RULES_MAK) APP=MILENAGE app=libmilenage $@ diff --git a/third_party/build/portaudio/Makefile b/third_party/build/portaudio/Makefile index ad81571a..a5c2449e 100644 --- a/third_party/build/portaudio/Makefile +++ b/third_party/build/portaudio/Makefile @@ -6,7 +6,13 @@ export LIBDIR := ../../lib RULES_MAK := $(PJDIR)/build/rules.mak -export PORTAUDIO_LIB:=../../lib/libportaudio-$(TARGET_NAME)$(LIBEXT) +export PORTAUDIO_LIB:=libportaudio-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export PORTAUDIO_SONAME := libportaudio.$(SHLIB_SUFFIX) +export PORTAUDIO_SHLIB := $(PORTAUDIO_SONAME).$(PJ_VERSION_MAJOR) +endif PORTAUDIO_OBJS += pa_allocation.o \ pa_converters.o \ @@ -43,17 +49,21 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := libportaudio +TARGETS := $(PORTAUDIO_LIB) $(PORTAUDIO_SONAME) all: $(TARGETS) dep: depend distclean: realclean -.PHONY: dep depend libportaudio clean realclean distclean +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONY: $(PORTAUDIO_LIB) $(PORTAUDIO_SONAME) -libportaudio: - $(MAKE) -f $(RULES_MAK) APP=PORTAUDIO app=libportaudio $(PORTAUDIO_LIB) +libportaudio: $(PORTAUDIO_LIB) +$(PORTAUDIO_SONAME): $(PORTAUDIO_LIB) +$(PORTAUDIO_LIB) $(PORTAUDIO_SONAME): + $(MAKE) -f $(RULES_MAK) APP=PORTAUDIO app=libportaudio $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean: $(MAKE) -f $(RULES_MAK) APP=PORTAUDIO app=libportaudio $@ diff --git a/third_party/build/resample/Makefile b/third_party/build/resample/Makefile index 2deb8732..72ba28a1 100644 --- a/third_party/build/resample/Makefile +++ b/third_party/build/resample/Makefile @@ -21,9 +21,13 @@ export RESAMPLE_SRCDIR = ../../resample/src export RESAMPLE_OBJS = resamplesubs.o export RESAMPLE_CFLAGS = $(_CFLAGS) -SHLIB_NAME := libresample.$(SHLIB_SUFFIX) -export RESAMPLE_SHLIB := ../../lib/$(SHLIB_NAME).$(PJ_VERSION_MAJOR) -export RESAMPLE_LIB := ../../lib/libresample-$(TARGET_NAME)$(LIBEXT) +export RESAMPLE_LIB := libresample-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export RESAMPLE_SONAME := libresample.$(SHLIB_SUFFIX) +export RESAMPLE_SHLIB := $(RESAMPLE_SONAME).$(PJ_VERSION_MAJOR) +endif export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT ############################################################################### @@ -31,17 +35,12 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -ifeq ($(PJ_RESAMPLE_DLL),1) -TARGETS := ../../lib/$(SHLIB_NAME) -ifeq ($(SHLIB_SUFFIX),so) -SHLIB_OPT := -Wl,-soname,$(SHLIB_NAME).$(PJ_VERSION_MAJOR) +TARGETS := $(RESAMPLE_LIB) $(RESAMPLE_SONAME) +ifneq ($(PJ_SHARED_LIBRARIES),) else -SHLIB_OPT := -endif +ifneq ($(PJ_RESAMPLE_DLL),) export RESAMPLE_CFLAGS := -fPIC $(RESAMPLE_CFLAGS) -export RESAMPLE_LDFLAGS := -shared $(SHLIB_OPT) $(RESAMPLE_LDFLAGS) -else -TARGETS := libresample +endif endif all: $(TARGETS) @@ -52,23 +51,21 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend libresample clean realclean distclean +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONY: $(RESAMPLE_LIB) $(RESAMPLE_SONAME) -libresample: - $(MAKE) -f $(RULES_MAK) APP=RESAMPLE app=libresample $(RESAMPLE_LIB) +dep: depend -../../lib/$(SHLIB_NAME): $(RESAMPLE_SHLIB) - ln -s $(SHLIB_NAME).$(PJ_VERSION_MAJOR) $@ +libresample: $(RESAMPLE_LIB) +$(RESAMPLE_SONAME): $(RESAMPLE_LIB) +$(RESAMPLE_LIB) $(RESAMPLE_SONAME): + $(MAKE) -f $(RULES_MAK) APP=RESAMPLE app=libresample $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) -$(RESAMPLE_SHLIB): - $(MAKE) -f $(RULES_MAK) APP=RESAMPLE app=libresample $(RESAMPLE_SHLIB) - clean print_lib: $(MAKE) -f $(RULES_MAK) APP=RESAMPLE app=libresample $@ realclean: - $(subst @@,$(subst /,$(HOST_PSEP),../../lib/$(SHLIB_NAME)),$(HOST_RMR)) - $(subst @@,$(subst /,$(HOST_PSEP),$(RESAMPLE_SHLIB)),$(HOST_RMR)) $(MAKE) -f $(RULES_MAK) APP=RESAMPLE app=libresample $@ depend: diff --git a/third_party/build/speex/Makefile b/third_party/build/speex/Makefile index d31166ea..7e5e6fd6 100644 --- a/third_party/build/speex/Makefile +++ b/third_party/build/speex/Makefile @@ -5,7 +5,13 @@ export LIBDIR := ../../lib RULES_MAK := $(PJDIR)/build/rules.mak -export SPEEX_LIB := ../../lib/libspeex-$(TARGET_NAME)$(LIBEXT) +export SPEEX_LIB := libspeex-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export SPEEX_SONAME := libspeex.$(SHLIB_SUFFIX) +export SPEEX_SHLIB := $(SPEEX_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -44,7 +50,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := libspeex +TARGETS := $(SPEEX_LIB) $(SPEEX_SONAME) all: $(TARGETS) @@ -54,10 +60,14 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend libspeex clean realclean distclean +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONY: $(SPEEX_LIB) $(SPEEX_SONAME) -libspeex: - $(MAKE) -f $(RULES_MAK) APP=SPEEX app=libspeex $(SPEEX_LIB) +libspeex: $(SPEEX_LIB) +$(SPEEX_SONAME): $(SPEEX_LIB) +$(SPEEX_LIB) $(SPEEX_SONAME): + $(MAKE) -f $(RULES_MAK) APP=SPEEX app=libspeex $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean print_lib: $(MAKE) -f $(RULES_MAK) APP=SPEEX app=libspeex $@ diff --git a/third_party/build/srtp/Makefile b/third_party/build/srtp/Makefile index 17cb4217..9538f0bb 100644 --- a/third_party/build/srtp/Makefile +++ b/third_party/build/srtp/Makefile @@ -5,7 +5,13 @@ export LIBDIR := ../../lib RULES_MAK := $(PJDIR)/build/rules.mak -export SRTP_LIB := ../../lib/libsrtp-$(TARGET_NAME)$(LIBEXT) +export SRTP_LIB := libsrtp-$(TARGET_NAME)$(LIBEXT) + +ifeq ($(PJ_SHARED_LIBRARIES),) +else +export SRTP_SONAME := libsrtp.$(SHLIB_SUFFIX) +export SRTP_SHLIB := $(SRTP_SONAME).$(PJ_VERSION_MAJOR) +endif ############################################################################### # Gather all flags. @@ -57,7 +63,7 @@ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT # # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := libsrtp +TARGETS := $(SRTP_LIB) $(SRTP_SONAME) all: $(TARGETS) @@ -67,10 +73,14 @@ doc: dep: depend distclean: realclean -.PHONY: dep depend libsrtp clean realclean distclean +.PHONY: all dep depend clean realclean distclean +.PHONY: $(TARGETS) +.PHONY: $(SRTP_LIB) $(SRTP_SONAME) -libsrtp: - $(MAKE) -f $(RULES_MAK) APP=SRTP app=libsrtp $(SRTP_LIB) +libsrtp: $(SRTP_LIB) +$(SRTP_SONAME): $(SRTP_LIB) +$(SRTP_LIB) $(SRTP_SONAME): + $(MAKE) -f $(RULES_MAK) APP=SRTP app=libsrtp $(subst /,$(HOST_PSEP),$(LIBDIR)/$@) clean print_lib: $(MAKE) -f $(RULES_MAK) APP=SRTP app=libsrtp $@ -- cgit v1.2.3