summaryrefslogtreecommitdiff
path: root/build.symbian
diff options
context:
space:
mode:
authorDavid M. Lee <dlee@digium.com>2013-01-07 14:24:28 -0600
committerDavid M. Lee <dlee@digium.com>2013-01-07 14:24:28 -0600
commitf3ab456a17af1c89a6e3be4d20c5944853df1cb0 (patch)
treed00e1a332cd038a6d906a1ea0ac91e1a4458e617 /build.symbian
Import pjproject-2.0.1
Diffstat (limited to 'build.symbian')
-rw-r--r--build.symbian/00.bat7
-rw-r--r--build.symbian/01.bat7
-rw-r--r--build.symbian/bld.inf37
-rw-r--r--build.symbian/libg7221codec.mmp56
-rw-r--r--build.symbian/libgsmcodec.mmp72
-rw-r--r--build.symbian/libpassthroughcodec.mmp27
-rw-r--r--build.symbian/libresample.mmp26
-rw-r--r--build.symbian/libspeexcodec.mmp74
-rw-r--r--build.symbian/libsrtp.mmp60
-rw-r--r--build.symbian/makedef.sh80
-rw-r--r--build.symbian/null_audio.mmp40
-rw-r--r--build.symbian/null_audioU.def12
-rw-r--r--build.symbian/pjlib.mmp122
-rw-r--r--build.symbian/pjlibU.def323
-rw-r--r--build.symbian/pjlib_test.mmp83
-rw-r--r--build.symbian/pjlib_test.pkg19
-rw-r--r--build.symbian/pjlib_util.mmp83
-rw-r--r--build.symbian/pjlib_utilU.def92
-rw-r--r--build.symbian/pjmedia.mmp136
-rw-r--r--build.symbian/pjmediaU.def193
-rw-r--r--build.symbian/pjmedia_audiodev.mmp33
-rw-r--r--build.symbian/pjnath.mmp65
-rw-r--r--build.symbian/pjnathU.def88
-rw-r--r--build.symbian/pjproject.cww386
-rw-r--r--build.symbian/pjsdp.mmp46
-rw-r--r--build.symbian/pjsdpU.def45
-rw-r--r--build.symbian/pjsip.mmp69
-rw-r--r--build.symbian/pjsipU.def280
-rw-r--r--build.symbian/pjsip_simple.mmp54
-rw-r--r--build.symbian/pjsip_simpleU.def96
-rw-r--r--build.symbian/pjsip_ua.mmp52
-rw-r--r--build.symbian/pjsip_uaU.def58
-rw-r--r--build.symbian/pjstun_client.mmp41
-rw-r--r--build.symbian/pjsua_lib.mmp55
-rw-r--r--build.symbian/pjsua_libU.def122
-rw-r--r--build.symbian/symbian_audio.mmp47
-rw-r--r--build.symbian/symbian_audioU.def12
-rw-r--r--build.symbian/symbian_ua.mmp84
-rw-r--r--build.symbian/symbian_ua.pkg19
-rw-r--r--build.symbian/symbian_ua_udeb.pkg21
-rw-r--r--build.symbian/symbian_ua_urel.pkg21
-rw-r--r--build.symbian/symsndtest.mmp51
-rw-r--r--build.symbian/symsndtest.pkg19
43 files changed, 3313 insertions, 0 deletions
diff --git a/build.symbian/00.bat b/build.symbian/00.bat
new file mode 100644
index 0000000..4d41259
--- /dev/null
+++ b/build.symbian/00.bat
@@ -0,0 +1,7 @@
+@rem set MWSym2Libraries=1
+@rem set EPOCROOT=\Symbian\9.1\S60_3rd\
+@rem set EPOCROOT=\Symbian\9.1\S60_3rd_MR_2\
+@rem set EPOCROOT=\Symbian\UIQ3SDK\
+@rem set EPOCROOT=\symbian\UIQ3.1\
+@rem set EPOCROOT=\symbian\9.2\S60_3rd_FP1\
+bldmake bldfiles
diff --git a/build.symbian/01.bat b/build.symbian/01.bat
new file mode 100644
index 0000000..e670ae6
--- /dev/null
+++ b/build.symbian/01.bat
@@ -0,0 +1,7 @@
+@rem call abld build -v vs6 udeb
+@rem call abld build -v gcce urel
+@rem call abld build winscw udeb
+call abld build %1 %2 %3 %4
+
+
+
diff --git a/build.symbian/bld.inf b/build.symbian/bld.inf
new file mode 100644
index 0000000..7e26998
--- /dev/null
+++ b/build.symbian/bld.inf
@@ -0,0 +1,37 @@
+prj_platforms
+winscw
+armv5
+gcce
+
+prj_mmpfiles
+
+/* Libraries */
+pjlib.mmp
+pjlib_util.mmp
+pjnath.mmp
+pjsdp.mmp
+pjmedia.mmp
+pjsip.mmp
+pjsip_simple.mmp
+pjsip_ua.mmp
+pjsua_lib.mmp
+libsrtp.mmp
+
+/* Codecs */
+libgsmcodec.mmp
+libspeexcodec.mmp
+libg7221codec.mmp
+libpassthroughcodec.mmp
+
+/* Resample */
+libresample.mmp
+
+/* Audio device. */
+pjmedia_audiodev.mmp
+
+/* Applications */
+//symsndtest.mmp
+symbian_ua.mmp
+..\pjsip-apps\src\symbian_ua_gui\group\symbian_ua_gui.mmp
+gnumakefile ..\pjsip-apps\src\symbian_ua_gui\group\Icons_aif_scalable_dc.mk
+pjlib_test.mmp
diff --git a/build.symbian/libg7221codec.mmp b/build.symbian/libg7221codec.mmp
new file mode 100644
index 0000000..814fcae
--- /dev/null
+++ b/build.symbian/libg7221codec.mmp
@@ -0,0 +1,56 @@
+TARGET libg7221codec.lib
+TARGETTYPE lib
+
+//OPTION CW -lang c++
+OPTION GCCE -O2 -fno-unit-at-a-time
+OPTION ARMCC --gnu
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+//
+// GSM codec third party source
+//
+
+SOURCEPATH ..\third_party\g7221\common
+
+SOURCE basic_op.c
+SOURCE common.c
+SOURCE huff_tab.c
+SOURCE tables.c
+
+SOURCEPATH ..\third_party\g7221\decode
+
+SOURCE coef2sam.c
+SOURCE dct4_s.c
+SOURCE decoder.c
+
+SOURCEPATH ..\third_party\g7221\encode
+
+SOURCE dct4_a.c
+SOURCE encoder.c
+SOURCE sam2coef.c
+
+
+//
+// GSM codec wrapper for pjmedia-codec
+//
+
+SOURCEPATH ..\pjmedia\src\pjmedia-codec
+SOURCE g7221.c
+
+//
+// Header files
+//
+
+
+SYSTEMINCLUDE ..\pjmedia\include
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\third_party
+SYSTEMINCLUDE ..\third_party\g7221\common
+SYSTEMINCLUDE ..\third_party\g7221\decode
+SYSTEMINCLUDE ..\third_party\g7221\encode
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
diff --git a/build.symbian/libgsmcodec.mmp b/build.symbian/libgsmcodec.mmp
new file mode 100644
index 0000000..875555b
--- /dev/null
+++ b/build.symbian/libgsmcodec.mmp
@@ -0,0 +1,72 @@
+#if defined(PJ_BUILD_DLL)
+
+TARGET libgsmcodec.dll
+TARGETTYPE dll
+UID 0x0 0xA000000F
+
+CAPABILITY None
+LIBRARY pjlib.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\libgsmcodec.def
+
+#else
+
+TARGET libgsmcodec.lib
+TARGETTYPE lib
+
+#endif
+
+//OPTION CW -lang c++
+OPTION ARMCC --gnu
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+//
+// GSM codec third party source
+//
+
+SOURCEPATH ..\third_party\gsm\src
+
+SOURCE add.c
+SOURCE code.c
+SOURCE debug.c
+SOURCE decode.c
+SOURCE gsm_create.c
+SOURCE gsm_decode.c
+SOURCE gsm_destroy.c
+SOURCE gsm_encode.c
+SOURCE gsm_explode.c
+SOURCE gsm_implode.c
+SOURCE gsm_option.c
+SOURCE gsm_print.c
+SOURCE long_term.c
+SOURCE lpc.c
+SOURCE preprocess.c
+SOURCE rpe.c
+SOURCE short_term.c
+SOURCE table.c
+
+
+//
+// GSM codec wrapper for pjmedia-codec
+//
+
+SOURCEPATH ..\pjmedia\src\pjmedia-codec
+SOURCE gsm.c
+
+//
+// Header files
+//
+
+
+SYSTEMINCLUDE ..\pjmedia\include
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\third_party\build\gsm
+SYSTEMINCLUDE ..\third_party\gsm\inc
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
diff --git a/build.symbian/libpassthroughcodec.mmp b/build.symbian/libpassthroughcodec.mmp
new file mode 100644
index 0000000..3a19117
--- /dev/null
+++ b/build.symbian/libpassthroughcodec.mmp
@@ -0,0 +1,27 @@
+TARGET libpassthroughcodec.lib
+TARGETTYPE lib
+
+MACRO HAVE_CONFIG_H
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+//
+// GCCE optimization setting
+//
+OPTION GCCE -O2 -fno-unit-at-a-time
+OPTION ARMCC --gnu
+
+//
+// Passthrough codecs wrapper for pjmedia-codec
+//
+SOURCEPATH ..\pjmedia\src\pjmedia-codec
+SOURCE passthrough.c
+
+//
+// Header files
+//
+SYSTEMINCLUDE ..\pjmedia\include
+SYSTEMINCLUDE ..\pjlib\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
diff --git a/build.symbian/libresample.mmp b/build.symbian/libresample.mmp
new file mode 100644
index 0000000..0dd074f
--- /dev/null
+++ b/build.symbian/libresample.mmp
@@ -0,0 +1,26 @@
+TARGET libresample.lib
+TARGETTYPE lib
+
+SOURCEPATH ..\third_party\resample\src
+
+//
+// GCCE optimization setting
+//
+OPTION GCCE -O2 -fno-unit-at-a-time
+OPTION ARMCC --gnu
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+MACRO RESAMPLE_HAS_SMALL_FILTER=1
+MACRO RESAMPLE_HAS_LARGE_FILTER=0
+
+SOURCE resamplesubs.c
+
+SYSTEMINCLUDE ..\third_party\resample\include
+SYSTEMINCLUDE ..\third_party\build\resample
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+
diff --git a/build.symbian/libspeexcodec.mmp b/build.symbian/libspeexcodec.mmp
new file mode 100644
index 0000000..816d805
--- /dev/null
+++ b/build.symbian/libspeexcodec.mmp
@@ -0,0 +1,74 @@
+TARGET libspeexcodec.lib
+TARGETTYPE lib
+
+MACRO HAVE_CONFIG_H
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+//
+// GCCE optimization setting
+//
+OPTION GCCE -O2 -fno-unit-at-a-time
+OPTION ARMCC --gnu
+
+//
+// Speex files
+//
+SOURCEPATH ..\third_party\speex\libspeex
+
+SOURCE bits.c
+SOURCE cb_search.c
+SOURCE exc_5_64_table.c
+SOURCE exc_5_256_table.c
+SOURCE exc_8_128_table.c
+SOURCE exc_10_16_table.c
+SOURCE exc_10_32_table.c
+SOURCE exc_20_32_table.c
+SOURCE fftwrap.c
+SOURCE filterbank.c
+SOURCE filters.c
+SOURCE gain_table.c
+SOURCE gain_table_lbr.c
+SOURCE hexc_10_32_table.c
+SOURCE hexc_table.c
+SOURCE high_lsp_tables.c
+SOURCE kiss_fft.c
+SOURCE kiss_fftr.c
+SOURCE lpc.c
+SOURCE lsp.c
+SOURCE lsp_tables_nb.c
+SOURCE ltp.c
+SOURCE mdf.c
+SOURCE modes.c
+SOURCE modes_wb.c
+SOURCE nb_celp.c
+SOURCE preprocess.c
+SOURCE quant_lsp.c
+SOURCE sb_celp.c
+SOURCE smallft.c
+SOURCE speex.c
+SOURCE speex_callbacks.c
+SOURCE speex_header.c
+SOURCE stereo.c
+SOURCE vbr.c
+SOURCE vq.c
+SOURCE window.c
+
+//
+// Speex codec wrapper for pjmedia-codec
+//
+SOURCEPATH ..\pjmedia\src\pjmedia-codec
+SOURCE speex_codec.c
+
+//
+// Header files
+//
+SYSTEMINCLUDE ..\third_party\speex\include\speex
+SYSTEMINCLUDE ..\third_party\speex\include
+SYSTEMINCLUDE ..\third_party\speex\symbian
+
+SYSTEMINCLUDE ..\pjmedia\include
+SYSTEMINCLUDE ..\pjlib\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
diff --git a/build.symbian/libsrtp.mmp b/build.symbian/libsrtp.mmp
new file mode 100644
index 0000000..4309e6d
--- /dev/null
+++ b/build.symbian/libsrtp.mmp
@@ -0,0 +1,60 @@
+TARGET libsrtp.lib
+TARGETTYPE lib
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+//
+// GCCE optimization setting
+//
+OPTION GCCE -O2 -fno-unit-at-a-time
+OPTION ARMCC --gnu
+
+//
+// Speex files
+//
+SOURCEPATH ..\third_party\srtp
+
+SOURCE crypto\ae_xfm\xfm.c
+SOURCE crypto\cipher\aes.c
+SOURCE crypto\cipher\aes_cbc.c
+SOURCE crypto\cipher\aes_icm.c
+SOURCE crypto\cipher\cipher.c
+SOURCE crypto\cipher\null_cipher.c
+SOURCE crypto\hash\auth.c
+SOURCE crypto\hash\hmac.c
+SOURCE crypto\hash\null_auth.c
+SOURCE crypto\hash\sha1.c
+SOURCE crypto\kernel\alloc.c
+SOURCE crypto\kernel\crypto_kernel.c
+//SOURCE crypto\kernel\err.c
+SOURCE crypto\kernel\key.c
+SOURCE crypto\math\datatypes.c
+SOURCE crypto\math\gf2_8.c
+//SOURCE crypto\math\math.c
+SOURCE crypto\math\stat.c
+SOURCE crypto\replay\rdb.c
+SOURCE crypto\replay\rdbx.c
+//SOURCE crypto\replay\ut_sim.c
+SOURCE crypto\rng\ctr_prng.c
+SOURCE crypto\rng\prng.c
+//SOURCE crypto\rng\rand_linux_kernel.c
+SOURCE crypto\rng\rand_source.c
+SOURCE pjlib\srtp_err.c
+SOURCE srtp\srtp.c
+SOURCE tables\aes_tables.c
+
+//SOURCEPATH ..\pjmedia\src\pjmedia
+
+//SOURCE transport_srtp.c
+
+//
+// Header files
+//
+SYSTEMINCLUDE ..\third_party\srtp\include
+SYSTEMINCLUDE ..\third_party\srtp\crypto\include
+SYSTEMINCLUDE ..\third_party\build\srtp
+SYSTEMINCLUDE ..\pjlib\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
diff --git a/build.symbian/makedef.sh b/build.symbian/makedef.sh
new file mode 100644
index 0000000..df90992
--- /dev/null
+++ b/build.symbian/makedef.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+MMP=$1
+if test "$MMP" == ""; then
+ echo "Usage: makedef.sh FILE.MMP"
+ echo " or makedef.sh all"
+ exit 1
+fi
+
+if test "$MMP" == "all"; then
+ . $0 pjlib.mmp
+ . $0 pjlib_util.mmp
+ . $0 pjnath.mmp
+ . $0 pjmedia.mmp
+ . $0 pjsdp.mmp
+ . $0 pjsip.mmp
+ . $0 pjsip_simple.mmp
+ . $0 pjsip_ua.mmp
+ . $0 pjsua_lib.mmp
+ . $0 symbian_audio.mmp
+ . $0 null_audio.mmp
+ exit 0
+fi
+
+if test -f $MMP; then
+ true
+else
+ echo "Unable to open $MMP"
+ exit 1
+fi
+
+TARGET=`grep -w '^TARGET' $MMP | awk '{print $2}' | awk -F '.' '{print $1}' | head -1`
+DEFFILE="${TARGET}U.def"
+SOURCES=`grep -w '^SOURCE' $MMP | awk '{print $2}' | tr '\\\\' '/'`
+SOURCEPATH=`grep -w '^SOURCEPATH' $MMP | tr '\\\\' '/' | awk '{print $2}'`
+INCPATH=`grep 'INCLUDE' $MMP | awk '{print $2}' | grep pj | tr '\\\\' '/'`
+INCLUDE=""
+for INC in $INCPATH; do
+ INCLUDE=`echo $INCLUDE -I$INC`
+done
+
+#-- debug --
+#echo TARGET=$TARGET
+#echo SOURCES=$SOURCES
+#echo SOURCEPATH=$SOURCEPATH
+#echo INCLUDE=$INCLUDE
+#-- end --
+
+echo > tmpnames.def
+
+echo "${TARGET}:"
+
+for file in $SOURCES; do
+ #SYMBOLS=`grep PJ_DEF ${SOURCEPATH}/$file | awk -F ')' '{print $2}' | awk -F '(' '{print $1}' | awk -F '=' '{print $1}' | tr -d '[:blank:]' | sort | uniq`
+ SYMBOLS=`
+ cpp -DPJ_SYMBIAN=1 -DPJ_DLL -DPJ_EXPORTING=1 $INCLUDE ${SOURCEPATH}/$file 2>&1 |
+ grep EXPORT_C |
+ sed 's/(/;/' |
+ sed 's/=/;/' |
+ awk -F ';' '{print $1}' |
+ awk '{print $NF}'`
+ echo Processing ${SOURCEPATH}/$file..
+ for SYM in $SYMBOLS; do
+ echo $SYM >> tmpnames.def
+ done
+done
+
+echo "Writing $DEFFILE"
+echo EXPORTS > $DEFFILE
+i=0
+for SYM in `cat tmpnames.def | sort | uniq`; do
+ echo " $SYM"
+ i=`expr $i + 1`
+ printf "\\t%-40s @ $i NONAME\\n" $SYM >> $DEFFILE
+done
+
+
+echo
+echo "Done. Total $i symbols exported in $DEFFILE."
+
diff --git a/build.symbian/null_audio.mmp b/build.symbian/null_audio.mmp
new file mode 100644
index 0000000..de1dcbd
--- /dev/null
+++ b/build.symbian/null_audio.mmp
@@ -0,0 +1,40 @@
+#if defined(PJ_BUILD_DLL)
+
+TARGET null_audio.dll
+TARGETTYPE dll
+UID 0x0 0xA0000000
+
+
+CAPABILITY None
+LIBRARY pjlib.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\null_audio.def
+
+#else
+
+TARGET null_audio.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjmedia\src\pjmedia
+
+OPTION CW -lang c++
+OPTION ARMCC --gnu
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+//
+// Platform independent source
+//
+SOURCE nullsound.c
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjmedia\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
diff --git a/build.symbian/null_audioU.def b/build.symbian/null_audioU.def
new file mode 100644
index 0000000..883d5d8
--- /dev/null
+++ b/build.symbian/null_audioU.def
@@ -0,0 +1,12 @@
+EXPORTS
+ pjmedia_snd_deinit @ 1 NONAME
+ pjmedia_snd_get_dev_count @ 2 NONAME
+ pjmedia_snd_get_dev_info @ 3 NONAME
+ pjmedia_snd_init @ 4 NONAME
+ pjmedia_snd_open @ 5 NONAME
+ pjmedia_snd_open_player @ 6 NONAME
+ pjmedia_snd_open_rec @ 7 NONAME
+ pjmedia_snd_stream_close @ 8 NONAME
+ pjmedia_snd_stream_get_info @ 9 NONAME
+ pjmedia_snd_stream_start @ 10 NONAME
+ pjmedia_snd_stream_stop @ 11 NONAME
diff --git a/build.symbian/pjlib.mmp b/build.symbian/pjlib.mmp
new file mode 100644
index 0000000..e5c3107
--- /dev/null
+++ b/build.symbian/pjlib.mmp
@@ -0,0 +1,122 @@
+#if defined(PJ_BUILD_DLL)
+TARGET pjlib.dll
+TARGETTYPE dll
+UID 0x0 0xA0000001
+
+CAPABILITY NONE
+LIBRARY esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\pjlib.def
+
+#else
+
+TARGET pjlib.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjlib\src\pj
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Must compile as C++, otherwise exception would not work
+OPTION CW -lang c++
+OPTION ARMCC --cpp --gnu
+OPTION GCC -x c++
+OPTION GCCE -x c++
+
+//
+// Platform independent source
+//
+SOURCE activesock.c
+SOURCE array.c
+SOURCE config.c
+SOURCE ctype.c
+SOURCE errno.c
+SOURCE fifobuf.c
+SOURCE guid.c
+SOURCE hash.c
+SOURCE list.c
+SOURCE lock.c
+SOURCE string.c
+SOURCE log.c
+SOURCE os_info.c
+SOURCE os_info_symbian.cpp
+SOURCE os_time_common.c
+SOURCE pool.c
+SOURCE pool_buf.c
+SOURCE pool_caching.c
+SOURCE rand.c
+SOURCE rbtree.c
+SOURCE ssl_sock_common.c
+SOURCE ssl_sock_dump.c
+SOURCE sock_common.c
+SOURCE sock_qos_common.c
+SOURCE types.c
+
+
+//
+// Platform dependent source
+//
+SOURCE compat\string_compat.c
+SOURCE addr_resolv_symbian.cpp
+SOURCE exception_symbian.cpp
+SOURCE file_access_unistd.c
+SOURCE file_io_ansi.c
+SOURCE guid_simple.c
+SOURCE ioqueue_symbian.cpp
+SOURCE ip_helper_symbian.cpp
+SOURCE log_writer_symbian_console.cpp
+SOURCE os_core_symbian.cpp
+SOURCE os_error_symbian.cpp
+SOURCE os_timestamp_common.c
+SOURCE os_time_unix.c
+SOURCE os_timestamp_posix.c
+SOURCE pool_policy_new.cpp
+SOURCE ssl_sock_symbian.cpp
+SOURCE sock_symbian.cpp
+SOURCE sock_select_symbian.cpp
+SOURCE sock_qos_symbian.cpp
+SOURCE timer_symbian.cpp
+SOURCE unicode_symbian.cpp
+
+//DOCUMENT os_symbian.h
+
+//DOCUMENT pj\addr_resolv.h
+//DOCUMENT pj\array.h
+//DOCUMENT pj\assert.h
+//DOCUMENT pj\config.h
+//DOCUMENT pj\config_site.h
+//DOCUMENT pj\config_site_sample.h
+//DOCUMENT pj\ctype.h
+//DOCUMENT pj\errno.h
+//DOCUMENT pj\except.h
+//DOCUMENT pj\file_access.h
+//DOCUMENT pj\file_io.h
+//DOCUMENT pj\guid.h
+//DOCUMENT pj\hash.h
+//DOCUMENT pj\ioqueue.h
+//DOCUMENT pj\ip_helper.h
+//DOCUMENT pj\list.h
+//DOCUMENT pj\lock.h
+//DOCUMENT pj\log.h
+//DOCUMENT pj\os.h
+//DOCUMENT pj\\pool.h
+//DOCUMENT pj\\pool_buf.h
+//DOCUMENT pj\rand.h
+//DOCUMENT pj\rbtree.h
+//DOCUMENT pj\sock.h
+//DOCUMENT pj\sock_select.h
+//DOCUMENT pj\string.h
+//DOCUMENT pj\timer.h
+//DOCUMENT pj\types.h
+//DOCUMENT pj\unicode.h
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+
diff --git a/build.symbian/pjlibU.def b/build.symbian/pjlibU.def
new file mode 100644
index 0000000..3ddcb40
--- /dev/null
+++ b/build.symbian/pjlibU.def
@@ -0,0 +1,323 @@
+EXPORTS
+ PJ_FD_CLR @ 1 NONAME
+ PJ_FD_COUNT @ 2 NONAME
+ PJ_FD_ISSET @ 3 NONAME
+ PJ_FD_SET @ 4 NONAME
+ PJ_FD_ZERO @ 5 NONAME
+ PJ_GUID_STRING_LENGTH @ 6 NONAME
+ PJ_NO_MEMORY_EXCEPTION @ 7 NONAME
+ PJ_VERSION @ 8 NONAME
+ pj_AF_INET @ 9 NONAME
+ pj_AF_INET6 @ 10 NONAME
+ pj_AF_IRDA @ 11 NONAME
+ pj_AF_PACKET @ 12 NONAME
+ pj_AF_UNIX @ 13 NONAME
+ pj_AF_UNSPEC @ 14 NONAME
+ pj_GUID_STRING_LENGTH @ 15 NONAME
+ pj_IPTOS_LOWDELAY @ 16 NONAME
+ pj_IPTOS_MINCOST @ 17 NONAME
+ pj_IPTOS_RELIABILITY @ 18 NONAME
+ pj_IPTOS_THROUGHPUT @ 19 NONAME
+ pj_IP_TOS @ 20 NONAME
+ pj_MSG_DONTROUTE @ 21 NONAME
+ pj_MSG_OOB @ 22 NONAME
+ pj_MSG_PEEK @ 23 NONAME
+ pj_NO_MEMORY_EXCEPTION @ 24 NONAME
+ pj_SOCK_DGRAM @ 25 NONAME
+ pj_SOCK_RAW @ 26 NONAME
+ pj_SOCK_RDM @ 27 NONAME
+ pj_SOCK_STREAM @ 28 NONAME
+ pj_SOL_IP @ 29 NONAME
+ pj_SOL_IPV6 @ 30 NONAME
+ pj_SOL_SOCKET @ 31 NONAME
+ pj_SOL_TCP @ 32 NONAME
+ pj_SOL_UDP @ 33 NONAME
+ pj_SO_RCVBUF @ 34 NONAME
+ pj_SO_SNDBUF @ 35 NONAME
+ pj_SO_TYPE @ 36 NONAME
+ pj_ansi_to_unicode @ 37 NONAME
+ pj_array_erase @ 38 NONAME
+ pj_array_find @ 39 NONAME
+ pj_array_insert @ 40 NONAME
+ pj_atexit @ 41 NONAME
+ pj_atomic_add @ 42 NONAME
+ pj_atomic_add_and_get @ 43 NONAME
+ pj_atomic_create @ 44 NONAME
+ pj_atomic_dec @ 45 NONAME
+ pj_atomic_dec_and_get @ 46 NONAME
+ pj_atomic_destroy @ 47 NONAME
+ pj_atomic_get @ 48 NONAME
+ pj_atomic_inc @ 49 NONAME
+ pj_atomic_inc_and_get @ 50 NONAME
+ pj_atomic_set @ 51 NONAME
+ pj_caching_pool_destroy @ 52 NONAME
+ pj_caching_pool_init @ 53 NONAME
+ pj_create_random_string @ 54 NONAME
+ pj_create_unique_string @ 55 NONAME
+ pj_dump_config @ 56 NONAME
+ pj_elapsed_cycle @ 57 NONAME
+ pj_elapsed_msec @ 58 NONAME
+ pj_elapsed_nanosec @ 59 NONAME
+ pj_elapsed_time @ 60 NONAME
+ pj_elapsed_usec @ 61 NONAME
+ pj_enter_critical_section @ 62 NONAME
+ pj_enum_ip_interface @ 63 NONAME
+ pj_enum_ip_route @ 64 NONAME
+ pj_exception_id_alloc @ 65 NONAME
+ pj_exception_id_free @ 66 NONAME
+ pj_exception_id_name @ 67 NONAME
+ pj_fifobuf_alloc @ 68 NONAME
+ pj_fifobuf_free @ 69 NONAME
+ pj_fifobuf_init @ 70 NONAME
+ pj_fifobuf_max_size @ 71 NONAME
+ pj_fifobuf_unalloc @ 72 NONAME
+ pj_file_close @ 73 NONAME
+ pj_file_delete @ 74 NONAME
+ pj_file_exists @ 75 NONAME
+ pj_file_flush @ 76 NONAME
+ pj_file_getpos @ 77 NONAME
+ pj_file_getstat @ 78 NONAME
+ pj_file_move @ 79 NONAME
+ pj_file_open @ 80 NONAME
+ pj_file_read @ 81 NONAME
+ pj_file_setpos @ 82 NONAME
+ pj_file_size @ 83 NONAME
+ pj_file_write @ 84 NONAME
+ pj_generate_unique_string @ 85 NONAME
+ pj_get_netos_error @ 86 NONAME
+ pj_get_os_error @ 87 NONAME
+ pj_get_timestamp @ 88 NONAME
+ pj_get_timestamp_freq @ 89 NONAME
+ pj_get_version @ 90 NONAME
+ pj_getaddrinfo @ 91 NONAME
+ pj_getdefaultipinterface @ 92 NONAME
+ pj_gethostaddr @ 93 NONAME
+ pj_gethostbyname @ 94 NONAME
+ pj_gethostip @ 95 NONAME
+ pj_gethostname @ 96 NONAME
+ pj_getpid @ 97 NONAME
+ pj_gettimeofday @ 98 NONAME
+ pj_hash_calc @ 99 NONAME
+ pj_hash_calc_tolower @ 100 NONAME
+ pj_hash_count @ 101 NONAME
+ pj_hash_create @ 102 NONAME
+ pj_hash_first @ 103 NONAME
+ pj_hash_get @ 104 NONAME
+ pj_hash_next @ 105 NONAME
+ pj_hash_set @ 106 NONAME
+ pj_hash_set_np @ 107 NONAME
+ pj_hash_this @ 108 NONAME
+ pj_htonl @ 109 NONAME
+ pj_htons @ 110 NONAME
+ pj_inet_addr @ 111 NONAME
+ pj_inet_addr2 @ 112 NONAME
+ pj_inet_aton @ 113 NONAME
+ pj_inet_ntoa @ 114 NONAME
+ pj_inet_ntop @ 115 NONAME
+ pj_inet_ntop2 @ 116 NONAME
+ pj_inet_pton @ 117 NONAME
+ pj_init @ 118 NONAME
+ pj_ioqueue_accept @ 119 NONAME
+ pj_ioqueue_connect @ 120 NONAME
+ pj_ioqueue_create @ 121 NONAME
+ pj_ioqueue_destroy @ 122 NONAME
+ pj_ioqueue_get_user_data @ 123 NONAME
+ pj_ioqueue_is_pending @ 124 NONAME
+ pj_ioqueue_name @ 125 NONAME
+ pj_ioqueue_op_key_init @ 126 NONAME
+ pj_ioqueue_poll @ 127 NONAME
+ pj_ioqueue_post_completion @ 128 NONAME
+ pj_ioqueue_recv @ 129 NONAME
+ pj_ioqueue_recvfrom @ 130 NONAME
+ pj_ioqueue_register_sock @ 131 NONAME
+ pj_ioqueue_send @ 132 NONAME
+ pj_ioqueue_sendto @ 133 NONAME
+ pj_ioqueue_set_lock @ 134 NONAME
+ pj_ioqueue_set_user_data @ 135 NONAME
+ pj_ioqueue_unregister @ 136 NONAME
+ pj_leave_critical_section @ 137 NONAME
+ pj_list_erase @ 138 NONAME
+ pj_list_find_node @ 139 NONAME
+ pj_list_insert_after @ 140 NONAME
+ pj_list_insert_before @ 141 NONAME
+ pj_list_insert_nodes_after @ 142 NONAME
+ pj_list_insert_nodes_before @ 143 NONAME
+ pj_list_merge_first @ 144 NONAME
+ pj_list_merge_last @ 145 NONAME
+ pj_list_search @ 146 NONAME
+ pj_list_size @ 147 NONAME
+ pj_lock_acquire @ 148 NONAME
+ pj_lock_create_null_mutex @ 149 NONAME
+ pj_lock_create_recursive_mutex @ 150 NONAME
+ pj_lock_create_semaphore @ 151 NONAME
+ pj_lock_create_simple_mutex @ 152 NONAME
+ pj_lock_destroy @ 153 NONAME
+ pj_lock_release @ 154 NONAME
+ pj_lock_tryacquire @ 155 NONAME
+ pj_log @ 156 NONAME
+ pj_log_1 @ 157 NONAME
+ pj_log_2 @ 158 NONAME
+ pj_log_3 @ 159 NONAME
+ pj_log_4 @ 160 NONAME
+ pj_log_5 @ 161 NONAME
+ pj_log_get_decor @ 162 NONAME
+ pj_log_get_level @ 163 NONAME
+ pj_log_get_log_func @ 164 NONAME
+ pj_log_set_decor @ 165 NONAME
+ pj_log_set_level @ 166 NONAME
+ pj_log_set_log_func @ 167 NONAME
+ pj_log_write @ 168 NONAME
+ pj_mutex_create @ 169 NONAME
+ pj_mutex_create_recursive @ 170 NONAME
+ pj_mutex_create_simple @ 171 NONAME
+ pj_mutex_destroy @ 172 NONAME
+ pj_mutex_lock @ 173 NONAME
+ pj_mutex_trylock @ 174 NONAME
+ pj_mutex_unlock @ 175 NONAME
+ pj_ntohl @ 176 NONAME
+ pj_ntohs @ 177 NONAME
+ pj_pool_alloc @ 178 NONAME
+ pj_pool_alloc_from_block @ 179 NONAME
+ pj_pool_allocate_find @ 180 NONAME
+ pj_pool_calloc @ 181 NONAME
+ pj_pool_create @ 182 NONAME
+ pj_pool_create_int @ 183 NONAME
+ pj_pool_create_on_buf @ 184 NONAME
+ pj_pool_destroy_int @ 185 NONAME
+ pj_pool_factory_default_policy @ 186 NONAME
+ pj_pool_factory_get_default_policy @ 187 NONAME
+ pj_pool_get_capacity @ 188 NONAME
+ pj_pool_get_used_size @ 189 NONAME
+ pj_pool_getobjname @ 190 NONAME
+ pj_pool_init_int @ 191 NONAME
+ pj_pool_release @ 192 NONAME
+ pj_pool_reset @ 193 NONAME
+ pj_rand @ 194 NONAME
+ pj_rbtree_erase @ 195 NONAME
+ pj_rbtree_find @ 196 NONAME
+ pj_rbtree_first @ 197 NONAME
+ pj_rbtree_init @ 198 NONAME
+ pj_rbtree_insert @ 199 NONAME
+ pj_rbtree_last @ 200 NONAME
+ pj_rbtree_max_height @ 201 NONAME
+ pj_rbtree_min_height @ 202 NONAME
+ pj_rbtree_next @ 203 NONAME
+ pj_rbtree_prev @ 204 NONAME
+ pj_register_strerror @ 205 NONAME
+ pj_rwmutex_create @ 206 NONAME
+ pj_rwmutex_destroy @ 207 NONAME
+ pj_rwmutex_lock_read @ 208 NONAME
+ pj_rwmutex_lock_write @ 209 NONAME
+ pj_rwmutex_unlock_read @ 210 NONAME
+ pj_rwmutex_unlock_write @ 211 NONAME
+ pj_sem_create @ 212 NONAME
+ pj_sem_destroy @ 213 NONAME
+ pj_sem_post @ 214 NONAME
+ pj_sem_trywait @ 215 NONAME
+ pj_sem_wait @ 216 NONAME
+ pj_set_netos_error @ 217 NONAME
+ pj_set_os_error @ 218 NONAME
+ pj_shutdown @ 219 NONAME
+ pj_sock_accept @ 220 NONAME
+ pj_sock_bind @ 221 NONAME
+ pj_sock_bind_in @ 222 NONAME
+ pj_sock_close @ 223 NONAME
+ pj_sock_connect @ 224 NONAME
+ pj_sock_getpeername @ 225 NONAME
+ pj_sock_getsockname @ 226 NONAME
+ pj_sock_getsockopt @ 227 NONAME
+ pj_sock_listen @ 228 NONAME
+ pj_sock_recv @ 229 NONAME
+ pj_sock_recvfrom @ 230 NONAME
+ pj_sock_select @ 231 NONAME
+ pj_sock_send @ 232 NONAME
+ pj_sock_sendto @ 233 NONAME
+ pj_sock_setsockopt @ 234 NONAME
+ pj_sock_shutdown @ 235 NONAME
+ pj_sock_socket @ 236 NONAME
+ pj_sockaddr_cmp @ 237 NONAME
+ pj_sockaddr_copy_addr @ 238 NONAME
+ pj_sockaddr_get_addr @ 239 NONAME
+ pj_sockaddr_get_addr_len @ 240 NONAME
+ pj_sockaddr_get_len @ 241 NONAME
+ pj_sockaddr_get_port @ 242 NONAME
+ pj_sockaddr_has_addr @ 243 NONAME
+ pj_sockaddr_in_get_addr @ 244 NONAME
+ pj_sockaddr_in_get_port @ 245 NONAME
+ pj_sockaddr_in_init @ 246 NONAME
+ pj_sockaddr_in_set_addr @ 247 NONAME
+ pj_sockaddr_in_set_port @ 248 NONAME
+ pj_sockaddr_in_set_str_addr @ 249 NONAME
+ pj_sockaddr_init @ 250 NONAME
+ pj_sockaddr_print @ 251 NONAME
+ pj_sockaddr_set_port @ 252 NONAME
+ pj_sockaddr_set_str_addr @ 253 NONAME
+ pj_srand @ 254 NONAME
+ pj_str @ 255 NONAME
+ pj_strassign @ 256 NONAME
+ pj_strcat @ 257 NONAME
+ pj_strcat2 @ 258 NONAME
+ pj_strcmp @ 259 NONAME
+ pj_strcmp2 @ 260 NONAME
+ pj_strcpy @ 261 NONAME
+ pj_strcpy2 @ 262 NONAME
+ pj_strdup @ 263 NONAME
+ pj_strdup2 @ 264 NONAME
+ pj_strdup2_with_null @ 265 NONAME
+ pj_strdup3 @ 266 NONAME
+ pj_strdup_with_null @ 267 NONAME
+ pj_strerror @ 268 NONAME
+ pj_stricmp @ 269 NONAME
+ pj_stricmp2 @ 270 NONAME
+ pj_strltrim @ 271 NONAME
+ pj_strncmp @ 272 NONAME
+ pj_strncmp2 @ 273 NONAME
+ pj_strncpy @ 274 NONAME
+ pj_strncpy_with_null @ 275 NONAME
+ pj_strnicmp @ 276 NONAME
+ pj_strnicmp2 @ 277 NONAME
+ pj_strrtrim @ 278 NONAME
+ pj_strtoul @ 279 NONAME
+ pj_strtoul2 @ 280 NONAME
+ pj_strtrim @ 281 NONAME
+ pj_symbianos_poll @ 282 NONAME
+ pj_symbianos_set_params @ 283 NONAME
+ pj_thread_check_stack @ 284 NONAME
+ pj_thread_create @ 285 NONAME
+ pj_thread_destroy @ 286 NONAME
+ pj_thread_get_name @ 287 NONAME
+ pj_thread_get_os_handle @ 288 NONAME
+ pj_thread_get_stack_info @ 289 NONAME
+ pj_thread_get_stack_max_usage @ 290 NONAME
+ pj_thread_is_registered @ 291 NONAME
+ pj_thread_join @ 292 NONAME
+ pj_thread_local_alloc @ 293 NONAME
+ pj_thread_local_free @ 294 NONAME
+ pj_thread_local_get @ 295 NONAME
+ pj_thread_local_set @ 296 NONAME
+ pj_thread_register @ 297 NONAME
+ pj_thread_resume @ 298 NONAME
+ pj_thread_sleep @ 299 NONAME
+ pj_thread_this @ 300 NONAME
+ pj_time_decode @ 301 NONAME
+ pj_time_encode @ 302 NONAME
+ pj_time_gmt_to_local @ 303 NONAME
+ pj_time_local_to_gmt @ 304 NONAME
+ pj_time_val_normalize @ 305 NONAME
+ pj_timer_entry_init @ 306 NONAME
+ pj_timer_heap_cancel @ 307 NONAME
+ pj_timer_heap_count @ 308 NONAME
+ pj_timer_heap_create @ 309 NONAME
+ pj_timer_heap_destroy @ 310 NONAME
+ pj_timer_heap_earliest_time @ 311 NONAME
+ pj_timer_heap_mem_size @ 312 NONAME
+ pj_timer_heap_poll @ 313 NONAME
+ pj_timer_heap_schedule @ 314 NONAME
+ pj_timer_heap_set_lock @ 315 NONAME
+ pj_timer_heap_set_max_timed_out_per_poll @ 316 NONAME
+ pj_unicode_to_ansi @ 317 NONAME
+ pj_utoa @ 318 NONAME
+ pj_utoa_pad @ 319 NONAME
+ platform_strerror @ 320 NONAME
+ snprintf @ 321 NONAME
+ vsnprintf @ 322 NONAME
diff --git a/build.symbian/pjlib_test.mmp b/build.symbian/pjlib_test.mmp
new file mode 100644
index 0000000..73f004b
--- /dev/null
+++ b/build.symbian/pjlib_test.mmp
@@ -0,0 +1,83 @@
+TARGET pjlib_test.exe
+TARGETTYPE exe
+UID 0x0 0xA0000002
+
+
+SOURCEPATH ..\pjlib\src\pjlib-test
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Must compile as C++, otherwise exception would not work
+OPTION CW -lang c++
+OPTION ARMCC --cpp --gnu
+OPTION GCC -x c++
+OPTION GCCE -x c++
+
+#if defined(PJ_BUILD_DLL)
+MACRO PJ_DLL
+LIBRARY pjlib.lib
+#else
+STATICLIBRARY pjlib.lib
+#endif
+
+// Test files
+
+SOURCE activesock.c
+SOURCE atomic.c
+SOURCE echo_clt.c
+SOURCE errno.c
+SOURCE exception_wrap.cpp
+SOURCE fifobuf.c
+SOURCE file.c
+SOURCE hash_test.c
+SOURCE ioq_perf.c
+SOURCE ioq_tcp.c
+SOURCE ioq_udp.c
+SOURCE ioq_unreg.c
+SOURCE list.c
+SOURCE mutex.c
+SOURCE os.c
+SOURCE pool_wrap.cpp
+SOURCE pool_perf.c
+SOURCE rand.c
+SOURCE rbtree.c
+SOURCE select.c
+SOURCE sleep.c
+SOURCE sock.c
+SOURCE sock_perf.c
+SOURCE ssl_sock.c
+SOURCE string.c
+SOURCE test_wrap.cpp
+SOURCE thread.c
+SOURCE timer.c
+SOURCE timestamp.c
+SOURCE udp_echo_srv_ioqueue.c
+SOURCE udp_echo_srv_sync.c
+SOURCE util.c
+
+SOURCE main_symbian.cpp
+
+DOCUMENT test.h
+
+START RESOURCE pjlib_test_reg.rss
+ TARGETPATH \private\10003a3f\apps
+END
+
+SYSTEMINCLUDE ..\pjlib\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+LIBRARY esock.lib insock.lib charconv.lib euser.lib estlib.lib
+LIBRARY securesocket.lib x509.lib crypto.lib x500.lib
+LIBRARY hal.lib efsrv.lib
+
+#ifdef WINSCW
+STATICLIBRARY eexe.lib ecrt0.lib
+#endif
+
+// Need a bit of mem for logging in the app.
+EPOCSTACKSIZE 32768
+
+CAPABILITY NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment
diff --git a/build.symbian/pjlib_test.pkg b/build.symbian/pjlib_test.pkg
new file mode 100644
index 0000000..e406415
--- /dev/null
+++ b/build.symbian/pjlib_test.pkg
@@ -0,0 +1,19 @@
+; pjlib_test.pkg
+
+; Languages
+&EN
+
+; Header
+;#{"pjlib_test"},(0x200235D3), 0, 1, 1
+#{"pjlib_test"},(0xA0000002), 0, 1, 1
+
+; Platform compatibility
+[0x101F7961], *, *, *,{"Series60ProductID"}
+
+; vendor
+%{"PJSIP"}
+:"PJSIP"
+
+; Target
+"$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\pjlib_test.exe"-"!:\sys\bin\pjlib_test.exe"
+"$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\pjlib_test_reg.rSC"-"!:\private\10003a3f\import\apps\pjlib_test_reg.rSC"
diff --git a/build.symbian/pjlib_util.mmp b/build.symbian/pjlib_util.mmp
new file mode 100644
index 0000000..fbf4b42
--- /dev/null
+++ b/build.symbian/pjlib_util.mmp
@@ -0,0 +1,83 @@
+#if defined(PJ_BUILD_DLL)
+TARGET pjlib_util.dll
+TARGETTYPE dll
+UID 0x0 0xA0000003
+
+CAPABILITY NONE
+LIBRARY pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\pjlib_util.def
+
+#else
+
+TARGET pjlib_util.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjlib-util\src\pjlib-util
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Must compile as C++, otherwise exception would not work
+OPTION CW -lang c++
+OPTION ARMCC --cpp --gnu
+OPTION GCC -x c++
+OPTION GCCE -x c++
+
+//
+// PJLIB-UTIL files
+//
+SOURCE base64.c
+SOURCE crc32.c
+SOURCE dns.c
+SOURCE dns_dump.c
+SOURCE dns_server.c
+SOURCE errno.c
+SOURCE getopt.c
+SOURCE hmac_md5.c
+SOURCE hmac_sha1.c
+SOURCE http_client.c
+SOURCE md5.c
+SOURCE pcap.c
+SOURCE resolver_wrap.cpp
+SOURCE scanner.c
+SOURCE sha1.c
+SOURCE srv_resolver.c
+SOURCE string.c
+SOURCE stun_simple.c
+SOURCE stun_simple_client.c
+SOURCE xml_wrap.cpp
+
+//
+// Header files
+//
+//DOCUMENT pjlib-util\\config.h
+//DOCUMENT pjlib-util\\crc32.h
+//DOCUMENT pjlib-util\\dns.h
+//DOCUMENT pjlib-util\\errno.h
+//DOCUMENT pjlib-util\\getopt.h
+//DOCUMENT pjlib-util\\hmac_md5.h
+//DOCUMENT pjlib-util\hmac_sha1.h
+//DOCUMENT pjlib-util\http_client.h
+//DOCUMENT pjlib-util\md5.h
+//DOCUMENT pjlib-util\resolver.h
+//DOCUMENT pjlib-util\scanner.h
+//DOCUMENT pjlib-util\sha1.h
+//DOCUMENT pjlib-util\srv_resolver.h
+//DOCUMENT pjlib-util\string.h
+//DOCUMENT pjlib-util\stun_simple.h
+//DOCUMENT pjlib-util\types.h
+//DOCUMENT pjlib-util\xml.h
+
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+
diff --git a/build.symbian/pjlib_utilU.def b/build.symbian/pjlib_utilU.def
new file mode 100644
index 0000000..3e482af
--- /dev/null
+++ b/build.symbian/pjlib_utilU.def
@@ -0,0 +1,92 @@
+EXPORTS
+ pj_cis_add_alpha @ 1 NONAME
+ pj_cis_add_cis @ 2 NONAME
+ pj_cis_add_num @ 3 NONAME
+ pj_cis_add_range @ 4 NONAME
+ pj_cis_add_str @ 5 NONAME
+ pj_cis_buf_init @ 6 NONAME
+ pj_cis_del_range @ 7 NONAME
+ pj_cis_del_str @ 8 NONAME
+ pj_cis_dup @ 9 NONAME
+ pj_cis_init @ 10 NONAME
+ pj_cis_invert @ 11 NONAME
+ pj_crc32_calc @ 12 NONAME
+ pj_crc32_final @ 13 NONAME
+ pj_crc32_init @ 14 NONAME
+ pj_crc32_update @ 15 NONAME
+ pj_dns_dump_packet @ 16 NONAME
+ pj_dns_get_type_name @ 17 NONAME
+ pj_dns_make_query @ 18 NONAME
+ pj_dns_packet_dup @ 19 NONAME
+ pj_dns_parse_a_response @ 20 NONAME
+ pj_dns_parse_packet @ 21 NONAME
+ pj_dns_resolver_add_entry @ 22 NONAME
+ pj_dns_resolver_cancel_query @ 23 NONAME
+ pj_dns_resolver_create @ 24 NONAME
+ pj_dns_resolver_destroy @ 25 NONAME
+ pj_dns_resolver_dump @ 26 NONAME
+ pj_dns_resolver_get_cached_count @ 27 NONAME
+ pj_dns_resolver_get_settings @ 28 NONAME
+ pj_dns_resolver_handle_events @ 29 NONAME
+ pj_dns_resolver_set_ns @ 30 NONAME
+ pj_dns_resolver_set_settings @ 31 NONAME
+ pj_dns_resolver_start_query @ 32 NONAME
+ pj_dns_settings_default @ 33 NONAME
+ pj_dns_srv_resolve @ 34 NONAME
+ pj_hmac_md5 @ 35 NONAME
+ pj_hmac_md5_final @ 36 NONAME
+ pj_hmac_md5_init @ 37 NONAME
+ pj_hmac_md5_update @ 38 NONAME
+ pj_hmac_sha1 @ 39 NONAME
+ pj_hmac_sha1_final @ 40 NONAME
+ pj_hmac_sha1_init @ 41 NONAME
+ pj_hmac_sha1_update @ 42 NONAME
+ pj_md5_final @ 43 NONAME
+ pj_md5_init @ 44 NONAME
+ pj_md5_update @ 45 NONAME
+ pj_scan_advance_n @ 46 NONAME
+ pj_scan_fini @ 47 NONAME
+ pj_scan_get @ 48 NONAME
+ pj_scan_get_char @ 49 NONAME
+ pj_scan_get_n @ 50 NONAME
+ pj_scan_get_newline @ 51 NONAME
+ pj_scan_get_quote @ 52 NONAME
+ pj_scan_get_quotes @ 53 NONAME
+ pj_scan_get_unescape @ 54 NONAME
+ pj_scan_get_until @ 55 NONAME
+ pj_scan_get_until_ch @ 56 NONAME
+ pj_scan_get_until_chr @ 57 NONAME
+ pj_scan_init @ 58 NONAME
+ pj_scan_peek @ 59 NONAME
+ pj_scan_peek_n @ 60 NONAME
+ pj_scan_peek_until @ 61 NONAME
+ pj_scan_restore_state @ 62 NONAME
+ pj_scan_save_state @ 63 NONAME
+ pj_scan_skip_line @ 64 NONAME
+ pj_scan_skip_whitespace @ 65 NONAME
+ pj_scan_strcmp @ 66 NONAME
+ pj_scan_stricmp @ 67 NONAME
+ pj_scan_stricmp_alnum @ 68 NONAME
+ pj_sha1_final @ 69 NONAME
+ pj_sha1_init @ 70 NONAME
+ pj_sha1_update @ 71 NONAME
+ pj_str_unescape @ 72 NONAME
+ pj_strcpy_unescape @ 73 NONAME
+ pj_strncpy2_escape @ 74 NONAME
+ pj_strncpy_escape @ 75 NONAME
+ pj_xml_add_attr @ 76 NONAME
+ pj_xml_add_node @ 77 NONAME
+ pj_xml_attr_new @ 78 NONAME
+ pj_xml_clone @ 79 NONAME
+ pj_xml_find @ 80 NONAME
+ pj_xml_find_attr @ 81 NONAME
+ pj_xml_find_next_node @ 82 NONAME
+ pj_xml_find_node @ 83 NONAME
+ pj_xml_node_new @ 84 NONAME
+ pj_xml_parse @ 85 NONAME
+ pj_xml_print @ 86 NONAME
+ pjlib_util_init @ 87 NONAME
+ pjstun_create_bind_req @ 88 NONAME
+ pjstun_get_mapped_addr @ 89 NONAME
+ pjstun_msg_find_attr @ 90 NONAME
+ pjstun_parse_msg @ 91 NONAME
diff --git a/build.symbian/pjmedia.mmp b/build.symbian/pjmedia.mmp
new file mode 100644
index 0000000..45903fe
--- /dev/null
+++ b/build.symbian/pjmedia.mmp
@@ -0,0 +1,136 @@
+#if defined(PJ_BUILD_DLL)
+
+TARGET pjmedia.dll
+TARGETTYPE dll
+UID 0x0 0xA0000004
+
+CAPABILITY None
+LIBRARY null_audio.lib pjsdp.lib pjnath.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\pjmedia.def
+
+#else
+
+TARGET pjmedia.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjmedia\src\pjmedia
+
+//
+// GCCE optimization setting
+//
+OPTION GCCE -O2 -fno-unit-at-a-time
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Must compile as C++, otherwise exception would not work
+OPTION CW -lang c++
+OPTION ARMCC --cpp --gnu
+OPTION GCC -x c++
+OPTION GCCE -x c++
+
+//
+// Platform independent source
+//
+
+SOURCE alaw_ulaw.c
+SOURCE alaw_ulaw_table.c
+SOURCE avi_player.c
+SOURCE bidirectional.c
+SOURCE clock_thread.c
+SOURCE codec.c
+SOURCE conf_switch.c
+SOURCE conference.c
+SOURCE converter.c
+SOURCE converter_libswscale.c
+SOURCE delaybuf.c
+SOURCE echo_common.c
+SOURCE echo_port.c
+SOURCE echo_suppress.c
+SOURCE endpoint.c
+SOURCE errno.c
+SOURCE event.c
+SOURCE format.c
+SOURCE g711.c
+SOURCE jbuf.c
+SOURCE master_port.c
+SOURCE mem_capture.c
+SOURCE mem_player.c
+SOURCE null_port.c
+SOURCE plc_common.c
+SOURCE port.c
+SOURCE resample_port.c
+SOURCE resample_resample.c
+SOURCE rtcp.c
+SOURCE rtcp_xr.c
+SOURCE rtp.c
+//SDP files are in pjsdp.mmp: sdp.c, sdp_cmp.c, sdp_neg.c
+//SOURCE session.c // deprecated
+SOURCE silencedet.c
+SOURCE sound_port.c
+SOURCE splitcomb.c
+SOURCE stereo_port.c
+SOURCE stream.c
+SOURCE stream_common.c
+SOURCE stream_info.c
+SOURCE tonegen.c
+SOURCE transport_adapter_sample.c
+SOURCE transport_ice.c
+SOURCE transport_udp.c
+SOURCE transport_srtp.c
+SOURCE types.c
+SOURCE vid_codec.c
+SOURCE vid_codec_util.c
+SOURCE vid_port.c
+SOURCE vid_stream.c
+SOURCE vid_stream_info.c
+SOURCE vid_tee.c
+SOURCE wav_player.c
+SOURCE wav_playlist.c
+SOURCE wav_writer.c
+SOURCE wave.c
+SOURCE wsola.c
+
+//
+// pjmedia-codec common files
+//
+SOURCEPATH ..\pjmedia\src\pjmedia-codec
+SOURCE audio_codecs.c
+SOURCE amr_sdp_match.c
+SOURCE g7221_sdp_match.c
+SOURCE h263_packetizer.c
+SOURCE h264_packetizer.c
+
+
+//
+// Symbian specific
+// These are on separate project
+//
+//SOURCE symbian_sound.cpp
+//SOURCE null_sound.c
+
+
+//
+// Header files
+//
+
+
+SYSTEMINCLUDE ..\pjmedia\include
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+SYSTEMINCLUDE ..\pjnath\include
+SYSTEMINCLUDE ..\third_party\srtp\include
+SYSTEMINCLUDE ..\third_party\srtp\crypto\include
+SYSTEMINCLUDE ..\third_party\build\srtp
+SYSTEMINCLUDE ..
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+//SYSTEMINCLUDE \epoc32\include\mmf\plugin
+
+
diff --git a/build.symbian/pjmediaU.def b/build.symbian/pjmediaU.def
new file mode 100644
index 0000000..5d14f35
--- /dev/null
+++ b/build.symbian/pjmediaU.def
@@ -0,0 +1,193 @@
+EXPORTS
+ echo_supp_cancel_echo @ 1 NONAME
+ echo_supp_capture @ 2 NONAME
+ echo_supp_create @ 3 NONAME
+ echo_supp_destroy @ 4 NONAME
+ echo_supp_playback @ 5 NONAME
+ pjmedia_bidirectional_port_create @ 6 NONAME
+ pjmedia_calc_avg_signal @ 7 NONAME
+ pjmedia_clock_create @ 8 NONAME
+ pjmedia_clock_destroy @ 9 NONAME
+ pjmedia_clock_start @ 10 NONAME
+ pjmedia_clock_stop @ 11 NONAME
+ pjmedia_clock_wait @ 12 NONAME
+ pjmedia_codec_g711_deinit @ 13 NONAME
+ pjmedia_codec_g711_init @ 14 NONAME
+ pjmedia_codec_info_to_id @ 15 NONAME
+ pjmedia_codec_mgr_alloc_codec @ 16 NONAME
+ pjmedia_codec_mgr_dealloc_codec @ 17 NONAME
+ pjmedia_codec_mgr_enum_codecs @ 18 NONAME
+ pjmedia_codec_mgr_find_codecs_by_id @ 19 NONAME
+ pjmedia_codec_mgr_get_codec_info @ 20 NONAME
+ pjmedia_codec_mgr_get_default_param @ 21 NONAME
+ pjmedia_codec_mgr_init @ 22 NONAME
+ pjmedia_codec_mgr_register_factory @ 23 NONAME
+ pjmedia_codec_mgr_set_codec_priority @ 24 NONAME
+ pjmedia_codec_mgr_unregister_factory @ 25 NONAME
+ pjmedia_conf_add_passive_port @ 26 NONAME
+ pjmedia_conf_add_port @ 27 NONAME
+ pjmedia_conf_adjust_rx_level @ 28 NONAME
+ pjmedia_conf_adjust_tx_level @ 29 NONAME
+ pjmedia_conf_configure_port @ 30 NONAME
+ pjmedia_conf_connect_port @ 31 NONAME
+ pjmedia_conf_create @ 32 NONAME
+ pjmedia_conf_destroy @ 33 NONAME
+ pjmedia_conf_disconnect_port @ 34 NONAME
+ pjmedia_conf_enum_ports @ 35 NONAME
+ pjmedia_conf_get_connect_count @ 36 NONAME
+ pjmedia_conf_get_master_port @ 37 NONAME
+ pjmedia_conf_get_port_count @ 38 NONAME
+ pjmedia_conf_get_port_info @ 39 NONAME
+ pjmedia_conf_get_ports_info @ 40 NONAME
+ pjmedia_conf_get_signal_level @ 41 NONAME
+ pjmedia_conf_remove_port @ 42 NONAME
+ pjmedia_conf_set_port0_name @ 43 NONAME
+ pjmedia_delay_buf_create @ 44 NONAME
+ pjmedia_delay_buf_get @ 45 NONAME
+ pjmedia_delay_buf_put @ 46 NONAME
+ pjmedia_echo_cancel @ 47 NONAME
+ pjmedia_echo_capture @ 48 NONAME
+ pjmedia_echo_create @ 49 NONAME
+ pjmedia_echo_destroy @ 50 NONAME
+ pjmedia_echo_playback @ 51 NONAME
+ pjmedia_echo_port_create @ 52 NONAME
+ pjmedia_endpt_create @ 53 NONAME
+ pjmedia_endpt_create_pool @ 54 NONAME
+ pjmedia_endpt_create_sdp @ 55 NONAME
+ pjmedia_endpt_destroy @ 56 NONAME
+ pjmedia_endpt_dump @ 57 NONAME
+ pjmedia_endpt_get_codec_mgr @ 58 NONAME
+ pjmedia_endpt_get_ioqueue @ 59 NONAME
+ pjmedia_endpt_get_thread @ 60 NONAME
+ pjmedia_endpt_get_thread_count @ 61 NONAME
+ pjmedia_ice_create @ 62 NONAME
+ pjmedia_ice_destroy @ 63 NONAME
+ pjmedia_ice_get_comp @ 64 NONAME
+ pjmedia_ice_get_init_status @ 65 NONAME
+ pjmedia_ice_init_ice @ 66 NONAME
+ pjmedia_ice_modify_sdp @ 67 NONAME
+ pjmedia_ice_simulate_lost @ 68 NONAME
+ pjmedia_ice_start_ice @ 69 NONAME
+ pjmedia_ice_start_init @ 70 NONAME
+ pjmedia_ice_stop_ice @ 71 NONAME
+ pjmedia_jbuf_create @ 72 NONAME
+ pjmedia_jbuf_destroy @ 73 NONAME
+ pjmedia_jbuf_get_frame @ 74 NONAME
+ pjmedia_jbuf_get_state @ 75 NONAME
+ pjmedia_jbuf_put_frame @ 76 NONAME
+ pjmedia_jbuf_reset @ 77 NONAME
+ pjmedia_jbuf_set_adaptive @ 78 NONAME
+ pjmedia_jbuf_set_fixed @ 79 NONAME
+ pjmedia_master_port_create @ 80 NONAME
+ pjmedia_master_port_destroy @ 81 NONAME
+ pjmedia_master_port_get_dport @ 82 NONAME
+ pjmedia_master_port_get_uport @ 83 NONAME
+ pjmedia_master_port_set_dport @ 84 NONAME
+ pjmedia_master_port_set_uport @ 85 NONAME
+ pjmedia_master_port_start @ 86 NONAME
+ pjmedia_master_port_stop @ 87 NONAME
+ pjmedia_mem_capture_create @ 88 NONAME
+ pjmedia_mem_capture_get_size @ 89 NONAME
+ pjmedia_mem_capture_set_eof_cb @ 90 NONAME
+ pjmedia_mem_player_create @ 91 NONAME
+ pjmedia_mem_player_set_eof_cb @ 92 NONAME
+ pjmedia_null_port_create @ 93 NONAME
+ pjmedia_plc_create @ 94 NONAME
+ pjmedia_plc_generate @ 95 NONAME
+ pjmedia_plc_save @ 96 NONAME
+ pjmedia_port_destroy @ 97 NONAME
+ pjmedia_port_get_frame @ 98 NONAME
+ pjmedia_port_info_init @ 99 NONAME
+ pjmedia_port_put_frame @ 100 NONAME
+ pjmedia_resample_create @ 101 NONAME
+ pjmedia_resample_destroy @ 102 NONAME
+ pjmedia_resample_get_input_size @ 103 NONAME
+ pjmedia_resample_port_create @ 104 NONAME
+ pjmedia_resample_run @ 105 NONAME
+ pjmedia_rtcp_build_rtcp @ 106 NONAME
+ pjmedia_rtcp_fini @ 107 NONAME
+ pjmedia_rtcp_get_ntp_time @ 108 NONAME
+ pjmedia_rtcp_init @ 109 NONAME
+ pjmedia_rtcp_rx_rtcp @ 110 NONAME
+ pjmedia_rtcp_rx_rtp @ 111 NONAME
+ pjmedia_rtcp_tx_rtp @ 112 NONAME
+ pjmedia_rtp_decode_rtp @ 113 NONAME
+ pjmedia_rtp_encode_rtp @ 114 NONAME
+ pjmedia_rtp_session_init @ 115 NONAME
+ pjmedia_rtp_session_update @ 116 NONAME
+ pjmedia_session_check_dtmf @ 117 NONAME
+ pjmedia_session_create @ 118 NONAME
+ pjmedia_session_destroy @ 119 NONAME
+ pjmedia_session_dial_dtmf @ 120 NONAME
+ pjmedia_session_enum_streams @ 121 NONAME
+ pjmedia_session_get_dtmf @ 122 NONAME
+ pjmedia_session_get_info @ 123 NONAME
+ pjmedia_session_get_port @ 124 NONAME
+ pjmedia_session_get_stream_stat @ 125 NONAME
+ pjmedia_session_info_from_sdp @ 126 NONAME
+ pjmedia_session_pause @ 127 NONAME
+ pjmedia_session_pause_stream @ 128 NONAME
+ pjmedia_session_resume @ 129 NONAME
+ pjmedia_session_resume_stream @ 130 NONAME
+ pjmedia_session_set_dtmf_callback @ 131 NONAME
+ pjmedia_silence_det_apply @ 132 NONAME
+ pjmedia_silence_det_create @ 133 NONAME
+ pjmedia_silence_det_detect @ 134 NONAME
+ pjmedia_silence_det_disable @ 135 NONAME
+ pjmedia_silence_det_set_adaptive @ 136 NONAME
+ pjmedia_silence_det_set_fixed @ 137 NONAME
+ pjmedia_silence_det_set_name @ 138 NONAME
+ pjmedia_silence_det_set_params @ 139 NONAME
+ pjmedia_snd_port_connect @ 140 NONAME
+ pjmedia_snd_port_create @ 141 NONAME
+ pjmedia_snd_port_create_player @ 142 NONAME
+ pjmedia_snd_port_create_rec @ 143 NONAME
+ pjmedia_snd_port_destroy @ 144 NONAME
+ pjmedia_snd_port_disconnect @ 145 NONAME
+ pjmedia_snd_port_get_ec_tail @ 146 NONAME
+ pjmedia_snd_port_get_port @ 147 NONAME
+ pjmedia_snd_port_get_snd_stream @ 148 NONAME
+ pjmedia_snd_port_set_ec @ 149 NONAME
+ pjmedia_splitcomb_create @ 150 NONAME
+ pjmedia_splitcomb_create_rev_channel @ 151 NONAME
+ pjmedia_splitcomb_set_channel @ 152 NONAME
+ pjmedia_stream_check_dtmf @ 153 NONAME
+ pjmedia_stream_create @ 154 NONAME
+ pjmedia_stream_destroy @ 155 NONAME
+ pjmedia_stream_dial_dtmf @ 156 NONAME
+ pjmedia_stream_get_dtmf @ 157 NONAME
+ pjmedia_stream_get_port @ 158 NONAME
+ pjmedia_stream_get_stat @ 159 NONAME
+ pjmedia_stream_get_transport @ 160 NONAME
+ pjmedia_stream_info_from_sdp @ 161 NONAME
+ pjmedia_stream_pause @ 162 NONAME
+ pjmedia_stream_resume @ 163 NONAME
+ pjmedia_stream_set_dtmf_callback @ 164 NONAME
+ pjmedia_stream_start @ 165 NONAME
+ pjmedia_strerror @ 166 NONAME
+ pjmedia_tonegen_create @ 167 NONAME
+ pjmedia_tonegen_create2 @ 168 NONAME
+ pjmedia_tonegen_get_digit_map @ 169 NONAME
+ pjmedia_tonegen_is_busy @ 170 NONAME
+ pjmedia_tonegen_play @ 171 NONAME
+ pjmedia_tonegen_play_digits @ 172 NONAME
+ pjmedia_tonegen_set_digit_map @ 173 NONAME
+ pjmedia_tonegen_stop @ 174 NONAME
+ pjmedia_transport_udp_attach @ 175 NONAME
+ pjmedia_transport_udp_close @ 176 NONAME
+ pjmedia_transport_udp_create @ 177 NONAME
+ pjmedia_transport_udp_create2 @ 178 NONAME
+ pjmedia_transport_udp_create3 @ 179 NONAME
+ pjmedia_transport_udp_get_info @ 180 NONAME
+ pjmedia_transport_udp_simulate_lost @ 181 NONAME
+ pjmedia_wav_player_port_create @ 182 NONAME
+ pjmedia_wav_player_port_get_pos @ 183 NONAME
+ pjmedia_wav_player_port_set_pos @ 184 NONAME
+ pjmedia_wav_player_set_eof_cb @ 185 NONAME
+ pjmedia_wav_playlist_create @ 186 NONAME
+ pjmedia_wav_playlist_set_eof_cb @ 187 NONAME
+ pjmedia_wav_writer_port_create @ 188 NONAME
+ pjmedia_wav_writer_port_get_pos @ 189 NONAME
+ pjmedia_wav_writer_port_set_cb @ 190 NONAME
+ pjmedia_wave_hdr_file_to_host @ 191 NONAME
+ pjmedia_wave_hdr_host_to_file @ 192 NONAME
diff --git a/build.symbian/pjmedia_audiodev.mmp b/build.symbian/pjmedia_audiodev.mmp
new file mode 100644
index 0000000..a80cfeb
--- /dev/null
+++ b/build.symbian/pjmedia_audiodev.mmp
@@ -0,0 +1,33 @@
+TARGET pjmedia_audiodev.lib
+TARGETTYPE lib
+
+SOURCEPATH ..\pjmedia\src\pjmedia-audiodev
+
+//
+// GCCE optimization setting
+//
+//OPTION GCCE -O2 -fno-unit-at-a-time
+OPTION ARMCC --gnu
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+SOURCE audiodev.c
+SOURCE errno.c
+SOURCE symb_aps_dev.cpp
+SOURCE symb_mda_dev.cpp
+SOURCE symb_vas_dev.cpp
+SOURCE null_dev.c
+
+SYSTEMINCLUDE ..\pjmedia\include
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\mmf\server
+SYSTEMINCLUDE \epoc32\include\mmf\common
+SYSTEMINCLUDE \epoc32\include\mda\common
+SYSTEMINCLUDE \epoc32\include\mmf\plugin
+
+
diff --git a/build.symbian/pjnath.mmp b/build.symbian/pjnath.mmp
new file mode 100644
index 0000000..76b64dd
--- /dev/null
+++ b/build.symbian/pjnath.mmp
@@ -0,0 +1,65 @@
+#if defined(PJ_BUILD_DLL)
+TARGET pjnath.dll
+TARGETTYPE dll
+UID 0x0 0xA0000005
+
+CAPABILITY None
+LIBRARY pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\pjnath.def
+
+#else
+
+TARGET pjnath.lib
+TARGETTYPE lib
+
+#endif
+
+OPTION ARMCC --gnu
+
+SOURCEPATH ..\pjnath\src\pjnath
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+//
+// PJNATH files
+//
+SOURCE errno.c
+SOURCE ice_session.c
+SOURCE ice_strans.c
+SOURCE nat_detect.c
+SOURCE stun_auth.c
+SOURCE stun_msg.c
+SOURCE stun_msg_dump.c
+SOURCE stun_session.c
+SOURCE stun_sock.c
+SOURCE stun_transaction.c
+SOURCE turn_session.c
+SOURCE turn_sock.c
+
+//
+// Include files
+//
+//DOCUMENT pjnath\config.h
+//DOCUMENT pjnath\\errno.h
+//DOCUMENT pjnath\\ice_session.h
+//DOCUMENT pjnath\\ice_strans.h
+//DOCUMENT pjnath\\stun_auth.h
+//DOCUMENT pjnath\\stun_config.h
+//DOCUMENT pjnath\\stun_msg.h
+//DOCUMENT pjnath\\stun_session.h
+//DOCUMENT pjnath\\stun_transaction.h
+//DOCUMENT pjnath\\types.h
+
+
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+SYSTEMINCLUDE ..\pjnath\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
diff --git a/build.symbian/pjnathU.def b/build.symbian/pjnathU.def
new file mode 100644
index 0000000..db4c282
--- /dev/null
+++ b/build.symbian/pjnathU.def
@@ -0,0 +1,88 @@
+EXPORTS
+ pj_ice_calc_foundation @ 1 NONAME
+ pj_ice_get_cand_type_name @ 2 NONAME
+ pj_ice_sess_add_cand @ 3 NONAME
+ pj_ice_sess_change_role @ 4 NONAME
+ pj_ice_sess_create @ 5 NONAME
+ pj_ice_sess_create_check_list @ 6 NONAME
+ pj_ice_sess_destroy @ 7 NONAME
+ pj_ice_sess_find_default_cand @ 8 NONAME
+ pj_ice_sess_on_rx_pkt @ 9 NONAME
+ pj_ice_sess_send_data @ 10 NONAME
+ pj_ice_sess_set_prefs @ 11 NONAME
+ pj_ice_sess_start_check @ 12 NONAME
+ pj_ice_strans_add_cand @ 13 NONAME
+ pj_ice_strans_create @ 14 NONAME
+ pj_ice_strans_create_comp @ 15 NONAME
+ pj_ice_strans_destroy @ 16 NONAME
+ pj_ice_strans_enum_cands @ 17 NONAME
+ pj_ice_strans_get_comps_status @ 18 NONAME
+ pj_ice_strans_init_ice @ 19 NONAME
+ pj_ice_strans_sendto @ 20 NONAME
+ pj_ice_strans_set_stun_domain @ 21 NONAME
+ pj_ice_strans_set_stun_srv @ 22 NONAME
+ pj_ice_strans_start_ice @ 23 NONAME
+ pj_ice_strans_stop_ice @ 24 NONAME
+ pj_stun_auth_cred_dup @ 25 NONAME
+ pj_stun_auth_valid_for_msg @ 26 NONAME
+ pj_stun_authenticate_request @ 27 NONAME
+ pj_stun_authenticate_response @ 28 NONAME
+ pj_stun_binary_attr_create @ 29 NONAME
+ pj_stun_client_tsx_create @ 30 NONAME
+ pj_stun_client_tsx_destroy @ 31 NONAME
+ pj_stun_client_tsx_get_data @ 32 NONAME
+ pj_stun_client_tsx_is_complete @ 33 NONAME
+ pj_stun_client_tsx_on_rx_msg @ 34 NONAME
+ pj_stun_client_tsx_retransmit @ 35 NONAME
+ pj_stun_client_tsx_schedule_destroy @ 36 NONAME
+ pj_stun_client_tsx_send_msg @ 37 NONAME
+ pj_stun_client_tsx_set_data @ 38 NONAME
+ pj_stun_create_key @ 39 NONAME
+ pj_stun_detect_nat_type @ 40 NONAME
+ pj_stun_empty_attr_create @ 41 NONAME
+ pj_stun_errcode_attr_create @ 42 NONAME
+ pj_stun_get_attr_name @ 43 NONAME
+ pj_stun_get_class_name @ 44 NONAME
+ pj_stun_get_err_reason @ 45 NONAME
+ pj_stun_get_method_name @ 46 NONAME
+ pj_stun_get_nat_name @ 47 NONAME
+ pj_stun_msg_add_attr @ 48 NONAME
+ pj_stun_msg_add_binary_attr @ 49 NONAME
+ pj_stun_msg_add_empty_attr @ 50 NONAME
+ pj_stun_msg_add_errcode_attr @ 51 NONAME
+ pj_stun_msg_add_msgint_attr @ 52 NONAME
+ pj_stun_msg_add_sockaddr_attr @ 53 NONAME
+ pj_stun_msg_add_string_attr @ 54 NONAME
+ pj_stun_msg_add_uint64_attr @ 55 NONAME
+ pj_stun_msg_add_uint_attr @ 56 NONAME
+ pj_stun_msg_add_unknown_attr @ 57 NONAME
+ pj_stun_msg_check @ 58 NONAME
+ pj_stun_msg_create @ 59 NONAME
+ pj_stun_msg_create_response @ 60 NONAME
+ pj_stun_msg_decode @ 61 NONAME
+ pj_stun_msg_destroy_tdata @ 62 NONAME
+ pj_stun_msg_dump @ 63 NONAME
+ pj_stun_msg_encode @ 64 NONAME
+ pj_stun_msg_find_attr @ 65 NONAME
+ pj_stun_msgint_attr_create @ 66 NONAME
+ pj_stun_session_cancel_req @ 67 NONAME
+ pj_stun_session_create @ 68 NONAME
+ pj_stun_session_create_ind @ 69 NONAME
+ pj_stun_session_create_req @ 70 NONAME
+ pj_stun_session_create_res @ 71 NONAME
+ pj_stun_session_destroy @ 72 NONAME
+ pj_stun_session_get_user_data @ 73 NONAME
+ pj_stun_session_on_rx_pkt @ 74 NONAME
+ pj_stun_session_retransmit_req @ 75 NONAME
+ pj_stun_session_send_msg @ 76 NONAME
+ pj_stun_session_set_credential @ 77 NONAME
+ pj_stun_session_set_server_name @ 78 NONAME
+ pj_stun_session_set_user_data @ 79 NONAME
+ pj_stun_set_padding_char @ 80 NONAME
+ pj_stun_sockaddr_attr_create @ 81 NONAME
+ pj_stun_string_attr_create @ 82 NONAME
+ pj_stun_uint64_attr_create @ 83 NONAME
+ pj_stun_uint_attr_create @ 84 NONAME
+ pj_stun_unknown_attr_create @ 85 NONAME
+ pjnath_init @ 86 NONAME
+ pjnath_perror @ 87 NONAME
diff --git a/build.symbian/pjproject.cww b/build.symbian/pjproject.cww
new file mode 100644
index 0000000..766cf8f
--- /dev/null
+++ b/build.symbian/pjproject.cww
@@ -0,0 +1,386 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<?codewarrior exportversion="1.0" ideversion="5.5" success="y" ?>
+
+<!DOCTYPE MWIDEWORKSPACE [
+<!ELEMENT MWIDEWORKSPACE (WINDOW*, COMWINDOW*)>
+<!ELEMENT WINDOW (SESSION, EDOCTYPE, PATH, FRAMELOC, FRAMESIZE, DOCKINFO)>
+<!ELEMENT COMWINDOW (SESSION, CLSID, OWNERPROJECT, DATA, FRAMELOC, FRAMESIZE, DOCKINFO)>
+<!ELEMENT SESSION (#PCDATA)>
+<!ELEMENT EDOCTYPE (#PCDATA)>
+<!ELEMENT DEFAULT (#PCDATA)>
+<!ELEMENT MAXIMIZED (#PCDATA)>
+<!ELEMENT PATH (#PCDATA)>
+<!ATTLIST PATH USERELATIVEPATHS (true | false) "true">
+<!ELEMENT FRAMELOC (X, Y)>
+<!ELEMENT X (#PCDATA)>
+<!ELEMENT Y (#PCDATA)>
+<!ELEMENT FRAMESIZE (W, H)>
+<!ELEMENT W (#PCDATA)>
+<!ELEMENT H (#PCDATA)>
+<!ELEMENT DOCKINFO (STATUS, ROW, COLUMN, DOCKBARID, PCTWIDTH, HGT, GROUPID)>
+<!ELEMENT STATUS (#PCDATA)>
+<!ELEMENT ROW (#PCDATA)>
+<!ELEMENT COLUMN (#PCDATA)>
+<!ELEMENT DOCKBARID (#PCDATA)>
+<!ELEMENT PCTWIDTH (#PCDATA)>
+<!ELEMENT HGT (#PCDATA)>
+<!ELEMENT GROUPID (GIDHIGHPART, GIDLOWPART)>
+<!ELEMENT GIDHIGHPART (#PCDATA)>
+<!ELEMENT GIDLOWPART (#PCDATA)>
+<!ELEMENT CLSID (#PCDATA)>
+<!ELEMENT OWNERPROJECT (#PCDATA)>
+<!ATTLIST OWNERPROJECT USERELATIVEPATHS (true | false) "true">
+<!ELEMENT DATA (#PCDATA)>
+<!ATTLIST DATA BINARYFORMAT (true | false) "true">
+]>
+
+<MWIDEWORKSPACE>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <DEFAULT>true</DEFAULT>
+ <PATH USERELATIVEPATHS = "true">pjlib.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">pjlib_util.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">pjnath.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">null_audio.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">pjsdp.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">pjmedia.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">pjsip.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">pjsip_simple.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">pjsip_ua.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">pjsua_lib.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>0</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">symbian_ua.mcp</PATH>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>347</W>
+ <H>128</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>1</STATUS>
+ <ROW>0</ROW>
+ <COLUMN>0</COLUMN>
+ <DOCKBARID>59420</DOCKBARID>
+ <PCTWIDTH>1.000000</PCTWIDTH>
+ <HGT>350</HGT>
+ <GROUPID>
+ <GIDHIGHPART>4294967294</GIDHIGHPART>
+ <GIDLOWPART>4294967294</GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-2147483648</SESSION>
+ <EDOCTYPE>20</EDOCTYPE>
+ <FRAMELOC>
+ <X>4</X>
+ <Y>23</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>1464</W>
+ <H>3681</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>0</STATUS>
+ <ROW></ROW>
+ <COLUMN></COLUMN>
+ <DOCKBARID></DOCKBARID>
+ <PCTWIDTH></PCTWIDTH>
+ <HGT></HGT>
+ <GROUPID>
+ <GIDHIGHPART></GIDHIGHPART>
+ <GIDLOWPART></GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-2147483648</SESSION>
+ <EDOCTYPE>36</EDOCTYPE>
+ <FRAMELOC>
+ <X>4</X>
+ <Y>23</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>366</W>
+ <H>354</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>0</STATUS>
+ <ROW></ROW>
+ <COLUMN></COLUMN>
+ <DOCKBARID></DOCKBARID>
+ <PCTWIDTH></PCTWIDTH>
+ <HGT></HGT>
+ <GROUPID>
+ <GIDHIGHPART></GIDHIGHPART>
+ <GIDLOWPART></GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-2147483648</SESSION>
+ <EDOCTYPE>23</EDOCTYPE>
+ <FRAMELOC>
+ <X>6</X>
+ <Y>81</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>566</W>
+ <H>477</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>0</STATUS>
+ <ROW></ROW>
+ <COLUMN></COLUMN>
+ <DOCKBARID></DOCKBARID>
+ <PCTWIDTH></PCTWIDTH>
+ <HGT></HGT>
+ <GROUPID>
+ <GIDHIGHPART></GIDHIGHPART>
+ <GIDLOWPART></GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+</MWIDEWORKSPACE>
diff --git a/build.symbian/pjsdp.mmp b/build.symbian/pjsdp.mmp
new file mode 100644
index 0000000..e165704
--- /dev/null
+++ b/build.symbian/pjsdp.mmp
@@ -0,0 +1,46 @@
+#if defined(PJ_BUILD_DLL)
+TARGET pjsdp.dll
+TARGETTYPE dll
+UID 0x0 0xA0000006
+
+CAPABILITY None
+LIBRARY pjlib_util.lib pjlib.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\pjsdp.def
+
+#else
+
+TARGET pjsdp.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjmedia\src\pjmedia
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Must compile as C++, otherwise exception would not work
+OPTION CW -lang c++
+OPTION ARMCC --cpp --gnu
+OPTION GCC -x c++
+OPTION GCCE -x c++
+
+//
+// Platform independent source
+//
+SOURCE errno.c
+SOURCE sdp_wrap.cpp
+SOURCE sdp_cmp.c
+SOURCE sdp_neg.c
+
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+SYSTEMINCLUDE ..\pjmedia\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
diff --git a/build.symbian/pjsdpU.def b/build.symbian/pjsdpU.def
new file mode 100644
index 0000000..569193d
--- /dev/null
+++ b/build.symbian/pjsdpU.def
@@ -0,0 +1,45 @@
+EXPORTS
+ pjmedia_sdp_attr_add @ 1 NONAME
+ pjmedia_sdp_attr_clone @ 2 NONAME
+ pjmedia_sdp_attr_create @ 3 NONAME
+ pjmedia_sdp_attr_find @ 4 NONAME
+ pjmedia_sdp_attr_find2 @ 5 NONAME
+ pjmedia_sdp_attr_get_fmtp @ 6 NONAME
+ pjmedia_sdp_attr_get_rtcp @ 7 NONAME
+ pjmedia_sdp_attr_get_rtpmap @ 8 NONAME
+ pjmedia_sdp_attr_remove @ 9 NONAME
+ pjmedia_sdp_attr_remove_all @ 10 NONAME
+ pjmedia_sdp_attr_to_rtpmap @ 11 NONAME
+ pjmedia_sdp_conn_clone @ 12 NONAME
+ pjmedia_sdp_media_add_attr @ 13 NONAME
+ pjmedia_sdp_media_clone @ 14 NONAME
+ pjmedia_sdp_media_cmp @ 15 NONAME
+ pjmedia_sdp_media_find_attr @ 16 NONAME
+ pjmedia_sdp_media_find_attr2 @ 17 NONAME
+ pjmedia_sdp_media_remove_all_attr @ 18 NONAME
+ pjmedia_sdp_media_remove_attr @ 19 NONAME
+ pjmedia_sdp_neg_cancel_offer @ 20 NONAME
+ pjmedia_sdp_neg_create_w_local_offer @ 21 NONAME
+ pjmedia_sdp_neg_create_w_remote_offer @ 22 NONAME
+ pjmedia_sdp_neg_get_active_local @ 23 NONAME
+ pjmedia_sdp_neg_get_active_remote @ 24 NONAME
+ pjmedia_sdp_neg_get_neg_local @ 25 NONAME
+ pjmedia_sdp_neg_get_neg_remote @ 26 NONAME
+ pjmedia_sdp_neg_get_state @ 27 NONAME
+ pjmedia_sdp_neg_has_local_answer @ 28 NONAME
+ pjmedia_sdp_neg_modify_local_offer @ 29 NONAME
+ pjmedia_sdp_neg_negotiate @ 30 NONAME
+ pjmedia_sdp_neg_send_local_offer @ 31 NONAME
+ pjmedia_sdp_neg_set_local_answer @ 32 NONAME
+ pjmedia_sdp_neg_set_prefer_remote_codec_order @ 33 NONAME
+ pjmedia_sdp_neg_set_remote_answer @ 34 NONAME
+ pjmedia_sdp_neg_set_remote_offer @ 35 NONAME
+ pjmedia_sdp_neg_state_str @ 36 NONAME
+ pjmedia_sdp_neg_was_answer_remote @ 37 NONAME
+ pjmedia_sdp_parse @ 38 NONAME
+ pjmedia_sdp_print @ 39 NONAME
+ pjmedia_sdp_rtpmap_to_attr @ 40 NONAME
+ pjmedia_sdp_session_clone @ 41 NONAME
+ pjmedia_sdp_session_cmp @ 42 NONAME
+ pjmedia_sdp_validate @ 43 NONAME
+ pjmedia_strerror @ 44 NONAME
diff --git a/build.symbian/pjsip.mmp b/build.symbian/pjsip.mmp
new file mode 100644
index 0000000..1fd7440
--- /dev/null
+++ b/build.symbian/pjsip.mmp
@@ -0,0 +1,69 @@
+#if defined(PJ_BUILD_DLL)
+
+TARGET pjsip.dll
+TARGETTYPE dll
+
+UID 0x0 0xA0000007
+
+
+CAPABILITY None
+LIBRARY pjsdp.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\pjsip.def
+
+#else
+
+TARGET pjsip.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjsip\src\pjsip
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Must compile as C++, otherwise exception would not work
+OPTION CW -lang c++
+OPTION ARMCC --cpp --gnu
+OPTION GCC -x c++
+OPTION GCCE -x c++
+
+// PJSIP-CORE files
+
+//SOURCE sip_auth_aka.c
+SOURCE sip_auth_client.c
+SOURCE sip_auth_msg.c
+SOURCE sip_auth_parser_wrap.cpp
+SOURCE sip_auth_server.c
+SOURCE sip_config.c
+SOURCE sip_dialog_wrap.cpp
+SOURCE sip_endpoint_wrap.cpp
+SOURCE sip_errno.c
+SOURCE sip_msg.c
+SOURCE sip_multipart.c
+SOURCE sip_parser_wrap.cpp
+SOURCE sip_resolve.c
+SOURCE sip_tel_uri_wrap.cpp
+SOURCE sip_transaction.c
+SOURCE sip_transport_wrap.cpp
+SOURCE sip_transport_loop.c
+SOURCE sip_transport_tcp.c
+SOURCE sip_transport_udp.c
+SOURCE sip_transport_tls.c
+SOURCE sip_ua_layer.c
+SOURCE sip_uri.c
+SOURCE sip_util_wrap.cpp
+SOURCE sip_util_proxy_wrap.cpp
+SOURCE sip_util_statefull.c
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+SYSTEMINCLUDE ..\pjsip\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+
diff --git a/build.symbian/pjsipU.def b/build.symbian/pjsipU.def
new file mode 100644
index 0000000..68d31eb
--- /dev/null
+++ b/build.symbian/pjsipU.def
@@ -0,0 +1,280 @@
+EXPORTS
+ pjsip_accept_hdr_create @ 1 NONAME
+ pjsip_accept_hdr_init @ 2 NONAME
+ pjsip_ack_method @ 3 NONAME
+ pjsip_allow_hdr_create @ 4 NONAME
+ pjsip_allow_hdr_init @ 5 NONAME
+ pjsip_auth_clt_clone @ 6 NONAME
+ pjsip_auth_clt_get_prefs @ 7 NONAME
+ pjsip_auth_clt_init @ 8 NONAME
+ pjsip_auth_clt_init_req @ 9 NONAME
+ pjsip_auth_clt_reinit_req @ 10 NONAME
+ pjsip_auth_clt_set_credentials @ 11 NONAME
+ pjsip_auth_clt_set_prefs @ 12 NONAME
+ pjsip_auth_create_digest @ 13 NONAME
+ pjsip_auth_deinit_parser @ 14 NONAME
+ pjsip_auth_init_parser @ 15 NONAME
+ pjsip_auth_srv_challenge @ 16 NONAME
+ pjsip_auth_srv_init @ 17 NONAME
+ pjsip_auth_srv_verify @ 18 NONAME
+ pjsip_authorization_hdr_create @ 19 NONAME
+ pjsip_bye_method @ 20 NONAME
+ pjsip_calculate_branch_id @ 21 NONAME
+ pjsip_cancel_method @ 22 NONAME
+ pjsip_cid_hdr_create @ 23 NONAME
+ pjsip_cid_hdr_init @ 24 NONAME
+ pjsip_clen_hdr_create @ 25 NONAME
+ pjsip_clen_hdr_init @ 26 NONAME
+ pjsip_clone_text_data @ 27 NONAME
+ pjsip_concat_param_imp @ 28 NONAME
+ pjsip_contact_hdr_create @ 29 NONAME
+ pjsip_contact_hdr_init @ 30 NONAME
+ pjsip_cred_info_dup @ 31 NONAME
+ pjsip_cseq_hdr_create @ 32 NONAME
+ pjsip_cseq_hdr_init @ 33 NONAME
+ pjsip_ctype_hdr_create @ 34 NONAME
+ pjsip_ctype_hdr_init @ 35 NONAME
+ pjsip_dlg_add_usage @ 36 NONAME
+ pjsip_dlg_create_request @ 37 NONAME
+ pjsip_dlg_create_response @ 38 NONAME
+ pjsip_dlg_create_uac @ 39 NONAME
+ pjsip_dlg_create_uas @ 40 NONAME
+ pjsip_dlg_dec_lock @ 41 NONAME
+ pjsip_dlg_dec_session @ 42 NONAME
+ pjsip_dlg_fork @ 43 NONAME
+ pjsip_dlg_get_mod_data @ 44 NONAME
+ pjsip_dlg_inc_lock @ 45 NONAME
+ pjsip_dlg_inc_session @ 46 NONAME
+ pjsip_dlg_modify_response @ 47 NONAME
+ pjsip_dlg_respond @ 48 NONAME
+ pjsip_dlg_send_request @ 49 NONAME
+ pjsip_dlg_send_response @ 50 NONAME
+ pjsip_dlg_set_mod_data @ 51 NONAME
+ pjsip_dlg_set_route_set @ 52 NONAME
+ pjsip_dlg_set_transport @ 53 NONAME
+ pjsip_dlg_terminate @ 54 NONAME
+ pjsip_dlg_try_inc_lock @ 55 NONAME
+ pjsip_endpt_acquire_transport @ 56 NONAME
+ pjsip_endpt_add_capability @ 57 NONAME
+ pjsip_endpt_cancel_timer @ 58 NONAME
+ pjsip_endpt_create @ 59 NONAME
+ pjsip_endpt_create_ack @ 60 NONAME
+ pjsip_endpt_create_cancel @ 61 NONAME
+ pjsip_endpt_create_pool @ 62 NONAME
+ pjsip_endpt_create_request @ 63 NONAME
+ pjsip_endpt_create_request_from_hdr @ 64 NONAME
+ pjsip_endpt_create_request_fwd @ 65 NONAME
+ pjsip_endpt_create_resolver @ 66 NONAME
+ pjsip_endpt_create_response @ 67 NONAME
+ pjsip_endpt_create_response_fwd @ 68 NONAME
+ pjsip_endpt_create_tdata @ 69 NONAME
+ pjsip_endpt_destroy @ 70 NONAME
+ pjsip_endpt_dump @ 71 NONAME
+ pjsip_endpt_get_capability @ 72 NONAME
+ pjsip_endpt_get_ioqueue @ 73 NONAME
+ pjsip_endpt_get_request_headers @ 74 NONAME
+ pjsip_endpt_get_resolver @ 75 NONAME
+ pjsip_endpt_get_timer_heap @ 76 NONAME
+ pjsip_endpt_get_tpmgr @ 77 NONAME
+ pjsip_endpt_handle_events @ 78 NONAME
+ pjsip_endpt_handle_events2 @ 79 NONAME
+ pjsip_endpt_has_capability @ 80 NONAME
+ pjsip_endpt_log_error @ 81 NONAME
+ pjsip_endpt_name @ 82 NONAME
+ pjsip_endpt_register_module @ 83 NONAME
+ pjsip_endpt_release_pool @ 84 NONAME
+ pjsip_endpt_resolve @ 85 NONAME
+ pjsip_endpt_respond @ 86 NONAME
+ pjsip_endpt_respond_stateless @ 87 NONAME
+ pjsip_endpt_schedule_timer @ 88 NONAME
+ pjsip_endpt_send_raw @ 89 NONAME
+ pjsip_endpt_send_raw_to_uri @ 90 NONAME
+ pjsip_endpt_send_request @ 91 NONAME
+ pjsip_endpt_send_request_stateless @ 92 NONAME
+ pjsip_endpt_send_response @ 93 NONAME
+ pjsip_endpt_send_response2 @ 94 NONAME
+ pjsip_endpt_set_resolver @ 95 NONAME
+ pjsip_endpt_unregister_module @ 96 NONAME
+ pjsip_event_str @ 97 NONAME
+ pjsip_expires_hdr_create @ 98 NONAME
+ pjsip_expires_hdr_init @ 99 NONAME
+ pjsip_find_msg @ 100 NONAME
+ pjsip_from_hdr_create @ 101 NONAME
+ pjsip_from_hdr_init @ 102 NONAME
+ pjsip_fromto_hdr_set_from @ 103 NONAME
+ pjsip_fromto_hdr_set_to @ 104 NONAME
+ pjsip_generic_array_hdr_create @ 105 NONAME
+ pjsip_generic_array_hdr_init @ 106 NONAME
+ pjsip_generic_int_hdr_create @ 107 NONAME
+ pjsip_generic_int_hdr_init @ 108 NONAME
+ pjsip_generic_string_hdr_create @ 109 NONAME
+ pjsip_generic_string_hdr_init @ 110 NONAME
+ pjsip_generic_string_hdr_init2 @ 111 NONAME
+ pjsip_get_ack_method @ 112 NONAME
+ pjsip_get_bye_method @ 113 NONAME
+ pjsip_get_cancel_method @ 114 NONAME
+ pjsip_get_invite_method @ 115 NONAME
+ pjsip_get_options_method @ 116 NONAME
+ pjsip_get_register_method @ 117 NONAME
+ pjsip_get_request_dest @ 118 NONAME
+ pjsip_get_response_addr @ 119 NONAME
+ pjsip_get_status_text @ 120 NONAME
+ pjsip_hdr_clone @ 121 NONAME
+ pjsip_hdr_print_on @ 122 NONAME
+ pjsip_hdr_shallow_clone @ 123 NONAME
+ pjsip_invite_method @ 124 NONAME
+ pjsip_loop_set_delay @ 125 NONAME
+ pjsip_loop_set_discard @ 126 NONAME
+ pjsip_loop_set_failure @ 127 NONAME
+ pjsip_loop_set_recv_delay @ 128 NONAME
+ pjsip_loop_set_send_callback_delay @ 129 NONAME
+ pjsip_loop_start @ 130 NONAME
+ pjsip_max_fwd_hdr_create @ 131 NONAME
+ pjsip_max_fwd_hdr_init @ 132 NONAME
+ pjsip_method_cmp @ 133 NONAME
+ pjsip_method_copy @ 134 NONAME
+ pjsip_method_creates_dialog @ 135 NONAME
+ pjsip_method_init @ 136 NONAME
+ pjsip_method_init_np @ 137 NONAME
+ pjsip_method_set @ 138 NONAME
+ pjsip_min_expires_hdr_create @ 139 NONAME
+ pjsip_min_expires_hdr_init @ 140 NONAME
+ pjsip_msg_body_clone @ 141 NONAME
+ pjsip_msg_body_copy @ 142 NONAME
+ pjsip_msg_body_create @ 143 NONAME
+ pjsip_msg_clone @ 144 NONAME
+ pjsip_msg_create @ 145 NONAME
+ pjsip_msg_find_hdr @ 146 NONAME
+ pjsip_msg_find_hdr_by_name @ 147 NONAME
+ pjsip_msg_find_remove_hdr @ 148 NONAME
+ pjsip_msg_print @ 149 NONAME
+ pjsip_name_addr_assign @ 150 NONAME
+ pjsip_name_addr_create @ 151 NONAME
+ pjsip_name_addr_init @ 152 NONAME
+ pjsip_options_method @ 153 NONAME
+ pjsip_param_cfind @ 154 NONAME
+ pjsip_param_clone @ 155 NONAME
+ pjsip_param_find @ 156 NONAME
+ pjsip_param_print_on @ 157 NONAME
+ pjsip_param_shallow_clone @ 158 NONAME
+ pjsip_parse_end_hdr_imp @ 159 NONAME
+ pjsip_parse_hdr @ 160 NONAME
+ pjsip_parse_msg @ 161 NONAME
+ pjsip_parse_param_imp @ 162 NONAME
+ pjsip_parse_rdata @ 163 NONAME
+ pjsip_parse_status_line @ 164 NONAME
+ pjsip_parse_uri @ 165 NONAME
+ pjsip_parse_uri_param_imp @ 166 NONAME
+ pjsip_parser_const @ 167 NONAME
+ pjsip_print_text_body @ 168 NONAME
+ pjsip_process_route_set @ 169 NONAME
+ pjsip_proxy_authenticate_hdr_create @ 170 NONAME
+ pjsip_proxy_authorization_hdr_create @ 171 NONAME
+ pjsip_rdata_get_dlg @ 172 NONAME
+ pjsip_rdata_get_tsx @ 173 NONAME
+ pjsip_register_hdr_parser @ 174 NONAME
+ pjsip_register_method @ 175 NONAME
+ pjsip_register_uri_parser @ 176 NONAME
+ pjsip_require_hdr_create @ 177 NONAME
+ pjsip_require_hdr_init @ 178 NONAME
+ pjsip_resolve @ 179 NONAME
+ pjsip_resolver_create @ 180 NONAME
+ pjsip_resolver_destroy @ 181 NONAME
+ pjsip_resolver_get_resolver @ 182 NONAME
+ pjsip_resolver_set_resolver @ 183 NONAME
+ pjsip_retry_after_hdr_create @ 184 NONAME
+ pjsip_retry_after_hdr_init @ 185 NONAME
+ pjsip_role_name @ 186 NONAME
+ pjsip_route_hdr_create @ 187 NONAME
+ pjsip_route_hdr_init @ 188 NONAME
+ pjsip_routing_hdr_set_route @ 189 NONAME
+ pjsip_routing_hdr_set_rr @ 190 NONAME
+ pjsip_rr_hdr_create @ 191 NONAME
+ pjsip_rr_hdr_init @ 192 NONAME
+ pjsip_rx_data_get_info @ 193 NONAME
+ pjsip_sip_uri_assign @ 194 NONAME
+ pjsip_sip_uri_create @ 195 NONAME
+ pjsip_sip_uri_init @ 196 NONAME
+ pjsip_sip_uri_set_secure @ 197 NONAME
+ pjsip_strerror @ 198 NONAME
+ pjsip_supported_hdr_create @ 199 NONAME
+ pjsip_supported_hdr_init @ 200 NONAME
+ pjsip_tcp_transport_start @ 201 NONAME
+ pjsip_tcp_transport_start2 @ 202 NONAME
+ pjsip_tel_nb_cmp @ 203 NONAME
+ pjsip_tel_uri_create @ 204 NONAME
+ pjsip_to_hdr_create @ 205 NONAME
+ pjsip_to_hdr_init @ 206 NONAME
+ pjsip_tpmgr_acquire_transport @ 207 NONAME
+ pjsip_tpmgr_create @ 208 NONAME
+ pjsip_tpmgr_destroy @ 209 NONAME
+ pjsip_tpmgr_dump_transports @ 210 NONAME
+ pjsip_tpmgr_find_local_addr @ 211 NONAME
+ pjsip_tpmgr_get_transport_count @ 212 NONAME
+ pjsip_tpmgr_receive_packet @ 213 NONAME
+ pjsip_tpmgr_register_tpfactory @ 214 NONAME
+ pjsip_tpmgr_send_raw @ 215 NONAME
+ pjsip_tpmgr_unregister_tpfactory @ 216 NONAME
+ pjsip_tpselector_add_ref @ 217 NONAME
+ pjsip_tpselector_dec_ref @ 218 NONAME
+ pjsip_transport_add_ref @ 219 NONAME
+ pjsip_transport_dec_ref @ 220 NONAME
+ pjsip_transport_destroy @ 221 NONAME
+ pjsip_transport_get_default_port_for_type @ 222 NONAME
+ pjsip_transport_get_flag_from_type @ 223 NONAME
+ pjsip_transport_get_type_desc @ 224 NONAME
+ pjsip_transport_get_type_from_flag @ 225 NONAME
+ pjsip_transport_get_type_from_name @ 226 NONAME
+ pjsip_transport_get_type_name @ 227 NONAME
+ pjsip_transport_register @ 228 NONAME
+ pjsip_transport_register_type @ 229 NONAME
+ pjsip_transport_send @ 230 NONAME
+ pjsip_transport_shutdown @ 231 NONAME
+ pjsip_transport_type_get_af @ 232 NONAME
+ pjsip_tsx_create_key @ 233 NONAME
+ pjsip_tsx_create_uac @ 234 NONAME
+ pjsip_tsx_create_uas @ 235 NONAME
+ pjsip_tsx_get_dlg @ 236 NONAME
+ pjsip_tsx_layer_destroy @ 237 NONAME
+ pjsip_tsx_layer_dump @ 238 NONAME
+ pjsip_tsx_layer_find_tsx @ 239 NONAME
+ pjsip_tsx_layer_get_tsx_count @ 240 NONAME
+ pjsip_tsx_layer_init_module @ 241 NONAME
+ pjsip_tsx_layer_instance @ 242 NONAME
+ pjsip_tsx_recv_msg @ 243 NONAME
+ pjsip_tsx_retransmit_no_state @ 244 NONAME
+ pjsip_tsx_send_msg @ 245 NONAME
+ pjsip_tsx_set_transport @ 246 NONAME
+ pjsip_tsx_state_str @ 247 NONAME
+ pjsip_tsx_stop_retransmit @ 248 NONAME
+ pjsip_tsx_terminate @ 249 NONAME
+ pjsip_tx_data_add_ref @ 250 NONAME
+ pjsip_tx_data_create @ 251 NONAME
+ pjsip_tx_data_dec_ref @ 252 NONAME
+ pjsip_tx_data_get_info @ 253 NONAME
+ pjsip_tx_data_invalidate_msg @ 254 NONAME
+ pjsip_tx_data_is_valid @ 255 NONAME
+ pjsip_tx_data_set_transport @ 256 NONAME
+ pjsip_ua_destroy @ 257 NONAME
+ pjsip_ua_dump @ 258 NONAME
+ pjsip_ua_find_dialog @ 259 NONAME
+ pjsip_ua_get_dlg_set_count @ 260 NONAME
+ pjsip_ua_get_endpt @ 261 NONAME
+ pjsip_ua_init_module @ 262 NONAME
+ pjsip_ua_instance @ 263 NONAME
+ pjsip_ua_register_dlg @ 264 NONAME
+ pjsip_ua_unregister_dlg @ 265 NONAME
+ pjsip_udp_transport_attach @ 266 NONAME
+ pjsip_udp_transport_attach2 @ 267 NONAME
+ pjsip_udp_transport_get_socket @ 268 NONAME
+ pjsip_udp_transport_pause @ 269 NONAME
+ pjsip_udp_transport_restart @ 270 NONAME
+ pjsip_udp_transport_start @ 271 NONAME
+ pjsip_udp_transport_start6 @ 272 NONAME
+ pjsip_unsupported_hdr_create @ 273 NONAME
+ pjsip_unsupported_hdr_init @ 274 NONAME
+ pjsip_via_hdr_create @ 275 NONAME
+ pjsip_via_hdr_init @ 276 NONAME
+ pjsip_warning_hdr_create @ 277 NONAME
+ pjsip_warning_hdr_create_from_status @ 278 NONAME
+ pjsip_www_authenticate_hdr_create @ 279 NONAME
diff --git a/build.symbian/pjsip_simple.mmp b/build.symbian/pjsip_simple.mmp
new file mode 100644
index 0000000..9b83a9d
--- /dev/null
+++ b/build.symbian/pjsip_simple.mmp
@@ -0,0 +1,54 @@
+#if defined(PJ_BUILD_DLL)
+
+TARGET pjsip_simple.dll
+TARGETTYPE dll
+
+UID 0x0 0xA0000008
+
+
+CAPABILITY None
+LIBRARY pjsip.lib pjsdp.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\pjsip_simple.def
+
+#else
+
+TARGET pjsip_simple.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjsip\src\pjsip-simple
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Must compile as C++, otherwise exception would not work
+OPTION CW -lang c++
+OPTION ARMCC --cpp --gnu
+OPTION GCC -x c++
+OPTION GCCE -x c++
+
+// PJSIP-SIMPLE files
+
+SOURCE errno.c
+SOURCE evsub.c
+SOURCE evsub_msg.c
+SOURCE iscomposing.c
+SOURCE mwi.c
+SOURCE pidf.c
+SOURCE presence.c
+SOURCE presence_body.c
+SOURCE publishc.c
+SOURCE rpid.c
+SOURCE xpidf.c
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+SYSTEMINCLUDE ..\pjsip\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
diff --git a/build.symbian/pjsip_simpleU.def b/build.symbian/pjsip_simpleU.def
new file mode 100644
index 0000000..7e41793
--- /dev/null
+++ b/build.symbian/pjsip_simpleU.def
@@ -0,0 +1,96 @@
+EXPORTS
+ pjpidf_create @ 1 NONAME
+ pjpidf_parse @ 2 NONAME
+ pjpidf_pres_add_note @ 3 NONAME
+ pjpidf_pres_add_tuple @ 4 NONAME
+ pjpidf_pres_construct @ 5 NONAME
+ pjpidf_pres_find_tuple @ 6 NONAME
+ pjpidf_pres_get_first_note @ 7 NONAME
+ pjpidf_pres_get_first_tuple @ 8 NONAME
+ pjpidf_pres_get_next_note @ 9 NONAME
+ pjpidf_pres_get_next_tuple @ 10 NONAME
+ pjpidf_pres_remove_tuple @ 11 NONAME
+ pjpidf_print @ 12 NONAME
+ pjpidf_status_construct @ 13 NONAME
+ pjpidf_status_is_basic_open @ 14 NONAME
+ pjpidf_status_set_basic_open @ 15 NONAME
+ pjpidf_tuple_add_note @ 16 NONAME
+ pjpidf_tuple_construct @ 17 NONAME
+ pjpidf_tuple_get_contact @ 18 NONAME
+ pjpidf_tuple_get_contact_prio @ 19 NONAME
+ pjpidf_tuple_get_first_note @ 20 NONAME
+ pjpidf_tuple_get_id @ 21 NONAME
+ pjpidf_tuple_get_next_note @ 22 NONAME
+ pjpidf_tuple_get_status @ 23 NONAME
+ pjpidf_tuple_get_timestamp @ 24 NONAME
+ pjpidf_tuple_set_contact @ 25 NONAME
+ pjpidf_tuple_set_contact_prio @ 26 NONAME
+ pjpidf_tuple_set_id @ 27 NONAME
+ pjpidf_tuple_set_timestamp @ 28 NONAME
+ pjpidf_tuple_set_timestamp_np @ 29 NONAME
+ pjrpid_add_element @ 30 NONAME
+ pjrpid_element_dup @ 31 NONAME
+ pjrpid_get_element @ 32 NONAME
+ pjsip_allow_events_hdr_create @ 33 NONAME
+ pjsip_event_hdr_create @ 34 NONAME
+ pjsip_evsub_accept @ 35 NONAME
+ pjsip_evsub_create_uac @ 36 NONAME
+ pjsip_evsub_create_uas @ 37 NONAME
+ pjsip_evsub_current_notify @ 38 NONAME
+ pjsip_evsub_get_allow_events_hdr @ 39 NONAME
+ pjsip_evsub_get_mod_data @ 40 NONAME
+ pjsip_evsub_get_state @ 41 NONAME
+ pjsip_evsub_get_state_name @ 42 NONAME
+ pjsip_evsub_init_module @ 43 NONAME
+ pjsip_evsub_init_parser @ 44 NONAME
+ pjsip_evsub_initiate @ 45 NONAME
+ pjsip_evsub_instance @ 46 NONAME
+ pjsip_evsub_notify @ 47 NONAME
+ pjsip_evsub_register_pkg @ 48 NONAME
+ pjsip_evsub_send_request @ 49 NONAME
+ pjsip_evsub_set_mod_data @ 50 NONAME
+ pjsip_evsub_terminate @ 51 NONAME
+ pjsip_get_notify_method @ 52 NONAME
+ pjsip_get_subscribe_method @ 53 NONAME
+ pjsip_iscomposing_create_body @ 54 NONAME
+ pjsip_iscomposing_create_xml @ 55 NONAME
+ pjsip_iscomposing_parse @ 56 NONAME
+ pjsip_notify_method @ 57 NONAME
+ pjsip_pres_accept @ 58 NONAME
+ pjsip_pres_create_pidf @ 59 NONAME
+ pjsip_pres_create_uac @ 60 NONAME
+ pjsip_pres_create_uas @ 61 NONAME
+ pjsip_pres_create_xpidf @ 62 NONAME
+ pjsip_pres_current_notify @ 63 NONAME
+ pjsip_pres_get_status @ 64 NONAME
+ pjsip_pres_init_module @ 65 NONAME
+ pjsip_pres_initiate @ 66 NONAME
+ pjsip_pres_instance @ 67 NONAME
+ pjsip_pres_notify @ 68 NONAME
+ pjsip_pres_parse_pidf @ 69 NONAME
+ pjsip_pres_parse_xpidf @ 70 NONAME
+ pjsip_pres_send_request @ 71 NONAME
+ pjsip_pres_set_status @ 72 NONAME
+ pjsip_pres_terminate @ 73 NONAME
+ pjsip_publishc_create @ 74 NONAME
+ pjsip_publishc_destroy @ 75 NONAME
+ pjsip_publishc_get_pool @ 76 NONAME
+ pjsip_publishc_init @ 77 NONAME
+ pjsip_publishc_init_module @ 78 NONAME
+ pjsip_publishc_publish @ 79 NONAME
+ pjsip_publishc_send @ 80 NONAME
+ pjsip_publishc_set_credentials @ 81 NONAME
+ pjsip_publishc_set_route_set @ 82 NONAME
+ pjsip_publishc_unpublish @ 83 NONAME
+ pjsip_publishc_update_expires @ 84 NONAME
+ pjsip_sub_state_hdr_create @ 85 NONAME
+ pjsip_subscribe_method @ 86 NONAME
+ pjsip_tsx_get_evsub @ 87 NONAME
+ pjsipsimple_strerror @ 88 NONAME
+ pjxpidf_create @ 89 NONAME
+ pjxpidf_get_status @ 90 NONAME
+ pjxpidf_get_uri @ 91 NONAME
+ pjxpidf_parse @ 92 NONAME
+ pjxpidf_print @ 93 NONAME
+ pjxpidf_set_status @ 94 NONAME
+ pjxpidf_set_uri @ 95 NONAME
diff --git a/build.symbian/pjsip_ua.mmp b/build.symbian/pjsip_ua.mmp
new file mode 100644
index 0000000..609c0a3
--- /dev/null
+++ b/build.symbian/pjsip_ua.mmp
@@ -0,0 +1,52 @@
+#if defined(PJ_BUILD_DLL)
+
+TARGET pjsip_ua.dll
+TARGETTYPE dll
+
+UID 0x0 0xA0000009
+
+
+CAPABILITY None
+LIBRARY pjsip_simple.lib pjsip.lib pjsdp.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\pjsip_ua.def
+
+#else
+
+TARGET pjsip_ua.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjsip\src\pjsip-ua
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Must compile as C++, otherwise exception would not work
+OPTION CW -lang c++
+OPTION ARMCC --cpp --gnu
+OPTION GCC -x c++
+OPTION GCCE -x c++
+
+
+// PJSIP-UA files
+
+SOURCE sip_inv.c
+SOURCE sip_reg.c
+SOURCE sip_replaces.c
+SOURCE sip_xfer.c
+SOURCE sip_100rel.c
+SOURCE sip_timer.c
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+SYSTEMINCLUDE ..\pjsip\include
+SYSTEMINCLUDE ..\pjmedia\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+
diff --git a/build.symbian/pjsip_uaU.def b/build.symbian/pjsip_uaU.def
new file mode 100644
index 0000000..0c847a9
--- /dev/null
+++ b/build.symbian/pjsip_uaU.def
@@ -0,0 +1,58 @@
+EXPORTS
+ pjsip_100rel_attach @ 1 NONAME
+ pjsip_100rel_create_prack @ 2 NONAME
+ pjsip_100rel_end_session @ 3 NONAME
+ pjsip_100rel_init_module @ 4 NONAME
+ pjsip_100rel_is_reliable @ 5 NONAME
+ pjsip_100rel_on_rx_prack @ 6 NONAME
+ pjsip_100rel_send_prack @ 7 NONAME
+ pjsip_100rel_tx_response @ 8 NONAME
+ pjsip_create_sdp_body @ 9 NONAME
+ pjsip_dlg_get_inv_session @ 10 NONAME
+ pjsip_get_prack_method @ 11 NONAME
+ pjsip_get_refer_method @ 12 NONAME
+ pjsip_inv_answer @ 13 NONAME
+ pjsip_inv_create_ack @ 14 NONAME
+ pjsip_inv_create_uac @ 15 NONAME
+ pjsip_inv_create_uas @ 16 NONAME
+ pjsip_inv_end_session @ 17 NONAME
+ pjsip_inv_initial_answer @ 18 NONAME
+ pjsip_inv_invite @ 19 NONAME
+ pjsip_inv_reinvite @ 20 NONAME
+ pjsip_inv_send_msg @ 21 NONAME
+ pjsip_inv_set_sdp_answer @ 22 NONAME
+ pjsip_inv_state_name @ 23 NONAME
+ pjsip_inv_terminate @ 24 NONAME
+ pjsip_inv_update @ 25 NONAME
+ pjsip_inv_usage_init @ 26 NONAME
+ pjsip_inv_usage_instance @ 27 NONAME
+ pjsip_inv_verify_request @ 28 NONAME
+ pjsip_prack_method @ 29 NONAME
+ pjsip_refer_method @ 30 NONAME
+ pjsip_regc_add_headers @ 31 NONAME
+ pjsip_regc_create @ 32 NONAME
+ pjsip_regc_destroy @ 33 NONAME
+ pjsip_regc_get_info @ 34 NONAME
+ pjsip_regc_get_pool @ 35 NONAME
+ pjsip_regc_init @ 36 NONAME
+ pjsip_regc_register @ 37 NONAME
+ pjsip_regc_send @ 38 NONAME
+ pjsip_regc_set_credentials @ 39 NONAME
+ pjsip_regc_set_prefs @ 40 NONAME
+ pjsip_regc_set_route_set @ 41 NONAME
+ pjsip_regc_set_transport @ 42 NONAME
+ pjsip_regc_unregister @ 43 NONAME
+ pjsip_regc_unregister_all @ 44 NONAME
+ pjsip_regc_update_contact @ 45 NONAME
+ pjsip_regc_update_expires @ 46 NONAME
+ pjsip_replaces_hdr_create @ 47 NONAME
+ pjsip_replaces_init_module @ 48 NONAME
+ pjsip_replaces_verify_request @ 49 NONAME
+ pjsip_xfer_accept @ 50 NONAME
+ pjsip_xfer_create_uac @ 51 NONAME
+ pjsip_xfer_create_uas @ 52 NONAME
+ pjsip_xfer_current_notify @ 53 NONAME
+ pjsip_xfer_init_module @ 54 NONAME
+ pjsip_xfer_initiate @ 55 NONAME
+ pjsip_xfer_notify @ 56 NONAME
+ pjsip_xfer_send_request @ 57 NONAME
diff --git a/build.symbian/pjstun_client.mmp b/build.symbian/pjstun_client.mmp
new file mode 100644
index 0000000..6ca5eab
--- /dev/null
+++ b/build.symbian/pjstun_client.mmp
@@ -0,0 +1,41 @@
+TARGET pjstun_client.exe
+TARGETTYPE exe
+UID 0x0 0xA000000A
+
+OPTION ARMCC --gnu
+
+SOURCEPATH ..\pjnath\src\pjstun-client
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// PJSTUN-CLIENT files
+
+SOURCE client_main.c
+
+//SOURCE main_symbian.cpp
+
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+SYSTEMINCLUDE ..\pjnath\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+#if defined(PJ_BUILD_DLL)
+MACRO PJ_DLL
+LIBRARY pjnath.lib pjlib_util.lib pjlib.lib
+#else
+STATICLIBRARY pjnath.lib pjlib_util.lib pjlib.lib
+#endif
+
+LIBRARY esock.lib insock.lib charconv.lib euser.lib estlib.lib
+
+#ifdef WINSCW
+STATICLIBRARY eexe.lib ecrt0.lib
+#endif
+
+
+CAPABILITY None
+
diff --git a/build.symbian/pjsua_lib.mmp b/build.symbian/pjsua_lib.mmp
new file mode 100644
index 0000000..3a73018
--- /dev/null
+++ b/build.symbian/pjsua_lib.mmp
@@ -0,0 +1,55 @@
+#if defined(PJ_BUILD_DLL)
+
+TARGET pjsua_lib.dll
+TARGETTYPE dll
+
+UID 0x0 0xA000000B
+
+
+CAPABILITY None
+LIBRARY pjsip_ua.lib pjsip_simple.lib pjsip.lib pjmedia.lib null_audio.lib pjsdp.lib pjnath.lib pjlib_util.lib pjlib.lib esock.lib insock.lib charconv.lib euser.lib estlib.lib
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\pjsua_lib.def
+
+#else
+
+TARGET pjsua_lib.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjsip\src\pjsua-lib
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Must compile as C++, otherwise exception would not work
+OPTION CW -lang c++
+OPTION ARMCC --cpp --gnu
+OPTION GCC -x c++
+OPTION GCCE -x c++
+
+// PJLIB-UTIL files
+
+SOURCE pjsua_acc.c
+SOURCE pjsua_aud.c
+SOURCE pjsua_call.c
+SOURCE pjsua_core.c
+SOURCE pjsua_dump.c
+SOURCE pjsua_im.c
+SOURCE pjsua_media.c
+SOURCE pjsua_pres.c
+SOURCE pjsua_vid.c
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+SYSTEMINCLUDE ..\pjnath\include
+SYSTEMINCLUDE ..\pjmedia\include
+SYSTEMINCLUDE ..\pjsip\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+
diff --git a/build.symbian/pjsua_libU.def b/build.symbian/pjsua_libU.def
new file mode 100644
index 0000000..911efbc
--- /dev/null
+++ b/build.symbian/pjsua_libU.def
@@ -0,0 +1,122 @@
+EXPORTS
+ pjsua_acc_add @ 1 NONAME
+ pjsua_acc_add_local @ 2 NONAME
+ pjsua_acc_config_default @ 3 NONAME
+ pjsua_acc_config_dup @ 4 NONAME
+ pjsua_acc_create_request @ 5 NONAME
+ pjsua_acc_create_uac_contact @ 6 NONAME
+ pjsua_acc_create_uas_contact @ 7 NONAME
+ pjsua_acc_del @ 8 NONAME
+ pjsua_acc_enum_info @ 9 NONAME
+ pjsua_acc_find_for_incoming @ 10 NONAME
+ pjsua_acc_find_for_outgoing @ 11 NONAME
+ pjsua_acc_get_count @ 12 NONAME
+ pjsua_acc_get_default @ 13 NONAME
+ pjsua_acc_get_info @ 14 NONAME
+ pjsua_acc_is_valid @ 15 NONAME
+ pjsua_acc_modify @ 16 NONAME
+ pjsua_acc_set_default @ 17 NONAME
+ pjsua_acc_set_online_status @ 18 NONAME
+ pjsua_acc_set_online_status2 @ 19 NONAME
+ pjsua_acc_set_registration @ 20 NONAME
+ pjsua_acc_set_transport @ 21 NONAME
+ pjsua_buddy_add @ 22 NONAME
+ pjsua_buddy_config_default @ 23 NONAME
+ pjsua_buddy_del @ 24 NONAME
+ pjsua_buddy_get_info @ 25 NONAME
+ pjsua_buddy_is_valid @ 26 NONAME
+ pjsua_buddy_subscribe_pres @ 27 NONAME
+ pjsua_buddy_update_pres @ 28 NONAME
+ pjsua_call_answer @ 29 NONAME
+ pjsua_call_dial_dtmf @ 30 NONAME
+ pjsua_call_dump @ 31 NONAME
+ pjsua_call_get_conf_port @ 32 NONAME
+ pjsua_call_get_count @ 33 NONAME
+ pjsua_call_get_info @ 34 NONAME
+ pjsua_call_get_max_count @ 35 NONAME
+ pjsua_call_get_rem_nat_type @ 36 NONAME
+ pjsua_call_get_user_data @ 37 NONAME
+ pjsua_call_hangup @ 38 NONAME
+ pjsua_call_hangup_all @ 39 NONAME
+ pjsua_call_has_media @ 40 NONAME
+ pjsua_call_is_active @ 41 NONAME
+ pjsua_call_make_call @ 42 NONAME
+ pjsua_call_reinvite @ 43 NONAME
+ pjsua_call_send_im @ 44 NONAME
+ pjsua_call_send_request @ 45 NONAME
+ pjsua_call_send_typing_ind @ 46 NONAME
+ pjsua_call_set_hold @ 47 NONAME
+ pjsua_call_set_user_data @ 48 NONAME
+ pjsua_call_update @ 49 NONAME
+ pjsua_call_xfer @ 50 NONAME
+ pjsua_call_xfer_replaces @ 51 NONAME
+ pjsua_codec_get_param @ 52 NONAME
+ pjsua_codec_set_param @ 53 NONAME
+ pjsua_codec_set_priority @ 54 NONAME
+ pjsua_conf_add_port @ 55 NONAME
+ pjsua_conf_adjust_rx_level @ 56 NONAME
+ pjsua_conf_adjust_tx_level @ 57 NONAME
+ pjsua_conf_connect @ 58 NONAME
+ pjsua_conf_disconnect @ 59 NONAME
+ pjsua_conf_get_active_ports @ 60 NONAME
+ pjsua_conf_get_max_ports @ 61 NONAME
+ pjsua_conf_get_port_info @ 62 NONAME
+ pjsua_conf_get_signal_level @ 63 NONAME
+ pjsua_conf_remove_port @ 64 NONAME
+ pjsua_config_default @ 65 NONAME
+ pjsua_config_dup @ 66 NONAME
+ pjsua_create @ 67 NONAME
+ pjsua_destroy @ 68 NONAME
+ pjsua_detect_nat_type @ 69 NONAME
+ pjsua_dump @ 70 NONAME
+ pjsua_enum_accs @ 71 NONAME
+ pjsua_enum_buddies @ 72 NONAME
+ pjsua_enum_calls @ 73 NONAME
+ pjsua_enum_codecs @ 74 NONAME
+ pjsua_enum_conf_ports @ 75 NONAME
+ pjsua_enum_snd_devs @ 76 NONAME
+ pjsua_enum_transports @ 77 NONAME
+ pjsua_get_buddy_count @ 78 NONAME
+ pjsua_get_ec_tail @ 79 NONAME
+ pjsua_get_nat_type @ 80 NONAME
+ pjsua_get_pjmedia_endpt @ 81 NONAME
+ pjsua_get_pjsip_endpt @ 82 NONAME
+ pjsua_get_pool_factory @ 83 NONAME
+ pjsua_get_snd_dev @ 84 NONAME
+ pjsua_get_var @ 85 NONAME
+ pjsua_handle_events @ 86 NONAME
+ pjsua_im_send @ 87 NONAME
+ pjsua_im_typing @ 88 NONAME
+ pjsua_init @ 89 NONAME
+ pjsua_logging_config_default @ 90 NONAME
+ pjsua_logging_config_dup @ 91 NONAME
+ pjsua_media_config_default @ 92 NONAME
+ pjsua_media_transports_create @ 93 NONAME
+ pjsua_msg_data_init @ 94 NONAME
+ pjsua_perror @ 95 NONAME
+ pjsua_player_create @ 96 NONAME
+ pjsua_player_destroy @ 97 NONAME
+ pjsua_player_get_conf_port @ 98 NONAME
+ pjsua_player_get_port @ 99 NONAME
+ pjsua_player_set_pos @ 100 NONAME
+ pjsua_playlist_create @ 101 NONAME
+ pjsua_pool_create @ 102 NONAME
+ pjsua_pres_dump @ 103 NONAME
+ pjsua_reconfigure_logging @ 104 NONAME
+ pjsua_recorder_create @ 105 NONAME
+ pjsua_recorder_destroy @ 106 NONAME
+ pjsua_recorder_get_conf_port @ 107 NONAME
+ pjsua_recorder_get_port @ 108 NONAME
+ pjsua_set_ec @ 109 NONAME
+ pjsua_set_no_snd_dev @ 110 NONAME
+ pjsua_set_null_snd_dev @ 111 NONAME
+ pjsua_set_snd_dev @ 112 NONAME
+ pjsua_start @ 113 NONAME
+ pjsua_transport_close @ 114 NONAME
+ pjsua_transport_config_default @ 115 NONAME
+ pjsua_transport_config_dup @ 116 NONAME
+ pjsua_transport_create @ 117 NONAME
+ pjsua_transport_get_info @ 118 NONAME
+ pjsua_transport_register @ 119 NONAME
+ pjsua_transport_set_enable @ 120 NONAME
+ pjsua_verify_sip_url @ 121 NONAME
diff --git a/build.symbian/symbian_audio.mmp b/build.symbian/symbian_audio.mmp
new file mode 100644
index 0000000..bba9ce5
--- /dev/null
+++ b/build.symbian/symbian_audio.mmp
@@ -0,0 +1,47 @@
+#if defined(PJ_BUILD_DLL)
+
+TARGET symbian_audio.dll
+TARGETTYPE dll
+UID 0x0 0xA000000C
+
+CAPABILITY None
+LIBRARY pjlib.lib charconv.lib euser.lib estlib.lib
+LIBRARY mediaclientaudiostream.lib
+LIBRARY mediaclientaudioinputstream.lib
+
+MACRO PJ_DLL
+MACRO PJ_EXPORTING
+
+DEFFILE .\symbian_audio.def
+
+#else
+
+TARGET symbian_audio.lib
+TARGETTYPE lib
+
+#endif
+
+SOURCEPATH ..\pjmedia\src\pjmedia
+
+OPTION CW -lang c++
+OPTION GCCE -O2 -fno-unit-at-a-time
+OPTION ARMCC --gnu
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+SOURCE nullsound.c
+SOURCE symbian_sound.cpp
+SOURCE symbian_sound_aps.cpp
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjmedia\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include\mmf\server
+SYSTEMINCLUDE \epoc32\include\mmf\common
+SYSTEMINCLUDE \epoc32\include\mda\common
+
+SYSTEMINCLUDE \epoc32\include\mmf\plugin
+
diff --git a/build.symbian/symbian_audioU.def b/build.symbian/symbian_audioU.def
new file mode 100644
index 0000000..883d5d8
--- /dev/null
+++ b/build.symbian/symbian_audioU.def
@@ -0,0 +1,12 @@
+EXPORTS
+ pjmedia_snd_deinit @ 1 NONAME
+ pjmedia_snd_get_dev_count @ 2 NONAME
+ pjmedia_snd_get_dev_info @ 3 NONAME
+ pjmedia_snd_init @ 4 NONAME
+ pjmedia_snd_open @ 5 NONAME
+ pjmedia_snd_open_player @ 6 NONAME
+ pjmedia_snd_open_rec @ 7 NONAME
+ pjmedia_snd_stream_close @ 8 NONAME
+ pjmedia_snd_stream_get_info @ 9 NONAME
+ pjmedia_snd_stream_start @ 10 NONAME
+ pjmedia_snd_stream_stop @ 11 NONAME
diff --git a/build.symbian/symbian_ua.mmp b/build.symbian/symbian_ua.mmp
new file mode 100644
index 0000000..af85b71
--- /dev/null
+++ b/build.symbian/symbian_ua.mmp
@@ -0,0 +1,84 @@
+// These part may be overwritten by automated test
+// =BEGIN
+#define SND_HAS_APS 0
+#define SND_HAS_VAS 0
+#define SND_HAS_MDA 1
+// =END
+
+TARGET symbian_ua.exe
+TARGETTYPE exe
+//UID 0x0 0x200235D3
+UID 0x0 0xA000000D
+
+SOURCEPATH ..\pjsip-apps\src\symbian_ua
+
+OPTION ARMCC --gnu
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Source files
+
+SOURCE ua.cpp
+SOURCE main_symbian.cpp
+
+DOCUMENT ua.h
+
+START RESOURCE symbian_ua_reg.rss
+ TARGETPATH \private\10003a3f\apps
+END
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjlib-util\include
+SYSTEMINCLUDE ..\pjnath\include
+SYSTEMINCLUDE ..\pjmedia\include
+SYSTEMINCLUDE ..\pjsip\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+// Ordering static libs based on dependencies, most to least dependent,
+// this could be necessary for some SDKs, e.g: S60 3rd MR
+STATICLIBRARY pjsua_lib.lib
+STATICLIBRARY pjsip_ua.lib pjsip_simple.lib pjsip.lib
+STATICLIBRARY libgsmcodec.lib libspeexcodec.lib
+STATICLIBRARY libg7221codec.lib libpassthroughcodec.lib
+STATICLIBRARY pjmedia.lib
+STATICLIBRARY pjmedia_audiodev.lib
+STATICLIBRARY pjsdp.lib
+STATICLIBRARY pjnath.lib
+STATICLIBRARY pjlib_util.lib pjlib.lib
+STATICLIBRARY libsrtp.lib
+STATICLIBRARY libresample.lib
+
+#if SND_HAS_APS
+ LIBRARY APSSession2.lib
+#endif
+
+#if SND_HAS_VAS
+ LIBRARY VoIPAudioIntfc.lib
+#endif
+
+#if SND_HAS_MDA
+ LIBRARY mediaclientaudiostream.lib
+ LIBRARY mediaclientaudioinputstream.lib
+#endif
+
+#if SND_HAS_APS || SND_HAS_VAS
+ CAPABILITY NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment MultimediaDD
+#else
+ CAPABILITY NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment
+#endif
+
+#ifdef WINSCW
+ STATICLIBRARY eexe.lib ecrt0.lib
+#endif
+
+LIBRARY esock.lib insock.lib charconv.lib euser.lib estlib.lib commdb.lib apengine.lib
+LIBRARY securesocket.lib x509.lib crypto.lib x500.lib
+LIBRARY hal.lib efsrv.lib
+
+// The default 8KB seems to be insufficient with all bells and
+// whistles turned on
+EPOCSTACKSIZE 12288
+
diff --git a/build.symbian/symbian_ua.pkg b/build.symbian/symbian_ua.pkg
new file mode 100644
index 0000000..32894c3
--- /dev/null
+++ b/build.symbian/symbian_ua.pkg
@@ -0,0 +1,19 @@
+; symbian_ua.pkg
+
+; Languages
+&EN
+
+; Header
+;#{"symbian_ua"},(0x200235D3), 0, 1, 1
+#{"symbian_ua"},(0xA000000D), 0, 1, 1
+
+; Platform compatibility
+[0x101F7961], *, *, *,{"Series60ProductID"}
+
+; vendor
+%{"PJSIP"}
+:"PJSIP"
+
+; Target
+"$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\symbian_ua.exe"-"!:\sys\bin\symbian_ua.exe"
+"$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\symbian_ua_reg.rSC"-"!:\private\10003a3f\import\apps\symbian_ua_reg.rSC"
diff --git a/build.symbian/symbian_ua_udeb.pkg b/build.symbian/symbian_ua_udeb.pkg
new file mode 100644
index 0000000..5c255bf
--- /dev/null
+++ b/build.symbian/symbian_ua_udeb.pkg
@@ -0,0 +1,21 @@
+; symbian_ua_udeb.pkg
+
+; for Carbide development, please use symbian_ua.pkg for comfortness
+; (epoc32 path, platform, and target are set automatically using env vars)
+
+; Languages
+&EN
+
+; Header
+#{"symbian_ua"},(0x200235D3), 0, 1, 1
+
+; Platform compatibility
+[0x101F7961], *, *, *,{"Series60ProductID"}
+
+; vendor
+%{"PJSIP"}
+:"PJSIP"
+
+; Target
+"C:\Symbian\9.2\S60_3rd_FP1\epoc32\release\gcce\UDEB\symbian_ua.exe"-"!:\sys\bin\symbian_ua.exe"
+"C:\Symbian\9.2\S60_3rd_FP1\epoc32\data\z\private\10003a3f\apps\symbian_ua_reg.rSC"-"!:\private\10003a3f\import\apps\symbian_ua_reg.rSC"
diff --git a/build.symbian/symbian_ua_urel.pkg b/build.symbian/symbian_ua_urel.pkg
new file mode 100644
index 0000000..3bd6098
--- /dev/null
+++ b/build.symbian/symbian_ua_urel.pkg
@@ -0,0 +1,21 @@
+; symbian_ua.pkg
+
+; for Carbide development, please use symbian_ua.pkg for comfortness
+; (epoc32 path, platform, and target are set automatically using env vars)
+
+; Languages
+&EN
+
+; Header
+#{"symbian_ua"},(0x200235D3), 0, 1, 1
+
+; Platform compatibility
+[0x101F7961], *, *, *,{"Series60ProductID"}
+
+; vendor
+%{"PJSIP"}
+:"PJSIP"
+
+; Target
+"C:\Symbian\9.1\S60_3rd_MR\epoc32\release\gcce\UREL\symbian_ua.exe"-"!:\sys\bin\symbian_ua.exe"
+"C:\Symbian\9.1\S60_3rd_MR\epoc32\data\z\private\10003a3f\apps\symbian_ua_reg.rSC"-"!:\private\10003a3f\import\apps\symbian_ua_reg.rSC"
diff --git a/build.symbian/symsndtest.mmp b/build.symbian/symsndtest.mmp
new file mode 100644
index 0000000..fb375db
--- /dev/null
+++ b/build.symbian/symsndtest.mmp
@@ -0,0 +1,51 @@
+#define SND_USE_APS 0
+#define SND_USE_VAS 0
+
+TARGET symsndtest.exe
+TARGETTYPE exe
+UID 0x0 0xA000000E
+
+OPTION ARMCC --gnu
+
+SOURCEPATH ..\pjsip-apps\src\symsndtest
+
+MACRO PJ_M_I386=1
+MACRO PJ_SYMBIAN=1
+
+// Test files
+
+SOURCE app_main.cpp
+SOURCE main_symbian.cpp
+
+START RESOURCE symsndtest_reg.rss
+ TARGETPATH \private\10003a3f\apps
+END
+
+SYSTEMINCLUDE ..\pjlib\include
+SYSTEMINCLUDE ..\pjmedia\include
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\libc
+
+LIBRARY charconv.lib euser.lib estlib.lib
+LIBRARY esock.lib insock.lib
+STATICLIBRARY pjmedia_audiodev.lib
+STATICLIBRARY pjmedia.lib
+STATICLIBRARY pjlib.lib
+STATICLIBRARY libresample.lib
+
+#if SND_USE_APS
+ LIBRARY APSSession2.lib
+ CAPABILITY NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment MultimediaDD
+#elif SND_USE_VAS
+ LIBRARY VoIPAudioIntfc.lib
+ CAPABILITY NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment MultimediaDD
+#else
+ LIBRARY mediaclientaudiostream.lib
+ LIBRARY mediaclientaudioinputstream.lib
+ CAPABILITY NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment
+#endif
+
+#ifdef WINSCW
+ STATICLIBRARY eexe.lib ecrt0.lib
+#endif
diff --git a/build.symbian/symsndtest.pkg b/build.symbian/symsndtest.pkg
new file mode 100644
index 0000000..9dbb118
--- /dev/null
+++ b/build.symbian/symsndtest.pkg
@@ -0,0 +1,19 @@
+; symsndtest.pkg
+
+; Languages
+&EN
+
+; Header
+#{"symsndtest"},(0xA000000E), 0, 1, 1
+
+; Platform compatibility
+[0x101F7961], *, *, *, {"Series60ProductID"}
+
+; vendor
+%{"PJSIP"}
+:"PJSIP"
+
+; Target
+"$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\symsndtest.exe"-"!:\sys\bin\symsndtest.exe"
+"$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\symsndtest_reg.rSC"-"!:\private\10003a3f\import\apps\symsndtest_reg.rSC"
+