Building

Building and Installing DDS Community Edition from a Source Bundle

POSIX / LINUX

POSIX / Linux Minimal Build Required Tools

NOTE: The list of tools below is the minimal set required to build DDS Community Edition without CORBA ORB collocation support. See the required tools section below for details of the additional dependencies to build DDS Community Edition with support for sharing DDS types with a C++ or Java CORBA ORB.

The following tools should be installed and available on the machine executable / library search path.

  • bash shell
  • A suitable C / C++ compiler, e.g:
    • gcc - 3.2.x or above
    • Sun Studio - At this time only v12 of this compiler has been tested
  • gmake - 3.80 or above.
  • gawk - Any version is acceptable.
  • flex - Any version is acceptable.
  • bison - Any version is acceptable.
  • perl - Version 5.8 or above is required.
  • gSOAP - Version 2.7 or above is required.
  • Java SDK - This is optional. Oracle SDK v1.6 or above is acceptable. If omitted no Java APIs or tools will be generated.
  • Doxygen - This is optional. If omitted the documentation for the C# and I.S.O. C++ APIs will not be generated. Version 1.8 or greater is recommended for ideal results. (v6 of OpenSplice onwards only)
  • Protobuf- This is optional. Version 2.6.x is required. If omitted data types modeled in Google Protocol Buffers will not be supported
  • Qt4 - Highly optional. Its only use is to build the iShapes demonstration application into the distribution, which can be used to illustrate DCPS use and verify interoperability. (v6 of DDS Community Edition onwards only). See demos/iShapes/README.md.
  • [zlib - No longer required in v6. The default version provided with all supported platforms was acceptable for previous OpenSplice versions.]

POSIX / Linux Build with Optional CORBA Collocation Support Required Tools

In addition to the above dependencies the following may also be optionally installed and used to enable support for sharing data types with a CORBA ORB.

  • TAO - See the installation instructions for how to install and configure the build environment.
    • Install and set TAO_ROOT to the directory that the TAO C++ ORB is installed in, before sourcing configure to enable C++ CORBA support.
  • JacORB- See the installation instructions for how to install and configure the build environment.
    • Install and set JACORB_HOME to the directory that the JacORB Java ORB is installed in, before sourcing configure to enable Java CORBA support.

POSIX / Linux Steps to Build DDS Community Edition from Source

  1. Extract the DDS Community Edition distribution.
  2. Set environment variables so that the above tools can be located:
    1. Optionally set either or both TAO_ROOT or JACORB_HOME if you wish to build CORBA support. Otherwise: leave either or both unset. See above.
    2. Optionally set JAVA_HOME - set to the directory that a Oracle SDK (>1.6) is installed in.
    3. Optionally set PROTOBUF_HOME - set to the directory where Google Protocol Buffer is installed.
    4. All other tools will be located from the machine $PATH
  3. Source the OpenSplice configure script to set-up your build environment. N.B. You must source this script each time you wish to configure a new shell as a build environment. The configuration choices are not persistent.
  4. Choose the target platform configuration.
  5. Invoke make to compile DDS Commmunity Edition
  6. Invoke make install to build a DDS  Community Edition Distribution

tar -xzf=<Source distribution>

export TAO_ROOT=<TAO location>

export JACORB_HOME=<JacORB location>

export JAVA_HOME=<Oracle Java SDK location>

export GSOAPHOME=<gSOAP location>

cd VortexOpenSplice

source ./configure

make

make install

Example:
sm@plutus:~> sm@plutus:~> sm@plutus:~> export GSOAPHOME=/usr/gsoap/2.7.8
sm@plutus:~> tar -xzf VortexOpenSplice-src.tar.gz 
sm@plutus:~> cd VortexOpenSplice/
sm@plutus:~/VortexOpenSplice> source configure 

Setup at 15:30:01 for Vortex - Version 6.7.170523OSS - Date 2017-05-23

