diff options
author | schmidt <douglascraigschmidt@users.noreply.github.com> | 1997-08-29 00:53:14 +0000 |
---|---|---|
committer | schmidt <douglascraigschmidt@users.noreply.github.com> | 1997-08-29 00:53:14 +0000 |
commit | e951c20cfdd9e21fc56f3b1a0524ddf622164216 (patch) | |
tree | 4c92d88379d515a648eed7dde749c337c9f3449f | |
parent | a241989b1f42ca38153053b917e2adbb56f84ff1 (diff) | |
download | ATCD-e951c20cfdd9e21fc56f3b1a0524ddf622164216.tar.gz |
*** empty log message ***
-rw-r--r-- | ACE-INSTALL | 669 | ||||
-rw-r--r-- | README | 1 | ||||
-rw-r--r-- | ace/Strategies_T.cpp | 3 | ||||
-rw-r--r-- | ace/config-aix-4.1.x.h | 2 | ||||
-rw-r--r-- | ace/config-aix-4.2.x.h | 2 | ||||
-rw-r--r-- | ace/config-hpux-10.x-aCC.h | 2 | ||||
-rw-r--r-- | ace/config-hpux-10.x-decthreads.h | 2 | ||||
-rw-r--r-- | ace/config-hpux-10.x-g++.h | 2 | ||||
-rw-r--r-- | ace/config-hpux-10.x-hpc++.h | 1 | ||||
-rw-r--r-- | ace/config-hpux-10.x-nothread.h | 2 | ||||
-rw-r--r-- | ace/config-hpux-10.x.h | 2 | ||||
-rw-r--r-- | ace/config-mvs.h | 1 | ||||
-rw-r--r-- | ace/config-osf1-3.2.h | 3 | ||||
-rw-r--r-- | ace/config-osf1-4.0-g++.h | 1 | ||||
-rw-r--r-- | ace/config-osf1-4.0.h | 1 | ||||
-rw-r--r-- | examples/Connection/non_blocking/README | 4 | ||||
-rw-r--r-- | tests/Async_Timer_Queue_Test.cpp | 6 |
17 files changed, 696 insertions, 8 deletions
diff --git a/ACE-INSTALL b/ACE-INSTALL new file mode 100644 index 00000000000..7b129cc12ac --- /dev/null +++ b/ACE-INSTALL @@ -0,0 +1,669 @@ + + _________________________________________________________________ + + Building and Installing ACE and Its Network Services + + Synopsis + + The file explains how to build and install ACE and its Network + Services on the various OS platforms and compilers that it has been + ported to. Please consult the [1]ChangeLog file to see whether any + recent changes to the release will affect your code. In addition, you + might want to read the ACE [2]FAQ before building and installing ACE. + + Document Index + + * [3]Supported Platforms and Compilers + * [4]Building and Installing ACE + * [5]Building and Installing ACE Network Services + * [6]Advanced Topics + _________________________________________________________________ + + Supported Platforms and Compilers + + The ADAPTIVE Communication Environment has been ported and tested + extensively on a wide range of C++ compilers and uni-processor and + multi-processor OS platforms including Win32 (i.e., WinNT and Win95), + most versions of UNIX (e.g., SunOS 4.x and 5.x, SGI IRIX, DG/UX, + HP-UX, OSF/1 a.k.a. DEC UNIX, AIX 4.x, Linux, SCO, UnixWare, and + FreeBSD), [7]VxWorks, and [8]MVS OpenEdition. If you have a problem + compiling the ACE wrappers on the platforms shown below please send + email to the [9]ACE mailing list and we'll try to fix it for you. + + Win32 (Windows NT and Windows '95) + + All of ACE has been ported to the Win32 API (which includes + Windows NT and Windows '95). The entire release now compiles + using the Microsoft Visual C++ 4.x and 5.0 compilers (the 2.0 + compiler may also work, but we haven't tested it recently). ACE + can be built as both a static and dynamic library, using the + Win32 installation process described below. + + Sun OS 5.x/4.x (a.k.a. Solaris 2.x/1.x) using Sun CC 3.0.1, Sun C++ + 4.0.x, Centerline C++ 2.x, and GNU gcc 2.7.x. + + All the source code and tests should build and run without any + problems on the Solaris and SunOS platforms using the Sun C++ + compilers. + + Sun OS 4.1.x using Centerline C++ 2.x, Sun CC 3.x, and Lucid Energize + 3.2. + + Note that shared libraries do not interact very well with + Centerline C++ or Sun C++ on SunOS 4.1.x. This is due to odd + behavior of the SunOS 4.1.x linker, which (1) does not properly + call constructors of global objects within shared libraries and + (2) does not call the init() and fini() functions in shared + libraries, even though the manual claims that these functions + are called! In particular, this means that the tests in the + directory + $(ACE_ROOT)/tests/Service_Configurator/IPC-tests/server/ will + not work for statically linked services... + + Some versions of SunOS 4.1.x do not contain the + /usr/lib/libnsl.a library. This library seems to be optional + since System V Transport Layer Interface (TLI) support is + optional on SunOS 4.1.x (in contrast, it's the "preferred" + transport interface on Solaris). + + The best work-around for now is probably to either add a dummy + libnsl.a in /lib (which may not be feasible) or simply comment + out the line: + + LIBS += -lnsl + + in the $ACE_ROOT/include/makeinclude/wrapper_macros.GNU file. + Naturally, any programs (e.g., the TLI_SAP tests) that use the + TLI wrappers aren't going to work! + + Note that on SunOS 4.x you may get warnings from the linker + that "archive has no table of contents; add one using + ranlib(1)" for certain libraries (e.g., libASX.a, libThreads.a, + and libSPIPE.a). This occurs since SunOS 4.x does not support + these features. + + AIX + + The ACE port to AIX assumes that the user has installed the AIX + patch containing the dl*() APIs. To use these APIs, IBM has + created a separate product (free to AIX licensees) called + shared library hookable symbols (or slhs/6000). If you don't + have this patch, the sv* commands for compiling and linking + will not be present on the system. + + BTW, here's a technique from Rob Jordan + <[10]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. + + Here's how to optimise the ACE library generation: + + Look at the [11]Makefile 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 Makefile. 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 Makefile. Now update the + Makefile so that FILES=ACE_All_Src and + TEMPLATE_FILES=ACE_All_Tmp. + + Linux and SCO 4.2 + + ACE has been ported to [12]Linux and SCO UNIX using the GNU G++ + 2.7.2 compiler. + + SGI IRIX 5.x and 6.x + + 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. + + HP-UX 9.x and 10.x + + The current HP/UX C++ compiler is incredibly lame and has + problems compiling ACE templates and achieving template + closure. I've heard that the next release is better... In the + meantime, you might try using GNU GCC or SunC++ on HP/UX. + + OSF/1 3.2 and 4.0 (a.k.a. Digital UNIX 4.0a) + + The current OSF/1 C++ 5.4 compiler still seems to have problems + with ACE's templates. It compiles the lib and test programs, + although giving warnings about template usage. Most tests run, + some dump core. Hopefully newer compiler releases will + alleviate these problems. + + GNU gcc 2.7.2.1 compiles without problems. All tests run + (besides minor problems). Thanks to Thilo Kielmann <[13] + kielmann@informatik.uni-siegen.de> and David Trumble + <[14]trumble@cvg.enet.dec.com> for help with this port. + + UnixWare 2.01 + + Steve Huston <[15]shuston@riverace.com> has ported ACE to work + with UnixWare 2.01 and its standard C++ compiler. + + VxWorks + + [16]David Levine <[17]levine@cs.wustl.edu> has ported ACE to + VxWorks 5.2/5.3/5.3.1 with the GreenHills 1.8.8 and g++ 2.7.2 + compilers. + + In addition to all of the other benefits of ACE, it helps work + around some deficiencies with VxWorks 5.3/5.3.1. Some of these + apply only with g++, at least thru version 2.7.2. That is the + version that is shipped with Tornado 1.0.1/ VxWorks 5.3.1. The + problems are: + + 1. The program entry point cannot be called ``main''. ACE + renames it to ``ace_main'' on VxWorks. While this may seem + trivial, it is important with legacy code. ACE itself ran + into this problem. + 2. argc/argv isn't used with VxWorks entry points. ACE provides + a wrapper function that transparently converts shell command + line arguments to argc/argv form. See [18]below for details. + 3. Unsigned long long support is not available with the g++ that + is distributed with Tornado 1.0.1/VxWorks 5.3.1, or with + GreenHills 1.8.8. The documentation says that it is supported + by g++, but try using it :-) Wind River technical support + verified that it doesn't work. ACE provides its own 64-bit + unsigned integer type, ACE_hrtime_t, so you don't even have + to worry about this problem if you use it. + 4. There a gory problem with munch that is severely aggravated + by the presence of a static in the Wind River/g++ iostream.h. + ACE hides this and provides an easy-to-use workaround in the + very unlikely situation where it becomes a problem. Please + see ace/config-vxworks5.2-g++.h for more information. + + In addition, as noted [19]below following the discussion of the + g++ -fno-implicit-templates option, -fno-implicit-templates is + broken. And, -O2 is not supported on some targets. + + The current version of ACE, 4.3, has limited support for + destroying static objects after program termination on VxWorks. + To destroy static objects, the module must be unloaded, using + unld. Static constructors are called when loading the module, + with ld. + + MVS OpenEdition + + All of ACE has been ported to OpenEdition by Chuck Gehr + <[20]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: + + MVS does not support the dynamic linking dl...() calls that the + Service Configurator uses to dynmically 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. + + Some of the tests do not execute properly. This is a minority + and over time the goal is to get to 100%. + + 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 [21]additional build tips for + MVS for more on this. + _________________________________________________________________ + + Compiling ACE with GNU C++ + + If you use the GNU GCC C++ compiler please note the following: + + * Earlier versions of G++ may not compile certain parts of ACE + correctly due to compiler bugs. Please upgrade to G++ 2.7.2 or + greater. + * Make sure to update your gcc "config.status" file - this specifies + whether your gcc install uses, for example, Solaris's + "/usr/ccs/bin" binary utils or GNU binary utils. + * Make sure that the linker invoked by GCC produces code that + initializes static objects. Please see GCC's documentation for + using collect2. + * By default, gcc (thru version 2.7.2, at least) uses implicit + template instantiation. Besides wasting space, this breaks the use + of ACE_Singleton: instead of one singleton instance, there could + be one instance per object (.o) file that "sees" the template. + Therefore, we have overridden this default in ACE by enabling the + -fno-implicit-templates option to CCFLAGS in all + include/makeinclude/platform_*.GNU files that set CXX to g++. + * The disadvantage of this approach is that you must add template + specializations for all templates that your application uses to + your own code. (The ACE libraries are self-contained: you don't + need to add the templates that they use internally.) Examples of + template specializations occur in quite a few ACE .cpp files; see + apps/Gateway/Gateway/Proxy_Handler.cpp for one example. An easy + way to figure out what template instantiations are need is to try + to build your executable and pipe the output through c++filt. The + linker will report the missing instantiations as undefined + symbols. Iteration may be necessary, if the template + instantiations themselves reference other templates. + * Alternatively, you could apply the Cygnus template repository + patches and use the -repo option instead of + -fno-implicit-templates. Please see the g++ FAQ and gcc manual for + more information. The g++ FAQ indicates that a new implementation + of templates planned for version 2.8 will eliminate the + restriction against static data members in template classes, which + would allow ready implementation of a correct ACE_Singleton. A + final alternative is to remove the -fno-implicit-templates option + from the CCFLAGS macro in your + include/makeinclude/platform_macros.GNU, and thereby use the + default g++ implicit template instantiation. + * Thanks to Thilo Kielmann <[22] kielmann@informatik.uni-siegen.de> + for reporting the problem with ACE_Singleton on g++, and for + helping to find and implement these solutions. + * On VxWorks only, g++ (thru version 2.7.2, at least, distributed + with Tornado 1.0.1/VxWorks 5.3.1), -fno-implicit-templates is + broken. In addition, -O2 is not supported on some targets. + _________________________________________________________________ + + Building and Installing ACE + + The following explains how to build the ACE on [23]UNIX and [24]Win32. + + Building and Installing ACE on UNIX + + Building and installing ACE on UNIX is relatively simple (the + [25]process for Win32 is different). Here's what you need to do: + + 1. Install GNU make 3.7 or greater on your system (available via + anonymous ftp from prep.ai.mit.edu in the pub/gnu directory). + 2. Add an environment variable called ACE_ROOT that contains the name + of the root of the directory where you keep the ACE wrapper source + tree. The ACE recursive Makefile scheme needs this information. + There are several ways to set the ACE_ROOT variable. For instance, + in my .login file I have the following entry: + +% setenv ACE_ROOT /home/cs/faculty/schmidt/ACE_wrappers + However, if you're building a number of versions of ACE (e.g., for + different OS platforms or for different releases of ACE) you might + use the following approach: + +% setenv ACE_ROOT $cwd + 3. Edit the $ACE_ROOT/ace/OS.h file to update things like default + hostname and port numbers you'd like the programs in the + $ACE_ROOT/{apps,tests} directories to use by default. + 4. Set the $ACE_ROOT/ace/config.h file to point to the appropriate + platform/compiler-specific header configurations (such as + config-sunos5-sunc++-4.x.h). This file contains the #defines that + are used throughout ACE to indicate which features your system + supports (see the $ACE_ROOT/ace/OS.h file for many examples of how + the ACE build configuration is affected by these macro settings). + 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. + 5. Set the $ACE_ROOT/include/makeinclude/platform_macros.GNU file to + point to the appropriate platform/compiler-specific Makefile + configurations (e.g., platform_sunos5_sunc++.GNU). This file + contains the compiler and Makefile directives that are + platform/compiler-specific + 6. Note that since ACE builds shared libraries, you'll need to set + LD_LIBRARY_PATH to whereever you put the binary version of the ACE + library. For example, you probably want to do something like the + following + +% setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$LD_LIBRARY_PATH + 7. When all this is done, hopefully all you'll need to do is type: + +% make + at the root of the ACE source tree. This will build the static and + shared object libraries and build the tests and the sample + applications. + _________________________________________________________________ + + Building and Installing ACE on Win32 + + ACE contains project files for Microsoft Visual C++ 4.x (*.mdp) and + 5.0 (*.dsw). + + 1. Create a directory (e.g., C:\ACE) and copy all of the ACE + distribution into it. This directory will be referred to as + ACE_ROOT in the rest of this discussion. + 2. Create a file called config.h in the ACE_ROOT\ace directory that + contains: + #include "config-win32.h" + 3. Now load up the project file for ACE (ACE_ROOT\ace\ace.mdp or + ACE_ROOT\ace\ace.dsw). If you are using MSVC 4.x, you will need to + add paths to your global settings. In Tools|Options|Directories, + add ACE_ROOT to your include path and ACE_ROOT\ace to your library + path. + 4. Each project will contain 8 different configurations. These are a + mixture of Debug/Release, Unicode/non-Unicode, and Static/Dynamic + library versions. Note: If you use the dynamic libraries, make + sure you include ACE_ROOT\ace in your PATH whenever you run + programs that use ACE. + 5. If you are building for Windows NT and plan to use the STL + implementation that comes with ACE, then you can start building + now. If you are building on Windows 95, then you should add the + line + #define ACE_HAS_WINNT4 0 + before the #include statement in ACE_ROOT\ace\config.h and it will + turn off Windows NT 4 specific code. + If you want to use the standard C++ headers (iostream, cstdio, ... + as defined by the C++ Standard Draft 2) that comes with MSVC 5, + then add the line + #define ACE_HAS_STANDARD_CPP_LIBRARY 1 + before the #include statement in ACE_ROOT\ace\config.h. + + ACE TESTS + + The tests are located in ACE_ROOT\tests. There are two corresponding + project files in that directory also (tests.mdp and tests.dsp). + + Once you build all the tests (Batch Build works well for this) you can + run the batch file run_tests.bat in that directory to try all the + tests. + + BUILDING ACE ON A WIN32 MACHINE THAT LACKS A NETWORK CARD + + You may want to run ACE on a non-networked machine. To do so, you must + install TCP/IP and configure it to ignore the absence of a network + card. This is one method: + + 1. Run Control Panel + 2. Choose Network from Control Panel + 3. Add Adapter: MS Loopback Adapter + 4. Configure MS Loopback Adapter with 802.3 (default) + 5. Add Software: TCP/IP Protocol + 6. Configure TCP/IP Protocol with a valid IP address and subnet mask. + Leave everything else at the default settings. + 7. Add Software: Workstation + 8. Exit and Restart System + 9. Run Control Panel again + 10. Choose Services from Control Panel + 11. The following services are not necessary and may be set to + Disabled Startup: + Alerter + Computer Browser + Net logon + Messanger + 12. Choose Network from Control Panel + 13. Confirm the following setup. This is all you need to run ACE: + Installed Software: + Computer Browser + MS Loopback Adapter Driver + TCP/IP Protocol + Workstation + Installed Adapter Cards: + MS Loopback Adapter + _________________________________________________________________ + + Building and Installing ACE on VxWorks + + For the most part, you should be able to follow the instructions above + to build ACE and applications that use it. Use the [26]Unix + instructions for Unix hosts, or [27]Win32 instructions for Windows NT + hosts. + + 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.x_g++.GNU platform + file for detailed information. + + The VxWorks platform_vxworks*.GNU files are set up so that shared + libraries are not built on VxWorks. 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. + + 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 */ + + For completeness, here are the non-default #defines that we use for + VxWorks 5.3.1/g++ 2.7.2: + +#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 */ + + It probably wouldn't take much effort to modify the ACE library to not + require INCLUDE_CPLUS_IOSTREAMS, if necessary. 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 and + Threads, 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. + + Please note that the main entry point is renamed to ace_main on + VxWorks, to comply with the VxWorks restriction against using main. + Also, if you run ace_main directly from a shell, you'll probably have + to restart the shell (using Ctrl-C, if enabled in your configuration) + in order to be able to unld the module. Alternatively, 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 + spa main, "arg1" [, ...] + + All arguments must be quoted, even numbers. + _________________________________________________________________ + + Building and Installing ACE Network Services + + The following explains how to build the ACE [28]network services on + [29]UNIX and [30]Win32. + + Building and Installing ACE Network Services on UNIX + + Building and installing ACE Network Services on UNIX is relatively + simple (the [31]process for Win32 is different). Here's what you need + to do: + + 1. Build and install ACE on UNIX as described [32]earlier. If ACE is + built at the root of the ACE source tree (and ACE has been ported + to your platform, of course) the netsvcs static and shared object + libraries should be built automatically. In addition, the server + driver program (main) contained in + [33]$ACE_ROOT/netsvcs/servers/main.cpp should also be compiled and + ready to run. + 2. Set your LD_LIBRARY_PATH environment variable to where the binary + version of the ACE netsvcs library. For example, you probably want + to do something like the following + +% setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$LD_LIBRARY_PATH + 3. By default, if the shared object library is built, the services + are linked into the main driver program dynamically. To specify + which services should be linked in and executed, edit the + [34]$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 [35]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 + [36]Network Services documentation to learn more about how to + configure each network service. + 4. If you only want to link the services statically, simply remove or + rename the svc.conf file. + + Building and Installing ACE Network Services on Win32 + + Once again, there are supplied project for both MSVC 4.x and 5.0 for + the Network Services. + + If you are using MSVC 4.x, you will need to add another directory to + your global include and library paths, ACE_ROOT/netsvcs/lib. When you + use the dynamic libraries, make sure to also include + ACE_ROOT/netsvcs/lib in your PATH. + _________________________________________________________________ + + Advanced Topics + + * [37]Cloning the Source Tree + * [38]Building CORBA Versions of ACE + * [39]Additional Build Tips for MVS + * [40]Version Control + * [41]ACE Makefile hints + + Cloning the Source Tree + + On UNIX platforms, I typically like to support multiple platform + builds using the same ACE source tree. This idiom is supported by ACE + using the $(ACE_ROOT)/bin/clone.c program. To build clone, perform the + following steps: + +% cd $ACE_ROOT/bin +% make +% mv clone ~/bin +% rehash + + Then create a ./build subdirectory someplace (e.g., under $ACE_ROOT), + and then invoke the top-level Makefile with the "clone" target, e.g.: + +% cd $ACE_ROOT +% mkdir build-SunOS5 +% cd build-SunOS5 +% make -f ../Makefile clone +% setenv ACE_ROOT $cwd +% make + + This will establish a complete tree of links. When you do a make in + this directory you will be producing object code that is not stored in + the same place as the original source tree. This way, you can easily + build another platform in a parallel tree structure. + + VERY IMPORTANT! + + If you use the "clone trick" discussed above, make sure that the + symbolic links are correctly in place before starting the build. In + particular, if you plan to clone the tree, it is preferable to do so + before you start a build procedure on the original tree. This is + because the build procedure create object directories (.obj and + .shobj) and the cloning procedure will clone these directories also. + You would end up with links pointing to object files of another + platform. If you clone the tree after you've done a build on the + original tree, make sure to remove all ".obj", ".shobj" and (any other + files or directories) in all subdirectories before starting the build + on your cloned tree. + _________________________________________________________________ + + Building CORBA Versions of ACE + + Note that if you are compiling with IONA's Orbix implementation of + CORBA or Visigenix's implementation of CORBA, you'll also need to set + ORBIX_ROOT to point to the root of the Orbix source tree and + ORBELINE_ROOT to point to the root of the ORBeline source tree. Since + many platforms don't have these CORBA tools the default for ACE does + *not* incorporate them. Thus, if you are compiling with Orbix or + ORBeline, make sure that you set the symbolic links for + $ACE_ROOT/include/makeinclude/platform_macros.GNU and + $ACE_ROOT/ace/config.h to point to the the config* and platform* files + that have "-orbix" in them! + _________________________________________________________________ + + Additional Build Tips for MVS + + For all intents and purpose, MVS OpenEdition (OE) is another flavor of + UNIX, therefore, the instructions under [42]Building and Installing + ACE on Unix can be used along with the following additional tips: + + You can get a copy of GNU make that has been ported to MVS OpenEdition + from the [43]IBM OpenEdition web site. ACE's make scheme generates + compile commands that have options and operands interspersed. By + default, the c89/cc/c++ compiler expects all options to precede all + operands. To get around this, you must set a special compiler + environment variable (_CXX_CCMODE) to 1 which tells the compiler to + allow options and operands to be interspersed. + + Note that the environment variable LD_LIBRARY_PATH is called LIBPATH + on MVS. + + Shared objects are built a little different on MVS than on other UNIX + implementations. This has been accounted for in the makefiles that + come with ACE When the linker (via the cxx command) builds the + libACE.so file it will also create a file called libACE.x. This is a + side-deck file and it must be included in subsequent link edits with + application code. For more information on this see the C/C++ MVS + Programming Guide. If you want to build your application statically, + i.e., using libACE.a instead of libACE.so, you can set ACELIB to + ACELIB_STATIC in platform_mvs.GNU. + + When the libACE.so file is built (via the MVS pre-linker and binder), + you will get a rc=4 from the pre-linker. This is ok. This is due to + some warnings about unresolved references which should get resolved + during the link step. Note, however, there shouldn't be any unresolved + references from the binder (linkage editor). You can get pre-link and + link maps by uncommenting the PMAP and LMAP lines in the + platform_mvs.GNU file. + _________________________________________________________________ + + Back to the [44]ACE home page. + +References + + 1. file://localhost/project/adaptive/ACE_wrappers/ChangeLog + 2. file://localhost/project/adaptive/ACE_wrappers/ACE.FAQ.html + 3. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#platforms + 4. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#aceinstall + 5. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#svcsinstall + 6. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#advanced + 7. http://www.wrs.com/ + 8. http://www.s390.ibm.com/products/oe/index.html + 9. mailto:ace-users@cs.wustl.edu + 10. mailto:jordan@hursley.ibm.com + 11. http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ace/Makefile + 12. http://www.cs.wustl.edu/~cleeland/ace/ + 13. mailto:kielmann@informatik.uni-siegen.de + 14. mailto:trumble@cvg.enet.dec.com + 15. mailto:shuston@riverace.com + 16. http://www.cs.wustl.edu/~levine/ + 17. mailto:levine@cs.wustl.edu + 18. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#spa + 19. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#g++ + 20. mailto:gehr@sweng.stortek.com + 21. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#mvs + 22. mailto:kielmann@informatik.uni-siegen.de + 23. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#unixsvcs + 24. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#win32svcs + 25. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#win32 + 26. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#unix + 27. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#win32 + 28. file://localhost/project/adaptive/ACE_wrappers/ACE-netsvcs.html + 29. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#unixsvcs + 30. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#win32svcs + 31. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#win32svcs + 32. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#unix + 33. http://www.cs.wustl.edu/~schmidt/ACE_wrappers/netsvcs/servers/main.cpp + 34. http://www.cs.wustl.edu/~schmidt/ACE_wrappers/netsvcs/servers/svc.conf + 35. file://localhost/project/adaptive/ACE_wrappers/ACE-papers.html#config + 36. file://localhost/project/adaptive/ACE_wrappers/ACE-netsvcs.html + 37. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#cloning + 38. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#corba + 39. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#mvs + 40. http://www.cs.wustl.edu/~levine/CVS.html + 41. http://www.cs.wustl.edu/~cleeland/ace/makefile-hints.html + 42. file://localhost/project/adaptive/ACE_wrappers/ACE-INSTALL.html#aceinstall + 43. http://www.s390.ibm.com/products/oe/index.html + 44. http://www.cs.wustl.edu/~schmidt/ACE.html @@ -439,6 +439,7 @@ Stefan Ericsson <uabsjen@osd.ericsson.se> Wei Chiang <chiang@tele.nokia.fi> Thanh Ma <tma@encore.com> Oleg Krivosheev <kriol@fnal.gov> +Stephen Coy <stevec@wsa.com.au> I would particularly like to thank Paul Stephenson, who worked with me at Ericsson and is now at ObjectSpace. Paul devised the recursive diff --git a/ace/Strategies_T.cpp b/ace/Strategies_T.cpp index dfb688f39ab..f7d34e859ca 100644 --- a/ace/Strategies_T.cpp +++ b/ace/Strategies_T.cpp @@ -328,6 +328,9 @@ ACE_Thread_Strategy<SVC_HANDLER>::ACE_Thread_Strategy (ACE_Thread_Manager *thr_m template <class SVC_HANDLER> ACE_Thread_Strategy<SVC_HANDLER>::ACE_Thread_Strategy (void) + : thr_mgr_ (0), + thr_flags_ (0), + n_threads_ (1) { ACE_TRACE ("ACE_Thread_Strategy<SVC_HANDLER>::ACE_Thread_Strategy"); } diff --git a/ace/config-aix-4.1.x.h b/ace/config-aix-4.1.x.h index 5cd35f136c6..2b6b36b7972 100644 --- a/ace/config-aix-4.1.x.h +++ b/ace/config-aix-4.1.x.h @@ -132,5 +132,5 @@ #undef msg_controllen #define msg_accrightslen msg_controllen #endif /* msg_accrightslen */ - +#define ACE_HAS_UALARM #endif /* ACE_CONFIG_H */ diff --git a/ace/config-aix-4.2.x.h b/ace/config-aix-4.2.x.h index e6d6945c3a9..faf51a7cbc1 100644 --- a/ace/config-aix-4.2.x.h +++ b/ace/config-aix-4.2.x.h @@ -175,5 +175,5 @@ #if !defined (ACE_NTRACE) #define ACE_NTRACE 1 #endif /* ACE_NTRACE */ - +#define ACE_HAS_UALARM #endif /* ACE_CONFIG_H */ diff --git a/ace/config-hpux-10.x-aCC.h b/ace/config-hpux-10.x-aCC.h index 76de568ef68..5b677058208 100644 --- a/ace/config-hpux-10.x-aCC.h +++ b/ace/config-hpux-10.x-aCC.h @@ -150,5 +150,5 @@ #if !defined (ACE_NTRACE) #define ACE_NTRACE 1 #endif /* ACE_NTRACE */ - +#define ACE_HAS_UALARM #endif /* ACE_CONFIG_H */ diff --git a/ace/config-hpux-10.x-decthreads.h b/ace/config-hpux-10.x-decthreads.h index b91bde47d87..6bcd7f62906 100644 --- a/ace/config-hpux-10.x-decthreads.h +++ b/ace/config-hpux-10.x-decthreads.h @@ -150,5 +150,5 @@ #if !defined (ACE_NTRACE) #define ACE_NTRACE 1 #endif /* ACE_NTRACE */ - +#define ACE_HAS_UALARM #endif /* ACE_CONFIG_H */ diff --git a/ace/config-hpux-10.x-g++.h b/ace/config-hpux-10.x-g++.h index 3ac4cfb7dce..45d82e6a52b 100644 --- a/ace/config-hpux-10.x-g++.h +++ b/ace/config-hpux-10.x-g++.h @@ -121,5 +121,5 @@ #if !defined (ACE_NTRACE) #define ACE_NTRACE 1 #endif /* ACE_NTRACE */ - +#define ACE_HAS_UALARM #endif /* ACE_CONFIG_H */ diff --git a/ace/config-hpux-10.x-hpc++.h b/ace/config-hpux-10.x-hpc++.h index 70559eb4e36..7f9c4aa874b 100644 --- a/ace/config-hpux-10.x-hpc++.h +++ b/ace/config-hpux-10.x-hpc++.h @@ -72,6 +72,7 @@ // Compiler supports the ssize_t typedef. #define ACE_HAS_SSIZE_T +#define ACE_HAS_UALARM #include "ace/config-hpux-10.x.h" /* OS information */ diff --git a/ace/config-hpux-10.x-nothread.h b/ace/config-hpux-10.x-nothread.h index 33b3a6ce2aa..16b0d66c6df 100644 --- a/ace/config-hpux-10.x-nothread.h +++ b/ace/config-hpux-10.x-nothread.h @@ -155,5 +155,5 @@ #if !defined (ACE_NTRACE) #define ACE_NTRACE 1 #endif /* ACE_NTRACE */ - +#define ACE_HAS_UALARM #endif /* ACE_CONFIG_H */ diff --git a/ace/config-hpux-10.x.h b/ace/config-hpux-10.x.h index 72327edac2a..69d59cf93bb 100644 --- a/ace/config-hpux-10.x.h +++ b/ace/config-hpux-10.x.h @@ -222,3 +222,5 @@ extern int h_errno; /* This isn't declared in a header file on HP-UX */ #if !defined (ACE_NTRACE) #define ACE_NTRACE 1 #endif /* ACE_NTRACE */ + +#define ACE_HAS_UALARM diff --git a/ace/config-mvs.h b/ace/config-mvs.h index 77ce2b0c48e..fd3d8e3d319 100644 --- a/ace/config-mvs.h +++ b/ace/config-mvs.h @@ -29,6 +29,7 @@ #define ACE_LACKS_UCONTEXT_H #endif /* __COMPILER_VER__ >= 0x21020000 */ #define ACE_HAS_BROKEN_CTIME +#define ACE_HAS_UALARM #define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES #define ACE_HAS_CPLUSPLUS_HEADERS #define ACE_HAS_GETPAGESIZE diff --git a/ace/config-osf1-3.2.h b/ace/config-osf1-3.2.h index 402df10a4fa..fea4084027a 100644 --- a/ace/config-osf1-3.2.h +++ b/ace/config-osf1-3.2.h @@ -21,7 +21,8 @@ // Platform supports tid_t #define ACE_HAS_TID_T - +#define ACE_HAS_UALARM + // Platform lacks support for shared condition variables #define ACE_LACKS_CONDATTR_PSHARED diff --git a/ace/config-osf1-4.0-g++.h b/ace/config-osf1-4.0-g++.h index 232971e6e82..1124dad7ff9 100644 --- a/ace/config-osf1-4.0-g++.h +++ b/ace/config-osf1-4.0-g++.h @@ -23,6 +23,7 @@ // support... #define ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION #define ACE_HAS_TEMPLATE_SPECIALIZATION +#define ACE_HAS_UALARM // Compiler's template mechanism must see source code (i.e., .C // files). diff --git a/ace/config-osf1-4.0.h b/ace/config-osf1-4.0.h index 8c2db500052..a12dfebe8a5 100644 --- a/ace/config-osf1-4.0.h +++ b/ace/config-osf1-4.0.h @@ -20,6 +20,7 @@ #define ACE_HAS_STRING_CLASS #define ACE_LACKS_LINEBUFFERED_STREAMBUF #define ACE_LACKS_SIGNED_CHAR +#define ACE_HAS_UALARM #if ! defined (__ACE_INLINE__) #define __ACE_INLINE__ diff --git a/examples/Connection/non_blocking/README b/examples/Connection/non_blocking/README index 78fb023b99e..748e167ed4a 100644 --- a/examples/Connection/non_blocking/README +++ b/examples/Connection/non_blocking/README @@ -22,3 +22,7 @@ in handle_output There are a number of other options that you can provide. Please see the source code for details. + +Note that only the sock tests work on all platforms. The other tests +reply on features (in particular, non-blocking connections and TLI) +that are mostly found on UNIX platforms. diff --git a/tests/Async_Timer_Queue_Test.cpp b/tests/Async_Timer_Queue_Test.cpp index 05254dab693..4bed4b8b966 100644 --- a/tests/Async_Timer_Queue_Test.cpp +++ b/tests/Async_Timer_Queue_Test.cpp @@ -9,7 +9,7 @@ // Async_Timer_Queue_Test.cpp // // = DESCRIPTION -// This test exercises <ACE_Timer_Heap> in the context of +// This test exercises <ACE_Timer_List> in the context of // signal-based timer handling. // // = AUTHORS @@ -27,8 +27,12 @@ static int lines = 0; // Were we interrupted by a SIGINT? sig_atomic_t sigint = 0; +// This is our main timer list. Right now, it doesn't know anything +// about signals. static ACE_Timer_List timer_list; +// This is our signal handler function. It gets invoked +// asynchronously when SIGINT, SIGALRM, or SIGQUIT gets called. static void handler (int signum) { |