From 63032997bcf760e4c8d7df6dda849949ccdc2e58 Mon Sep 17 00:00:00 2001 From: john_c Date: Wed, 26 Apr 2006 19:24:23 +0000 Subject: Fixed merge related compile errors --- ACE-INSTALL.html | 4134 ++++++++++++++++++++++++++---------------------------- 1 file changed, 1998 insertions(+), 2136 deletions(-) diff --git a/ACE-INSTALL.html b/ACE-INSTALL.html index 48200d6dc1c..c4f26ba777c 100644 --- a/ACE-INSTALL.html +++ b/ACE-INSTALL.html @@ -11,21 +11,26 @@

Synopsis

-The file explains how to build and install ACE, its Network -Services, test suite and examples on the various OS platforms and compilers -that it has been ported to. Please consult the -ChangeLog file to see whether any recent changes to -the release will affect your code. In addition, you should check out our -development -process. As you start working with ACE, we suggest you get copies of the -C++NPv1, -C++NPv2, and -APG books -to help guide you after you've built and installed ACE. You should -also consult the ACE Frequently Made -Mistakes page. If you encounter any problems or would like to -request an enhancement, then use our bug tracking system to submit a -report in accordance with our bug +The file explains how to build and install ACE, its Network Services, +test suite and examples on the various OS platforms and compilers that +it has been ported to. Please consult the ChangeLog file to see whether any recent changes +to the release will affect your code. In addition, you should check +out our development +process. As you start working with ACE, we suggest you get copies +of the C++NPv1, C++NPv2, and +APG books to help +guide you after you've built and installed ACE. You should also +consult the ACE +Frequently Made Mistakes page. If you encounter any problems or +would like to request an enhancement, then use our bug +tracking system to submit a report in accordance with our bug report process.

Document Index

@@ -33,13 +38,12 @@ report process.

+The VxWorks platform_vxworks*.GNU files are set up so that shared +libraries are not built on VxWorks, by default. Only static +libraries, with .a extension, are built. Therefore, it's not +necessary to set the LD_LIBRARY_PATH environment variable on your host +system when building for VxWorks targets. Please note, however, if +you use TAO on VxWorks that you will need to set your LD_LIBRARY_PATH +to find the TAO IDL compiler libraries (installed in the ace +directory) on the host.

+These non-default VxWorks kernel configuration #defines +are required with ACE:

-


-

Building and Installing ACE

+

#define INCLUDE_CPLUS           /* include C++ support */
+#define INCLUDE_CPLUS_IOSTREAMS /* include iostreams classes */
+#define INCLUDE_POSIX_ALL       /* include all available POSIX functions */
+
-The following explains how to build ACE on UNIX -and Windows. +For completeness, here are the non-default #defines that +we used for VxWorks 5.3.1/g++ 2.7.2: -

General Rules

- - -
-

Building and Installing ACE on UNIX

- -As of ACE 5.4, you can choose between two methods of building ACE on -UNIX: -
    -
  1. GNU Autoconf
  2. -
  3. Traditional ACE/GNU Make Configuration
  4. -
-The build process for Windows is different from both of -the UNIX methods. - -
Building ACE with GNU Autoconf
-

-GNU Autoconf support is available in the ACE and ACE+TAO distributions -in the DOC group website. More, precisely support for Autoconf will be -missing in distributions that have CIAO bundled along. - -GNU Autoconf support has been partially present in a number of ACE -versions. However, ACE 5.4 was the first version that supported it in -earnest. There are still a few problems with this method, so you -should be careful to test the resulting ACE library before using it in -your applications. The traditional configuration method is still more -reliable. Any help you can -lend to improve the ACE build process using GNU Autoconf would be very much -appreciated. Please send any fixes to the -ACE users mailing list -using the standard problem-report-form.

-

-The kit has been bootstrapped so you do not need to install the GNU -Autotools (autoconf, automake, libtool) unless you want to participate -in testing and developing this -process further or if you are working directly off of sources in the -ACE CVS repository. To simply configure and build ACE, do: -

    -
  1. cd to the top-level ACE_wrappers directory.
  2. -
  3. Create a subdirectory to hold your build's configuration and built - ACE version, and then change to the new directory: -
           mkdir build
    -       cd build
    -       
    - Note that you do not run the create_ace_build.pl utility - mentioned in the Cloning the Source Tree - section. The configure script takes care of creating all files - and links that are needed.
  4. -
  5. Configure ACE for your platform by issuing the following command: -c
           ../configure [options]
    -       
    - options can be a variable setting (such as setting - CXX to your C++ compiler command) any standard GNU - configure options, or any of the following ACE configure options - (default values are in parentheses): -
      -
    • --enable-alloca (no): Enable alloca() - support.
    • -
    • --enable-debug (yes): Build ACE with debugging - support.
    • -
    • --enable-exceptions (yes): Build ACE with C++ - exception support compiled in.
    • -
    • --enable-fast (no): Use the Sun C++ -fast - option to build. Only used on Solaris.
    • -
    • --enable-ipv4-ipv6 (no): Enable IPv4/IPv6 migration support.
    • -
    • --enable-ipv6 (no): Enable IPv6 support.
    • -
    • --enable-inline (yes): Enable inline functions.
    • -
    • --enable-optimize (yes): Enable building optimized.
    • -
    • --enable-prof (no): Enable profiling support.
    • -
    • --enable-purify (no): Build with support for - IBM Rational Purify.
    • -
    • --enable-quantify (no): Build with support for - IBM Rational Quantify.
    • -
    • --enable-repo (no): Enable the GNU g++ - -frepo option. Only useful for pre-3.0 g++ and egcs.
    • -
    • --enable-rtti (yes): Compile with C++ run-time type - information RTTI support.
    • -
    • --enable-stdcpplib (yes): Build with support for the - standard C++ library, as opposed to the older iostreams library.
    • -
    • --enable-log-msg-prop (yes): Enable - ACE_Log_Msg property propagation to ACE-created - threads.
    • -
    • --enable-logging (yes): Enable the ACE logging - macros.
    • -
    • --enable-malloc-stats (no): Compile in additional code - for collecting memory allocation statistics.
    • -
    • --enable-pi-pointers (yes): Enable - position-independent pointers for shared memory classes.
    • -
    • --enable-probe (no): Enable the - ACE_Timeprobe class.
    • -
    • --enable-reentrant (yes): Enable use of platform's - reentrant functions.
    • -
    • --enable-static-obj-mgr (yes): Enable use of a - static ACE_Object_Manager.
    • -
    • --enable-threads (yes): Enable threading support.
    • -
    • --enable-verb-not-sup (no): Enable verbose ENOTSUP - reports at run time.
    • -
    • --enable-trace (no): Enable ACE execution tracing - support.
    • -
    • --enable-xt-reactor (no): Enable support for the - ACE_XtReactor class.
    • -
    • --enable-fl-reactor (no): Enable support for the - ACE_FlReactor class.
    • -
    • --with-gperf (yes): Build the implementation of - gperf that comes with ACE.
    • -
    • --with-rmcast (yes): Include the ACE_RMCast library - when building ACE.
    • -
    • --with-qos (no): Include the ACE_QoS library when - building ACE.
    • -
    • --with-ssl (yes): Include the ACE_SSL library when - building ACE. Requires the SSL components to be available using the - compiler's and linker's default search directories.
    • -
    • --with-tli-device (/dev/tcp): Specifies the device - name for opening a TLI device at run time.
    • -
    -
  6. -
  7. Build ACE by typing make. -
  8. (Optional) Install ACE by typing make install. -
- -
Testing and Developing GNU Autotool -Support in ACE
-