Available targets are:
1 > armv6l.linux-dev
2 > armv6l.linux-release
3 > armv7l.linux-debug
4 > armv7l.linux-dev
5 > armv7l.linux-release
6 > x86_64.linux_clang-dev
7 > x86_64.linux-debug
8 > x86_64.linux-dev
9 > x86_64.linux-gcov
10 > x86_64.linux_icc-dev
11 > x86_64.linux_icc-release
12 > x86_64.linux_opencc-release
13 > x86_64.linux-release
14 > x86.linux-debug
15 > x86.linux-dev
16 > x86.linux-devdat
17 > x86.linux-efence
18 > x86.linux-gcov
19 > x86.linux-release
20 > x86.linux-test
Please select a target number:8

GCC: OK - using version 5.4.0
NOTE: enabling link-time optimizations in release build
GLIBC: version 2.23
MAKE: OK - using GNU Make 4.1
Perl: OK - using perl version='5.22.1';
Qt: On. Using QT tools from the path (with -qt4 suffix).
GAWK: OK - using GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
BISON: OK - using bison (GNU Bison) 3.0.4
FLEX: OK - using 2.6.0                                                                                                                                                                                            
JAVAC: Warning - you should set JAVA_COMPATJAR to rt.jar for Java  1.6                                                                                                                                             
OK - using JAVAC version 1.8.0_101                                                                                                                                                                               
   JAVA_HOME is /usr/local/java/jdk1.8.0_101                                                                                                                                                                             
GMCS: OK - using GMCS version 4.2.1.0                                                                                                                                                                             
  found in /usr/bin/gmcs                                                                                                                                                                                          
TAO: Warning - No TAO found                                                                                                                                                                                       
   TAO environment not set, disabling TAO related features.                                                                                                                                                       
JACORB: Warning - JACORB_HOME not set                                                                                                                                                                             
   JACORB environment not set, disabling JACORB related features.                                                                                                                                                 
GSOAP: OK - using GSOAP version 2.7.8c                                                                                                                                                                            
  setting GSOAPHOME to /usr/local/gsoap/2.7.8/                                                                                                                                                                    
DOXYGEN: OK                                                                                                                                                                                                       
GOOGLE PROTOCOL BUFFERS: PROTOBUF_HOME has not been set                                                                                                                                                           
Warning - Protobuf compiler environment not set, building of all 
protobuf related features is disabled. C99: OK - supported Configuration OK Variable Setup SPLICE_TARGET = x86_64.linux-dev SPLICE_HOST = x86_64.linux-dev OSPL_HOME = /home/sm/VortexOpenSplice SPLICE_ORB = sm@plutus:~/VortexOpenSplice> make && make install

Windows

Windows Minimal Build Required Tools

