The ReSIProate repository contains the following C++ libraries and applications:
- SIP Library: Comprehensive (RFC3261) SIP Stack
- Dam (Dialog Usage Manager) Library: High level SIP library for creating SIP user agents (no media stack)
- Recon Library: High-level SIP UA library with media stack integration
- Repro Application: SIP Proxy Server
- Return Application: Stun/Turn Server
- MOHParkServer application: a SIP based music-on-hold server using Recon
- ReconServer Application: A SIP based B2BUA server with media using Recon
- Return Library: Stun/Turn Client Library
- TFM Library: A SIP based SIP framework
Please see the following wiki for more information: www.resiproate.org
To create an in-tree build: Navigate to the git root folder where the top level CMakeLists.txt file is
to make one out of the tree Construction:
$ mkdir cmake_build # Or any other name
$ cd cmake_build
$ cmake ..
$ make
Once it’s built, you can run unit tests with:
Or, for verbose output:
If you want to start fresh then either delete out of the tree build directory or delete the CMakeCache.txt file.
- Some Linux packages can be difficult to track down. If you don’t need the features these packages enable, you can disable them in the build. One such package is QPID Proton.
$ cmake -DBUILD_QPID_PROTON=OFF .
Required packages for default enabled CMake settings
- git
- Make
- cmake
- Clang or G++ (recipe CI uses clang-13, lld-13, g++-10)
- gperf
- libssl-dev (with_SSL)
- libc-ares-dev (WITH_C_ARES)
- libasio-dev
- libboost-all-dev
- libdb++-dev
- libsrtp2-dev
- libgeoip-dev (USE_MAXMIND_GEOIP)
- libpopt-dev (USE_POPT)
- libcppunit-dev(BUILD_TFM)
- libnetxx-dev(BUILD_TFM)
- libqpid-proton-cpp12-dev (BUILD_QPID_PROTON)
- socks (REGENERATE_MEDIA_SAMPLES)
- xxd (revived_media_samples)
- default-libmysqlclient-dev(USE_MYSQL)
- libfmt-dev (USE_FMT)
- libgloox-dev (BUILD_ICHAT_GW)
- libgstreamermm-1.0-dev (USE_GSTREAMER)
- postgresql-server-dev-all (USE_POSTGRESQL)
- libradcli-dev (RESIP_HAVE_RADCLI)
- libsipxtapi-dev (USE_SIPXTAPI)
- libsnmp-dev (USE_NETSNMP)
- libpq-dev(USE_SOCI_POSTGRESQL)
- libsoci-dev (USE_SOCI_POSTGRESQL)
- libtelepathy-qt5-dev (BUILD_TELEPATHY_CM)
- libwebsocketpp-dev (USE_KURENTO)
- libxerces-c-dev
- Pearl
- python3-cxx-dev (BUILD_PYTHON)
- python3-dev (BUILD_PYTHON)
build on windows system
Go to the git root folder where the top level CMakeLists.txt file is.
Or to harmonize with SipXtepi media support you need to do the following:
> cmake . -DUSE_SIPXTAPI=ON
Or if you plan on using the VS GUI you may want to enable the following to get full sipxtype projects into a recip solution file:
> cmake . -DUSE_SIPXTAPI=ON -DSIPXTAPI_PROJS_IN_VS_GUI=ON
- Open resiproate.sln (from _build folder) in Visual Studio: Build -> Build Solution
- Note: If you used -DSIPXTAPI_PROJS_IN_VS_GUI=ON you will need to build the SIPXTAPI project once before fetching it from GitHub. After this reload resiprocat.sln and build again. This is required only after the initial installation of the build.
- If you want to run unit tests, right click on the RUN_TESTS project and create it.
Using CMake from the command line
Go to the git root folder where the top level CMakeLists.txt file is.
Or to harmonize with SipXtepi media support you need to do the following:
> cmake . -B _build -DUSE_SIPXTAPI=ON
To make, navigate to the git root folder where the top level CMakeLists.txt file is.
> cmake --build _build --config Debug --parallel
For unit tests:
> cd _build
> ctest --build-config Debug --output-on-failure
Using Ninja through the Visual Studio GUI
- Open Reciprocating Folder Using Visual Studio Open Folder Feature
- Use the CMake GUI to change CMake build settings and options: Project->CMake Settings for Reciprocate
- Create -> Create All
CMake “cached” variables are used to specify options such as whether C-arrays should be used or not. You can get the list from:
You can set them on the command line like this:
$ cmake -DWITH_C_ARES=true .
CMake supports rpm/deb?/NSIS for creating installable packages using CPack. If this built-in support cannot be used we can always specify internal build targets that will run external commands to package the appropriate bundle depending on the platform.
