resiprocate icon indicating copy to clipboard operation
resiprocate copied to clipboard

C++ implementation of SIP, ICE, TURN and related protocols


IMPORTANT

  • the notes below relate to the legacy build system from reSIProcate <= 1.7.x

  • now, with reSIProcate 1.8.x and beyond, please see:

    http://www.resiprocate.org/AutotoolsBuild

    and

    http://www.resiprocate.org/Configuration_Options


Notes for the legacy build system:

The legacy reSIProcate build system is derived from the VOCAL build system (http://www.vovida.org).

Adding New Files to a module

Example: Adding a new file Foo.cxx to the stack

  1. Edit resip/stack/Makefile
  2. Add Foo.cxx to the SRC list

Example: Adding a new file Bar.cxx to rutil

  1. Edit rutil/Makefile
  2. Add Bar.cxx to the SRC list

Notes:

  • All files noted in SRC list will be added to the target library
  • Adding a new header file does not need to be noted in the Makefile
  • To add something to the compile line add to CXXFLAGS. e.g. CXXFLAGS += -DMYSPECIALDEFINE
  • To add something to the link line add to LDFLAGS and/or LDLIBS e.g. LDFLAGS += -L/usr/local/myspeciallibdir e.g. LDLIBS += -lmyspeciallib

Creating an application based on the stack:

Option 1: (Using the resip build system) For example applications using the resip build system look at resip/stack/test or at repro.

###########################################################################################

Create a Makefile in the directory with the units with the following template

This should be the path to the build directory of resip (in the sip subdirectory)

BUILD = ../../build

Includes macros

include $(BUILD)/Makefile.pre

Add any options that need to be passed to the C++ compiler here

#CXXFLAGS += -DMYSPECIALDEFINE

Add any options that need to be passed to the C compiler here

#CFLAGS += -DMYOTHERDEFINE

Add any options that need to be passed to the linker here

#LDFLAGS += -L/usr/local/mydir

Add any libraries that need to be passed to the linker here

#LDLIBS += -lmylib

All of these packages are prerequisites for resiprocate

PACKAGES += RESIP RUTIL OPENSSL ARES PTHREAD

Add an entry to TESTPROGRAMS for each target that has a main in it

On linux this will generate an executable in bin.debug.Linux.i686/main

TESTPROGRAMS += main.cxx

Add each of the C++ or C files that other than the main

Each main target (from TESTPROGRAMS) will be linked with all of the files in SRC

SRC = TestSupport.cxx

Includes macros

include $(BUILD)/Makefile.post ###########################################################################################

Option 2: (Using a third party build system)

Prerequisites:

  • Install ares library from contrib/ares
    • cd contrib/ares
    • ./configure
    • make
    • make install

Pass the following flags to C++ compiler: Assumptions:

  • have pthreads
  • have openssl installed
  • have ares installed
  • resiprocate library is built and installed

Linux Example

CXXFLAGS += -Wall -fPIC -Wno-deprecated -march=i686
-D_REENTRANT -DUSE_SSL -DNEW_MSG_HEADER_SCANNER -DUSE_IPV6 -DUSE_ARES
-I/usr/kerberos/include -I$(RESIP_DIR)/lib.debug.Linux.i686 LDFLAGS += -L$(RESIP_DIR)/lib.debug.Linux.i686 LDLIBS += -lresip -lrutil -lssl -lcrypto -lares -lpthread