From 63032997bcf760e4c8d7df6dda849949ccdc2e58 Mon Sep 17 00:00:00 2001
From: john_c
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.
-
Although the DOC group has provided outstanding, world-class -support for ACE over the years, ACE's success has greatly increased -the amount of effort required to keep up with its maintenance, answer -users' questions, and give design guidance. Riverace offers -world-class commercial services to support ACE users and OCI and -Remedy IT offer similar services for TAO, allowing the DOC group's -primary focus to shift back to their main goal: research. The -DOC group is fundamentally focused on (and funded +
Although the DOC group has provided outstanding support for ACE +over the years, ACE's success has greatly increased the amount of +effort required to keep up with its maintenance, answer users' +questions, and give design guidance. Riverace offers world-class +commercial services to support ACE users. OCI, PrismTech, and Remedy +offer similar services for TAO, allowing the DOC group's primary focus +to shift back to their main goal: research. The DOC group is +fundamentally focused on (and funded by) advanced R&D projects. The group continues to be intimately involved in ACE+TAO development and maintenance, but with -revised priorities for maintenance. The bug fixing policies followed by -the DOC group are designed to strike a balance between their many research -projects and their commitment to the ACE+TAO user +revised priorities for maintenance. The bug +fixing policies followed by the DOC group are designed to strike a +balance between their many research +projects and their commitment to the ACE+TAO user community. Naturally, we will be happy to accept well-tested patches from the ACE+TAO user community for any platforms that aren't supported by the DOC group, Riverace, OCI or Remedy IT.
@@ -218,2446 +227,2301 @@ files can be found in global.features file. -
-
+
+The following explains how to build ACE on UNIX +and Windows. - Please see the Non-static - ACE_Object_Manager discussion below.
+
Many features in ACE can be modified by defining some macros in
+ $ACE_ROOT/ace/config.h
. These macros should
+ always appear before including
+ your platform specific config file.
However, if you want to undefine/redefine macros defined in the
+ platform specific config file, these #undef
should
+ come after the config file.
+
+
+As of ACE 5.4, you can choose between two methods of building ACE on +UNIX: +
+The build process for Windows is different from both of +the UNIX methods. - Take a look at (CE-status.txt) for - up-to-date information about ACE on CE.+
+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: +
cd
to the top-level ACE_wrappers
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.../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++.--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-fl-reactor
(no): Enable support for the
+ ACE_FlReactor
class.--enable-qt-reactor
(no): Enable support for the
+ ACE_QtReactor
class.--enable-tk-reactor
(no): Enable support for the
+ ACE_TkReactor
class.--enable-xt-reactor
(no): Enable support for the
+ ACE_XtReactor
class.--enable-gperf
(yes): Build the implementation of
+ gperf that comes with ACE.--enable-qos
(no): Include the ACE_QoS library when
+ building ACE.--enable-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.make
.
+ make install
.
++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.
- There are likely to be build problems with older versions or
- different patchlevels of Sun C++. Likewise, on
- Solaris with g++ you may need to use GNU as instead of
- /usr/ccs/bin/as, if you want -gstabs+ and -pipe support.
++Here's what you need to do to build ACE using GNU Make and ACE's traditional +per-platform configuration method:
- Thanks to Susan Liebeskind <shl@janis.gtri.gatech.edu> - for providing the following useful information:+
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.
- By default, ACE uses both the Solaris and POSIX thread
- interface. To disable use of the Solaris thread interface, add
- -D_POSIX_PTHREAD_SEMANTICS
to the
- CFLAGS
in your
- $(ACE_ROOT)/include/makeinclude/platform_macros.GNU
.
- See the Solaris Intro (3) man page for more information.
+
- To disable ACE thread support completely, build with the
- threads=0
make flag. See the Makefile Flags section below for more
- information on make flags.
+
+ setenv ACE_ROOT /home/cs/faculty/schmidt/ACE_wrappers
+
- If you use g++ on Solaris 7, you might need to rebuild - it on a SunOS 5.7 (Solaris 7) host. Some versions of g++ and - egcs provide replacements for system header files. The - replacements on older SunOS systems are not compatible with the - SunOS 5.7 system headers. See David Levine's - Hints page for instructions on how to build egcs on a SunOS - 5.7 host, using a g++ or egcs that was built on an older SunOS - host.
+ BTW, if you're running BASH or Bourne Shell you'll need to do the following: - The Sun/C++ compilers until and including 5.4 has several - problems with templates and we don't test very often with them. - We regularly use and test with Sun/C++ 5.5.
+
+ 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): - ACE has been ported to AIX 4.3 and higher using the IBM C/C++ - Compiler 3.6.6, Visual Age C++ 5 and 6, and g++ 3.2.
+
+ setenv ACE_ROOT $cwd
+
- To build ACE on AIX with Visual Age C++ 5 in incremental mode
- (i.e. with the IDE), use the
- $ACE_ROOT/ace/ace.icc configuration along with the appropriate
- version-specific config file (e.g. config-aix-4.3.x.h). All of the
- version-specific config files set the version number macros and
- include the general config-aix-4.x.h file which has support for all
- of the OS versions and compilers supported on AIX. Using the general
- config file is the recommended practice for g++, IBM
- C/C++, and Visual Age C++ batch mode compilers.+
$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.- Visual Age C++ 4 has also been supported on ACE 5.1, but is no longer - supported. If you are still using this compiler, please use the - $ACE_ROOT/ace/ace-dll.icc configuration file, along with the - config-aix-4.3.x.h ACE config file. Beware, however, that it hasn't - been tested.
- - The Visual Age 6.0.0.3 and 6.0.0.4 do have some bugs that makes - them unusable for building TAO. We have tested with 6.0.0.12 and - had no problems with that version.
+ 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.
- BTW, here's a technique from Rob Jordan <jordan@hursley.ibm.com> - that can reduce the size of the ACE libraries by about one - third, and can also be applied to applications. It works by - optimising the sharing of template functions, which are created - in an "unusual" way under AIX. It also speeds up - compilation.
+
$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.
- Here's how to optimise the ACE library generation:
+
- Look at the ace/GNUmakefile.ACE
- in $ACE_ROOT/ace
. Create a file called
- ACE_All_Src.cpp
, and add a line to #include
- each of the source files
- listed under FILES=
in the GNUmakefile. Create a
- file called ACE_All_Tmp.h
- and add a line to #include each of the .h files listed under
- TEMPLATE_FILES=
in the GNUmakefile. Now update the
- GNUmakefile so that
- FILES=ACE_All_Src
and
- TEMPLATE_FILES=ACE_All_Tmp
.
+
+ % setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib:$LD_LIBRARY_PATH
+
-
+
- ACE has been ported to Linux on
- Intel, Alpha, and PowerPC platforms. If you use a RedHat 5.x
- distribution, it's best to use RedHat 5.1 or later. ACE works
- without any modifications on RedHat 5.1 and later, and on
- Debian 2.1 on both Intel and Alpha. Use the
- platform_linux.GNU
and ace/config-linux.h
- in your platform_macros.GNU
and
- config.h
files, respectively. The same
- files can be used on PowerPC, with LinuxPPC
- 1999 (R5), with glibc 2.1.1.
+
+ % make
+
- If you run out of memory, it's easy to add virtual memory on
- Linux. Please see the mkswap
man page. You'll
- need at least 256 to 300 Mb of virtual memory (RAM + swap) to
- compile all of ACE+TAO. The System
- Resource Requirements section has some suggestions on how
- to reduce the memory requirement.
+ 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/.
- The glibc 2.0 dynamic loader isn't thread safe. If you want to
- use the Invocation API you'll have to set
- LD_BIND_NOW=true
. If you want to use
- dlopen
, you should use RTLD_NOW
. The
- dynamic loader in glibc 2.1 is thread safe.
+
- The ACE Tokens_Test
hangs with egcs 1.1b on Linux.
- It runs properly when built with egcs 1.0.2 and later. All other
- ACE tests run properly with these egcs 1.0.2 and later.
+
-
-
ace/config-linux-common.h
. If you don't use
- IP multicast, add #define ACE_HAS_IP_MULTICAST 0
- to your ace/config.h
before building ACE.-
eth0
. If
- you don't have or use linuxconf, try adding a multicast
- routing table entry using something like this:-
# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
-
-
+
/usr
, such as /usr/local
, and set your
- PATH
and LD_LIBRARY_PATH
- accordingly.+Below are instructions for building ACE with Borland C++Builder, Microsoft +Visual C++, MinGW, and Cygwin.
- Some of the ACE tests fail on older, pre-glibc2 Linux platforms, - such as RedHat 4.2. The problems are with threads and - thread-specific storage.
+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.
- ACE has been ported to SCO UNIX using the GNU g++ 2.7.2 - compiler. Arturo Montes <mitosys@colomsat.net.co> - maintains this code. In addition, he also maintains a version - of FSU pthreads.
+
+
+If you are building for a machine without a network card, you may want +to check here first.
- ACE used to build fine using the SGI C++ and GNU GCC compilers - for IRIX 5.x. It has been ported to IRIX 6.x using the SGI - MipsPro 7.1 C++ compiler; be aware that in IRIX 6.2 there is a - number of patches that have to be installed and exceptions - appear to fail with the O32 ABI. Please check the config files - for the details.
+
config.h
in the ACE_ROOT\ace
+ directory that contains: #include "ace/config-win32.h"
#define ACE_HAS_WINNT4 0
set ACE_ROOT=C:\ACE_wrappers
set BCBVER=6
make -f Makefile.bor all
set DEBUG=1
set STATIC=1
set UNICODE=1
set CODEGUARD=1
set CPU_FLAG=-6
set CBX=1
make -f Makefile.bor all
make -f Makefile.bor -DDEBUG all
make -f Makefile.bor -DINSTALL_DIR=C:\ACETAO install
+These instructions do not cover all possible build configurations. Please +see +http://www.tenermerx.com/programming/corba/tao_bcb/index.html +for more detailed information on building and using ACE+TAO with Borland C++ +Builder.
- HP sells 2 C++ compilers for HP-UX 10.x and 11.00:
+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.
-
-
-
- On HP-UX 10.20, a patch is required to compile ACE. The exact patch - number depends on the platform - check with HP's patch database to - locate the exact patch or its successor. For 9000 700 series machines - it is PHKL_8693 (s700 10.20 sys/time.h fix for select(2)/C++ defects).
+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
+
- Also see further notes on this platform at Riverace's - Frequently Asked - Questions page. -
+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
+
-
+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.
- The Digital UNIX C++ 5.4 through 5.7 compilers have problems - with ACE's templates. They compile the lib and most of the test - programs, although they warn about template usage. Most tests - run, some dump core. If you use a 5.x version of cxx, be sure - to set the CXX_VER variable to CXX_5, either on your make - command line or in an environment variable. The ACE Makefiles - assume by default that the cxx version is 6.x or later.
+
+
+
config.h
in the ACE_ROOT\ace
+ directory that contains: #include "ace/config-win32.h"
ace/config-tru64.h
instead of
- ace/config-osf1-4.0.h
. ace/config-tru64.h
- can be used for all supported compilers on any version of
- Digital UNIX after and include 4.0. And, with 4.0f and later when
- using Digital CXX, you must use
- include/makeinclude/platform_tru64_cxx.GNU
instead of
- include/makeinclude/platform_osf1_4.0.GNU
.
+ ace/config.h
to tweak with the default settings on
+ NT.#define ACE_HAS_WINNT4 0
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
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
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.+
ACE_AS_STATIC_LIBS
#define ACE_NO_INLINE
+
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.
- FreeBSD is a fast evolving platform. However, it has the - advantage of having standard releases. At this moment, ACE is - only perodically tested against -stable (3.1R) and we rely a lot - on FreeBSD users' feedbacks.+ACE TESTS
- Notice that on older FreeBSD, ld.so
only looks for
- so libraries with version number appended. ACE makefiles
- create symlinks for most shared libraries if
- versioned_so
is defined to 1 in
- $ACE_ROOT/ace
with appropriate ACE version.
- However, this does not work for libACE.so itself so you have to
- create it manually (If you figure out how to do this, please let
- us know) like this:
+The tests are located in ACE_ROOT\tests. There is also a workspace in +that directory to build all the tests (tests.dsw)
- ln -sf $ACE_ROOT/ace/libACE.so $ACE_ROOT/ace/libACE.so.4.5
+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.
- On newer FreeBSD (3.0 or later,) this is no longer necessary.
+ + BUILDING ACE ON A WIN32 MACHINE THAT LACKS A NETWORK CARD
-
+
-+WIN32 ALPHA CONFIGURATIONS - ACE has been ported to OpenBSD 3.1 and GNU g++ 2.95.3.
+
- As with FreeBSD and NetBSD, OpenBSD requires versioned .so - files. This is currently handled by the build files and no - additional work is needed.+
- ACE has been ported to OpenBSD with and without pthreads - enabled. When using pthreads, though, C++ exceptions must be - disabled. This is a known problem with the current release of - OpenBSD (see www.openbsd.org, bug #1750). ACE emulated - exceptions work fine.+
- Compiling TAO may require the user data segment size - restrictions and possibly other options to be increased. This - is done by modifying the default user class in /etc/login.conf - or by adding a new class and modifying the master passwer file - accordingly.-
+
+
+
+If you are building for a machine without a network card, you may want +to check here first. - Ganesh Pai <gpai@voicetek.com> - subsequently did the port for version 2.1.2, also with g++.
+
+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.
- Phil Mesnier <
- mesnier_p@ociweb.com> updated the port to support
- UnixWare 7.1.0, with help from Michael Meissnitzer
- <
- michael.meissnitzer@siemens.at>, Christian Klepp <
- christian.klepp@siemens.at
- > and Engelbert Staller <
- engelbert.staller@siemens.at>
- Building ACE (and TAO) on Unixware 7.1.0 requires a very specific
- g++ build environment. In particular, you must build and install
- g++ 2.95.2, along with binutils 2.9.1. The order (and the declaration
- of configuration) is extremely important. Using the gcc compiler
- provided on the Skunkware CD on a pentium system, here is the recipe
- I used to build a working environment (as root):
-
mkdir /usr/local/newgnu -< ftp and untar binutils-2.9.1 > -< ftp and untar gcc-2.95.2 > - mkdir -p build/binutils build/gcc - cd build/binutils - ../../binutils-2.9.1/configure i386-sco-sysv4 - gmake # takes a long time - gmake install # this creates /usr/local/i386-sco-sysv4/... - mkdir /usr/local/i486-pc-sysv5/bin - cd /usr/local/i486-pc-sysv5/bin - for a in /usr/local/i386-sco-sysv4/bin/*; do ln -s $a .; done - #links all the newly installed utilities +- Once done, ACE and TAO will successfully build and link.+You will need the MinGW build tools and libraries, downloable from +http://www.mingw.org. - cd /usr/local/newgnu/build/gcc - ../../gcc-2.95.2/configure --with-gnu-as --with-gnu-ld - gmake bootstrap # takes a long time - gmake install - mkdir /usr/local/i586-UnixWare7.1.0-sysv5/bin - for a in /usr/local/i386-sco-sysv4/bin/*; do ln -s $a .; done -
+
+For our build we require the packages
+MinGW and MSYS.
-
+
+
+
+
+
-% export PATH=/c/mingw/bin:$PATH +
/etc/starttab
,
- then reboot system. We use these limits:
- # Data, stack, and core file limits (in Kbytes) -80000 -16000 -102400
-
# mkcontig /swap 320 -# prio 17 vmstart /swap- See the
mkcontig
and vmstart
- man pages, and /bin/rc
.-
+
- NOTE: if you want to use IP multicast on LynxOS, be sure to add - this line to your% export ACE_ROOT=/c/work/mingw/ACE_wrappers +
/net/rc.network
, and reboot:-
- /bin/route add "224.0.0.0" "$my_name"
-
+ From now on, we will refer to the root directory of the ACE
+ source tree as $ACE_ROOT.
+ +
+
- At this moment Remedy IT is upgrading - and stabilizing ACE/TAO support for Tornado 2.2/VxWorks 5.5.1. - Since the existing support for previous VxWorks version has been unsupported - and broken for some time and most (potential) users seem to have upgraded to - VxWorks 5.5.1 no backporting effort is done. See also here. -#include "ace/config-win32.h" +
+ If you are building for Windows 9X/Me (ie, not WinNT or
+ Win2K), you will need to add:
- Tornado 2.2/VxWorks 5.5.1 support IP multicast. That is not enabled
- by default in ACE for VxWorks, because it depends on your
- kernel configuration. To enable it, add
- #define ACE_HAS_IP_MULTICAST
to your
- ace/config.h
.
+
- NOTE: In order for the ACE Broadcast and Multicast tests to work the VxWorks kernel - should receive the packages it sends out locally. By default this is not supported. - To enable this behaviour you need to include the IFF_SIMPLEX flag for your required - NIC driver. See the following Windriver SPR 4542 - for more information.#define ACE_HAS_WINNT4 0 +
+ before the #include
line.
+
- In addition to all of the other benefits of ACE, it helps work
- around some deficiencies with VxWorks. The problems are:
-
+
-include $(ACE_ROOT)/include/makeinclude/platform_mingw32.GNU +
+ 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. -
+ If you lack Winsock 2, add the line - Please note that ACE uses one of the spare fields in the Wind - River task control block, spare4, for thread- specific storage. - This field is specified in only one place, in ace/OS_NS_Thread.inl, so it - can easily be changed to one of the other spare fields, if - necessary.
+
- ACE destroys dynamically - allocated singletons in the ACE library. But, they may not - properly destroy some static objects. If you have trouble - running a program multiple times, it may be necessary to unload - the module, using unld, and reload it between runs. - Alternatively, you could try callingwinsock2 = 0 +
cplusDtors
and
- then cplusCtors
between runs.
+ before the previous one.
+
-
+
+
- MVS does not support the dynamic linking dl...() calls that the - Service Configurator uses to dynamically link services at run - time. As a result, all the examples and apps that use a svc.conf - file (for dynamically configuring service objects) do not work, - however, most of these apps can be built/run statically. Also, - the Svc_Conf_l.cpp and Svc_Conf_y.cpp files are generated using - flex and yacc on a ascii (not ebcdic) machine and as a result - they don't work very well with ebcdic svc.conf files. We should - be able to regenerate these files on MVS but MVS doesn't have - flex. This is something that needs to be done.% cd $ACE_ROOT/ace + % 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. - Some of the tests do not execute properly. This is a minority - and over time the goal is to get to 100%.
+
+ If you want static libs also, you may run: - The make scheme for some of the apps still doesn't work - perfectly on MVS. This is mainly due to the way shared - libraries are handled on MVS. See additional - build tips for MVS for more on this.
+
-% make static_libs=1 +
+
-
+
- ACE has been ported to QNX RTP - . We compile for QNX RTP using the GCC compiler shipped with the - distribution, using the ace/config-qnx-rtp.h - and include/makeinclude/platform_qnx_rtp_gcc.GNU - configuration files. - Many of the ACE tests succeed, though some - fail. As the porting effort progresses, we hope to eliminate - these failures. If you know of fixes, please send them to - us.% export PATH=/c/work/mingw/ACE_wrappers/ace:$PATH +
- - Under the current version of QNX RTP ACE fails if compiled with - inline=0 .
+
- ACE has been ported to PharLap's TNT Embedded - ToolSuite (ETS) version 9.1. The port is being tested with - Microsoft Visual C++ 6.
To build for PharLap, use the - ace/config-pharlap.h configuration file, and the instructions - for building on Windows. Building the ACE library is the same as - for regular Windows platforms, except you choose one of the PharLap - ETS configurations to build within Visual C++. Only static - library configurations are available for PharLap at this time. - For an example of how to build - binaries, see the tests directory. The tests_pharlap_msvc.lnk - file is a LinkLoc commands file that the ACE tests are built - with. It is likely that local sites may need to adjust this file - for their target environment.
+
-% cd $ACE_ROOT/tests + % make +
ACE builds and runs on Mac OS X 10.2.x, but the following are - needed to build it:
+-% perl run_test.pl +
When creating $ACE_ROOT/ace/config.h for Mac OS X, you need - to add the following if you obtained dlcompat via Fink:
++If you are using ACE as a DLL, you will need to modify your PATH +variable as explained above. -
#define ACE_NEEDS_DL_UNDERSCORE
++You may want to check $ACE_ROOT/tests/README for the status +of the various tests on MinGW and the different Windows flavors. -
You'll also need to do:
++
setenv DYLD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib
-setenv MACOSX_DEPLOYMENT_TARGET 10.2
- -Currently, all ACE tests pass except Process_Mutex_Test and - MEM_Stream_Test. Also, Mac OS X doesn't yet support *nix - aio_* calls, and ACE does not know anything about Mach.
- -The work to port ACE to Mac OS X was done by several people, - John Zorko - <j.zorko@att.net> is - only one of them.
- -+If you are building for a machine without a network card, you may want +to check here first. +
+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. -
+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), cygserver, make, perl, binutils. +-If you use the GNU GCC g++ compiler please note the following: +
/usr/ccs/lib/libgen.a(reg_compile.o): In function `_get_vars_storage': - reg_compile.o(.text+0x30): relocation truncated to fit: R_SPARC_GOT13 free -- the suggested workaround is to comment out the
ACE_HAS_REGEX
- #define
in ace/config-sunos5.5.h
.
- Or better, create an ace/config.h
that looks like:
- #ifndef ACE_CONFIG_H - // ACE_CONFIG_H is defined by the following #included header. +- We don't know what causes the link problem, though the - workaround solves it.- 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. +
- #include "ace/config-sunos5.5.h" +- Open a Cygwin shell. Set your PATH environment variable so + your Cygwin bin directory is first: - #undef ACE_HAS_REGEX +
- #endif /* ACE_CONFIG_H */ -% export PATH=//c/cygwin/bin:$PATH +
+
+ 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.
+
-
+
config.status
- file. This file is produced when installing gcc; it specifies
- where to install the binary files that gcc uses. For example,
- it specifies whether to use Solaris's /usr/ccs/bin
- binary utils or GNU binary utils. The
- config.status
file is an output of the gcc
- configure
script; it is preferable to use the
- --prefix
option to configure
instead
- of hacking its output.+
-% export ACE_ROOT=c:/work/cygwin/ACE_wrappers +
+
+ 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).
- NOTE: if you do use the GNU linker, you might need to change
- the -G
flag to -shared
in
- the SOFLAGS
definition in your
- include/makeinclude/platform_macros.GNU
.
+
+ From now on, we will refer to the root directory of the ACE
+ source tree as $ACE_ROOT.
+
-
+
collect2
.+
-#include "ace/config-cygwin32.h" +
-include $(ACE_ROOT)/include/makeinclude/platform_cygwin32.GNU +
- -
exceptions=0
to your make
command line
- invocation, or to your
- $ACE_ROOT/include/makeinclude/platform_macros.GNU
file.- -
-
- If you need or want to use egcs' shared libraries, build it
- with the --enable-shared
egcs config option. The
- --enable-shared
option is not an
- egcs run-time option. Build egcs in a way similar to the
- following example:
-
- $ ./configure --enable-shared
- $ make bootstrap
-
- Be sure to set your LD_LIBRARY_PATH
environment
- variable, if necessary, to pick up those shared libraries.+ 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. -
PAGE_SIZE
to 8192. Then rebuild ACE. Thanks to
- Ganesh Pai for this
- information.+
+
- You could come across weird external symbol linker errors. +% cd $ACE_ROOT/ace + % make +
+ 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.
+
- Example:
+
+ If you want static libs also, you may run: -
-I/opt/ace/SunOS-1.0 -DACE_HAS_EXCEPTIONS -o Cached_Accept_Conn_Test - .obj/Cached_Accept_Conn_Test.o -L/opt/ace/SunOS-1.0/ace -L./ -lACE - -lsocket -ldl -lgen -lnsl -lposix4 -lthread - ld: warning: relocation error: R_SPARC_32: file - .obj/Cached_Accept_Conn_Test.o: symbol - __t21ACE_Cache_Map_Manager7Zt30ACE_Refcounted_Hash_Recyclable1Z13 - ACE_INET_AddrZP18Client_Svc_HandlerZt23ACE_Hash_Map_Manager_Ex5Zt - 30ACE_Refcounted_Hash_Recyclable1Z13ACE_INET_AddrZt8ACE_Pair2ZP18 - Client_Svc_HandlerZUiZt8ACE_Hash1Zt30...+
- external symbolic relocation against non-allocatable section .stab; - cannot be processed at runtime: relocation ignored% make static_libs=1 +
+
+
- Install the "binutils" package from GNU (www.gnu.org); specifically, - "as" and "ld".# export PATH=//c/work/cygwin/ACE_wrappers/ace:$PATH +
+
- Perfect build stats:# export PATH=//c/work/mingw/ACE_wrappers/lib:$PATH +
- OS: - Kernel version: SunOS 5.6 Generic 105181-03 December 1999.
+
- loader: - GNU ld version 2.9.1 (with BFD 2.9.1) - Supported emulations: - elf32_sparc
+
- Thanks to John Gathright for providing this - information.% cd $ACE_ROOT/tests + % make +
+
-fsquangle
option helps to shorten long
- symbol names and is a boon to linkers and assemblers which cant
- grok long names.
+ - Thanks to Skye Sweeney for trying it - out and Ossama Othman for discovering the - option with egcs.% perl run_test.pl +
+
+If you are using ACE as a DLL, you will need to modify your PATH +variable as explained above. - Heres a note on how to go about this (contributed by Skye - Sweeney):
+
+You may want to check $ACE_ROOT/tests/README for the status +of the various tests on Cygwin and the different Windows flavors. +
- 1) -fsquangle the name is a combination of squash and mangle!+
++
+
Interix comes with a BSD style make you need GNUmake. +
+Make builds easily under Interix or there is a pre-built +package at:
+http://www.interopsystems.com/tools/warehouse.htm
+If you are building for a machine without a network +card, you may want to check here first.
+This port was built and tested under Interix 3.5. a.k.a. +Windows +Services for UNIX 3.5.
+To build follow the Traditional ACE/GNU Make +Configuration instructions replacing the following include directives:
+#include +"ace/config-win32-interix.h"
+for the config.h header
+and:
+include +$(ACE_ROOT)/include/makeinclude/platform_win32_interix.GNU
+for your platform_macros.GNU file.
+ACE should build fine with just 'make', the only other option tried thus far is +'make static_libs_only=1' which also works. Any +other options may not work.
+ACE TESTS
+The tests are located in $ACE_ROOT/tests. After building the library, you can +change to that directory and run make:
+% cd $ACE_ROOT/tests
% make
+
Once you build all the tests, you can run run_test.pl
in the tests
directory to try all the tests:
% run_test.pl
+If you are using ACE as a shared library, you will need +to modify your LD_LIBRARY_PATH as explained inTraditional ACE/GNU Make Configuration.
+ - 3) All libraries must be compiles with the option. You cannot simply - compile modules that have large names with it. This includes system - libraries and vendor libraries like RogueWave.+
+
- 4) The "simple" solution is not to add the option to each makefile, - but rather recompile the compiler to have the option on by default. - This is done by editing the file `gcc/cp/decl2.c', setting - `flag_do_squangling = 1', then rebuilding the compiler and - libraries.
+A few notes on VxWorks builds (thanks to +Paul von Behren and +Remedy IT for these notes):
++
+
ld
step. Although this script is currently still
+ available it is not used anymore.ace_ld
. If perl is not on your path, you'll
+ have to set PERL_PATH
to the full path (including
+ perl.exe), either in your
+ $(ACE_ROOT)/include/makeinclude/platform_macros.GNU
+ or in your environment.+
+
+You'll have to let ACE know the target type at compile time. There
+are several ways to do this; please see the
+$ACE_ROOT/include/makeinclude/platform_vxworks5.5.x.GNU
+platform file for detailed information.
-
+These non-default VxWorks kernel configuration #defines
+are required with 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:
-Many features in ACE can be modified by defining some macros in
- $ACE_ROOT/ace/config.h
. These macros should
- always appear before including
- your platform specific config file.
However, if you want to undefine/redefine macros defined in the
- platform specific config file, these #undef
should
- come after the config file.
-
-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: -
cd
to the top-level ACE_wrappers
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.../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.make
.
- make install
.
--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.
-
--Here's what you need to do to build ACE using GNU Make and ACE's traditional -per-platform configuration method:
- -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.- -
- -
- 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
-
-
- $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.
- -
$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.
- -
- -
- % setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib:$LD_LIBRARY_PATH
-
- -
- -
- % 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/.
- -
- -
-
- -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.
- -
-
- -
config.h
in the ACE_ROOT\ace
- directory that contains: #include "ace/config-win32.h"
#define ACE_HAS_WINNT4 0
set ACE_ROOT=C:\ACE_wrappers
set BCBVER=6
make -f Makefile.bor all
set DEBUG=1
set STATIC=1
set UNICODE=1
set CODEGUARD=1
set CBX=1
make -f Makefile.bor all
make -f Makefile.bor -DDEBUG all
make -f Makefile.bor -DINSTALL_DIR=C:\ACETAO install
-
-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.
-
-
"==ace_t=="
are forbidden because
+that prefix is used internally by ACE.-
config.h
in the ACE_ROOT\ace
- directory that contains: #include "ace/config-win32.h"
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:
- ace/config.h
to tweak with the default settings on
- NT.#define ACE_HAS_WINNT4 0
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
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
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.-
ACE_AS_STATIC_LIBS
#define ACE_NO_INLINE
+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
.
-
-
+ACE supports shared libraries for VxWorks, but only with the g++ +compiler. To build shared libraries instead of the default static +libraries, addedshared_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).-
-
+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.
-
-
-
-If you are building for a machine without a network card, you may want -to check here first. +
-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. +
+The ACE tests write their output files in a directory named +% perl run_test.pl -v -o > run_test.vxworks +
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:
+
+
+
< run_test.vxworks
from this target shell.+
+
putenv("ACE_TEST_DIR=/tgtsvr") +
+
-
+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.% export PATH=/c/mingw/bin:$PATH -
-
+
ACE_wrappers/include/makeinclude/platform_macros.GNU
+ as usual for VxWorks. See
+ the
+ g++/VxWorks platform file for more information.+
ACE_wrappers/ace/config.h
file that looks
+ something like the following. tao_idl should be built to not support
+ native exception handling, because that's not available on VxWorks.
+#if defined (_MSC_VER) || defined (__BORLANDC__) +# include "ace/config-win32.h" +# undef ACE_HAS_EXCEPTIONS +#else +# include "ace/config-vxworks.h" +#endif +
+
ACE_ROOT
, CPP_LOCATION
,
+ WIND_BASE
, and WIND_HOST_TYPE
environment
+ variables.+
+
+A few additional Windows Notes, from Paul von Behren:% export ACE_ROOT=/c/work/mingw/ACE_wrappers -
+
+
Tornado\host\x86-win32\bin\TorVars.bat
. This is done
+ implicitly within the Tornado IDE.+
ace_ld
, you still need perl installed -
+ see http://www.activestate.com/software/default.htm
+ for Windows perl.+
ACE_ROOT
defined
+ before starting Tornado, you can specify an ACE Makefile as a Tornado
+ target and Tornado will then call make from the menu.+
+
/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 +-
+ Other environment variables:#include "ace/config-win32.h" -
+
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: +
/tornado
is the root of the Tornado install
+ ($WIND_BASE
).
- +#define ACE_HAS_WINNT4 0 -
/gnuwin32
is the root of a Cygnus GNU download and install.
- before the #include
line.
- /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.
- cygwin.dll
is from the Cygnus GNU software download and install.
- +include $(ACE_ROOT)/include/makeinclude/platform_mingw32.GNU -
$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 +
make --unix static_libs=1 ++
+winsock2 = 0 -
ACE_wrappers/apps/gperf/src
.-
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 -
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. +
+
- If you want static libs also, you may run: -
+% make static_libs=1 -
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.
-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
-+% 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
--
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.
-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
-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.
-
-
+The following explains how to build the ACE network services on UNIX and Win32. -% export ACE_ROOT=c:/work/cygwin/ACE_wrappers -
- 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). +
+
- 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:
-
+#include "ace/config-cygwin32.h" -
main
) contained in $ACE_ROOT/netsvcs/servers/main.cpp
+ should also be compiled and ready to run.-
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. +
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.-
+
+% cd $ACE_ROOT/ace - % make -
+
- 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 ../../../.. -
+# 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 ../../../.. -% make static_libs=1 -
+# 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/cygwin/ACE_wrappers/ace:$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 + +# export PATH=//c/work/mingw/ACE_wrappers/lib:$PATH -
+
+
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.
+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.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.
+ SSL_ROOT
environment variable to the location
+ of the directory containing the OpenSSL inc32
and
+ out32dll
directories.
+ 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.
+ 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.Support for building ACE's ACE_SSL library and TAO's SSLIOP + pluggable protocol with Borland C++ does exist. +
SSL_ROOT
environment variable to the location
+ of the directory containing the OpenSSL inc32
and
+ out32
directories.
+ 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.
+ +
ACE_Reactors
for various GUI
+libraries.
+ 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
+ x11
(X11 libraries) is missing.$ mwc.pl
+ Skipping ACE_FlReactor (ace_flreactor.mpc), it requires x11.
+
X11
libraries are installed, then pass x11=1
feature to MPC.
+ gl
(OpenGL library) is missing.$ mwc.pl -features x11=1 ace.mwc
+ Skipping ACE_FlReactor (ace_flreactor.mpc), it requires gl.
+
OpenGL
libraries are installed, then pass gl=1
feature to MPC.
+ fl
(Fast Light Toolkit) is missing.$ mwc.pl -features x11=1,gl=1 ace.mwc
+ Skipping ACE_FlReactor (ace_flreactor.mpc), it requires fl.
+
Fast Light Toolkit
libraries are installed, then pass fl=1
+ feature to MPC.
+ 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.
+
FlReactor
by setting ace_flreactor=1
feature.
+ FlReactor
.$ mwc.pl -features x11=1,gl=1,fl=1,ace_flreactor=1 ace.mwc
+
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.
+ 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.
+ 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
.
+ ACE_[GUI]Reactor
library. When using TAO support for GUI one has
+ also to link with specific TAO_[GUI]Resource
library.
+ ACE_wrappers/bin/MakeProjectCreator/[ace,tao]_[gui][reactor,resource].mpb
+ may be an examples of how to do this.
+ 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
.
+ QtReactor
ace_qtreactor
[1 by default] feature.
+ To build this reactor one has to provide feature qt
[0 by default] (Qt library). Moreover,
+ it is assumed that Qt
was installed in a standard way
+ and QTDIR
points to Qt
installation folder. To build TAO
+ support for Qt
one should use tao_qtresource
[1 by default] feature.
+ XtReactor
ace_xtreactor
[1 by default] feature.
+ To build this reactor one has to provide the following features: x11
[1 by default]
+ (X11 libraries) and xt
[1 by default] (X11 Toolkit).
+ Moreover, some examples and tests related with XtReactor
+ needs additionall features namely either motif
[0 by default] (Motif/Lesstif libraries) or
+ athena
[0 by default] (Athena widgets). To build TAO
+ support for xt
one should use tao_xtresource
+
[1 by default] feature.
+ TkReactor
ace_tkreactor
[1 by default] feature. To build this reactor one has to provide
+ tk
[0 by default] (Tcl libraries) feature. To build TAO
+ support for Tk
one should use tao_tkresource
[1 by default] feature.
+ FlReactor
ace_flreactor
[1 by default] feature.
+ To build this reactor one has to provide the following features: x11
+ [1 by default] (X11 libraries),
+ gl
[1 by default] (OpenGl) and fl
+ [0 by default] (Fast Light Toolkit). To build TAO
+ support for Fl
one should use tao_flresource
[1 by default] feature.
+ MS Windows: The paths to fltkdll
and
+ OpenGL32
libraries, as well as fltk
header files
+ should be setup manually for succesfull compilation. Obviosuly,
+ x11
switch is ignored for this platform.
+ +% cd $ACE_ROOT/tests - % make -
+ All of ACE has been ported to the Win32 API (which includes + Windows NT, Windows 2000, and Windows '95/98/ME) and Win64. The entire + release now compiles using the Microsoft Visual C++ 6.0, and + 7.1 (aka Visual C++ .NET 2003) compilers. ACE can be built as both + a static (LIB) and dynamic (DLL) library, using the Win32 installation + process described below.% perl run_test.pl -
-
-If you are using ACE as a DLL, you will need to modify your PATH -variable as explained above. + Please see the Non-static + ACE_Object_Manager discussion below.
-
-You may want to check $ACE_ROOT/tests/README for the status -of the various tests on Cygwin and the different Windows flavors. -
+ We've also added some support for + GNU g++ with MinGW, + GNU g++ with Cygwin, + Borland C++ Builder 6.0, + Borland C++ BuilderX, and Borland C++ Builder 2006, + Interix (Windows Services for Unix), + and IBM's VisualAge C++ compiler. + Since we don't have these compilers we rely on the ACE+TAO users + community to maintain these ports. Therefore, please send email + to the ACE mailing list if you run into problems.-
--
-
Interix comes with a BSD style make you need GNUmake. -
-Make builds easily under Interix or there is a pre-built -package at:
-http://www.interopsystems.com/tools/warehouse.htm
-If you are building for a machine without a network -card, you may want to check here first.
-This port was built and tested under Interix 3.5. a.k.a. -Windows -Services for UNIX 3.5.
-To build follow the Traditional ACE/GNU Make -Configuration instructions replacing the following include directives:
-#include -"ace/config-win32-interix.h"
-for the config.h header
-and:
-include -$(ACE_ROOT)/include/makeinclude/platform_win32_interix.GNU
-for your platform_macros.GNU file.
-ACE should build fine with just 'make', the only other option tried thus far is -'make static_libs_only=1' which also works. Any -other options may not work.
-ACE TESTS
-The tests are located in $ACE_ROOT/tests. After building the library, you can -change to that directory and run make:
-% cd $ACE_ROOT/tests
% make
-
Once you build all the tests, you can run run_test.pl
in the tests
directory to try all the tests:
% run_test.pl
-If you are using ACE as a shared library, you will need -to modify your LD_LIBRARY_PATH as explained inTraditional ACE/GNU Make Configuration.
- + Take a look at (CE-status.txt) for + up-to-date information about ACE on CE.-
-
+
-A few notes on VxWorks builds (thanks to -Paul von Behren and -Remedy IT for these notes):
--
-
ld
step. Although this script is currently still
- available it is not used anymore.ace_ld
. If perl is not on your path, you'll
- have to set PERL_PATH
to the full path (including
- perl.exe), either in your
- $(ACE_ROOT)/include/makeinclude/platform_macros.GNU
- or in your environment.-
-
$ACE_ROOT/include/makeinclude/platform_vxworks5.5.x.GNU
-platform file for detailed information.+ There are likely to be build problems with older versions or + different patchlevels of Sun C++. Likewise, on + Solaris with g++ you may need to use GNU as instead of + /usr/ccs/bin/as, if you want -gstabs+ and -pipe support. -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.
+ Thanks to Susan Liebeskind <shl@janis.gtri.gatech.edu> + for providing the following useful information:
-These non-default VxWorks kernel configuration #defines
-are required with ACE:
+ By default, ACE uses both the Solaris and POSIX thread
+ interface. To disable use of the Solaris thread interface, add
+ -D_POSIX_PTHREAD_SEMANTICS
to the
+ CFLAGS
in your
+ $(ACE_ROOT)/include/makeinclude/platform_macros.GNU
.
+ See the Solaris Intro (3) man page for more information.
-
#define INCLUDE_CPLUS /* include C++ support */ -#define INCLUDE_CPLUS_IOSTREAMS /* include iostreams classes */ -#define INCLUDE_POSIX_ALL /* include all available POSIX functions */ -+ To disable ACE thread support completely, build with the +
threads=0
make flag. See the Makefile Flags section below for more
+ information on make flags.
-For completeness, here are the non-default #defines
that
-we used for VxWorks 5.3.1/g++ 2.7.2:
+ If you use g++ on Solaris 7, you might need to rebuild
+ it on a SunOS 5.7 (Solaris 7) host. Some versions of g++
+ provide replacements for system header files. The
+ replacements on older SunOS systems are not compatible with the
+ SunOS 5.7 system headers.
-
#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 Sun/C++ compilers until and including 5.4 has several + problems with templates and we don't test very often with them. + We regularly use and test with Sun/C++ 5.5. -Also, automatic construction/destruction of static objects -should be enabled.
+
-If you use TAO, it's also a good idea to increase the
-NUM_FILES
parameter from its default of 50 to,
-say, 1000.
+ ACE has been ported to AIX 4.3 and higher using the IBM C/C++ + Compiler 3.6.6, Visual Age C++ 5 and 6, and g++ 3.2.
-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.
+ To build ACE on AIX with Visual Age C++ 5 in incremental mode + (i.e. with the IDE), use the + $ACE_ROOT/ace/ace.icc configuration along with the appropriate + version-specific config file (e.g. config-aix-4.3.x.h). All of the + version-specific config files set the version number macros and + include the general config-aix-4.x.h file which has support for all + of the OS versions and compilers supported on AIX. Using the general + config file is the recommended practice for g++, IBM + C/C++, and Visual Age C++ batch mode compilers.
-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.
+ Visual Age C++ 4 has also been supported on ACE 5.1, but is no longer + supported. If you are still using this compiler, please use the + $ACE_ROOT/ace/ace-dll.icc configuration file, along with the + config-aix-4.3.x.h ACE config file. Beware, however, that it hasn't + been tested.
-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.
+ The Visual Age 6.0.0.3 and 6.0.0.4 do have some bugs that makes + them unusable for building TAO. We have tested with 6.0.0.12 and + had no problems with that version.
-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.
+ BTW, here's a technique from Rob Jordan <jordan@hursley.ibm.com> + that can reduce the size of the ACE libraries by about one + third, and can also be applied to applications. It works by + optimising the sharing of template functions, which are created + in an "unusual" way under AIX. It also speeds up + compilation.
-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:
+ Here's how to optimise the ACE library generation:
-
-spa ace_main, "arg1" [, ...]
-
+ Look at the ace/GNUmakefile.ACE
+ in $ACE_ROOT/ace
. Create a file called
+ ACE_All_Src.cpp
, and add a line to #include
+ each of the source files
+ listed under FILES=
in the GNUmakefile. Create a
+ file called ACE_All_Tmp.h
+ and add a line to #include each of the .h files listed under
+ TEMPLATE_FILES=
in the GNUmakefile. Now update the
+ GNUmakefile so that
+ FILES=ACE_All_Src
and
+ TEMPLATE_FILES=ACE_All_Tmp
.-All arguments must be quoted, even numbers. You can start also ace_main -without spawning another thread by using:
+
-
-spaef ace_main, "arg1" [, ...]
-
+ ACE has been ported to Linux on
+ Intel, Alpha, and PowerPC platforms. If you use a RedHat 5.x
+ distribution, it's best to use RedHat 5.1 or later. ACE works
+ without any modifications on RedHat 5.1 and later, and on
+ Debian 2.1 on both Intel and Alpha. Use the
+ platform_linux.GNU
and ace/config-linux.h
+ in your platform_macros.GNU
and
+ config.h
files, respectively. The same
+ files can be used on PowerPC, with LinuxPPC
+ 1999 (R5), with glibc 2.1.1.
-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
:
+ If you run out of memory, it's easy to add virtual memory on
+ Linux. Please see the mkswap
man page. You'll
+ need at least 256 to 300 Mb of virtual memory (RAM + swap) to
+ compile all of ACE+TAO. The System
+ Resource Requirements section has some suggestions on how
+ to reduce the memory requirement.
-
-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"
-
+ The glibc 2.0 dynamic loader isn't thread safe. If you want to
+ use the Invocation API you'll have to set
+ LD_BIND_NOW=true
. If you want to use
+ dlopen
, you should use RTLD_NOW
. The
+ dynamic loader in glibc 2.1 is thread safe.
-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
.
+ NOTE: The TAO NameService uses IP multicasting + by default, though it is not required. IP multicast on Linux + requires the following:
-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.
+
ace/config-linux-common.h
. If you don't use
+ IP multicast, add #define ACE_HAS_IP_MULTICAST 0
+ to your ace/config.h
before building ACE.+
eth0
. If
+ you don't have or use linuxconf, try adding a multicast
+ routing table entry using something like this:+
# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
+
+
-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.
+
-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).
+ ACE has been ported to SCO UNIX using the GNU g++ 2.7.2 + compiler. Arturo Montes <mitosys@colomsat.net.co> + maintains this code. In addition, he also maintains a version + of FSU pthreads.
-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.
+
-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.+ ACE used to build fine using the SGI C++ and GNU GCC compilers + for IRIX 5.x. It has been ported to IRIX 6.x using the SGI + MipsPro 7.1 C++ compiler; be aware that in IRIX 6.2 there is a + number of patches that have to be installed and exceptions + appear to fail with the O32 ABI. Please check the config files + for the details.
-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.
+
-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.
+ HP sells 2 C++ compilers for HP-UX 10.x and 11.00: -
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
.+
+ On HP-UX 10.20, a patch is required to compile ACE. The exact patch + number depends on the platform - check with HP's patch database to + locate the exact patch or its successor. For 9000 700 series machines + it is PHKL_8693 (s700 10.20 sys/time.h fix for select(2)/C++ defects).
-It is possible to generate a script to execute all ACE tests. You can do this by executing -
+ Also see further notes on this platform at Riverace's + Frequently Asked + Questions page. +% 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:
-
-
-
-
< run_test.vxworks
from this target shell.-
-Kirk Davies provided this -approach for running the ACE tests on Tornado II: + The Digital UNIX C++ 5.4 through 5.7 compilers have problems + with ACE's templates. They compile the lib and most of the test + programs, although they warn about template usage. Most tests + run, some dump core. If you use a 5.x version of cxx, be sure + to set the CXX_VER variable to CXX_5, either on your make + command line or in an environment variable. The ACE Makefiles + assume by default that the cxx version is 6.x or later.
-
-
putenv("ACE_TEST_DIR=/tgtsvr") -
-
-
+ NOTE: if you use Digital UNIX 4.0f or later, you must
+ use ace/config-tru64.h
instead of
+ ace/config-osf1-4.0.h
. ace/config-tru64.h
+ can be used for all supported compilers on any version of
+ Digital UNIX after and include 4.0. And, with 4.0f and later when
+ using Digital CXX, you must use
+ include/makeinclude/platform_tru64_cxx.GNU
instead of
+ include/makeinclude/platform_osf1_4.0.GNU
.
+
-Using the Cygnus tools, this approach works: -
-
ACE_wrappers/include/makeinclude/platform_macros.GNU
- as usual for VxWorks. See
- the
- g++/VxWorks platform file for more information.-
ACE_wrappers/ace/config.h
file that looks
- something like the following. tao_idl should be built to not support
- native exception handling, because that's not available on VxWorks.
-#if defined (_MSC_VER) || defined (__BORLANDC__) -# include "ace/config-win32.h" -# undef ACE_HAS_EXCEPTIONS -#else -# include "ace/config-vxworks.h" -#endif -
-
ACE_ROOT
, CPP_LOCATION
,
- WIND_BASE
, and WIND_HOST_TYPE
environment
- variables.-
-
-A few additional Windows Notes, from Paul von Behren:
-
-
Tornado\host\x86-win32\bin\TorVars.bat
. This is done
- implicitly within the Tornado IDE.-
ace_ld
, you still need perl installed -
- see http://www.activestate.com/software/default.htm
- for Windows perl.-
ACE_ROOT
defined
- before starting Tornado, you can specify an ACE Makefile as a Tornado
- target and Tornado will then call make from the menu.-
ld.so
only looks for
+ so libraries with version number appended. ACE makefiles
+ create symlinks for most shared libraries if
+ versioned_so
is defined to 1 in
+ $ACE_ROOT/ace
with appropriate ACE version.
+ However, this does not work for libACE.so itself so you have to
+ create it manually (If you figure out how to do this, please let
+ us know) like this:
-And Chris Ryan's instructions for building for VxWorks targets
-on Windows NT hosts:
+ ln -sf $ACE_ROOT/ace/libACE.so $ACE_ROOT/ace/libACE.so.4.5
-
-
/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 -+ On newer FreeBSD (3.0 or later,) this is no longer necessary.
- 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 -+
-
/tornado
is the root of the Tornado install
- ($WIND_BASE
).
+ Like older FreeBSD, NetBSD's ld.so
also requires
+ versioned .so files.-
/gnuwin32
is the root of a Cygnus GNU download and install.
+ -
/bin
content is:-
aced.dll - cygwin.dll - perl.exe - rm.exe - sh.exe - true -+ ACE has been ported to OpenBSD 3.1 and GNU g++ 2.95.3.
- aced.dll
is produced in an ACE NT source tree according to
- documented procedure for NT VC++ 6.0 ACE build.
+ As with FreeBSD and NetBSD, OpenBSD requires versioned .so
+ files. This is currently handled by the build files and no
+ additional work is needed.
- cygwin.dll
is from the Cygnus GNU software download and install.
+ ACE has been ported to OpenBSD with and without pthreads
+ enabled. When using pthreads, though, C++ exceptions must be
+ disabled. This is a known problem with the current release of
+ OpenBSD (see www.openbsd.org, bug #1750). ACE emulated
+ exceptions work fine.
-
$ACE_ROOT/ace/config.h
that looks
- like:-
#include "config-vxworks5.x.h" -+ Compiling TAO may require the user data segment size + restrictions and possibly other options to be increased. This + is done by modifying the default user class in /etc/login.conf + or by adding a new class and modifying the master passwer file + accordingly.
- 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 -+
-
make --unix static_libs=1 --
-
-
ACE_wrappers/apps/gperf/src
.
+ Phil Mesnier <
+ mesnier_p@ociweb.com> updated the port to support
+ UnixWare 7.1.0, with help from Michael Meissnitzer
+ <
+ michael.meissnitzer@siemens.at>, Christian Klepp <
+ christian.klepp@siemens.at
+ > and Engelbert Staller <
+ engelbert.staller@siemens.at>
+ Building ACE (and TAO) on Unixware 7.1.0 requires a very specific
+ g++ build environment. In particular, you must build and install
+ g++ 2.95.2, along with binutils 2.9.1. The order (and the declaration
+ of configuration) is extremely important. Using the gcc compiler
+ provided on the Skunkware CD on a pentium system, here is the recipe
+ I used to build a working environment (as root):
+
mkdir /usr/local/newgnu +< ftp and untar binutils-2.9.1 > +< ftp and untar gcc-2.95.2 > + mkdir -p build/binutils build/gcc + cd build/binutils + ../../binutils-2.9.1/configure i386-sco-sysv4 + gmake # takes a long time + gmake install # this creates /usr/local/i386-sco-sysv4/... + mkdir /usr/local/i486-pc-sysv5/bin + cd /usr/local/i486-pc-sysv5/bin + for a in /usr/local/i386-sco-sysv4/bin/*; do ln -s $a .; done + #links all the newly installed utilities -
CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe - cd $TAO_ROOT/tao - /gnuwin32/b18/H-i386-cygwin32/bin/make -+ cd /usr/local/newgnu/build/gcc + ../../gcc-2.95.2/configure --with-gnu-as --with-gnu-ld + gmake bootstrap # takes a long time + gmake install + mkdir /usr/local/i586-UnixWare7.1.0-sysv5/bin + for a in /usr/local/i386-sco-sysv4/bin/*; do ln -s $a .; done + + Once done, ACE and TAO will successfully build and link.
-
CPP_LOCATION=/Program Files/DevStudio/VC/bin/CL.exe - cd $TAO_ROOT/orbsvcs/orbsvcs - /gnuwin32/b18/H-i386-cygwin32/bin/make -+
-
-
+
-
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.
+ ACE builds and runs properly on LynxOS 3.0.x, 3.1.x and 4.0.0 for Intel + and PowerPC targets. LynxOS 2.5.x is no longer supported. + To build ACE on LynxOS 3.0.x you need to update GCC to + version 2.9-gnupro-98r2, which can be obtained from + + ftp://ftp.lynuxworks.com/compilers/98r2-preview/-
Software Needed For Building TAO
-1) Active State's ActivePerl from -http://www.activestate.com/software/default.htm -
+ If you run out of memory on LynxOS, these might help:-
2) Tornado 2.2.1 from Windriver.
+/etc/starttab
,
+ then reboot system. We use these limits:
+ # Data, stack, and core file limits (in Kbytes) +80000 +16000 +102400
+
# mkcontig /swap 320 +# prio 17 vmstart /swap+ See the
mkcontig
and vmstart
+ man pages, and /bin/rc
.+
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)
+ Please see the comments in the + ACE + platform_lynxos.GNU file for information on, and an + example of, tailoring for your particular platform.
+
+ NOTE: if you want to use IP multicast on LynxOS, be sure to add
+ this line to your /net/rc.network
, and reboot:
+
+ /bin/route add "224.0.0.0" "$my_name"
+
+
+ -
Environment Variables:
-On NT the environment Variables are set as follows, (from -Control Panel-> System -> Environment)
-I added following Environment variable entries to PATH
+ David Levine + <levine@cs.wustl.edu> has + ported ACE to VxWorks 5.2/5.3/5.3.1/5.4 with the GreenHills + 1.8.8/1.8.9, g++ and diab compilers that are distributed with + VxWorks/Tornado. It is not possible to use VxWorks 5.4 + and earlier with ACE anymore because the compilers delivered with + 5.4 and earlier don't support the C++ features ACE needs.-
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
+ At this moment Remedy IT is upgrading + and stabilizing ACE/TAO support for Tornado 2.2/VxWorks 5.5.1. + Since the existing support for previous VxWorks version has been unsupported + and broken for some time and most (potential) users seem to have upgraded to + VxWorks 5.5.1 no backporting effort is done. See also here. +-
Additional Environmental variables and the values,
-CPU=PPC860
-LD_LIBRARY_PATH=
-SHELL=/bin/sh.exe
+ Tornado 2.2/VxWorks 5.5.1 support IP multicast. That is not enabled + by default in ACE for VxWorks, because it depends on your + kernel configuration. To enable it, add +#define ACE_HAS_IP_MULTICAST
to your
+ ace/config.h
.-
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
+ NOTE: In order for the ACE Broadcast and Multicast tests to work the VxWorks kernel + should receive the packages it sends out locally. By default this is not supported. + To enable this behaviour you need to include the IFF_SIMPLEX flag for your required + NIC driver. See the following Windriver SPR 4542 + for more information.-
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
+ In addition to all of the other benefits of ACE, it helps work + around some deficiencies with VxWorks. The problems are: -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)
++
-
-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
+-
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
+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
+ Please note that ACE uses one of the spare fields in the Wind + River task control block, spare4, for thread- specific storage. + This field is specified in only one place, in ace/OS_NS_Thread.inl, so it + can easily be changed to one of the other spare fields, if + necessary.-
e.g. Create /Corba directory then use $mount -s "C:\Corba" -/Corba
+ ACE destroys dynamically + allocated singletons in the ACE library. But, they may not + properly destroy some static objects. If you have trouble + running a program multiple times, it may be necessary to unload + the module, using unld, and reload it between runs. + Alternatively, you could try callingcplusDtors
and
+ then cplusCtors
between runs.-
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.
+ All of ACE has been ported to OpenEdition by Chuck Gehr <gehr@sweng.stortek.com>. + The ACE library, all the tests and most of the examples and apps + build clean. There are still some problems that need to be + ironed out:-
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
+ MVS does not support the dynamic linking dl...() calls that the + Service Configurator uses to dynamically link services at run + time. As a result, all the examples and apps that use a svc.conf + file (for dynamically configuring service objects) do not work, + however, most of these apps can be built/run statically. Also, + the Svc_Conf_l.cpp and Svc_Conf_y.cpp files are generated using + flex and yacc on a ascii (not ebcdic) machine and as a result + they don't work very well with ebcdic svc.conf files. We should + be able to regenerate these files on MVS but MVS doesn't have + flex. This is something that needs to be done.-
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
+ Some of the tests do not execute properly. This is a minority + and over time the goal is to get to 100%.-
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.
+ The make scheme for some of the apps still doesn't work + perfectly on MVS. This is mainly due to the way shared + libraries are handled on MVS. See additional + build tips for MVS for more on this.+
-
+
-The following explains how to build the ACE network services on UNIX and Win32. + ACE has been ported to QNX RTP + . We compile for QNX RTP using the GCC compiler shipped with the + distribution, using the ace/config-qnx-rtp.h + and include/makeinclude/platform_qnx_rtp_gcc.GNU + configuration files. + Many of the ACE tests succeed, though some + fail. As the porting effort progresses, we hope to eliminate + these failures. If you know of fixes, please send them to + us.
+ + Under the current version of QNX RTP ACE fails if compiled with + inline=0 .
-
-
-Building and installing ACE Network Services on UNIX is relatively -simple (the process for Win32 is different). -Here's what you need to do:
+ ACE has been ported to PharLap's TNT Embedded + ToolSuite (ETS) version 9.1. The port is being tested with + Microsoft Visual C++ 6.
To build for PharLap, use the + ace/config-pharlap.h configuration file, and the instructions + for building on Windows. Building the ACE library is the same as + for regular Windows platforms, except you choose one of the PharLap + ETS configurations to build within Visual C++. Only static + library configurations are available for PharLap at this time. + For an example of how to build + binaries, see the tests directory. The tests_pharlap_msvc.lnk + file is a LinkLoc commands file that the ACE tests are built + with. It is likely that local sites may need to adjust this file + for their target environment.
-
-
main
) contained in $ACE_ROOT/netsvcs/servers/main.cpp
- should also be compiled and ready to run.+
ACE builds and runs on Mac OS X 10.2.x, but the following are + needed to build it:
-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+
1. The latest version of the Apple Developer Tools + (December 2002)
+2. The dlcompat library (obtained either through Fink or + SourceForge)
-
- % setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib:$LD_LIBRARY_PATH
-
+
When creating $ACE_ROOT/ace/config.h for Mac OS X, you need + to add the following if you obtained dlcompat via Fink:
-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.+
#define ACE_NEEDS_DL_UNDERSCORE
--
You'll also need to do:
+ +setenv DYLD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib
+setenv MACOSX_DEPLOYMENT_TARGET 10.2
--
Currently, all ACE tests pass except Process_Mutex_Test and + MEM_Stream_Test. Also, Mac OS X doesn't yet support *nix + aio_* calls, and ACE does not know anything about Mach.
-export RTEMS_MAKEFILE_PATH=/opt/rtems/CPU-rtems/BSP -# setup the build structure -cd ACE_wrappers +The work to port ACE to Mac OS X was done by several people, + John Zorko + <j.zorko@att.net> is + only one of them.
-# 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 ../../../.. + -# 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 +
-# 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 - +
config.status
+ file. This file is produced when installing gcc; it specifies
+ where to install the binary files that gcc uses. For example,
+ it specifies whether to use Solaris's /usr/ccs/bin
+ binary utils or GNU binary utils. The
+ config.status
file is an output of the gcc
+ configure
script; it is preferable to use the
+ --prefix
option to configure
instead
+ of hacking its output.-
-
-Once again, there are supplied project for MSVC 6.0 or later for -the Network Services.
+ NOTE: if you do use the GNU linker, you might need to change
+ the -G
flag to -shared
in
+ the SOFLAGS
definition in your
+ include/makeinclude/platform_macros.GNU
.
-
-
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.
-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.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.
- SSL_ROOT
environment variable to the location
- of the directory containing the OpenSSL inc32
and
- out32dll
directories.
- 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.
- 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.Support for building ACE's ACE_SSL library and TAO's SSLIOP - pluggable protocol with Borland C++ does exist. -
SSL_ROOT
environment variable to the location
- of the directory containing the OpenSSL inc32
and
- out32
directories.
- 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.
- collect2
.+ +
-
ACE_Reactors
for various GUI
-libraries.
- 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
- x11
(X11 libraries) is missing.$ mwc.pl
- Skipping ACE_FlReactor (ace_flreactor.mpc), it requires x11.
-
X11
libraries are installed, then pass x11=1
feature to MPC.
- gl
(OpenGL library) is missing.$ mwc.pl -features x11=1 ace.mwc
- Skipping ACE_FlReactor (ace_flreactor.mpc), it requires gl.
-
OpenGL
libraries are installed, then pass gl=1
feature to MPC.
- fl
(Fast Light Toolkit) is missing.$ mwc.pl -features x11=1,gl=1 ace.mwc
- Skipping ACE_FlReactor (ace_flreactor.mpc), it requires fl.
-
Fast Light Toolkit
libraries are installed, then pass fl=1
- feature to MPC.
- 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.
-
FlReactor
by setting ace_flreactor=1
feature.
- FlReactor
.$ mwc.pl -features x11=1,gl=1,fl=1,ace_flreactor=1 ace.mwc
-
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.
- 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.
- 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
.
- ACE_[GUI]Reactor
library. When using TAO support for GUI one has
- also to link with specific TAO_[GUI]Resource
library.
- ACE_wrappers/bin/MakeProjectCreator/[ace,tao]_[gui][reactor,resource].mpb
- may be an examples of how to do this.
- 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
.
- QtReactor
ace_qtreactor
[1 by default] feature.
- To build this reactor one has to provide feature qt
[0 by default] (Qt library). Moreover,
- it is assumed that Qt
was installed in a standard way
- and QTDIR
points to Qt
installation folder. To build TAO
- support for Qt
one should use tao_qtresource
[1 by default] feature.
- XtReactor
ace_xtreactor
[1 by default] feature.
- To build this reactor one has to provide the following features: x11
[1 by default]
- (X11 libraries) and xt
[1 by default] (X11 Toolkit).
- Moreover, some examples and tests related with XtReactor
- needs additionall features namely either motif
[0 by default] (Motif/Lesstif libraries) or
- athena
[0 by default] (Athena widgets). To build TAO
- support for xt
one should use tao_xtresource
-
[1 by default] feature.
- TkReactor
ace_tkreactor
[1 by default] feature. To build this reactor one has to provide
- tk
[0 by default] (Tcl libraries) feature. To build TAO
- support for Tk
one should use tao_tkresource
[1 by default] feature.
- FlReactor
ace_flreactor
[1 by default] feature.
- To build this reactor one has to provide the following features: x11
- [1 by default] (X11 libraries),
- gl
[1 by default] (OpenGl) and fl
- [0 by default] (Fast Light Toolkit). To build TAO
- support for Fl
one should use tao_flresource
[1 by default] feature.
- MS Windows: The paths to fltkdll
and
- OpenGL32
libraries, as well as fltk
header files
- should be setup manually for succesfull compilation. Obviosuly,
- x11
switch is ignored for this platform.
-