PJSIP and PJMEDIA was designed from day one to have very small footprint. It
might not be the smallest SIP and media stack around, because the smallest
stack would mean to have the stack designed specificly for the smallest device,
thus probably have the least flexibility, performance, or even features.
PJSIP and PJMEDIA is a general purpose stack for all types of
SIP applications, with all the features and high performance. But it was
designed to have the very small footprint and to have the features arranged as
such so that unneeded features will not get included in the link process.
How the Footprint Report is Generated
The report is generated by get-footprint.py Python script from the pjsip-apps/build
directory. The script controls various macros to be defined when building the
footprint.c application, and after each build, it is stripped,
and the application size is calculated with size tool. After
completing each calculation, the script adds more macro to enable more
feature, and re-build and re-calculate the size again. The footprint of a
specific feature is calculated from the difference in application size from the
Because the footprint is calculated from total application size (not just sum
of the .o file size), sometimes it happens that the .bss size
of the new executable is actually smaller than previous built, resulting in
negative value to be reported. But I think we can ignore this.
Please find below SIP and media footprint reports for various targets.
The report shows the detailed footprint of each SIP and media feature, so that
application designer can see beforehand what is the expected footprint of
the application when certain features are included in the application.
- i386 Linux Application Footprint
Date: July, 13th, 2006
This is the SIP/media footprint for i386/Linux target, with settings
configured to create minimum code size.
- ARM RTEMS Application Footprint
Date: July, 13th, 2006
This is the SIP/media footprint for ARM RTEMS target, compiled with the binary
toolchain downloaded from RTEMS website (gcc-3.2.3) and RTEMS 4.6.6. As with
all RTEMS applications, all operating system components and libraries (e.g.
LIBC) are statically linked to the application, and this is included in the