bdd0a41aed
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@668359 13f79535-47bb-0310-9956-ffa450edef68
333 lines
14 KiB
Text
333 lines
14 KiB
Text
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 TuscanySDO Native
|
|
|
|
This guide shows how to build TuscanySDO Native with apache ant.
|
|
Traditionally TuscanySDO 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 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 TuscanySDO 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 TuscanySDO Native is the location of libxml2.
|
|
|
|
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
|
|
|
|
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_SDO_SRC_ROOT/build.xml
|
|
TUSCANY_SDO_SRC_ROOT/runtime/core/build.xml
|
|
TUSCANY_SDO_SRC_ROOT/runtime/core/test/build.xml
|
|
TUSCANY_SDO_SRC_ROOT/runtime/core/sdo_axiom_test/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 TuscanySdoNative source code and documentation
|
|
build Build all TuscanySdoNative source code and documentation
|
|
clean Clean all TuscanySdoNative compiled source code
|
|
install Install TuscanySdoNative libraries and headers
|
|
test Run SDO tests, not implemented yet
|
|
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 SDO 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.tuscanySDO.distribution.dir NO "C:\distribution\" The folder where the distribution files will be generated, default=tuscanySDO.root.dir/distribution
|
|
|
|
platform.tuscanySDO.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 TuscanySDO 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 TuscanySDO Native ant build system is capable of automatically configuring
|
|
everything except the location of the libxml2 library. All other configuration
|
|
options can be determined. (except of course the location of the optional 3rd-party
|
|
packages: axis2c)
|
|
|
|
From anywhere there is a TuscanySDO 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.libxml2:
|
|
|
|
check.ws:
|
|
|
|
display.system:
|
|
[echo]
|
|
[echo] TuscanySDO paths
|
|
[echo] tuscanySDO.root.dir= /amd/homes/bjohnson/tuscany_svn_head/sdo
|
|
[echo] tuscanySDO.root.src.dir= /amd/homes/bjohnson/tuscany_svn_head/sdo/runtime
|
|
[echo] tuscanySDO.install.dir= /nfs/homes/bjohnson/tuscany_svn_head/sdo/deploy
|
|
[echo] sdo.impl.library.name= tuscany_sdo
|
|
[echo] sdo.impl.library.path= /nfs/homes/bjohnson/tuscany_svn_head/sdo/deploy/lib
|
|
[echo] sdo.impl.include.path= /amd/homes/bjohnson/tuscany_svn_head/sdo/runtime/core/src
|
|
[echo] tuscanySDO.library.version= '.0.0.0'
|
|
[echo]
|
|
[echo] TuscanySDO 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]
|
|
[echo] libxml2 location
|
|
[echo] libxml2.lib.dir= /usr/lib
|
|
[echo] libxml2.include.dir= /usr/include/libxml2
|
|
[echo]
|
|
[echo] axis2c location
|
|
[echo] axis2c.home.dir= /nfs/homes/bjohnson/3rdparty/axis2c-src-0.96/deploy
|
|
[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 SDO installation path
|
|
-----------------------------
|
|
|
|
The Tuscany SDO installation directory can be configured as follows:
|
|
export TUSCANY_SDOCPP=/tuscany/sdo/native/install/dir
|
|
-- OR --
|
|
edit antscripts/platform.properties
|
|
platform.tuscanySDO.install.dir=/tuscany/sdo/native/install/dir
|
|
|
|
The Tuscany SDO installation directory defaults to:
|
|
TUSCANY_SDO_SRC_ROOT/deploy
|
|
|
|
|
|
3rd Party configuration
|
|
-----------------------
|
|
|
|
AXIS2C:
|
|
If not specified, then the values are left empty and the sdo_axiom library will not be compiled.
|
|
|
|
export AXIS2C_HOME=/axis2c/home/dir
|
|
-- OR --
|
|
edit antscripts/platform.properties
|
|
platform.axis2c.home.dir=/axis2c/home/dir
|
|
|
|
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.libxml2.lib.dir=/libxml2/library/directory
|
|
platform.libxml2.include.dir=/libxml2/include/directory
|
|
|
|
|