NOTE: The below list of tools is the minimal set required to build DDS Community Edition without CORBA ORB collocation support. See the required tools section below for details of the additional dependencies to build DDS Community Edition with support for sharing DDS types with a C++ or Java CORBA ORB.

  • Microsoft Visual Studio 2008 to Microsoft Visual Studio 2015
  • cygwin - The latest available version is recommended. The following packages should be installed in addition to the recommended base selection:
    • gcc-core
    • gmake
    • bison
    • flex
    • gawk
    • zip
    • unzip
    • doxygen (Optional - used for C# & ISO C++ API documentation)
  • gSOAP - Version 2.7 or above is required.
  • Java SDK -  This is optional. Oracle SDK v1.6 or above is acceptable. If omitted no Java APIs or tools will be generated.
  • Protobuf- This is optional. Version 2.6.x is required. If omitted data types modeled in Google Protocol Buffers will not be supported
  • Qt4 - Highly optional. Its only use is to build the iShapes demonstration application into the distribution, which can be used to illustrate DCPS use and verify interoperability. (v6 of OpenSplice onwards only). See demos/iShapes/README.md.
  • [zlib 1.2.4 from zlib.net - No longer required. Only required if building OpenSplice v5. After install define ZLIB_HOME to the location unzipped to.  Using the version of zlib in cygwin has not been tested.]

Windows Build with Optional CORBA Collocation Support Required Tools

In addition to the above dependencies the following may also be optionally installed and used to enable support for sharing data types with a CORBA ORB.

  • TAO - See the installation instructions for how to install and configure the build environment.
    • Install and set TAO_ROOT to the directory that the TAO C++ ORB is installed in, before sourcing configure to enable C++ CORBA support.
  • JacORB - See the installation instructions for how to install and configure the build environment.
    • Install and set JACORB_HOME to the directory that the JacORB Java ORB is installed in, before sourcing configure to enable Java CORBA support.

Windows Steps to build DDS Community Edition from Source

  1. Extract the DDS Community Edition source distribution zip file using Windows Explorer or a similar zip extraction utility (e.g. Cygzin unzip).
  2. In a Cygwin shell set environment variables so that the required build tools can be located.
    1. VS_HOME - set to the installation directory of Visual Studio 2008 or 2015.
    2. WINDOWSSDKDIR - set to the location of the Windows SDK directory.
    3. Optionally set either or both TAO_ROOT or JACORB_HOME if you wish to build CORBA support. Otherwise: leave either or both unset. See above.
    4. Optionally set JAVA_HOME - set to the directory that an Oracle SDK (>1.6) is installed in.
    5. All other tools will be located from the cygwin shell $PATH
  • Unset TMP and TEMP (lower and upper case) otherwise you may encouter error 256 while building the DDS Community Edition ISO C++ API. This is a known compatibility issue between Cygwin and Visual Studio. This can be done permanently by editing your /etc/profile and commenting out the setting of the variables.
  • Source the OpenSplice configure script to set-up your build environment. N.B. You must source this script each time you wish to configure a new shell as a build environment. The configuration choices are not persistent.
  • Choose the target platform configuration. N.B - 32/64 bit debug (dev) or release (release) builds are available.
    1. Note that if you wish to build 'dev' and you wish to build C++ CORBA support then you must have installed a debug version of TAO. If you wish to build release then the TAO installed and indicated by the TAO_ROOT variable must also be release.
  • Invoke make to build OpenSplice DDS
  • Invoke make install to build an OpenSplice DDS Distribution

 

<extract distribution zip>
export TAO_ROOT=<TAO_installed_dir>
export JACORB_HOME=<JacORB_installed_dir>
export JAVA_HOME=<JDK_install_dir>
export VS_HOME=<Location of Visual Studio installation>
export WINDOWSSDKDIR=<Location of the Windows SDK>
export GSOAPHOME=<Location of gSOAP>
unset tmp && unset TEMP && unset TMP && unset temp
cd VortexOpenSplice
source ./configure
<choose target platform>
make
make install
Example
sm@plutus ~
$ export VS_HOME='/cygdrive/C/Program Files (x86)/Microsoft Visual Studio 
14.0' sm@plutus ~ $ export WINDOWSSDKDIR='/cygdrive/C/Program Files (x86)/Windows Kits/10' sm@plutus ~ $ export JACORB_HOME=/home/dds/INSTALLED_FOR_DDS/JacORB-v2.3.1.0 sm@plutus ~ $ export JAVA_HOME=/cygdrive/c/PROGRA~1/Java/JDK16~1.0_3 sm@plutus ~/VortexOpenSplice $ unset tmp && unset TEMP && unset TMP && unset temp sm@plutus ~ $ unzip -q VortexOpenSplice-src.zip sm@plutus ~ $ cd VortexOpenSplice/ sm@plutus ~/VortexOpenSplice $ export QTDIR=c:\cygwin64\home\dds\INSTALLED_FOR_DDS\Qt\4.8.4_vs2010_64bit sm@plutus ~/VortexOpenSplice $ export GSOAPHOME=/home/dds/INSTALLED_FOR_DDS/gsoap-v2.7 sm@plutus ~/VortexOpenSplice $ export PROTOBUF_HOME=/home/dds/INSTALLED_FOR_DDS/protobuf-2.6.0-vs2015 sm@plutus ~/VortexOpenSplice $ source ./configure Setup at 15:00:31 for Vortex - Version 6.7.170523OSS - Date 2017-05-23 Available targets are: 1 > x86.win32-debug 2 > x86.win32-dev 3 > x86.win32-release 4 > x86_64.win64-debug 5 > x86_64.win64-dev 6 > x86_64.win64-release Please select a target number:6 VS: OK - using compiler version: 19.00.23026 for VS: 2015 Visual Studio builder: OK - using devenv.com C#: OK - using version 1.0.0.50618 MAKE: OK - using GNU Make 4.1 Perl: OK - using perl version='5.22.1'; Qt: at_check (1) and QT_VERSION is 4 OK. $QTDIR was c:\cygwin64\home\dds\INSTALLED_FOR_DDS\Qt\4.8.4_vs2010_64bit,
set to C:\cygwin64\home\dds\INSTALLED_FOR_DDS\Qt\4.8.4_vs2010_64bit GAWK: OK - using GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0) BISON: OK - using bison (GNU Bison) 3.0.4 FLEX: OK - using 2.5.39 JAVAC: OK - using JAVAC version 1.6.0_37 JAVA_HOME is /cygdrive/c/PROGRA~1/Java/JDK16~1.0_3 TAO: Warning - No TAO found TAO environment not set, disabling TAO related features. JACORB: OK JACORB_HOME is /home/dds/INSTALLED_FOR_DDS/JacORB-v2.3.1.0 GSOAP: OK - using GSOAP version setting GSOAPHOME to /home/dds/INSTALLED_FOR_DDS/gsoap-v2.7 DOXYGEN: OK GOOGLE PROTOCOL BUFFERS: OK - using PROTOC version 2.6.0 PROTOBUF_HOME is /home/dds/INSTALLED_FOR_DDS/protobuf-2.6.0-vs2015 C99: OK - supported Configuration OK Variable Setup SPLICE_TARGET = x86_64.win64-release SPLICE_HOST = x86_64.win64-release OSPL_HOME = /home/dds/VortexOpenSplice SPLICE_ORB = sm@plutus ~/VortexOpenSplice $ make && make install

