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
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
|
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 TuscanySCA Native
This guide shows how to build TuscanySCA Native with apache ant.
Traditionally TuscanySCA was compiled with automake, but we decided
it would be easier to maintain and more flexible if we switched to
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 finish writing ant build files for the rest of the
samples.
Required Software to build TuscanySCA 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 TuscanySCA 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 TuscanySCA Native is the location of an SDO
implementation, typically TuscanySDO Native.
To configure the location of TuscanySDO Native, do one of the following:
export TUSCANY_SDOCPP=/tuscany/sdo/native/deploy/dir
-- OR --
edit antscripts/platform.properties
platform.tuscanySDO.install.dir=/tuscany/sdo/native/deploy/dir
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 TuscanySCA Native ant build process is hierarchical. Currently there are
build scripts in the following locations, which can all be invoked from the
root TuscanySCA directory:
TUSCANY_SCA_SRC_ROOT/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/core/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/extensions/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/extensions/cpp/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/extensions/php/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/extensions/cpp/tools/scagen/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/extensions/python/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/extensions/rest/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/extensions/ruby/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/extensions/sca/build.xml
TUSCANY_SCA_SRC_ROOT/runtime/extensions/wsbuild.xml
TUSCANY_SCA_SRC_ROOT/tools/TuscanyDriver/build.xml
TUSCANY_SCA_SRC_ROOT/tools/TuscanyDriver/build.xml
TUSCANY_SCA_SRC_ROOT/samples/CppBigBank/build.xml (the rest of the samples are coming soon)
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 TuscanyScaNative source code
build Build all TuscanyScaNative source code
clean Clean all TuscanyScaNative compiled source code
install Install TuscanyScaNative libraries and headers
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.
CONFIGURATION
==============
The following explains how to configure the TuscanySCA 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 TuscanySCA Native ant build system is capable of automatically configuring
everything except the location of the Tuscany SDO Native location. All other
configuration options can be determined. (except of course the location of the
optional 3rd-party packages: axis2c, python, php, ruby, and rest)
From anywhere there is a TuscanySCA 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.ws:
check.python:
check.php:
check.ruby:
check.rest:
display.system:
[echo]
[echo] TuscanySCA paths
[echo] tuscanySCA.install.dir= /nfs/homes/bjohnson/tuscany_svn_head/sca/deploy
[echo] tuscanySCA.root.dir= /amd/homes/bjohnson/tuscany_svn_head/sca
[echo] tuscanySCA.root.src.dir= /amd/homes/bjohnson/tuscany_svn_head/sca/runtime
[echo] tuscanySCA.install.dir= /nfs/homes/bjohnson/tuscany_svn_head/sca/deploy
[echo] tuscanySCA.library.version= '.0.0.0'
[echo] tuscanySDO.install.dir= /nfs/homes/bjohnson/tuscany_svn_head/sdo/deploy
[echo]
[echo] TuscanySCA compiler configuration
[echo] compiler.name= 'g++'
[echo] debug.compile= 'false'
[echo] lib.ext= '.so'
[echo] dll.ext= ''
[echo] lib.prefix= 'lib'
[echo] object.ext= '.o'
[echo] exe.ext= ''
[echo] script.ext= '.sh'
[echo] external.definitions.file= ''
[echo] sdo.impl.library.name= 'tuscany_sdo'
[echo]
[echo] TuscanySCA ws extension enabled
[echo] axis2c.home.dir= /nfs/homes/bjohnson/3rdparty/axis2c-src-0.96/deploy
[echo]
[echo] TuscanySCA php extension enabled
[echo] php.lib.dir= /nfs/homes/bjohnson/3rdparty/php-5.1.6/deploy/lib
[echo] php.include.dir= /nfs/homes/bjohnson/3rdparty/php-5.1.6/deploy/include/php
[echo] php.sca.sdo.lib.dir= /nfs/homes/bjohnson/3rdparty/sdo-1.0.3/lib
[echo] php.sca.sdo.include.dir= /nfs/homes/bjohnson/3rdparty/sdo-1.0.3
[echo]
[echo] TuscanySCA python extension enabled
[echo] python.lib.dir= /nfs/homes/bjohnson/3rdparty/Python-2.5.1/deploy/lib
[echo] python.include.dir= /nfs/homes/bjohnson/3rdparty/Python-2.5.1/deploy/include/python2.5
[echo] python.version= python2.5
[echo]
[echo] TuscanySCA rest extension enabled
[echo] rest.curl.lib.dir= /usr/lib
[echo] rest.curl.include.dir= /usr/include/curl
[echo] rest.httpd.include.dir= /nfs/homes/bjohnson/3rdparty/httpd-2.0.59/deploy/include
[echo] rest.apr.include.dir= /usr/include/apr-0
[echo]
[echo] TuscanySCA ruby extension enabled
[echo] ruby.lib.dir= /nfs/homes/bjohnson/3rdparty/ruby-1.8.6/deploy/lib
[echo] ruby.include.dir= /nfs/homes/bjohnson/3rdparty/ruby-1.8.6/deploy/include
[echo]
BUILD SUCCESSFUL
Total time: 0 seconds
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 SCA and SDO paths
-------------------------
Both the Tuscany SCA and SDO installation directories can be configured as follows:
export TUSCANY_SCACPP=/tuscany/sca/native/install/dir
export TUSCANY_SDOCPP=/tuscany/sdo/native/install/dir
-- OR --
edit antscripts/platform.properties
platform.tuscanySCA.install.dir=/tuscany/sca/native/install/dir
platform.tuscanySDO.install.dir=/tuscany/sdo/native/install/dir
The Tuscany SCA installation directory defaults to:
TUSCANY_SCA_SRC_ROOT/deploy
Extension configuration
-----------------------
AXIS2C:
If not specified, then the values are left empty and the cpp and ws extensions will not be compiled.
export AXIS2C_HOME=/axis2c/home/dir
-- OR --
edit antscripts/platform.properties
platform.axis2c.home.dir=/axis2c/home/dir
PYTHON:
If not specified, then the values are left empty and the python extension will not be compiled.
export PYTHON_LIB=/python/library/directory
export PYTHON_INCLUDE=/python/include/directory
export PYTHON_VERSION=python_library_name_with_version
-- OR --
edit antscripts/platform.properties
platform.python.include.dir=/python/library/directory
platform.python.lib.dir=/python/include/directory
platform.python.version=python_library_name_with_version
PHP:
If not specified, then the values are left empty and the php extension will not be compiled.
export PHP_LIB=/php/library/directory
export PHP_INCLUDE=/php/include/directory
export PHP_SCA_SDO_LIB=/php/sdo/library/directory
export PHP_SCA_SDO_INCLUDE=/php/sdo/include/directory
-- OR --
edit antscripts/platform.properties
platform.php.include.dir=/php/library/directory
platform.php.lib.dir=/php/include/directory
platform.php.sca.sdo.lib.dir=/php/sdo/library/directory
platform.php.sca.sdo.include.dir=/php/sdo/include/directory
RUBY:
If not specified, then the values are left empty and the ruby extension will not be compiled.
export RUBY_LIB=/ruby/library/directory
export RUBY_INCLUDE=/ruby/include/directory
-- OR --
edit antscripts/platform.properties
platform.ruby.lib.dir=/ruby/library/directory
platform.ruby.include.dir=/ruby/include/directory
REST:
If not specified, then the values are left empty and the rest extension will not be compiled.
export CURL_LIB=/curl/library/directory
export CURL_INCLUDE=/curl/include/directory
export HTTPD_INCLUDE=/httpd/apache/include/directory
export APR_INCLUDE=/apr/include/directory
-- OR --
edit antscripts/platform.properties
platform.rest.curl.lib.dir=/curl/library/directory
platform.rest.curl.include.dir=/curl/include/directory
platform.rest.httpd.include.dir=/httpd/apache/include/directory
platform.rest.apr.include.dir=/apr/include/directory
|