Last Update: 2005/05/28 for pjproject-0.2.8


COMMON PROBLEMS
=================
- make error
process_begin: CreateProcess((null), cl /c /nologo /DWIN32 /D_WIN32 /DPJ_GUID_TY
PE=PJ_GUID_COCREATEGUID /I../src ..\src\pj\ioqueue_winnt.c /Fooutput\pjlib_win32
_vc\ioqueue_winnt.o, ...) failed.
make (e=2): The system cannot find the file specified.
make[1]: *** [output/pjlib_win32_vc/ioqueue_winnt.o] Error 2

  solution:
make doesn't like spaces in vc98 PATH


BUILD INSTRUCTIONS
================================================================================

The main target of the build process is to build executable pjsip/bin/pjsua.exe.


1. Build instructions for Microsoft Visual Studio .NET 2003
   ----------------------------------------------
   - Open solution file: build/pjproject.sln
     There will be some dialogs appear asking about Source Safe, just ignore it.
   - Build the solution. That should build every single projects in pjproject.


2. Build instructions for Microsoft Visual Studio 6
   ------------------------------------------------
   Note: MSVC6 workspace is normally updated less often than MSVC7.1 projects. 
         Especially during intermediate release. Normally the status will be
         noted in the web page.

   - Open workspace file: build/pjproject.dsw
   - Perform batch build. That should build every single projects in pjproject.


3. Build instructions for Linux i386, Mingw
   ----------------------------------------
   Note: mingw/Linux Makefiles are normally updated less often than MSVC7.1 projects.

   Step-by-step instruction to build the whole thing:

     $ tar xzvf pjproject-0.2.6.tar.gz 
     $ cd pjproject-0.2.6
     
     $ export TARGET=mingw       <== for Mingw, or
     $ export TARGET=linux-i386  <== for Linux
   
     $ make dep
     $ make all

   That should build all libraries and test applications (including pjsua).

   There are some other make targets:

     $ make clean      ==> clean files (except libraries, binaries, & dependency files).
     $ make realclean  ==> clean everything
     $ make distclean  ==> ditto.

   Note: 
     - pjsua for Mingw and Linux build doesn't have audio device at present.


4. Additional flags (for debugging etc.)
   -------------------------------------
   The build system for mingw/Linux accepts can additional flags, for example
   for debugging.

   Example:

    $ (on pjproject root directory)
    $ make CFLAGS=-ggdb "LDFLAGS=-L/foo/lib -lfoo"



REDUCING SIZE
================================================================================

There are some C macros that can be used to reduce the size. For Mingw and Linux build,
these macros are activated if you specify MINSIZE=1 during make, e.g.:

     $ .. (we're in pjproject directory) ..
     $ make MINSIZE=1 all

Then after building the projects, you can check the size of the libraries:

     $ make size

If you use Microsoft Visual Studio, then you'll have to set the C macros manually:

     pjlib/src/pj/config.h:
           - #define PJ_HAS_TCP                0   // ==> to exclude TCP
           - #define PJ_HAS_THREADS            0   // ==> to exclude threads
           - #define PJ_FUNCTIONS_ARE_INLINED  0   // ==> do not inline.
     pjlib/src/pj/log.h:
           - #define PJ_LOG_MAX_LEVEL          0   // ==> disable all tracing


GENERATING DOCUMENTATION
================================================================================

You need to have doxygen to generate documentation.

To generate doxygen documentation with GNU make, 

    $ (on pjproject root directory)
    $ make doc

If GNU make is not available, generate documentation on each project:

    $ cd pjsip
    $ doxygen docs/doxygen.cfg

    $ cd pjlib
    $ doxygen docs/doxygen.cfg

    etc..

The HTML files will be put under docs/html directory.


That's about it I guess, sorry couldn't write more. Feel free to drop me a note if
you encounter any problems.


Thanks,
Benny Prijono
<bennylp@bulukucing.org>

