ACE, TAO, and CIAO have been ported to many OS platforms. Porting ACE, TAO, and CIAO to new platforms is fairly easy. The following document describes the step-by-step process to use when porting the various components and layers in ACE to a new OS platform. Once ACE is ported, it is straightforward to port TAO and CIAO, as well.
Before starting a port that you plan to contribute back to the ACE+TAO+CIAO open-source community, we recommend that you do the following:
config.h Header File for the Target OS Platformconfig-*.h header file exists in $ACE_ROOT/ace for each platform to which ACE has
been ported.  This file contains the portability macros for each
particular configuration of ACE.  A complete description of the
existent macros can be found in the $ACE_ROOT/ace/README file. 
Currently, you must edit this file by hand to port it to new OS
platforms, though on some platforms it's possible to use the ACE autoconf script.  It's a good idea to use
the config-*.h files for platforms with similar
characteristics as examples.
ACE_OS NamespaceACE_OS namespace encapsulates most of variation
between the different OS implementations, e.g., UNIX, Win32,
and various real-time operating systems.  It is the core of the ACE OS
abstraction layer.  Most work required to port ACE to a new OS
platform resides in this namespace.  There are many examples
of how ACE has been ported to other operating systems in the
ACE_OS class in the
$ACE_ROOT/ace/OS_NS_*.{h,inl,cpp} files. 
Optional features in pthreads are covered by ACE_HAS_*
and/or ACE_LACKS_* macros, which are described in the $ACE_ROOT/ace/README file.  Particular
platform features, such as DCE pthreads calls that end in
_np, should be bracketed by platform defines rather than
by inventing more ACE_HAS_* or ACE_LACKS_*
definitions. 
An important part of porting ACE to a new platform is to map the threading API correctly. Currently, ACE has support for the following thread APIs:
ACE_HAS_STHREADS) - Solaris 2, UnixWare. 
ACE_HAS_PTHREADS) - drafts 4
    [DCE], 6 [FSU], 7 [AIX], as well as the final standard (also
    called draft 10) [MIT, Linux, and Solaris]. 
ACE_HAS_WTHREADS) - Windows
    NT, Windows '95/98, and Windows CE 
ACE_VXWORKS) - VxWorks 
ACE_OS::thr_* functions. 
ACE_OS namespace, the next step is to
port all of the ACE C++ wrapper facade components, such as sockets,
threads, synchronization mechanisms.  A full list of the categories
and classes can be found in the $ACE_ROOT/ACE-categories file.  It is
easiest to concentrate on porting one category at the time.  The ACE
release contain a regression test suite
in the $ACE_ROOT/tests/ directory.  These
tests can be used to validate the correctness of the various ACE C++
wrapper facades as they are ported. 
ACE_HAS_EXCEPTIONS must be defined. 
If you are considering STL, you might consider STLport, which is a port of the SGI STL to numerous platforms that ACE, TAO, and CIAO also support.
Back to the ACE
documentation page.
Back to ACE Documentation Home.