-In order to test and develop the GNU Autotool support in ACE or -bootstrap autotool support into ACE when working directly off of ACE -sources in the CVS repository, you must have recent versions of GNU -Autoconf, Automake and Libtool installed on your host. Once -installed, autotool support may be bootstrapped into your workspace by -doing the following: -

- - cd ACE_wrappers
- autoreconf -I m4 --install --force
-
-
-After doing so, you will be able to run the configure -script. - -
Using the Traditional ACE/GNU Configuration
-

-Here's what you need to do to build ACE using GNU Make and ACE's traditional -per-platform configuration method:

- -
    -
  1. Install GNU make - 3.79.1 or greater on your system (available via http - anonymous ftp from ftp.gnu.org in the - pub/gnu/make/ directory). - You must use GNU make when using ACE's traditional - per-platform configuration method or ACE won't compile.

    - -

  2. Add an environment variable called ACE_ROOT that contains the - name of the root of the directory where you keep the ACE wrapper - source tree. The ACE recursive Makefile scheme needs this information. - There are several ways to set the ACE_ROOT variable. For - instance, in my .login file for TSCH/CSH I have the following entry:

    - -

    
    -      setenv ACE_ROOT /home/cs/faculty/schmidt/ACE_wrappers
    -      

    - - BTW, if you're running BASH or Bourne Shell you'll need to do the following: - -

    
    -      ACE_ROOT=/home/cs/faculty/schmidt/ACE_wrappers; export ACE_ROOT
    -      

    - - If you're building a number of versions of ACE, however, (e.g., for - different OS platforms or for different releases of ACE) you might use - the following approach (again assuming TCSH/CSH): - -

    
    -      setenv ACE_ROOT $cwd
    -      
    - -
  3. Create a configuration file, $ACE_ROOT/ace/config.h, - that includes the appropriate platform/compiler-specific - header configurations from the ACE source directory. For example: -
    -#include "ace/config-sunos5-sunc++-4.x.h" -
    - The platform/compiler-specific configuration file - contains the #defines that are used throughout ACE to indicate - which features your system supports. See the - $ACE_ROOT/ace/README file for a description of these - macro settings. If you desire to add some site-specific or build-specific - changes, you can add them to your config.h file; place them - before the inclusion of the platform-specific - header file.

    - - There are config files for most versions of UNIX. If there - isn't a version of this file that matches your - platform/compiler, you'll need to make one. Please send me - email if you get it working so I can add it to the master ACE - release.

    - -

  4. Create a build configuration file, - $ACE_ROOT/include/makeinclude/platform_macros.GNU, - that contains the appropriate platform/compiler-specific - Makefile configurations, e.g., -
    -include $(ACE_ROOT)/include/makeinclude/platform_sunos5_sunc++.GNU -
    - This file contains the compiler and Makefile directives that are - platform/compiler-specific. If you'd like to add make options, you - can add them before including the paltform-specific configuration.

    - NOTE! There really is not a # character before 'include' in the - platform_macros.GNU file. # is a comment character.

    - -

  5. Note that because ACE builds shared libraries, you'll need to set - LD_LIBRARY_PATH to whereever you put the binary version of the - ACE library. For example, you probably want to do something - like the following

    - -

    
    -      % setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib:$LD_LIBRARY_PATH
    -      

    - -

  6. When all this is done, hopefully all you'll need to do is type:

    - -

    
    -      % make
    -      

    - - at the root of the ACE source tree. This will build the ACE - library, tests, the examples, and the sample applications. - Building the entire ACE release can take a long time and consume - lots of disk space, however. Therefore, you might consider - cd'ing into the $ACE_ROOT/ace/ directory and - running make there to build just the ACE library. - As a sanity check, you might also want to build and run the - automated "one-button" tests in $ACE_ROOT/tests/. Finally, if you're also - planning on building TAO, you - should build the gperf - perfect hash function generator application in $ACE_ROOT/apps/gperf/.

    - -

  7. If you need to regenerate the Svc_Conf_y.cpp file, you'll need to - get GNU Bison. - However, you should rarely, if ever, need to do this.

    - -

- - -


-

Building and Installing ACE on Windows

- -Below are instructions for building ACE with Borland C++Builder, Microsoft -Visual C++, MinGW, and Cygwin.

- -First, if you are upgrading from an older release, clean up everything -and rebuild from scratch to ensure that everything is rebuilt -correctly. You might have to manually go through the ACE directories -and delete all *.obj, *.dll, *.lib, *.ilk, *.pdb, *.idb, *.ncb, *.opt, -and *.exp files in order to start over from scratch (the Clean command -in MSVC may not do this).

- -ACE contains project files for Microsoft Visual C++ 6.0 (*.dsp/.dsw) -and Visual C++ .NET 2003 (*.vcproj/.sln). There are also -Makefile.bor files to compile ACE, and the ACE one-button tests with -Borland C++ Builder.

- -


-

Building and Installing ACE on Windows with Borland -C++

- -If you are building for a machine without a network card, you may want -to check here first.

- -

    -
  1. Uncompress the ACE distribution into a directory, where it will - create an - ACE_wrappers directory containing the source. The ACE_wrappers - directory will be referred to as ACE_ROOT in the following steps -- so - ACE_ROOT\ace would be C:\ACE_wrappers\ace if you uncompressed into the - root directory.
    -
    -
  2. Create a file called config.h in the ACE_ROOT\ace - directory that contains:
    -
    - #include "ace/config-win32.h"
    -
    - If you are building for Windows NT 4, Windows 2000, or Windows XP, - then you can start without any more changes. If you are building - on Windows 9x/Me, then you should add the line
    -
    - #define ACE_HAS_WINNT4 0
    -
    - before the #include statement in ACE_ROOT\ace\config.h and it - will turn off some WinNT/Win2K-specific code in ACE.
    -
    -
  3. Open a Command Prompt (DOS Box).
    -
    -
  4. Set the ACE_ROOT environment variable to point to the ACE_wrappers - directory. For example:
    -
    - set ACE_ROOT=C:\ACE_wrappers
    -
    -
  5. Set the BCBVER environment vairable to the main version of your Borland C++ compiler. - Currently only 6 is supported, 4 and 5 are options but not supported anymore. - If BCBVER is not set we default to 6. For example:
    -
    - set BCBVER=6
    -
    -
  6. Change to the ACE_ROOT\ace directory.
    -
    -
  7. Build release DLLs for ACE by going:
    -
    - make -f Makefile.bor all
    -
    -
  8. You can build several different versions of ACE by setting environment - variables before you run make:
    -
    - Set the environment variable below to build a debug version of ACE
    - set DEBUG=1
    -
    - Set the environment variable below to build a static version of ACE
    - set STATIC=1
    -
    - Set the environment variable below to build a unicode version of ACE
    - set UNICODE=1
    -
    - Set the environment variable below to build a version of ACE with - Codeguard support. Should only be used when DEBUG is also set
    - set CODEGUARD=1
    -
    - Set the environment variable below to build a version of ACE using the - C++BuilderX preview compiler. This compiler isn't supported at this moment - but by setting this environment variable the new compiler is used and - you can expirement with this compiler.
    - set CBX=1
    -
    - You can then start the build with the command -
    make -f Makefile.bor all
    -
    - You may also enable the options by passing them as command line options to make, for example:
    - make -f Makefile.bor -DDEBUG all
    -
    -
  9. Optionally install the ACE header files, libraries and executables -for use - in your applications. Here we are installing them into C:\ACETAO:
    -
    - make -f Makefile.bor -DINSTALL_DIR=C:\ACETAO install
    -
    -
- -These instructions do not cover all possible build configurations. Please -see http://www.tenermerx.com/tao_bcb/index.html -for more detailed information on building and using ACE+TAO with Borland C++ -Builder.