Rebuilding the DDS Community Edition Custom Libraries on POSIX / Linux

Binary distributions of DDS Community Edition are shipped containing pre-built C++ and Java language binding libraries. These are known as the DDS Community Edition Custom Libraries.

For maximum assurance of compatibility with your deployment platform the DDS Community Edition Custom Libraries of a DDS Community Edition binary distribution can be rebuilt. In this way you can be confident that these language binding libraries have matching linkage with the toolchain you plan to develop and deploy your application with.

Rebuilding the Standalone C++ Custom Libraries on POSIX / Linux

cd HDE/<<target_platform>>/custom_lib/
make

Rebuilding the CORBA Co-habitation C++ Custom Libraries on POSIX / Linux

  1. Configure the environment for the TAO C++ ORB as per the installation instructions.
  2. Change directory to the CORBA Co-habitation C++ Custom Libraries source directory in the binary DDS Community Edition distribution.
  3. Make the directory.
  4. Copy the new library into place in he distribution.
cd HDE/<<target_platform>>/custom_lib/ccpp/
make
cp -f ./libdcpsccpp.so ../../lib/.

Rebuilding the Standalone C++ Custom Libraries on Windows

 Open the Visual Studio solution file in HDE/<<target_platform>>/custom_lib and rebuild.

Installing Google Protocol Buffer

Download the source from https://github.com/google/protobuf/releases

tar -xzf protobuf-2.6.1.tar.gz

cd protobuf-2.6.1

./configure

make

add protoc to the PATH

For Windows download a pre-compiled protoc version and put that in your PATH

export PROTOBUF_HOME=`pwd`