summaryrefslogtreecommitdiffstats
path: root/das-cpp/trunk/README_ANT_INSTALL
blob: b1f0cce2ec5ad24793f492dce7fd97c7e82696f7 (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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at
   
http://www.apache.org/licenses/LICENSE-2.0
     
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.

Using ant to build TuscanyDAS Native

This guide shows how to build TuscanyDAS Native with apache ant. 
Above all, using ant will standardize the build system across 
all platforms, obviating the need to support both automake and 
microsoft VC projects. The ant build process is still in its beta 
and will be formalized for Release M4. Currently the only item 
remaining is to write an ant build file for the samples.


Required Software to build TuscanySDO Native with ant
=====================================================

Java:
        Most Linux, Mac, and Windows systems come with Java
        Java 1.4.2 or later

Ant:
        Ant comes installed with almost all Linux distributions
        version 1.6 or later
        Download: http://ant.apache.org/

antcontrib:
        version 1.0b3 or later
        Download: http://ant-contrib.sourceforge.net/

antcontrib cpptasks.jar
        version 1.0b4 or later
        Download: http://ant-contrib.sourceforge.net/
        Information: http://ant-contrib.sourceforge.net/cc.html


Installation Instructions
=========================

Linux/Mac
---------

Make sure JAVA_HOME is set before starting.

Install ant according to http://ant.apache.org/manual/index.html.

Set the ANT_HOME variable to the directory where you install ant.
export ANT_HOME="/home/your/ant"

Add $ANT_HOME/bin to your path.
export PATH="${PATH}:${ANT_HOME}/bin"

The optional ant tasks included in antcontrib and cpptasks are needed to
compile Tuscany Native with ant. Additional ant tasks (antcontrib and cpptasks)
should be installed in $ANT_HOME/lib
So place the antcontrib and cpptasks jars there.

If you dont have write access to $ANT_HOME/lib, do the following:
- create ${user.home}/.ant/lib
- place the jars here

Typically its a good idea to avoid adding optional ant tasks to your classpath,
this can be problematic.

Since the antcontrib compiler adaptor for microsoft msvc 8 has several bugs, we've
written our own. Even though this compiler is for Windows, it is referenced in the
ant build scripts and thus needs to be added to the classpath even for Linux/Mac.
Add the TuscanyMSVC8DevStudioCCompiler jar to your classpath.
export CLASSPATH="${CLASSPATH}:/TuscanySourceDir/antscripts/TuscanyMSVC8DevStudioCCompiler.jar"

Windows
-------

Make sure JAVA_HOME is set before starting.

Install ant according to http://ant.apache.org/manual/index.html.

Set the ANT_HOME variable to the directory where you install ant.
set ANT_HOME=c:\ant

Add %ANT_HOME%\bin to your path.
set PATH=%PATH%;%ANT_HOME%\bin

The optional ant tasks included in antcontrib and cpptasks are needed to
compile Tuscany Native with ant. Additional ant tasks (antcontrib and cpptasks)
should be installed in %ANT_HOME%\lib
So place the antcontrib and cpptasks jars there.

If you dont have write access to %ANT_HOME%\lib, do the following:
- create %user.home%\.ant\lib
- place the jars here

Typically its a good idea to avoid adding optional ant tasks to your classpath,
this can be problematic.

Since the antcontrib compiler adaptor for microsoft msvc 8 has several bugs, we've
written our own, namely TuscanyMSVC8DevStudioCCompiler. The Tuscany MSVC8 adaptor 
just makes sure that the correct parameters are passed to the compiler.
Add the TuscanyMSVC8DevStudioCCompiler jar to your classpath.
set CLASSPATH=%CLASSPATH%:c:\TuscanySourceDir\antscripts\TuscanyMSVC8DevStudioCCompiler.jar

USAGE
=====

From the TuscanyDAS Native root source directory, the entire application can be 
compiled, linked, and installed by simply executing ant with no targets. This will
execute the default "all" target.

# ant

The ant build system will scan your environment variables and ant configuration file
and try to autoconfigure everything needed to build.  The environment variables can be 
overridden by the ant configuration file: antscripts/platform.properties.  The only 
configuration that is mandatory to build TuscanyDAS Native is the location of libxml2 and TuscanySDO.

To configure the location of libxml2, do one of the following:
  export LIBXML2_LIB=/libxml2/lib/dir
  export LIBXML2_INCLUDE=/libxml2/include/dir
  -- OR --
  edit antscripts/platform.properties
  platform.libxml2.lib.dir=/libxml2/lib/dir
  platform.libxml2.include.dir=/libxml2/include/dir

To configure the location of TuscanySDO, do one of the following:
  export TUSCANY_SDOCPP=/tuscanySDOHome/
  -- OR --
  edit antscripts/platform.properties
  platform.tuscany.sdo.home.dir=/tuscanySDOHome/
  
The platform.properties configuration always overrides environment variables.
See the CONFIGURATION section below for more information.

To compile in debug mode, add the following define to the ant command line or
edit the platform.properties file as seen in the CONFIGURATION section below.

# ant -Ddebug=true

The TuscanySDO Native ant build process is hierarchical. Currently there are 
build scripts in the following locations, which can all be invoked from the 
root TuscanySDO directory:
  TUSCANY_DAS_SRC_ROOT/build.xml
  TUSCANY_DAS_SRC_ROOT/runtime/core/build.xml

For a listing of public targets for any build.xml file, execute the following: 
(display shown for the root src directory)

# ant -p
Buildfile: build.xml

Main targets:

 all      		build and install all TuscanyDASNative source code and documentation
 build    		Build all TuscanyDASNative source code and documentation
 clean    		Clean all TuscanyDASNative compiled source code
 samples  		Build and install all TuscanyDASNative samples
 install  		Install TuscanyDASNative libraries and headers
 test     		Build and run all tests
 distribution   	Create a source and bin distribution structure
 pack.distribution      Pack the bin and source distribution into .zip and .tar.gz files. Also generates the .asc and .md5 files
Default target: all


Public targets are those that have descriptions and are usually the only ones needed for
compiling, installing and cleaning. For more avanced use, the private targets can be seen 

by looking at the actual build.xml file.


GENERATING A PROJECT DISTRIBUTION
=================================

To create a src and bin distribution of Tuscany DAS subproject, there must be set some properties on platform.properties files:

Property                                 Required                  Example                                 Description
--------                                 --------                  -------                                 -----------

platform.public.key.path                  Yes                     "E:/gnupg/trustdb.gpg"                   The public key ring file path

platform.secret.key.path                  Yes                     "E:/gnupg/secring.gpg"                   The secret key ring file path  
         
platform.key.id                           Yes                     "148CAFB2"                               The key id used to sign the distribution files

platform.tuscanyDAS.distribution.dir      NO                      "C:\distribution\"                       The folder where the distribution files will be generated, default=tuscanyDAS.root.dir/distribution

platform.tuscanyDAS.release.file.name     NO                      "tuscany_das_native-1.0-incubator-M4-"   The beginning of src and bin packed distribution file name, default="tuscany_cpp_das".
													   TUSCANY_DASCPP_RELEASE_NAME env var may be used as an alternative

Also is required the bcpg-jdk<latest_version>-<latest_version>.jar and 
jce-jdk<latest_version>-<latest_version>.jar files defines on classpath. 
Both can be found at http://www.bouncycastle.org/latest_releases.html

Use the "distribution" target to generate the src and bin distribution 
file structure under platform.tuscanySDO.distribution.dir folder. Then 
use the "pack.distribution" target to pack the bin and src distribution 
folders as .zip and .tar.gz and generate their .asc and .md5 files. A 
password must be set on the command line when using pack.distribution 
target, this password is used to sign the packed distribution files with 
the secret key defined on platform.secret.key.path

Make sure an 1.6 JRE version is set in your JAVA_HOME when signing the
distribution.

Usage:
ant distribution
// do whatever you want on the generated distribution files
ant pack.distribution -Dpassword="123456"



CONFIGURATION
==============

The following explains how to configure the TuscanyDAS Native ant build system.
The build system is configured either by environment variables and/or by the
antscripts/platform.properties file. Some options can only be configured via the
platform.properties file. If an option can be configured in both places, the option
specified in the platform.properties file overrides the environment variable.

The TuscanyDAS Native ant build system is capable of automatically configuring 
everything except the location of the libxml2 and TuscanySDO libraries. All other configuration 
options can be determined.

From anywhere there is a TuscanyDAS Native build.xml file, the current system
configuration can be displayed by executing the display.system ant target as 
follows:

# ant display.system
Buildfile: build.xml

check.sdo:

display.system:
     [echo]
     [echo] TuscanyDAS paths
     [echo]   tuscanyDAS.root.dir=           /home/Adriano/Tuscany/cpp/das
     [echo]   tuscanyDAS.root.src.dir=       /home/Adriano/Tuscany/cpp/das/runtime
     [echo]   tuscanyDAS.install.dir=        /home/Adriano/Tuscany/cpp/das/deploy
     [echo]   tuscanyDAS.library.version=    ''
     [echo]   tuscanyDAS.release.file.name=  'tuscany_das_cpp-1.0-incubator-M4-'

     [echo]
     [echo] TuscanyDAS compiler configuration
     [echo]   compiler.name=               'msvc8'
     [echo]   debug.compile=               'false'
     [echo]   lib.ext=                     '.lib'
     [echo]   dll.ext=                     '.dll'
     [echo]   lib.prefix=                  ''
     [echo]   object.ext=                  '.obj'
     [echo]   exe.ext=                     '.exe'
     [echo]   script.ext=                  '.bat'
     [echo]   external.definitions.file=   ''
     [echo]
     [echo] sdo location
     [echo]   tuscany.sdo.home.dir=          /home/Adriano/Tuscany/cpp/sdo/deploy
     [echo]

BUILD SUCCESSFUL
Total time: 0 second

Compilation configuration
-------------------------

The compilation options can all be determined by the ant build system by
examining the platform.  The values can only be overriden by editing the 
platform.properties file. Following is a list of the options and their 
default values:

platform.lib.ext=        (Defaults to ".so" for Unix and ".lib" for Windows)
platform.dll.ext=        (Defaults to "" for Unix and ".dll" for Windows. Not used for Unix)
platform.exe.ext=        (Defaults to "" for Unix and ".exe" for Windows)
platform.object.ext=     (Defaults to ".o" for Unix and ".obj" for Windows)
platform.script.ext=     (Defaults to ".sh" for Unix and ".bat" for Windows)
platform.compiler.name=  (Defaults to "g++" for Unix and "msvc8" for Windows)
platform.debug.compile=  (Defaults to "false" for both Unix and Windows)

To configure ant to use a compiler other than g++ or msvc, or to add your own
ant tasks/definitions, specify a path for the platform.external.definitions.file
and platform.compiler.name in the platform.properties configuration file. This 
is especially useful for compiling on other platforms like AIX or Solaris.

Tuscany DAS installation path
-----------------------------

The Tuscany DAS installation directory can be configured as follows:
  export TUSCANY_DASCPP=/tuscany/das/native/install/dir
  -- OR --
  edit antscripts/platform.properties
  platform.tuscanyDAS.install.dir=/tuscany/das/native/install/dir

The Tuscany DAS installation directory defaults to:
  TUSCANY_DAS_SRC_ROOT/deploy

Tuscany SDO Configuration
-------------------------

TuscanySDO:
If not specified, then the the build will fail.

  export TUSCANY_SDOCPP=/tuscanySDOHome/
    -- OR --
  edit antscripts/platform.properties
  platform.libxml2.lib.dir=/libxml2/library/directory
  platform.libxml2.include.dir=/libxml2/include/directory


3rd Party configuration
-----------------------

LIBXML2:
If not specified, then the the build will fail.

  export LIBXML2_LIB=/libxml2/library/directory
  export LIBXML2_INCLUDE=/libxml2/include/directory
    -- OR --
  edit antscripts/platform.properties
  platform.tuscany.sdo.home.dir=/tuscanySDOHome/