dsrc isn't necessary for this repo
[client-tools.git] / src / BUILDING
blob94263e7284dab0aa40ae7802179f7d8fef3f8838
1 IMPORTANT Requirements:
2 automake >= 1.6 < 1.7
3 autoconf >= 2.57
4 libtool-1.4x
5 gcc-2.95-3 or gcc-3.2.x
6 ibm java2 1.3.1 installed in /usr/java
7 /usr/java/bin must precede any other java binary in the path
8 stlport-4.5.3 sources
9 oracle 9.2.0 in /opt/app/oracle/product/9.2.0
11 Buidling from the command line
13 QUICKSTART (**** PREFERRED SETUP ****):
14 1. Fresh from source control:
16 $ ./siteSetup
18 This will create Makefile.in's and configure scripts for site 
19 reconfiguration as site build options change during development. It
20 will also run the configure steps necessary to start building the 
21 project.
23 2. Skip to step 3 in MANUAL CONFIGURATION
29 MANUAL CONFIGURATION:
30 1. Fresh from source control:
32 $ ./bootstrap
34 This will create Makefile.in's and configure scripts to configure the
35 source for the site.
37 2. After site has been bootstrapped
39 2.1 For debug code
41 $ CFLAGS="-g3 -O0" CXXFLAGS="-g3 -O0" ./configure --prefix=<path to dev directory, e.g. /swg/swg/current/dev> --enable-debug --disable-static
43 2.2 For debug-optimized code
44 $ CFLAGS="-g -O2" CXXFLAGS="-g -O2" ./configyre --prefix=<path to dev directory, e.g. /swg/swg/current/dev> --enable-debug --disable-static
46 2.3 For optimized code
47 $ CFLAGS="-O2" CXXFLAGS="-O2" ./configyre --prefix=<path to dev directory, e.g. /swg/swg/current/dev> --enable-debug
49 3. For an already configured site (day to day operation)
50 $ make install
52 4. Running the applications.
53 Executables are installed in $PREFIX/bin. Libraries reside in
54 $PREFIX/lib, where prefix was defined during configure with the
55 --prefix=XXX parameter. If prefix was /swg/swg/current/dev then
57 $ cd /swg/swg/current/dev/bin
58 $ ./LoginServer -- @loginServer.cfg &
59 $ ./TaskManager -- @taskManager.cfg
61 5. Adding and removing source files
62 Each directory contains a Makefile.am. This file specifies sources and
63 flags specific to the target. If a file (NewMessage.cpp and NewMessage.h)
64 is added to sharedNetworkMessages/src/shared/chat, for example, edit
65 sharedNetworkMessages/src/shared/chat/Makefile.am and add
66 NewMessage.cpp to the libsharedNetworkMessagessharedchat_la_SOURCES
67 variable.
69 If a file is being removed from the build, be sure to remove it from
70 its respective Makefile.am.
72 5.1 Adding and removing directories
73 Makefile.am's contain a SUBDIRS variable that indicates which sub directories the
74 build system should recurse into. The bootstrap process takes Makefile.am's and 
75 generates Makefile.in's, which are in turn used by configure.in to generate 
76 site-specific build options.
78 To add a new subdirectory, open the parent directory's Makefile.am
79 edit parentDir/Makefile.am
80 SUBDIRS=subDir .
82 edit configure.in (there is on in the src, src/engine src/game and each 
83 src/external/ours/library/<project> directory. Add a line to AC_OUTPUT to tell
84 configure.in to generate a Makefile from Makefile.in.
86 Be sure to add the appropriate link commands if there are executables that
87 require a new library created in the subdirectory, or if the subdirectory
88 contains a utility library (noinst_LTLIBRARY), add it to the appropriate
89 installed library (see sharedGame for an example of utility libraries and
90 how they are used)
92 run the bootstrap process.
94 6. Other notes
95 If you are building on Linux, and have KDE version 3.1.x or better,
96 try using KDevelop 3. It has integrated automake support and a LOT of
97 very nice features that make it even easier to use than the best
98 commercial dev environments.
100 7. Multiple build configurations (e.g. debug vs optimized, side by side)
101 Building multiple targets (configurations) is possible. Go to the directory
102 where the new build type will keep it's object files (e.g. debug) and
103 run configure. For example:
104 $ cd /swg/swg/current/src/debug && CXXFLAGS="-O0 -g3" /swg/swg/current/src/configure --enable-debug=full --prefix=/swg/swg/current/dev
105 might be used to create a debug build whereas:
106 $ cd /swg/swg/current/src/debug && CXXFLAGS="-O0 -g3 -pg" /swg/swg/current/src/configure --enable-debug=full --prefix=/swg/swg/current/dev
107 might build a debug version with profiling information
109 $ cd /swg/swg/current/src/debug && CXXFLAGS="-O3 -g3 -mcpu=pentium4 -march=pentium4 -mfpmath=sse -mmmx -sse -sse2" /swg/swg/current/src/configure --prefix=/swg/swg/current/dev
110 might build SWG heavily optimized for the target CPU/Architecture
112 8. Using KDevelop3:
114 Setup the project:
116 a. Make a symbolic link from bootstrap to autogen.sh.
118 b. From the project menu, select "import existing project". Choose 
119 "Automake based project, C++" and point it to the branch's top-level 
120 src directory. 
122 c. From the build menu, select "Run Automake and friends" then "configure"
124 d. From the build menu, select "install"