summaryrefslogtreecommitdiff
path: root/INSTALL.txt
blob: f928051ec2c593ef007d33211e00e4e9027a4e33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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>