- -Note that when you run make in a sub directory you give make -f Makefile.bor all. The all is needed to make sure the complete project is build.

+

#define INCLUDE_CPLUS           /* include C++ support */
+#define INCLUDE_CPLUS_IOSTREAMS /* include iostreams classes */
+#define INCLUDE_CONFIGURATION_5_2 /* pre-tornado tools */
+#define INCLUDE_DEBUG           /* pre-tornado debugging */
+#define INCLUDE_LOADER          /* object module loading */
+#define INCLUDE_NET_SYM_TBL     /* load symbol table from network */
+#define INCLUDE_SYM_TBL_SYNC    /* synchronize host and target symbol tables */
+#define INCLUDE_NFS             /* nfs package */
+#define INCLUDE_PING            /* ping() utility */
+#define INCLUDE_POSIX_ALL       /* include all available POSIX functions */
+#define INCLUDE_RDB             /* remote debugging package */
+#define INCLUDE_RLOGIN          /* remote login */
+#define INCLUDE_RPC             /* rpc package */
+#define INCLUDE_SECURITY        /* shell security for network access */
+#define INCLUDE_SHELL           /* interactive c-expression interpreter */
+#define INCLUDE_SHOW_ROUTINES   /* show routines for system facilities*/
+#define INCLUDE_SPY             /* spyLib for task monitoring */
+#define INCLUDE_STARTUP_SCRIPT  /* execute start-up script */
+#define INCLUDE_STAT_SYM_TBL    /* create user-readable error status */
+#define INCLUDE_SYM_TBL         /* symbol table package */
+#define INCLUDE_UNLOADER        /* object module unloading */
+#define INCLUDE_WINDVIEW        /* WindView command server */
+
-The Borland C++ Builder 4.0/5.0/6.0/2006 port has been done by Jody Hagins, Christopher Kohlhoff and Johnny Willemsen.

+Also, automatic construction/destruction of static objects +should be enabled.

-ACE TESTS

+If you use TAO, it's also a good idea to increase the +NUM_FILES parameter from its default of 50 to, +say, 1000.

-Before you can build the tests you need to build the protocols directory. -Change the directory to ACE_ROOT\protocols and start the build with:

-

-make -f Makefile.bor all -

+Please note that those VxWorks kernel configuration parameters +are set in the VxWorks configAll.h file. You must rebuild your +VxWorks kernel after modifying that file.

-The tests are located in ACE_ROOT\tests, change to this directory. -You build then the tests with the following command:

-

-make -f Makefile.bor all -

+If you're first getting started with ACE and/or VxWorks, I recommend +just building the ACE library and tests first. (Some of the ACE +examples, in System_V_IPC, don't build on VxWorks yet.) Then try +running the tests. Please see $ACE_ROOT/tests/README for the latest +status of the ACE tests on VxWorks.

-Once you build all the tests, you can run the automated test script using:

-

perl run_test.pl

in the -tests directory to try all the tests. You need to make -sure the ACE bin and lib directory (in this case -ACE_ROOT\bin and ACE_ROOT\lib) -are on the path before you try to run the tests.

+Please note that the main entry point is renamed to +ace_main (configurable via ACE_MAIN) on VxWorks with g++, +to comply with its restriction against using main. +In addition, ACE_HAS_NONSTATIC_OBJECT_MANAGER is enabled by default +to cleanly support construction and destruction of static objects. +Please see the Non-static +ACE_Object_Manager discussion for the important implication +of this feature.

-


-

Building and Installing ACE on Windows with -Microsoft Visual C++

+ACE threads (VxWorks tasks) can be named, for example, by supplying a +non-null argument to the Thread_Manager spawn routines. However, +names beginning with "==ace_t==" are forbidden because +that prefix is used internally by ACE.

-

    -
  1. Uncompress the ACE distribution into a directory, where it will - create a ACE_wrappers directory containing the distribution. The - ACE_wrappers directory will be referred to as ACE_ROOT in the - following steps -- so ACE_ROOT\ace would be C:\ACE_wrappers\ace if - you uncompressed into the root directory.
    -
    -
  2. Create a file called config.h in the ACE_ROOT\ace - directory that contains:
    -
    - #include "ace/config-win32.h"
    -
    +You can spawn a new task to run ace_main, using either +VxWorks sp, or ACE'S spa. +spa can be used from the VxWorks shell to pass arguments +to ace_main. Its usage is: -
  3. The static, DLL and MFC library builds are kept in - different workspaces. Files with names *_Static contain project - files for static builds. Workspaces for static and DLL builds will be - available through the stock release at DOC group's website. The - workspaces for MFC are not available and have to be generated using - MPC. Please see MPC's README for - details.

    -
  4. Now load the workspace file for ACE (ACE_ROOT/ACE.dsw).
    -
    -
  5. Make sure you are building the configuration (i.e, Debug/Release) - the one you'll use (for example, the debug tests need the debug - version of ACE, and so on). All these different configurations are - provided for your convenience. You can either adopt the scheme to - build your applications with different configurations, or use - ace/config.h to tweak with the default settings on - NT.
    Note: If you use the dynamic libraries, - make sure you include ACE_ROOT\lib in your PATH whenever you run - programs that uses ACE. Otherwise you may experience problems - finding ace.dll or aced.dll.
    -
    -
  6. If you are building for Windows NT 4 or later (Windows 2000, XP, etc.) - then you can start building without anymore changes. If you are building - on Windows 9x/Me, then you should add the line
    -
    - #define ACE_HAS_WINNT4 0
    -
    - before the #include statement in ACE_ROOT\ace\config.h and it - will turn off some WinNT/Win2K-specific code in ACE.
    -
    -
  7. If you want to use the standard C++ headers (iostream, cstdio, ... - as defined by the C++ Standard Draft 2) that comes with MSVC, - then add the line:
    -
    - #define ACE_HAS_STANDARD_CPP_LIBRARY 1
    -
    - before the #include statement in ACE_ROOT\ace\config.h.
    -
    -
  8. To use ACE with MFC libraries, also add the following to - your config.h file. Notice that if you want to - spawn a new thread with CWinThread, make sure you spawn the - thread with THR_USE_AFX flag set.
    -
    - #define ACE_HAS_MFC 1
    -
    - By default, all of the ACE projects use the DLL versions of the - MSVC run-time libraries. You can still choose use the static (LIB) - versions of ACE libraries regardless of run-time libraries. The - reason we chose to link only the dynamic run-time library is that - almost every NT box has these library installed and to save disk - space. If you prefer to link MFC as a static library into ACE, you - can do this by defining ACE_USES_STATIC_MFC in your - config.h file. However, if you would like to link - everything (including the MSVC run-time libraries) statically, - you'll need to modify the project files in ACE yourself.

    -

  9. Static version of ACE libraries are built with - ACE_AS_STATIC_LIBS
    defined. This macro should - also be used in application projects that link to static ACE - libraries
    -
    - Optionally you can also add the line
    -
    - #define ACE_NO_INLINE
    -
    - before the #include statement in ACE_ROOT\ace\config.h to disable - inline function and reduce the size of static libraries (and your - executables.)
    -
    -
  10. ACE DLL and LIB naming scheme:
    -
    - We use the following rules to name the DLL and LIB files in ACE - when using MSVC.
    -
    - "Library/DLL name" + (Is static library ? "s" : - "") + (Is Debugging enable ? "d" : "") - + {".dll"|".lib"}
    -
    -
+


+spa ace_main, "arg1" [, ...]
+
-

More information for ACE/TAO on MSVC can be found -here. The doxygen version of this -document is available under Related Topics in the ACE Library.

+All arguments must be quoted, even numbers. You can start also ace_main +without spawning another thread by using:

-ACE TESTS

+


+spaef ace_main, "arg1" [, ...]
+
-The tests are located in ACE_ROOT\tests. There is also a workspace in -that directory to build all the tests (tests.dsw)

+ACE also provides the function vx_execae which is capable of running +ace_main in a separate thread, wait for the task to finish and return +the return code from ace_main: -Once you build all the tests (Batch Build works well for this), you -can run perl script run_test.pl in the -tests directory to try all the tests.

+


+int vx_execae (FUNCPTR acemain,char* arguments, int prio = 0, int opt = 0, int stacksz = 0);
+
+

+You could call this from the VxWorks shell like: +

+

+my_rc = vx_execae ace_main, "-o server.ior -ORBDottedDecimalAddresses 1"
+

- - BUILDING ACE ON A WIN32 MACHINE THAT LACKS A NETWORK CARD

+When prio, opt or stacksz are omitted or specified +as 0 default values will be used. See the VxWorks shell documentation for the +defaults for prio and opt. For stacksz the default is +ACE_NEEDS_HUGE_THREAD_STACKSIZE. +The arguments string will be parsed and passed on to ace_main as +a regular argc and argv.

-You may want to run ACE on a non-networked machine. To do so, you must -install TCP/IP and configure it to ignore the absence of a network -card. This is one method: +Be aware of the fact that when you execute ace_main directly from the VxWorks +shell argc will be zero and argv* will also be zero. Using argv[0] will not return +the program name, but will result in a crash.
+The ACE helper functions spa, spaef and vx_execae prevent +this problem by building a regular argc and argv which also contain a +valid argv[0] element.

-

    -
  1. Run Control Panel -
  2. Choose Network from Control Panel -
  3. Add Adapter: MS Loopback Adapter -
  4. Configure MS Loopback Adapter with 802.3 (default) -
  5. Add Protocol: TCP/IP Protocol -
  6. Configure TCP/IP Protocol with a valid IP address and subnet mask. - Leave everything else at the default settings. -
  7. Add Service: Workstation -
  8. Exit and Restart System -
  9. Run Control Panel again -
  10. Choose Services from Control Panel -
  11. The following services are not necessary and may - be set to Disabled Startup:
    - Alerter
    - Computer Browser
    - Net logon
    - Messanger
    -
  12. Choose Network from Control Panel -
  13. Confirm the following setup. This is all you need to run ACE:
    - Installed Software:
    - Computer Browser
    - MS Loopback Adapter Driver
    - TCP/IP Protocol
    - Workstation
    - Installed Adapter Cards:
    - MS Loopback Adapter

    -

+
Building Shared Libraries for VxWorks.
-WIN32 ALPHA CONFIGURATIONS +NOTE: Since VxWorks support is currently being reworked with +an initial focus on static builds the support for shared builds is momentarily +broken. This will be remedied(!) as soon as possible.

-

The project files for Visual C++ no longer contain any configurations -targetted to Windows NT on the DEC Alpha. Below are the steps needed to -recreate the Alpha configurations:

+ACE supports shared libraries for VxWorks, but only with the g++ +compiler. To build shared libraries instead of the default static +libraries, added shared_libs=1 (not +shared_libs_only=1) to either your +ACE_wrappers/include/makeinclude/platform_macros.GNU or +your make invocation. Then, be sure to load the ACE (and +any other) shared library before loading your executable(s).

-

    -
  1. Load the project on the Alpha machine. -
  2. Go to the Build menu and then select Configurations. -
  3. Select the project that you want to convert. -
  4. Click on Add. -
  5. Select the x86 configuration to "Copy settings from" - (either Debug or Release versions). -
  6. Prepend "Alpha " to the beginning of the name under - "Configuration". -
  7. Click OK. -
  8. Close the "Configurations" window. -
  9. Now go to the Project settings. -
  10. For the General Settings, change the output directories to standard ACE - output directories. Intermediate Directories are "Debug" and - "Release" in most cases. The Output Directories are blank, - except for Release versions of executables, in which it is also - "Release". -
  11. For the C/C++ Settings, make sure that the Code Generation's runtime - library is set to "Multithreaded DLL" or "Debug Multithreaded - DLL". -
+A shared library for VxWorks uses the same code as for a static +(non-shared) library. However, calls to static constructors/ +destructors are added. The code in the shared library must +be reentrant if you shared it between programs (tasks). The +ACE library meets this requirement.

-

Note: MSVC 6 has a bug where if a .dsp is converted from version 5 to 6 on -x86, the Alpha configuration can get corrupted. This seems to happen when additional -include or library directories are specified using backslashes instead of forward -slashes. If this occurs, the easiest way to fix it is to recreate it.

+Shared libraries reduce build time, executable size, and load +time of the executable. But, you must manually load the shared +library before loading your executable(s) with a command such as: +


+-> ld < libACE.so
+
+Shared libraries can be unloaded the same way an executable +(module) is unloaded.

+NOTE: Shared libraries on VxWorks aren't the same as +shared libraries on other operating systems. In particular, there is +no support for creating copies of writeable global (static) data in +the shared library. This includes the singleton ACE_Object_Manager +instance pointer. If you share global data between separate programs, +they may not work properly. See the discussion of shared code and +reentrancy in the VxWorks' Programmers Guide.

-


-

Building and Installing ACE on Win32 with MinGW/ MSYS

+Instead of trying to run separate programs onto a VxWorks target, we +recommend creating just one program, and spawning a thread for each +task. The TAO IDL_Cubit test collocation +test is a good example.

-

-If you are building for a machine without a network card, you may want -to check here first. +

Linking ACE and/or TAO Libraries into the VxWorks Kernel.
-

-Building and installing ACE on MinGW -uses a mix of a UNIX building process and -Win32 configuration files. -Also, as MinGW uses GNU g++, you may want to take -a look at the Compiling ACE with GNU g++ section. +It's easy to link your ACE and/or TAO libraries into the VxWorks kernel. +Just build shared versions, but +disable the munch step. The easiest way to do that is to set the +LD make variable to the name of your linker. For +example, to build a libACE.so for PowerPC that can be linked into +the kernel: +

% cd $ACE_ROOT/ace
+% make LD=ldppc shared_libs=1
+
+After building the shared lib, link it into the kernel by setting +the MACH_EXTRA make variable in the kernel configuration +Makefile. Then, build the kernel using make exe.

-

-You will need the MinGW build tools and libraries, downloable from -http://www.mingw.org. +

Using the one-button ACE tests with VxWorks.
-
-For our build we require the packages -MinGW and MSYS. +It is possible to generate a script to execute all ACE tests. You can do this by executing +

% perl run_test.pl -v -o > run_test.vxworks
+
+The ACE tests write their output files in a directory named +log/, below the current (tests) directory.
+

+

+To run the tests from the build directory on an NT host where you crossbuild your +VxWorks ACE/TAO you can set up the Target Server File System (TSFS) in your Target Server +configuration. If you f.i. set the root for the TSFS to the root directory of your builddisk +you can set the default directory for the target by issueing the following command +from a Host shell: '@cd "/tgtsvr/{path to ACE}/ACE_wrappers/tests"'. +The '@' addition makes sure this command is executed for the target environment and not the +local host shell environment. +If you also issue the command 'cd {path to ACE}/ACE_wrappers/tests' you can execute the +generated one button testscript like: '< run_test.vxworks'. +

+

+Running the ACE tests automatically from the ACE autobuild tool using Target Server and Host +shell options is also supported. +

+

+If you don't have NFS included in your VxWorks kernel, you can use these steps, provided by +Clarence M. Weaver, +to run the tests and capture their output:

    +
  1. What I did was create a log directory on the boot NT host of my VxWorks + target.

    +

  2. I copied all the test applications and the run_test.vxworks script to + the parent of the log directory.

    +

  3. Using the target shell not the host shell, I "cd" to the directory + containing the script and test programs.

    +

  4. Invoked the script using < run_test.vxworks from this target shell.

    +

