The ACE framework and the TAO ORB have been ported to many OS platforms. Porting ACE and TAO 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, as well.
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.  It's a good idea to use the config-*.h files
for platforms with similar characteristics as examples.  Ultimately,
we plan to auto
configure these files. 
ACE_OS ClassACE_OS class encapsulates most of variation between
the different OS implementations, e.g., UNIX, Win32, and
various real-time operating systems.  It is the core class of the ACE
OS abstraction layer.  Most work required to port ACE to a new OS
platform resides in this class.  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.{h,i,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 
VXWORKS) - VxWorks 
ACE_OS::thr_* functions. 
ACE_OS class, the next step is to port
all of the ACE C++ wrapper 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 one-button
test suite in the $ACE_ROOT/tests/
directory.  These tests can be used to validate the correctness of the
various ACE C++ wrappers as they are ported. 
ACE_HAS_EXCEPTIONS is defined. 
ACE_HAS_ANSI_CASTS is
    enabled, then the various ACE_*_cast macros will
    utilize these casts.  Otherwise, the macros will default to
    "C-style" casts. 
ACE_HAS_BROKEN_NAMESPACES is not enabled. 
If you are considering STL, you might consider STLport, which is a port of the SGI STL to numerous platforms that ACE and TAO also support.
Back to the ACE documentation page.