diff options
Diffstat (limited to 'ACE/docs/ACE-porting.html')
-rw-r--r-- | ACE/docs/ACE-porting.html | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/ACE/docs/ACE-porting.html b/ACE/docs/ACE-porting.html deleted file mode 100644 index 79f773f4a2c..00000000000 --- a/ACE/docs/ACE-porting.html +++ /dev/null @@ -1,198 +0,0 @@ -<!-- $Id$ --> - -<HTML> -<HEAD> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> - <META NAME="Generator" CONTENT="Microsoft Word 97"> - <META NAME="Template" CONTENT="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html -.dot"> - <META NAME="GENERATOR" CONTENT="Mozilla/4.05 [en] (Win95; I) [Netscape]"> - <TITLE>Porting ACE and TAO to a New OS Platform</TITLE> -</HEAD> -<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#FF0000"> - -<HR><P> <H3>Porting ACE, TAO, and CIAO to a New OS Platform</H3><P> - -<A HREF="http://www.dre.vanderbilt.edu/ACE">ACE</A>, <A -HREF="http://www.dre.vanderbilt.edu/TAO">TAO</A>, and <A -HREF="http://www.dre.vanderbilt.edu/CIAO">CIAO</A> have been -ported to <A HREF="http://www.dre.vanderbilt.edu/versions.html">many -OS platforms</A>. 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 <A -HREF="http://www.cs.wustl.edu/~schmidt/ACE-overview.html">components -and layers</A> in ACE to a new OS platform. Once ACE is ported, it is -straightforward to port TAO and CIAO, as well.<P> - -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: - -<UL> -<LI> Read and follow the <A HREF="ACE-guidelines.html">programming style - guidelines</A> we use when writing ACE, TAO, and CIAO code, - which will make it much easier to integrate and maintain your port - in the source tree. <P> - -<LI> Contact <A HREF="mailto:d.schmidt@vanderbilt.edu">Douglas - C. Schmidt</A> and let him know that you're planning to contribute - a port, which will make it make easier to work out the logistics - of when/how the port will be integrated. <P> -</UL> - -<hr align=left width="50%"><P> -<H4>Create a <CODE>config.h</CODE> Header File for the Target OS Platform</H4> - -A <CODE>config-*.h</CODE> header file exists in <A -HREF="../ace/">$ACE_ROOT/ace</A> 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 <A -HREF="../ace/README">$ACE_ROOT/ace/README</A> file. <P> - -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 <A -HREF="../configure.ac">autoconf script</A>. It's a good idea to use -the <CODE>config-*.h</CODE> files for platforms with similar -characteristics as examples. - -<hr align=left width="50%"><P> -<H4>Port the <CODE>ACE_OS</CODE> Namespace</H4> - -The <CODE>ACE_OS</CODE> namespace encapsulates most of variation -between the different OS implementations, <EM>e.g.</EM>, 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 <EM>many</EM> examples -of how ACE has been ported to other operating systems in the -<CODE>ACE_OS</CODE> class in the -<CODE>$ACE_ROOT/ace/OS_NS_*.{h,inl,cpp}</CODE> files. <P> - -Optional features in pthreads are covered by <CODE>ACE_HAS_*</CODE> -and/or <CODE>ACE_LACKS_*</CODE> macros, which are described in the <A -HREF="../ace/README">$ACE_ROOT/ace/README</A> file. Particular -platform features, such as DCE pthreads calls that end in -<CODE>_np</CODE>, should be bracketed by platform defines rather than -by inventing more <CODE>ACE_HAS_*</CODE> or <CODE>ACE_LACKS_*</CODE> -definitions. <P> - -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: <P> - -<UL> -<LI> <B>UNIX International (UI) Threads</B> - (<CODE>ACE_HAS_STHREADS</CODE>) - Solaris 2, UnixWare. <P> - -<LI> <B>POSIX Pthreads</B> (<CODE>ACE_HAS_PTHREADS</CODE>) - drafts 4 - [DCE], 6 [FSU], 7 [AIX], as well as the final standard (also - called draft 10) [MIT, Linux, and Solaris]. <P> - -<LI> <B>Win32 Threads</B> (<CODE>ACE_HAS_WTHREADS</CODE>) - Windows - NT, Windows '95/98, and Windows CE <P> - -<LI> <B>VxWorks Tasks</B> (<CODE>ACE_VXWORKS</CODE>) - VxWorks <P> -</UL> - -If your OS platform does not support any of these threading packages, -you must port the <CODE>ACE_OS::thr_*</CODE> functions. <P> - -<hr align=left width="50%"><P> -<H4>Port the C++ Wrapper Facade Components</H4> - -After porting the <CODE>ACE_OS</CODE> 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 <A -HREF="ACE-categories.html">$ACE_ROOT/ACE-categories</a> file. It is -easiest to concentrate on porting one category at the time. The ACE -release contain a <A HREF="../tests/README">regression test suite</A> -in the <A HREF="../tests/">$ACE_ROOT/tests/</A> directory. These -tests can be used to validate the correctness of the various ACE C++ -wrapper facades as they are ported. <P> - -<hr align=left width="50%"><P> -<H4>Port the Higher-level Framework Components of ACE</H4> - -Having ported (and tested) all the components of the ACE OS adaptation -layer and C++ wrapper facades, you can proceed to port the higher -level components of ACE, such as the Reactor, Service Configurator, -Connector, Acceptor, and Streams frameworks. At this point, it should -be relatively easy to port the rest of ACE because most of the -platform-dependent code is localized in the lower layers of ACE. <P> - -<hr align=left width="50%"><P> -<H4>Port TAO and CIAO</H4> - -After porting and successfully testing all the ACE framework -components, it should be straightforward to port and <A -HREF="../TAO/TAO-INSTALL.html">install</A> TAO and <A -HREF="../TAO/CIAO/CIAO-INSTALL.html">install</A> CIAO because the bulk -of their platform-dependent code is localized in ACE. Typically, the -only problems that arise when porting TAO and CIAO is bugs and -limitations with C++ compilers. <P> - -<HR><P> -<H3>C++ Features Required to Port ACE, TAO, and CIAO</H3> - -ACE, TAO, and CIAO have been ported to most C++ compilers. The -following is a list of which C++ features a compiler must support in -order to compile ACE and TAO: - -<UL> -<LI> <B>Templates</B> -- The C++ compiler must support templates. - However, it need not support template member functions and of - the advanced concepts outlined in <A - HREF="http://www.moderncppdesign.com/"> Modern C++ Design</A>. <P> - -<LI> <B>Multiple inheritance and dynamic binding</B> -- The C++ - compiler must support multiple inheritance and dynamic - binding. <P> - -<LI> <B>Namespaces</B> -- ACE+TAO+CIAO utilizes C++ namespaces, so the - C++ compiler must support them.<P> - -<LI> <B>ANSI casts and RTTI</B> -- ACE+TAO+CIAO uses the ANSI C++ - casts, so the C++ compiler must support them, which implies - support for RTTI.<P> - -</UL> - -The following is a list of which C++ features that ACE, TAO, CIAO can -take advantage of if a compiler supports them: - -<UL> -<LI> <B>Exceptions</B> -- The ACE library itself is ``exception - neutral,'' <EM>i.e.,</EM> it does not catch or throw C++ - exceptions. However, you can use exceptions in code - that uses ACE including throwing exceptions inside call back - methods, as long as you provide the code to handle it. - TAO requires the use of C++ exceptions, - <CODE>ACE_HAS_EXCEPTIONS</CODE> must be defined. <P> - -<LI> <B>STL</B> -- Unfortunately many of the platforms that ACE - supports don't have an STL library. Moreover, different versions - of STL behave differently. ACE therefore does not depends on - STL and does not use it internally. If your target - platform(s) support STL you should be able to - use it with ACE, TAO, and CIAO without problems, though your C++ - compiler may have problems with it (this is beyond the scope - of ACE, however). <P> - - If you are considering STL, you might consider - <A HREF="http://www.stlport.org/">STLport</a>, - which is a port of the SGI STL to numerous platforms that ACE, - TAO, and CIAO also support. <P> - -</UL> - -<P><HR><P> - -Back to the <A -HREF="http://www.cs.wustl.edu/~schmidt/ACE-documentation.html">ACE -documentation</A> page.<BR> -Back to <A HREF="index.html">ACE Documentation Home</A>. - -<!--#include virtual="/~schmidt/cgi-sig.html" --> -</BODY> -</HTML> |