Skip to content
Snippets Groups Projects
Commit 9d3a3d27 authored by Emmanuel Milou's avatar Emmanuel Milou
Browse files

Upgrade PJSIP to version 1.0.1

parent ff739943
No related branches found
No related tags found
No related merge requests found
Showing
with 15928 additions and 0 deletions
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
========
The licenses for most software are designed to take away your freedom
to share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not price.
Our General Public Licenses are designed to make sure that you have
the freedom to distribute copies of free software (and charge for this
service if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone
to deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis
or for a fee, you must give the recipients all the rights that you
have. You must make sure that they, too, receive or can get the source
code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software patents.
We wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent
must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a
notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program",
below, refers to any such program or work, and a "work based on
the Program" means either the Program or any derivative work under
copyright law: that is to say, a work containing the Program or a
portion of it, either verbatim or with modifications and/or
translated into another language. (Hereinafter, translation is
included without limitation in the term "modification".) Each
licensee is addressed as "you".
Activities other than copying, distribution and modification are
not covered by this License; they are outside its scope. The act
of running the Program is not restricted, and the output from the
Program is covered only if its contents constitute a work based on
the Program (independent of having been made by running the
Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any
warranty; and give any other recipients of the Program a copy of
this License along with the Program.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange
for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a. You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b. You must cause any work that you distribute or publish, that
in whole or in part contains or is derived from the Program
or any part thereof, to be licensed as a whole at no charge
to all third parties under the terms of this License.
c. If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display
an announcement including an appropriate copyright notice and
a notice that there is no warranty (or else, saying that you
provide a warranty) and that users may redistribute the
program under these conditions, and telling the user how to
view a copy of this License. (Exception: if the Program
itself is interactive but does not normally print such an
announcement, your work based on the Program is not required
to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the
Program, and can be reasonably considered independent and separate
works in themselves, then this License, and its terms, do not
apply to those sections when you distribute them as separate
works. But when you distribute the same sections as part of a
whole which is a work based on the Program, the distribution of
the whole must be on the terms of this License, whose permissions
for other licensees extend to the entire whole, and thus to each
and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or
contest your rights to work written entirely by you; rather, the
intent is to exercise the right to control the distribution of
derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the
Program with the Program (or with a work based on the Program) on
a volume of a storage or distribution medium does not bring the
other work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms
of Sections 1 and 2 above provided that you also do one of the
following:
a. Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of
Sections 1 and 2 above on a medium customarily used for
software interchange; or,
b. Accompany it with a written offer, valid for at least three
years, to give any third-party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange; or,
c. Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with
such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete
source code means all the source code for all modules it contains,
plus any associated interface definition files, plus the scripts
used to control compilation and installation of the executable.
However, as a special exception, the source code distributed need
not include anything that is normally distributed (in either
source or binary form) with the major components (compiler,
kernel, and so on) of the operating system on which the executable
runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights,
from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify
or distribute the Program or its derivative works. These actions
are prohibited by law if you do not accept this License.
Therefore, by modifying or distributing the Program (or any work
based on the Program), you indicate your acceptance of this
License to do so, and all its terms and conditions for copying,
distributing or modifying the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program
subject to these terms and conditions. You may not impose any
further restrictions on the recipients' exercise of the rights
granted herein. You are not responsible for enforcing compliance
by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent
issues), conditions are imposed on you (whether by court order,
agreement or otherwise) that contradict the conditions of this
License, they do not excuse you from the conditions of this
License. If you cannot distribute so as to satisfy simultaneously
your obligations under this License and any other pertinent
obligations, then as a consequence you may not distribute the
Program at all. For example, if a patent license would not permit
royalty-free redistribution of the Program by all those who
receive copies directly or indirectly through you, then the only
way you could satisfy both it and this License would be to refrain
entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable
under any particular circumstance, the balance of the section is
intended to apply and the section as a whole is intended to apply
in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of
any such claims; this section has the sole purpose of protecting
the integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is
willing to distribute software through any other system and a
licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed
to be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces,
the original copyright holder who places the Program under this
License may add an explicit geographical distribution limitation
excluding those countries, so that distribution is permitted only
in or among countries not thus excluded. In such case, this
License incorporates the limitation as if written in the body of
this License.
9. The Free Software Foundation may publish revised and/or new
versions of the General Public License from time to time. Such
new versions will be similar in spirit to the present version, but
may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies a version number of this License which applies
to it and "any later version", you have the option of following
the terms and conditions either of that version or of any later
version published by the Free Software Foundation. If the Program
does not specify a version number of this License, you may choose
any version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the
author to ask for permission. For software which is copyrighted
by the Free Software Foundation, write to the Free Software
Foundation; we sometimes make exceptions for this. Our decision
will be guided by the two goals of preserving the free status of
all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
=============================================
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) YYYY NAME OF AUTHOR
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License. Of course, the
commands you use may be called something other than `show w' and `show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
SIGNATURE OF TY COON, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library,
you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use the
GNU Library General Public License instead of this License.
[Last update: 2007/02/18]
-= INTRO=-
This top level projects:
- pjlib: portability and basic framework library
- pjlib-util: lexical scanner, XML, STUN, MD5, DNS, etc.
- pjmedia: media framework and codecs
- pjsip: SIP stacks (core, UA layer, SIMPLE, etc.)
- pjsip-apps: SIP apps (pjsua, pjsip-perf)
-= COMPILING =-
On Windows:
- Visual Studio 6: open pjproject.dsw
- Visual Studio 8/2005: open pjproject-vs8.sln
- Embedded VisualC 4: open open pjsip-apps\build\wince-evc4\wince_demos.vcw
- Build pjsua
With Makefile:
- on top level dir (e.g. ~/pjproject)
- ./configure && make dep && make clean && make
Binaries will be in pjsip-apps/bin.
-= PYTHON MODULE =-
On Windows:
- Visual Studio 6: open pjsip-apps\build\pjsip_apps.dsw
- Build py_pjsua module
With GNU and Python:
- cd pjsip-apps/src/py_pjsua
- python setup.py install
One Python sample application is provided:
pjsip-apps/src/py_pjsua/pjsua_app.py
-= PORTING =-
- Just need to port pjlib.
- PJLIB doc has detailed info how to do this.
- Must pass pjlib-test!
Build Instructions for PJLIB/PJMEDIA/PJSIP RTEMS Port
The RTEMS port uses the POSIX abstraction layer at the moment, and has been
tested with RTEMS 4.6 on i386 target.
Building RTEMS
---------------
I use RTEMS 4.6 on a cygwin host with i386/pc386 as target, but I think it
should work with different RTEMS versions/hosts/targets.
RTEMS was built with the following commands:
$ /opt/src/rtems-4.6.6/configure --enable-cxx --enable-posix --enable-networking --enable-rdbg --enable-tests --enable-rtemsbsp=pc386 --target=i386-rtems
$ make
$ make install
Supported Targets
-----------------
At the moment, pjlib supports i386 and mpc860 CPU target. For other targets,
you would need to create/tweak the appropriate "m-xxx.mak" in "build" directory
and the corresponding "m_xxx.h" header file in "pj/compat" directory.
Please refer to pjlib porting guide about how to port PJLIB to new CPU target.
Building PJLIB/PJMEDIA/PJSIP
----------------------------
Use the following steps to build the libraries:
1. Set RTEMS_LIBRARY_PATH environment variable to point to your BSP directory
(which is <RTEMS INSTALLATION POINT>/<BOARD SUPPORT PACKAGE>).
For example (with sh):
$ export RTEMS_LIBRARY_PATH=/opt/rtems-4.6/i386-rtems/pc386
2. Unfortunately pjproject's configure script is unable to create "build.mak"
for cross compilation (but this may change in the future), so we need to
create "build.mak" manually.
The file "README-configure" has some info about the variables in "build.mak".
For example, the "build.mak" for i386 target:
export MACHINE_NAME := i386
export OS_NAME := rtems
export HOST_NAME := mingw
export CC_NAME := gcc
export TARGET_NAME := i386-rtems
export CROSS_COMPILE := i386-rtems-
3. Put additional CFLAGS or LDFLAGS that are specific to your target in
"user.mak".
For example, my "user.mak" looks like this:
export CFLAGS +=
export LDFLAGS += -Wl,-Ttext,0x00100000 -Wl,--defsym -Wl,HeapSize=0x400000
4. Build the libraries:
$ make dep && make distclean && make
5. That should be it. The libraries should be in "lib" directory and
applications in "bin" directory.
Acknowledgements
----------------
Many thanks for Phil Torre <ptorre at zetron dot com>, who did most of the
initial porting and testing with pjlib etc. All credits go to him.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# build.mak. Generated from build.mak.in by configure.
export MACHINE_NAME := auto
export OS_NAME := auto
export HOST_NAME := unix
export CC_NAME := gcc
export TARGET_NAME := i686-pc-linux-gnu
export CROSS_COMPILE :=
export LINUX_POLL := select
LIB_SUFFIX = $(TARGET_NAME).a
# Determine which party libraries to use
export APP_THIRD_PARTY_LIBS := -lresample-$(TARGET_NAME) -lmilenage-$(TARGET_NAME) -lsrtp-$(TARGET_NAME)
export APP_THIRD_PARTY_LIB_FILES = $(PJ_DIR)/third_party/lib/libresample-$(LIB_SUFFIX) $(PJ_DIR)/third_party/lib/libmilenage-$(LIB_SUFFIX) $(PJ_DIR)/third_party/lib/libsrtp-$(LIB_SUFFIX)
ifneq (,1)
APP_THIRD_PARTY_LIBS += -lgsmcodec-$(TARGET_NAME)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libgsmcodec-$(LIB_SUFFIX)
endif
ifneq (,1)
APP_THIRD_PARTY_LIBS += -lspeex-$(TARGET_NAME)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libspeex-$(LIB_SUFFIX)
endif
ifneq (,1)
APP_THIRD_PARTY_LIBS += -lilbccodec-$(TARGET_NAME)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libilbccodec-$(LIB_SUFFIX)
endif
ifneq ($(findstring pa,pa_unix),)
APP_THIRD_PARTY_LIBS += -lportaudio-$(TARGET_NAME)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libportaudio-$(LIB_SUFFIX)
endif
# Additional flags
# CFLAGS, LDFLAGS, and LIBS to be used by applications
export PJDIR := /home-local/manu/dev/sfl/SFLphone/sflphone/libs/pjproject-1.0.1
export APP_CC := $(CROSS_COMPILE)$(CC_NAME)
export APP_CFLAGS := -DPJ_AUTOCONF=1\
-O2\
-I$(PJDIR)/pjlib/include\
-I$(PJDIR)/pjlib-util/include\
-I$(PJDIR)/pjnath/include\
-I$(PJDIR)/pjmedia/include\
-I$(PJDIR)/pjsip/include
export APP_CXXFLAGS := $(APP_CFLAGS)
export APP_LDFLAGS := -L$(PJDIR)/pjlib/lib\
-L$(PJDIR)/pjlib-util/lib\
-L$(PJDIR)/pjnath/lib\
-L$(PJDIR)/pjmedia/lib\
-L$(PJDIR)/pjsip/lib\
-L$(PJDIR)/third_party/lib\
export APP_LDLIBS := -lpjsua-sfl-$(TARGET_NAME)\
-lpjsip-ua-sfl-$(TARGET_NAME)\
-lpjsip-simple-sfl-$(TARGET_NAME)\
-lpjsip-sfl-$(TARGET_NAME)\
-lpjmedia-codec-sfl-$(TARGET_NAME)\
-lpjmedia-sfl-$(TARGET_NAME)\
-lpjnath-sfl-$(TARGET_NAME)\
-lpjlib-util-sfl-$(TARGET_NAME)\
$(APP_THIRD_PARTY_LIBS)\
-lpj-sfl-$(TARGET_NAME)\
-lm -lnsl -lrt -lpthread -lasound
export APP_LIB_FILES = $(PJ_DIR)/pjsip/lib/libpjsua-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjsip/lib/libpjsip-ua-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjsip/lib/libpjsip-simple-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjsip/lib/libpjsip-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjmedia/lib/libpjmedia-codec-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjmedia/lib/libpjmedia-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjnath/lib/libpjnath-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjlib-util/lib/libpjlib-util-sfl-$(LIB_SUFFIX) \
$(APP_THIRD_PARTY_LIB_FILES) \
$(PJ_DIR)/pjlib/lib/libpj-sfl-$(LIB_SUFFIX)
export PJ_DIR := $(PJDIR)
export PJ_CC := $(APP_CC)
export PJ_CFLAGS := $(APP_CFLAGS)
export PJ_CXXFLAGS := $(APP_CXXFLAGS)
export PJ_LDFLAGS := $(APP_LDFLAGS)
export PJ_LDLIBS := $(APP_LDLIBS)
export PJ_LIB_FILES := $(APP_LIB_FILES)
# @configure_input@
export MACHINE_NAME := auto
export OS_NAME := auto
export HOST_NAME := unix
export CC_NAME := gcc
export TARGET_NAME := @target@
export CROSS_COMPILE := @ac_cross_compile@
export LINUX_POLL := @ac_linux_poll@
LIB_SUFFIX = $(TARGET_NAME).a
# Determine which party libraries to use
export APP_THIRD_PARTY_LIBS := -lresample-$(TARGET_NAME) -lmilenage-$(TARGET_NAME) -lsrtp-$(TARGET_NAME)
export APP_THIRD_PARTY_LIB_FILES = $(PJ_DIR)/third_party/lib/libresample-$(LIB_SUFFIX) $(PJ_DIR)/third_party/lib/libmilenage-$(LIB_SUFFIX) $(PJ_DIR)/third_party/lib/libsrtp-$(LIB_SUFFIX)
ifneq (@ac_no_gsm_codec@,1)
APP_THIRD_PARTY_LIBS += -lgsmcodec-$(TARGET_NAME)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libgsmcodec-$(LIB_SUFFIX)
endif
ifneq (@ac_no_speex_codec@,1)
APP_THIRD_PARTY_LIBS += -lspeex-$(TARGET_NAME)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libspeex-$(LIB_SUFFIX)
endif
ifneq (@ac_no_ilbc_codec@,1)
APP_THIRD_PARTY_LIBS += -lilbccodec-$(TARGET_NAME)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libilbccodec-$(LIB_SUFFIX)
endif
ifneq ($(findstring pa,@ac_pjmedia_snd@),)
APP_THIRD_PARTY_LIBS += -lportaudio-$(TARGET_NAME)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libportaudio-$(LIB_SUFFIX)
endif
# Additional flags
@ac_build_mak_vars@
# CFLAGS, LDFLAGS, and LIBS to be used by applications
export PJDIR := @ac_pjdir@
export APP_CC := $(CROSS_COMPILE)$(CC_NAME)
export APP_CFLAGS := -DPJ_AUTOCONF=1\
@CFLAGS@\
-I$(PJDIR)/pjlib/include\
-I$(PJDIR)/pjlib-util/include\
-I$(PJDIR)/pjnath/include\
-I$(PJDIR)/pjmedia/include\
-I$(PJDIR)/pjsip/include
export APP_CXXFLAGS := $(APP_CFLAGS)
export APP_LDFLAGS := -L$(PJDIR)/pjlib/lib\
-L$(PJDIR)/pjlib-util/lib\
-L$(PJDIR)/pjnath/lib\
-L$(PJDIR)/pjmedia/lib\
-L$(PJDIR)/pjsip/lib\
-L$(PJDIR)/third_party/lib\
@LDFLAGS@
export APP_LDLIBS := -lpjsua-sfl-$(TARGET_NAME)\
-lpjsip-ua-sfl-$(TARGET_NAME)\
-lpjsip-simple-sfl-$(TARGET_NAME)\
-lpjsip-sfl-$(TARGET_NAME)\
-lpjmedia-codec-sfl-$(TARGET_NAME)\
-lpjmedia-sfl-$(TARGET_NAME)\
-lpjnath-sfl-$(TARGET_NAME)\
-lpjlib-util-sfl-$(TARGET_NAME)\
$(APP_THIRD_PARTY_LIBS)\
-lpj-sfl-$(TARGET_NAME)\
@LIBS@
export APP_LIB_FILES = $(PJ_DIR)/pjsip/lib/libpjsua-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjsip/lib/libpjsip-ua-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjsip/lib/libpjsip-simple-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjsip/lib/libpjsip-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjmedia/lib/libpjmedia-codec-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjmedia/lib/libpjmedia-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjnath/lib/libpjnath-sfl-$(LIB_SUFFIX) \
$(PJ_DIR)/pjlib-util/lib/libpjlib-util-sfl-$(LIB_SUFFIX) \
$(APP_THIRD_PARTY_LIB_FILES) \
$(PJ_DIR)/pjlib/lib/libpj-sfl-$(LIB_SUFFIX)
export PJ_DIR := $(PJDIR)
export PJ_CC := $(APP_CC)
export PJ_CFLAGS := $(APP_CFLAGS)
export PJ_CXXFLAGS := $(APP_CXXFLAGS)
export PJ_LDFLAGS := $(APP_LDFLAGS)
export PJ_LDLIBS := $(APP_LDLIBS)
export PJ_LIB_FILES := $(APP_LIB_FILES)
@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\
bldmake bldfiles
@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
#define SND_USE_NULL 0
#define SND_USE_APS 0
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
/* Sound device impl */
#if SND_USE_NULL
null_audio.mmp
#elif SND_USE_APS
symbian_audio_aps.mmp
#else
symbian_audio.mmp
#endif
/* Applications */
//pjlib_test.mmp
//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
#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++
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\gsm\inc
SYSTEMINCLUDE \epoc32\include
SYSTEMINCLUDE \epoc32\include\libc
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
//
// 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
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
//
// 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
#!/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."
#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++
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
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
#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
OPTION CW -lang c++
OPTION ARMCC --cpp
OPTION GCC -x c++
MACRO PJ_M_I386=1
MACRO PJ_SYMBIAN=1
//
// 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_time_common.c
SOURCE pool.c
SOURCE pool_buf.c
SOURCE pool_caching.c
SOURCE rand.c
SOURCE rbtree.c
SOURCE sock_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 sock_symbian.cpp
SOURCE sock_select_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
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
TARGET pjlib_test.exe
TARGETTYPE exe
UID 0x0 0xA0000002
SOURCEPATH ..\pjlib\src\pjlib-test
MACRO PJ_M_I386=1
MACRO PJ_SYMBIAN=1
#if defined(PJ_BUILD_DLL)
MACRO PJ_DLL
LIBRARY pjlib.lib
#else
STATICLIBRARY pjlib.lib
#endif
OPTION CW -lang c++
OPTION ARMCC --cpp
OPTION GCC -x c++
// Test files
SOURCE activesock.c
SOURCE atomic.c
SOURCE echo_clt.c
SOURCE errno.c
SOURCE exception.c
SOURCE fifobuf.c
SOURCE file.c
SOURCE hash.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.c
SOURCE pool_perf.c
SOURCE rand.c
SOURCE rbtree.c
SOURCE select.c
SOURCE sleep.c
SOURCE sock.c
SOURCE sock_perf.c
SOURCE string.c
SOURCE test.c
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
SYSTEMINCLUDE ..\pjlib\include
SYSTEMINCLUDE \epoc32\include
SYSTEMINCLUDE \epoc32\include\libc
LIBRARY esock.lib insock.lib charconv.lib euser.lib estlib.lib
#ifdef WINSCW
STATICLIBRARY eexe.lib ecrt0.lib
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment