If you're building OpenDDS for use by Java applications, please see the file
$DDS_ROOT/java/INSTALL instead of this one.

BUILDING OpenDDS
========================

* Supported platforms:

  We have built OpenDDS on number of different platforms and compilers.  See
  $DDS_ROOT/README for a complete description of supported platforms.

* Compiling [Option A]:

  Starting with version 2.2, OpenDDS has a "configure" script to automate the
  steps described below (Option B).  This script requires Perl to be installed
  and available on the system PATH.  To start the script simply change to the
  directory containing this INSTALL file, and run
  ./configure         (Unix)
  configure           (Windows)
  Optionally add "--help" to the command line to see the advanced options
  available for this script.  The configure script will download ACE+TAO and
  configure it for your platform.  To use an existing ACE+TAO installation,
  either set the ACE_ROOT and TAO_ROOT enviornment variables or pass the --ace
  and --tao (if TAO is not at $ACE_ROOT/TAO) options to configure.
  If configure runs successfully it will end with a message about the next
  steps for compiling OpenDDS.  If it fails, you may need to follow the
  "Option B" steps below for manual configuration.

* Compiling [Option B]:

    DDS requires the TAO PortableServer and dependent libraries to build.  It
    is preferable to have a complete build of TAO's core (every library under
    $TAO_ROOT/tao) before attempting to build DDS.

  1 Build ACE and TAO.

    See the instructions in
    http://theaceorb.com/faq/index.html#HowToBuildACEandTAOonWindows
    or http://theaceorb.com/faq/index.html#HowToBuildACEandTAOonLinux,
    or the relevant sections in OCI's TAO Developer's Guide.

  2 Set the environment variables.

    Set DDS_ROOT to the location of the DDS checkout.

    Add $DDS_ROOT/bin to the PATH (on, Windows add %DDS_ROOT%\bin)

    Add $DDS_ROOT/lib to the LD_LIBRARY_PATH (or %DDS_ROOT%\lib to
    the PATH for Windows)

    Make sure that the other normal ACE/TAO environment
    variables are defined.

  4 Build

    On Linux or Solaris:
    make
    (on Solaris be sure this is GNU make, possibly using "gmake")

    On Windows:
    Load the solution of your choice into Visual Studio and build all.  There
    are a few solutions to select from:
        DDS.sln - VC71, DLLs
        DDS_Static.sln - VC71, Static libs
        DDS_vc8.sln - VC8, DLLs
        DDS_Static_vc8.sln - VC8, Static libs
        DDS_vc9.sln - VC9, DLLs
        DDS_Static_vc9.sln - VC9, Static libs
    (Do not up-convert a VC71 solution or project to VC8/VC9)

  5 Test

    Optionally, you can run the entire OpenDDS regression test suite with one
    Perl command.
    $DDS_ROOT/bin/auto_run_tests.pl
        If you built static libraries, add "-Config STATIC" to this command.
        On Windows if you build Release mode add "-ExeSubDir Release".
        On Windows if you build static libraries add "-ExeSubDir Static_Debug"
        or "-ExeSubDir Static_Release".

* Note:

 [ This note does not apply to using the "configure" script because it will   ]
 [ generate the makefiles or project files.                                   ]
 The instructions above assume you have obtained OpenDDS as a released version
 from the website.  If you have obtained OpenDDS from subversion, you will need
 to generate makefiles or Visual Studio project files first.
 Make sure your environment variables are set, including MPC_ROOT.

     On Linux or Solaris:
      cd $DDS_ROOT
      perl $ACE_ROOT/bin/mwc.pl -type gnuace DDS.mwc

     On Windows:
      cd %DDS_ROOT%
      perl %ACE_ROOT%\bin\mwc.pl -type [CompilerType] DDS.mwc
        "CompilerTypes" tested include vc71, vc8, vc9, and nmake

* Platform specific notes:

 QNX:
  QNX requires the MPC feature "link_codecfactory=1" be present during makefile
  generation for both TAO and OpenDDS.  Technically, this is part of Step #1
  above because it's required in order to have a functioning TAO build.  Use
  the instructions under "Note:" above to re-generate the makefiles after
  adding the line "link_codecfactory=1" to the end of
  $ACE_ROOT/bin/MakeProjectCreator/config/default.features.