-
  • Install the MinGW tools into a common directory, say c:/mingw. -

    +Kirk Davies provided this +approach for running the ACE tests on Tornado II: -
  • Install the MSYS tools into a common directory, say c:/msys. -

    + -
  • Open a MSYS shell. Set your PATH environment variable so - your MinGW's bin directory is first: +

    Building ACE on Tornado/NT hosts for VxWorks targets.
    +The following, very useful information was contributed by +Chris Ryan +and Paul von Behren. +Please submit corrections, additions, or clarifications to the +the ACE mailing list.

    -

           % export PATH=/c/mingw/bin:$PATH
    -       
    +NOTE:The make (version 3.74) that is provided with +Tornado 2.2 cannot be used to build ACE. A working version is available +from the WindRiver support site, download the + +make3_80.gvk_patches and the + +make3_80.tor2_2.new_dependency_rules package and install them.

    -

  • Add an ACE_ROOT environment variable pointing to the - root of your ACE wrappers source tree: +Using the Cygnus tools, this approach works: +

    -
           % export ACE_ROOT=/c/work/mingw/ACE_wrappers
    -       
    +A few additional Windows Notes, from Paul von Behren:

    +

    - From now on, we will refer to the root directory of the ACE - source tree as $ACE_ROOT. -

    +And Chris Ryan's instructions for building for VxWorks targets +on Windows NT hosts: -
  • Create a file called config.h in the - $ACE_ROOT/ace directory that contains: +
      +
    1. Path setting that seems to be working is:

      +

            /tornado/host/x86-win32/bin:
      +      /tornado/host/x86-win32/lib/gcc-lib/i386-wrs-vxworks/cygnus-2.7.2-960126:
      +      /tornado/host/x86-win32/i386-wrs-vxworks/bin:
      +      /ace/ace_wrappers/bin:
      +      /gnuwin32/b18/H-i386-cygwin32/bin:
      +      /gnuwin32/b18/tcl/bin:
      +      /WINNT/system32:
      +      /WINNT:
      +      /WINNT/system32/nls/ENGLISH:
      +      /bin
      +      
      -
             #include "ace/config-win32.h"
      -       
      + Other environment variables:

      +

            WIND_BASE=/tornado
      +      SHELL=/bin/sh.exe
      +      TERM=pcbios
      +      TAO_ROOT=/ace/ACE_wrappers.vxworks/TAO
      +      CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.EXE
      +      GCC_EXEC_PREFIX=/tornado/host/x86-win32/lib/gcc-lib/
      +      WIND_HOST_TYPE=x86-win32
      +      ACE_ROOT=/ace/ACE_wrappers.vxworks
      +      
      - If you are building for Windows 9X/Me (ie, not WinNT or - Win2K), you will need to add: +
    2. /tornado is the root of the Tornado install + ($WIND_BASE). -
             #define ACE_HAS_WINNT4 0
      -       
      +
    3. /gnuwin32 is the root of a Cygnus GNU download and install. - before the #include line. -

      +
    4. /bin content is:

      +

            aced.dll
      +      cygwin.dll
      +      perl.exe
      +      rm.exe
      +      sh.exe
      +      true
      +      
      + + aced.dll is produced in an ACE NT source tree according to + documented procedure for NT VC++ 6.0 ACE build. -
    5. Create a file called platform_macros.GNU in the - $ACE_ROOT/include/makeinclude directory containing: + cygwin.dll is from the Cygnus GNU software download and install. -
             include $(ACE_ROOT)/include/makeinclude/platform_mingw32.GNU
      -       
      +
    6. Basically, follow documented procedure for ACE build/install on UNIX + platform. Create a $ACE_ROOT/ace/config.h that looks + like:

      +

            #include "config-vxworks5.x.h"
      +      
      - In the above text, don't replace $(ACE_ROOT) with the - actual directory, GNU make will take the value from the - environment variable you defined previously. + And create a + $ACE_ROOT/include/makeinclude/platform_macros.GNU + that looks like:

      +

      +      WIND_BASE = /tornado
      +      WIND_HOST_TYPE = x86-win32
      +      CPU = I80486
      +      include $(ACE_ROOT)/include/makeinclude/platform_vxworks5.5.x.GNU
      +      
      -

      - If you lack Winsock 2, add the line +

    7. When using cygnus windows GNUTools on WinNT you have to start + make with "--unix" option, otherwise WinNT shell cmd.exe is responded and + not sh.exe, i.e., +
       make --unix static_libs=1
      + 
      +
    -

           winsock2 = 0
    -       
    +
    TAO on NT Tornado host, VxWorks target.
    - before the previous one. -

    +
      +
    1. Build ACE and TAO_IDL in the NT tree as already documented. + Be sure to build ACE's gperf on NT, in + ACE_wrappers/apps/gperf/src.

      -

    2. In the MSYS shell, change to the $ACE_ROOT/ace directory and - run make: +

    3. Build $TAO_ROOT/tao +
            CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe
      +      cd $TAO_ROOT/tao
      +      /gnuwin32/b18/H-i386-cygwin32/bin/make
      +      
      -
             % cd $ACE_ROOT/ace
      -       % make
      -       
      +
    4. Build orbsvcs. +
            CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe
      +      cd $TAO_ROOT/orbsvcs/orbsvcs
      +      /gnuwin32/b18/H-i386-cygwin32/bin/make
      +      
      -

      - This should create libACE.dll (the Win32 shared library) and - libACE.dll.a (the Win32 import library for the DLL). - Note that the name for the ACE DLL follows the MinGW convention, which itself - resembles UNIX. +

    5. Build $TAO_ROOT/tests

      +

    -

    - If you want static libs also, you may run: -

           % make static_libs=1
    -       
    +

    +Jaffar Shaikh's +Notes for Building ACE and TAO for VxWorks on NT host

    +

    Scenario: I was building the ACE and TAO for VxWorks +on NT. The target system was a PPC860 based chassis and another a NT +host based card.

    +

    Host System:

    +

    NT 4.0 workstation with 128 M RAM, 266MHz Pentium.

    -
  • - The same rules for Win32 search of DLLs apply for MinGW. If you - want to run some ACE programs from the MSYS shell, you may - need to add the directory for libACE.dll to your PATH: +

    Software Needed For Building TAO

    +

    1) Active State's ActivePerl from +http://www.activestate.com/software/default.htm +

    -
           % export PATH=/c/work/mingw/ACE_wrappers/ace:$PATH
    -       
    +

    2) Tornado 2.2.1 from Windriver.

    -
  • +

    3) Cygwin GNU to build TAO. It is available for NT as a freeware +from the Cygwin site

    +

    The Cygwin Make (version 3.75) can only build the TAO not the +Tornado II make (version 3.74)

    -ACE TESTS

    +

    Environment Variables:

    +

    On NT the environment Variables are set as follows, (from +Control Panel-> System -> Environment)

    +

    I added following Environment variable entries to PATH

    -The tests are located in $ACE_ROOT/tests. -After building the library, you can change to that directory and run -make: +

    C:\Perl\bin\;

    +

    C:\tornado\host\x86-win32\bin;

    +

    C:\tornado\host\x86-win32\powerpc-wrs-vxworks\bin;

    +

    C:\tornado\host\x86-win32\lib\gcc-lib\powerpc-wrs-vxworks\cygnus-2.7.2-960126;

    +

    C:\Corba\Ace_wrappers\bin;

    +

    C:\Cygwin\bin;

    +

    C:\Cygwin\usr\bin;

    +

    C:\bin

    -

           % cd $ACE_ROOT/tests
    -       % make
    -       
    +

    Additional Environmental variables and the values,

    +

    CPU=PPC860

    +

    LD_LIBRARY_PATH=

    +

    SHELL=/bin/sh.exe

    -

    -Once you build all the tests, you can run -run_tests.pl in the -tests directory to try all the tests: +

    ACE_ROOT=/Corba/ACE_wrappers

    +

    WIND_BASE=/tornado

    +

    SHELL=/bin/sh.exe

    +

    TERM=pcbios

    +

    TAO_ROOT=/Corba/ACE_wrapper/Tao

    +

    CPP_LOCATION=/Program Files/Microsoft Visual Studio/VC98/Bin/CL.exe

    +

    GCC_EXEC_PREFIX=/tornado/host/x86-win32/lib/gcc-lib/

    +

    WIND_HOST_TYPE=x86-win32

    +

    PERL_PATH=/perl/bin/perl.exe

    -

           % perl run_test.pl
    -       
    +

    Directories of importance

    +

    C:\Corba <-- Ace_wrappers (uzipped)

    +

    C:\tornado <-- Tornado installed

    +

    C:\Perl <-- Perl installed

    +

    C:\Cygwin <-- Cygwin installed

    +

    C:\bin <-- Copy these files,

    +

    Ace.dll, <-- After you build Ace

    +

    gperf.exe <-- After you build gperf

    +

    Cygwin1.dll, <-- After you install Cygwin

    +

    perl.exe, <-- After you install Perl

    +

    rm.exe <-- After you install Cygwin

    +

    sh.exe <-- After you install Cygwin

    +

    true <-- After you install Cygwin

    +

    Create Files

    +

    1) C:\Corba\ACE_Wrappers\ace\config.h

    +

    with entry

    +

    #if defined (_MSC_VER) || (__BORLANDC__)

    +

    #include "ace/config-win32.h"

    +

    #undef ACE_HAS_EXCEPTIONS

    +

    #else

    +

    #include "ace/config-vxworks5.x.h"

    +

    #define ACE_HAS_IP_MULTICAST

    +

    #endif

    -

    -If you are using ACE as a DLL, you will need to modify your PATH -variable as explained above. +

    2) C:\Corba\ACE_wrappers\include\makeinclude\platform_macros.GNU

    +

    WIND_BASE = /tornado

    +

    WIND_HOST_TYPE = x86-win32

    +

    include +$(ACE_ROOT)/include/makeinclude/platform_vxworks5.5.x.GNU

    +

    ACE_COMPONENTS=FOR_TAO (you may choose this option to build ACE +library that supports TAO)

    -

    -You may want to check $ACE_ROOT/tests/README for the status -of the various tests on MinGW and the different Windows flavors. +

    +

    Steps to Build

    +

    1) Build Ace.dll under NT

    +

    In MS Visual C++ open C:\Corba\ACE_wrappers\ace.dsw And build Ace +DLL

    +

    Copy Ace.dll in C:\bin

    -


    -

    Building and Installing ACE on Win32 with Cygwin

    +

    2) Build gperf utility under NT

    +

    In MS Visual C++ open +C:\Corba\ACE_wrappers\apps\gperf\src\gperf.dsw. Build gperf.exe

    +

    Copy gperf.exe to C:\bin

    -

    -If you are building for a machine without a network card, you may want -to check here first. +

    3) Mount Directries in Cygwin

    +

    Click on Cygnus Solutions -> Cygwin Bash Shell

    +

    Mount following directories by using mount command.

    +

    create respective directories first then use mount command

    -

    -Building and installing ACE on Cygwin -uses the UNIX building process. -Also, as Cygwin uses GNU g++, you may want to take -a look at the Compiling ACE with GNU g++ section. +

    e.g. Create /Corba directory then use $mount -s "C:\Corba" +/Corba

    -

    -You will need the Cygwin build tools and libraries, downloable from -http://www.cygwin.com. -For our build we require the following packages besides the packages the -setup selects by default: - -

    -gcc (version 3.3.3), cygipc, make, perl, binutils. -
    +

    C:\Corba mount to /Corba

    +

    C:\tornado mount to /tornado

    +

    C:\Perl mount to /perl

    +

    C:\Cygwin mount to /cygwin

    +

    C:\bin mount to /bin

    +

    C:\Program Files mount to /Program Files

    -
      +

      4) Build ACE in Cygwin

      +

      $cd /Corba/ACE_wrappers/ace

      +

      $make static_libs=1

      +

      This will build your ace library libACE.a for VxWorks. If you use +option shared_libs=1 then the build will be libACE.so. The other +options are same as follows.

      -
    1. Install Cygwin (this can be easy downloading and running - setup.exe - from the Cygwin site). For working with ACE we recommend - to select DOS as default text file type. -

      +

      5) Build TAO in Cygwin

      +

      $cd $TAO_ROOT/tao

      +

      $make debug=0 optimize=1 static_libs_only=1 minimum_orb=1 +

      +

      for shared libs use shared_libs=1

      -
    2. Open a Cygwin shell. Set your PATH environment variable so - your Cygwin bin directory is first: +

      The minimum Tao does not have following components,

      +

      Dynamic Skeleton Interface

      +

      Dynamic Invocation Interface

      +

      Dynamic Any

      +

      Interceptors

      +

      Interface Repository

      +

      Advanced POA features

      +

      CORBA/COM interworking

      -
             % export PATH=//c/cygwin/bin:$PATH
      -       
      +

      You may play around with above options to find suitable build for +your needs. For example when you give option debug=1 all the debug +symbols will be created and the build will huge in size. The debug +symbols are necessary when you want to debug your code.

      -

      - Note Cygwin uses ``/'' as directory separator, - and ``//X'' as a notation for Win32 drive X. - Note also that you can't use ``c:/cygwin/bin'' - because, for Cygwin, - ``:'' is path separator character, as in UNIX. -

      -

    3. Add an ACE_ROOT environment variable pointing to the - root of your ACE wrappers source tree: +
      +

      Building and Installing ACE Network Services

      -
             % export ACE_ROOT=c:/work/cygwin/ACE_wrappers
      -       
      +The following explains how to build the ACE network services on UNIX and Win32. -

      - Note here you can't use the ``//X'' Cygwin - notation as this is seen by Cygwin's compiler and it doesn't - support that (it does support ``/'' as directory - separator however). +


      +

      Building and Installing ACE Network Services on UNIX

      -

      - From now on, we will refer to the root directory of the ACE - source tree as $ACE_ROOT. -

      +Building and installing ACE Network Services on UNIX is relatively +simple (the process for Win32 is different). +Here's what you need to do:

      -

    4. Create a file called config.h in the - $ACE_ROOT/ace directory that contains: +

        -
               #include "ace/config-cygwin32.h"
        -       
        +
      1. Build and install ACE on UNIX as described earlier. If ACE is built at the root of the ACE + source tree (and ACE has been ported to your platform, of course) the + netsvcs static and shared object libraries should be built + automatically. In addition, the server driver program + (main) contained in $ACE_ROOT/netsvcs/servers/main.cpp + should also be compiled and ready to run.

        -

      2. Create a file called platform_macros.GNU in the - $ACE_ROOT/include/makeinclude directory containing: +

      3. Set your LD_LIBRARY_PATH environment variable to + where the binary version of the ACE netsvcs library. For + example, you probably want to do something like the following

        -

               include $(ACE_ROOT)/include/makeinclude/platform_cygwin32.GNU
        -       
        +

        
        +      % setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib:$LD_LIBRARY_PATH
        +      

        - In the above text, don't replace $(ACE_ROOT) with the - actual directory, GNU make will take the value from the - environment variable you defined previously. +

      4. By default, if the shared object library is built, the services + are linked into the main driver program dynamically. + To specify which services should be linked in and executed, edit the + $ACE_ROOT/netsvcs/servers/svc.conf + file. During your editing, you should update information (such as the + default service port numbers) that affects the initialization of + services in this file. Refer to the + Service Configurator + documentation to learn how the configuration file is parsed and + how the services are dynamically linked and executed. In + addition, refer to the Network + Services documentation to learn more about how to configure + each network service.

        -

      5. On the Cygwin shell, change to the $ACE_ROOT/ace directory and - run make: +

      6. If you only want to link the services statically, simply remove + or rename the svc.conf file.

        +

      -
             % cd $ACE_ROOT/ace
      -       % make
      -       
      +


      +

      Building and Installing ACE on RTEMS

      -

      - This should create libACE.dll (the Win32 shared library) and - libACE.dll.a (the Win32 import library for the DLL). - Note the name for the ACE DLL on Cygwin follows the UNIX convention. -

      +

      export RTEMS_MAKEFILE_PATH=/opt/rtems/CPU-rtems/BSP
      +# setup the build structure
      +cd ACE_wrappers
       
      -       

      - If you want static libs also, you may run: +# create the host (e.g. Linux in this case) build tree +bin/create_ace_build.pl Linux_g++ +cd build/Linux_g++/ace +ln -s ../../../ace/config-linux.h config.h +cd ../include/makeinclude +ln -s ../../../../include/makeinclude/platform_linux.GNU platform_macros.GNU +cd ../../../.. -

             % make static_libs=1
      -       
      +# create the target build tree +bin/create_ace_build.pl rtems +cd build/rtems/TAO +/bin/rm -r TAO_IDL +ln -s ../../Linux_g++/TAO/TAO_IDL . +cd ../ace +ln -s ../../../ace/config-rtems.h config.h +cd ../include/makeinclude +ln -s ../../../../include/makeinclude/platform_rtems.x_g++.GNU platform_macros.GNU +cd ../../../.. -
    5. - The same rules for Win32 search of DLLs apply for Cygwin. If you - want to run some ACE programs from the Cygwin shell, you may - need to add the directory for libACE.dll to your PATH: +# build the host side of things +cd build/Linux_g++ +export ACE_ROOT=`pwd`; export LD_LIBRARY_PATH=`pwd`/ace:`pwd`/lib:$LD_LIBRARY_PATH +cd ace +make -
             # export PATH=//c/work/cygwin/ACE_wrappers/ace:$PATH
      -       
      +# optionally build the ACE tests +cd ../tests +make - If you are using MPC-generated Makefiles, then the DLLs have been - placed in the lib directory instead of ace and thus your PATH - addition would need to look like this: +cd ../TAO +make -
             # export PATH=//c/work/mingw/ACE_wrappers/lib:$PATH
      -       
      +# build the target side of things +cd ../rtems +export ACE_ROOT=`pwd` +cd ace +make +cd ../tests +# build rtems_init.o by hand +make -f ../include/makeinclude/Makefile.rtems rtems_init.o +make +cd ../TAO +make + +


      +

      Building and Installing ACE Network Services on Win32

      -
    +Once again, there are supplied project for MSVC 6.0 or later for +the Network Services.

    -ACE TESTS

    +


    +

    Building and Installing The ACE_SSL Library

    -The tests are located in $ACE_ROOT/tests. -After building the library, you can change to that directory and run -make: +

    The first step for all platforms is to build and install the +OpenSSL distribution. The +ACE_SSL library must then be built according to the instructions +below.

    +

    Unix

    +
      +
    1. Make sure the OpenSSL header file directory is in your compiler's + include path, and that OpenSSL libraries are in your library link/load + path (e.g. + LD_LIBRARY_PATH). If you + installed OpenSSL into a set of directories unknown by the compiler, + set the SSL_ROOT environment variable to point to the + top level directory of your OpenSSL distribution, i.e. the one + containing OpenSSL's include and lib + directories.
    2. +
    3. Add ssl=1 to your MPC + $ACE_ROOT/bin/MakeProjectCreator/config/default.features + or $ACE_ROOT/local.features file, and re-run MPC to add + support for building the ACE_SSL library to your GNUmakefiles. +
    4. Build ACE as described above. When building ACE, add + "ssl=1" + to your make + command line invocation, or add it to your + platform_macros.GNU + file.
    5. +
    6. Build the ACE_SSL library in the $ACE_ROOT/ace/SSL + directory. The ACE_ROOT environment variable should be set + prior to this point.
    7. +
    +

    Microsoft Visual Studio

    +
      +
    1. Set the SSL_ROOT environment variable to the location + of the directory containing the OpenSSL inc32 and + out32dll directories. +
    2. Add ssl=1 to your MPC + $ACE_ROOT/bin/MakeProjectCreator/config/default.features + or $ACE_ROOT/local.features file, and re-run MPC to add + support for building the ACE_SSL library to your MSVC++ + workspaces and projects. +
    3. Open the ACE.dsw workspace, and refer to the ACE build + and installation instructions above for details on creating a + config.h configuration header for this platform. Once + the config.h file has been created, build the + ACE_SSL project.
    4. +
    +

    Borland C++

    +

    Support for building ACE's ACE_SSL library and TAO's SSLIOP + pluggable protocol with Borland C++ does exist. +

      +
    1. Set the SSL_ROOT environment variable to the location + of the directory containing the OpenSSL inc32 and + out32 directories. +
    2. Add ssl=1 to your MPC + $ACE_ROOT/bin/MakeProjectCreator/config/default.features + or $ACE_ROOT/local.features file, and re-run MPC to add + support for building the ACE_SSL library to your Borland C++ makefiles. +
    3. Build ACE and TAO. +
    +

    + +

    +

    Building and Using GUI Reactors Libraries

    +There is a general method for building and using ACE_Reactors for various GUI +libraries. +

    Building GUI Reactor Library

    +
      +
    1. Try to generate build files using MPC. Inspect the output of MPC to find out which features are + necessary to build given reactor. Add these features to + ACE_wrappers/bin/MakeProjectCreator/*.features file, or pass them directly to MPC + using -features command line option. For example, for FlReactor the procedure + consists of five steps +
        +
      1. In the first pass one gets that x11 (X11 libraries) is missing.
        + $ mwc.pl + Skipping ACE_FlReactor (ace_flreactor.mpc), it requires x11. +
      2. + Ensure that X11 libraries are installed, then pass x11=1 feature to MPC. +
      3. In the second pass one gets that gl (OpenGL library) is missing.
        + $ mwc.pl -features x11=1 ace.mwc + Skipping ACE_FlReactor (ace_flreactor.mpc), it requires gl. +
      4. + Ensure that OpenGL libraries are installed, then pass gl=1 feature to MPC. +
      5. In the third pass one gets that fl (Fast Light Toolkit) is missing.
        + $ mwc.pl -features x11=1,gl=1 ace.mwc + Skipping ACE_FlReactor (ace_flreactor.mpc), it requires fl. +
      6. + Ensure that Fast Light Toolkit libraries are installed, then pass fl=1 + feature to MPC. +
      7. In the fourth pass one gets that ace_flreactor feature is missing
        + $ mwc.pl -features x11=1,gl=1,fl=1 ace.mwc + Skipping ACE_FlReactor (ace_flreactor.mpc), it requires ace_flreactor. +
      8. + Allow MPC to generate makefiles for FlReactor by setting ace_flreactor=1 feature. +
      9. In the last pass one obtains files for building FlReactor.
        + $ mwc.pl -features x11=1,gl=1,fl=1,ace_flreactor=1 ace.mwc +
      10. +
      + Currently to simplify MPC generation some of features are turn on by default in + ACE_wrappers/bin/MakeProjectCreator/global.features. For examples to generate + files related with Fl one has to provide only fl=1 feature. To obtain a more fine grained controll + over MPC generation process one may modify ACE_wrappers/bin/MakeProjectCreator/*.features + files. +
    2. +
    3. Required build files are generated now, it is enough then to invoke build tool. + For example for under MPC::gnuace one has to call + make fl=1. For MPC::vc7 target all features are + encoded in generated project files, thus it is enough to compile ACE using MSVC. +
    4. +
    + The build procedure leads to a specific GUI Reactor library. For example, for + Qt and Linux one gets libQtReactor.so, while for + Windows the results are shared QtReactor.dll and import + QtReactor.lib libraries or their variants depending on build options. + When compiling TAO also GUI related libraries are created like libTAO_QtResource.so. +

    Using GUI Reactor Library

    + Here one has at least three use cases: +
    Applications with their own build system.
    + To use ACE support for GUI one has to include specific GUI headers and + link with specific ACE_[GUI]Reactor library. When using TAO support for GUI one has + also to link with specific TAO_[GUI]Resource library. +
    Applications with build system using MPC.
    + In general, it is better to create specific base projects for using ACE GUI support in such application. + Base projects provided by ACE ACE_wrappers/bin/MakeProjectCreator/[ace,tao]_[gui][reactor,resource].mpb + may be an examples of how to do this. +
    Internal ACE applications like tests or examples.
    + MPC project for internal ACE application using GUI support should be derived from + ace_[gui]reactor.mpb base projects. To employ TAO support for GUI one should derive + the project from tao_[gui]resource.mpb These base projects ensure that all necessary libraries + are linked to the application, specifies features necessary to build a project and moreover impose a + build order consistant with ACE. For example, the application project using XtReactor should be + derived from ace_xtreactor.mpb. +

    Notes on specific GUI Reactors

    + -

           % cd $ACE_ROOT/tests
    -       % make
    -       
    +

    Installation Notes

    -

    -Once you build all the tests, you can run -run_tests.pl in the -tests directory to try all the tests: +

    -# create the target build tree -bin/create_ace_build.pl rtems -cd build/rtems/TAO -/bin/rm -r TAO_IDL -ln -s ../../Linux_g++/TAO/TAO_IDL . -cd ../ace -ln -s ../../../ace/config-rtems.h config.h -cd ../include/makeinclude -ln -s ../../../../include/makeinclude/platform_rtems.x_g++.GNU platform_macros.GNU -cd ../../../.. -# build the host side of things -cd build/Linux_g++ -export ACE_ROOT=`pwd`; export LD_LIBRARY_PATH=`pwd`/ace:`pwd`/lib:$LD_LIBRARY_PATH -cd ace -make +
    +

    Compiling ACE with GNU g++

    -# optionally build the ACE tests -cd ../tests -make +If you use the GNU GCC g++ compiler please note the following: -cd ../TAO -make + -

    -

    Building and Using GUI Reactors Libraries

    -There is a general method for building and using ACE_Reactors for various GUI -libraries. -

    Building GUI Reactor Library

    -
      -
    1. Try to generate build files using MPC. Inspect the output of MPC to find out which features are - necessary to build given reactor. Add these features to - ACE_wrappers/bin/MakeProjectCreator/*.features file, or pass them directly to MPC - using -features command line option. For example, for FlReactor the procedure - consists of five steps -
        -
      1. In the first pass one gets that x11 (X11 libraries) is missing.
        - $ mwc.pl - Skipping ACE_FlReactor (ace_flreactor.mpc), it requires x11. -
      2. - Ensure that X11 libraries are installed, then pass x11=1 feature to MPC. -
      3. In the second pass one gets that gl (OpenGL library) is missing.
        - $ mwc.pl -features x11=1 ace.mwc - Skipping ACE_FlReactor (ace_flreactor.mpc), it requires gl. -
      4. - Ensure that OpenGL libraries are installed, then pass gl=1 feature to MPC. -
      5. In the third pass one gets that fl (Fast Light Toolkit) is missing.
        - $ mwc.pl -features x11=1,gl=1 ace.mwc - Skipping ACE_FlReactor (ace_flreactor.mpc), it requires fl. -
      6. - Ensure that Fast Light Toolkit libraries are installed, then pass fl=1 - feature to MPC. -
      7. In the fourth pass one gets that ace_flreactor feature is missing
        - $ mwc.pl -features x11=1,gl=1,fl=1 ace.mwc - Skipping ACE_FlReactor (ace_flreactor.mpc), it requires ace_flreactor. -
      8. - Allow MPC to generate makefiles for FlReactor by setting ace_flreactor=1 feature. -
      9. In the last pass one obtains files for building FlReactor.
        - $ mwc.pl -features x11=1,gl=1,fl=1,ace_flreactor=1 ace.mwc -
      10. -
      - Currently to simplify MPC generation some of features are turn on by default in - ACE_wrappers/bin/MakeProjectCreator/global.features. For examples to generate - files related with Fl one has to provide only fl=1 feature. To obtain a more fine grained controll - over MPC generation process one may modify ACE_wrappers/bin/MakeProjectCreator/*.features - files. -
    2. -
    3. Required build files are generated now, it is enough then to invoke build tool. - For example for under MPC::gnuace one has to call - make fl=1. For MPC::vc7 target all features are - encoded in generated project files, thus it is enough to compile ACE using MSVC. -
    4. -
    - The build procedure leads to a specific GUI Reactor library. For example, for - Qt and Linux one gets libQtReactor.so, while for - Windows the results are shared QtReactor.dll and import - QtReactor.lib libraries or their variants depending on build options. - When compiling TAO also GUI related libraries are created like libTAO_QtResource.so. -

    Using GUI Reactor Library

    - Here one has at least three use cases: -
    Applications with their own build system.
    - To use ACE support for GUI one has to include specific GUI headers and - link with specific ACE_[GUI]Reactor library. When using TAO support for GUI one has - also to link with specific TAO_[GUI]Resource library. -
    Applications with build system using MPC.
    - In general, it is better to create specific base projects for using ACE GUI support in such application. - Base projects provided by ACE ACE_wrappers/bin/MakeProjectCreator/[ace,tao]_[gui][reactor,resource].mpb - may be an examples of how to do this. -
    Internal ACE applications like tests or examples.
    - MPC project for internal ACE application using GUI support should be derived from - ace_[gui]reactor.mpb base projects. To employ TAO support for GUI one should derive - the project from tao_[gui]resource.mpb These base projects ensure that all necessary libraries - are linked to the application, specifies features necessary to build a project and moreover impose a - build order consistant with ACE. For example, the application project using XtReactor should be - derived from ace_xtreactor.mpb. -

    Notes on specific GUI Reactors

    -

    What Do I Need to Build for TAO?

    @@ -3021,8 +2885,7 @@ probe Enable ACE_Timeprobes. profile Enable profiling; see PCFLAGS and PCCFLAGS. purify Purify all executables. quantify Quantify all executables. -repo Use GNU template repository (g++ with repo patches and - egcs only). +repo Use GNU template repository (g++ with repo patches only). rtti Enable run-time type identification. On some platforms, it is enabled by default, so this is ignored. shared_libs Build shared libraries. Ignored if static_libs_only is set. @@ -3056,7 +2919,6 @@ show_uninit Lists all uninitialized in object files built for current directory. Only supported for g++. -


    Building from anonymous CVS

    @@ -3108,7 +2970,7 @@ from
    --> -Last modified: Thu Jul 21 08:33:33 CDT 2005 +Last modified: Mon Mar 20 08:58:22 CST 2006 -- cgit v1.2.1