diff options
author | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-08-30 02:52:59 +0000 |
---|---|---|
committer | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-08-30 02:52:59 +0000 |
commit | 3523150947472e0712fa0ca29300d43aef951606 (patch) | |
tree | 788030ca0b005f6aa273184dd7f590a8fe8d2c55 | |
parent | 9b43c9521d0cb1e14f1b85fe2112fff479843585 (diff) | |
download | ATCD-3523150947472e0712fa0ca29300d43aef951606.tar.gz |
ChangeLogTag: Sun Aug 29 21:35:17 1999 David L. Levine <levine@cs.wustl.edu>
-rw-r--r-- | ChangeLog-99b | 232 | ||||
-rw-r--r-- | ace/config-aix-4.x.h | 5 | ||||
-rw-r--r-- | ace/config-cygwin32-common.h | 6 | ||||
-rw-r--r-- | ace/config-g++-common.h | 10 | ||||
-rw-r--r-- | ace/config-hpux-10.x-g++.h | 5 | ||||
-rw-r--r-- | ace/config-irix5.3-g++.h | 5 | ||||
-rw-r--r-- | ace/config-irix6.x-g++.h | 6 | ||||
-rw-r--r-- | ace/config-linux-common.h | 6 | ||||
-rw-r--r-- | ace/config-lynxos.h | 10 | ||||
-rw-r--r-- | ace/config-osf1-4.0.h | 8 | ||||
-rw-r--r-- | ace/config-sunos4-g++.h | 5 | ||||
-rw-r--r-- | ace/config-sunos5.4-g++.h | 6 | ||||
-rw-r--r-- | ace/config-sunos5.5.h | 6 | ||||
-rw-r--r-- | ace/config-unixware-2.01-g++.h | 5 | ||||
-rw-r--r-- | ace/config-unixware-2.1.2-g++.h | 5 | ||||
-rw-r--r-- | include/makeinclude/rules.lib.GNU | 10 | ||||
-rw-r--r-- | include/makeinclude/wrapper_macros.GNU | 9 |
17 files changed, 217 insertions, 122 deletions
diff --git a/ChangeLog-99b b/ChangeLog-99b index 20c8506ef8c..a32a3eebb29 100644 --- a/ChangeLog-99b +++ b/ChangeLog-99b @@ -1,136 +1,164 @@ +Sun Aug 29 21:35:17 1999 David L. Levine <levine@cs.wustl.edu> + + * ace/config-g++-common.h: + 1) Don't #define ACE_HAS_EXPLICIT_INSTANTIATION with + ACE_HAS_GNU_REPO, so that -frepo can do its thing. [Bug 248] + 2) #undef ACE_HAS_STRING_CLASS with ACE_HAS_GNU_REPO, because + egcs 2.91.66 can't build IOStream test (due to an unresolved + basic_string method instantiation) otherwise. + + * ace/config-aix-4.x.h,ace/config-cygwin32-common.h, + ace/config-hpux-10.x-g++.h,ace/config-irix5.3-g++.h, + ace/config-irix6.x-g++.h,ace/config-linux-common.h, + ace/config-lynxos.h,ace/config-osf1-4.0.h,ace/config-sunos4-g++.h, + ace/config-sunos5.4-g++.h,ace/config-sunos5.5.h, + ace/config-unixware-2.*-g++.h: + moved ACE_HAS_STRING_CLASS #define before #include of + config-g++common.h, so that config-g++-common.h can #undef + it with ACE_HAS_GNU_REPO. + + * include/makeinclude/rules.lib.GNU: when ace_lib_prelink is + enabled, add a link step before building a library. This is + used, for example, to insert template instantiations into + object files. [Bug 248] + + * include/makeinclude/wrapper_macros.GNU: set ace_lib_prelink + to 1 when repo is enabled. Added ACE_NUL and ACE_NUL_STDERR + macros, for internal use to support the prelink step. [Bug 248] + Sun Aug 29 07:53:33 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * tests/Signal_Test.cpp: Linux threads are evil because getppid() - isn't the process id of your parent PROCESS, it's the process id - of your parent THREAD. Yikes! Therefore, I had to rearrange - this test so that it'll work on Linux. - - * ace/config-qnx-neutrino.h, - * ace/config-vxworks5.x.h, - * ace/config-osf1-4.0.h, - * ace/config-sunos5.5.h, - * ace/config-linux-common.h: Added support for - the ACE_HAS_SIGTIMEDWAIT and ACE_HAS_SIGSUSPEND macros. - - * ace/OS: Added a new sigsuspend() wrapper to class ACE_OS. This - implementation is "smarter" than the default behavior of - sigsuspend(2) because it'll handle NULL sigset_t *'s gracefully. - - * ace/Signal: Make the use of ACE_Sig_Set & parameters - const-correct. - - * ace/Signal: Added a new method for ACE_Sig_Action that'll register - an ACE_Sig_Set's worth of signals simultaneously. - - * ace/Signal: Updated the documentation to explain what the various - constructors do. - - * ace/Process.h: Updated the documentation for ACE_Process::spawn() - to explain what the return values are. - - * tests/Makefile: Added Signal_Test to the list of tests that are - built automatically. - - * tests: Added a new test, Signal_Test.cpp, that exercises the - various signal handling capabilities supported by ACE on various - OS platforms. - - * ace/OS.h, - * ace/README, - * ace/config-vxworks5.x.h: - Removed all mention of the ACE_LACKS_ATEXIT feature. This is - now the default behavior because we ACE_OS_Object_Manager::at_exit() - to get consistent semantics, as described below. Thanks to David - for pointing this out. - - * ace/OS.i: Changed the implementation of ACE_OS::atexit() to always - use the ACE_OS_Object_Manager::instance ()->at_exit() method so - that we get consistent semantics across platforms. - + * tests/Signal_Test.cpp: Linux threads are evil because getppid() + isn't the process id of your parent PROCESS, it's the process id + of your parent THREAD. Yikes! Therefore, I had to rearrange + this test so that it'll work on Linux. + + * ace/config-qnx-neutrino.h, + * ace/config-vxworks5.x.h, + * ace/config-osf1-4.0.h, + * ace/config-sunos5.5.h, + * ace/config-linux-common.h: Added support for + the ACE_HAS_SIGTIMEDWAIT and ACE_HAS_SIGSUSPEND macros. + + * ace/OS: Added a new sigsuspend() wrapper to class ACE_OS. This + implementation is "smarter" than the default behavior of + sigsuspend(2) because it'll handle NULL sigset_t *'s gracefully. + + * ace/Signal: Make the use of ACE_Sig_Set & parameters + const-correct. + + * ace/Signal: Added a new method for ACE_Sig_Action that'll register + an ACE_Sig_Set's worth of signals simultaneously. + + * ace/Signal: Updated the documentation to explain what the various + constructors do. + + * ace/Process.h: Updated the documentation for ACE_Process::spawn() + to explain what the return values are. + + * tests/Makefile: Added Signal_Test to the list of tests that are + built automatically. + + * tests: Added a new test, Signal_Test.cpp, that exercises the + various signal handling capabilities supported by ACE on various + OS platforms. + + * ace/OS.h, + * ace/README, + * ace/config-vxworks5.x.h: + Removed all mention of the ACE_LACKS_ATEXIT feature. This is + now the default behavior because we ACE_OS_Object_Manager::at_exit() + to get consistent semantics, as described below. Thanks to David + for pointing this out. + + * ace/OS.i: Changed the implementation of ACE_OS::atexit() to always + use the ACE_OS_Object_Manager::instance ()->at_exit() method so + that we get consistent semantics across platforms. + Sun Aug 29 18:27:38 1999 Ossama Othman <othman@cs.wustl.edu> - * ACE.ifnames: - * ace-diff-config.in: + * ACE.ifnames: + * ace-diff-config.in: - Removed ace-diff-config.in and ACE.ifnames from the repository. - They are only used for internal ACE Configuration Project - testing. + Removed ace-diff-config.in and ACE.ifnames from the repository. + They are only used for internal ACE Configuration Project + testing. - * Makefile.am: - * configure.in: + * Makefile.am: + * configure.in: - Removed references to ace-diff-config.in and ACE.ifnames. + Removed references to ace-diff-config.in and ACE.ifnames. - * acconfig.h: - * configure.in: + * acconfig.h: + * configure.in: - Added entries and tests for the following macros: + Added entries and tests for the following macros: - ACE_AUTO_PTR_LACKS_RESET - ACE_HAS_LLSEEK - ACE_HAS_EXPLICIT_KEYWORD - ACE_HAS_MUTABLE_KEYWORD - ACE_HAS_STD_TEMPLATE_SPECIALIZATION - ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION - ACE_HAS_SIGTIMEDWAIT - ACE_LACKS_ATEXIT - ACE_LACKS_GETPPID + ACE_AUTO_PTR_LACKS_RESET + ACE_HAS_LLSEEK + ACE_HAS_EXPLICIT_KEYWORD + ACE_HAS_MUTABLE_KEYWORD + ACE_HAS_STD_TEMPLATE_SPECIALIZATION + ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION + ACE_HAS_SIGTIMEDWAIT + ACE_LACKS_ATEXIT + ACE_LACKS_GETPPID - * configure.in: + * configure.in: - Fixed auto_ptr test. auto_ptr was being used incorrectly. + Fixed auto_ptr test. auto_ptr was being used incorrectly. Sun Aug 29 07:53:33 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * tests/Process_Manager_Test.cpp: Changed the names of the signal - handlers to one_child_synchronous_signal_handler() and - multiple_children_synchronous_signal_handler() to reflect how - they are used. + * tests/Process_Manager_Test.cpp: Changed the names of the signal + handlers to one_child_synchronous_signal_handler() and + multiple_children_synchronous_signal_handler() to reflect how + they are used. + + * ace/OS.[hi]: Added a new wrapper for sigtimedwait() so that + we can encapsulate this. To make programming more consistent, + the encapsulation uses an ACE_Time_Value, rather than a struct + timespec. - * ace/OS.[hi]: Added a new wrapper for sigtimedwait() so that - we can encapsulate this. To make programming more consistent, - the encapsulation uses an ACE_Time_Value, rather than a struct - timespec. + * ace/config-linux-pthread.h, + * ace/config-linux-lxpthreads.h: Removed the - * ace/config-linux-pthread.h, - * ace/config-linux-lxpthreads.h: Removed the - - #define ACE_HAS_SIGWAIT + #define ACE_HAS_SIGWAIT - macro since this was already defined in config-linux-common.h. + macro since this was already defined in config-linux-common.h. - * tests/Malloc_Test.cpp: Improved the test by printing out - additional diagnostic information. Also validated that it works - when ACE_DEFAULT_BASE_ADDR == 0 on Solaris using SunCC (with - purify) and EGCS. + * tests/Malloc_Test.cpp: Improved the test by printing out + additional diagnostic information. Also validated that it works + when ACE_DEFAULT_BASE_ADDR == 0 on Solaris using SunCC (with + purify) and EGCS. - * ace/Malloc: Added a dump() method to ACE_Malloc_Header. + * ace/Malloc: Added a dump() method to ACE_Malloc_Header. - * ace/Process_Manager.cpp (ACE_Process_Descriptor): Changed - a -1 to a 0 to prevent a compiler warning. Thanks to - David Levine and DEC UNIX for reporting this. + * ace/Process_Manager.cpp (ACE_Process_Descriptor): Changed + a -1 to a 0 to prevent a compiler warning. Thanks to + David Levine and DEC UNIX for reporting this. Sun Aug 29 00:14:09 1999 Luther Baker <ljb1@cs.wustle.edu> - * ace/Arg_Shifter.h (cur_arg_strncasecmp): Removed and replaced earlier - method 'is_or_contains_ignore_case' with 'cur_arg_strncasecmp.' - This method does less and it is more self-contained, adding protection - and greater flexibility for the program program using it. + * ace/Arg_Shifter.h (cur_arg_strncasecmp): Removed and replaced earlier + method 'is_or_contains_ignore_case' with 'cur_arg_strncasecmp.' + This method does less and it is more self-contained, adding protection + and greater flexibility for the program program using it. - * ace/Arg_Shifter.cpp (cur_arg_strncasecmp): Implementation - corresponding with changes in ACE_Arg_Shifter class. + * ace/Arg_Shifter.cpp (cur_arg_strncasecmp): Implementation + corresponding with changes in ACE_Arg_Shifter class. Sun Aug 29 00:13:35 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Process_Manager.i: Moved the destructor for - ACE_Process_Descriptor out of the *.i file since it's always - called by vector delete and therefore inlining it is pointless. + * ace/Process_Manager.i: Moved the destructor for + ACE_Process_Descriptor out of the *.i file since it's always + called by vector delete and therefore inlining it is pointless. Sat Aug 28 23:46:55 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - * ace/Process_Manager.cpp (resize): The loop should run - from 0 < this->current_count_ rather than 0 < - this->max_process_table_size_. + * ace/Process_Manager.cpp (resize): The loop should run + from 0 < this->current_count_ rather than 0 < + this->max_process_table_size_. Sat Aug 28 16:28:33 1999 David L. Levine <levine@cs.wustl.edu> diff --git a/ace/config-aix-4.x.h b/ace/config-aix-4.x.h index 2b65f4ac411..cdffb360ce8 100644 --- a/ace/config-aix-4.x.h +++ b/ace/config-aix-4.x.h @@ -36,8 +36,11 @@ # endif /* __IBMCPP__ */ #elif defined (__GNUG__) -# include "ace/config-g++-common.h" + // config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so + // this must appear before its #include. # define ACE_HAS_STRING_CLASS + +# include "ace/config-g++-common.h" // Denotes that GNU has cstring.h as standard, to redefine memchr(). # define ACE_HAS_GNU_CSTRING_H # define ACE_HAS_SSIZE_T diff --git a/ace/config-cygwin32-common.h b/ace/config-cygwin32-common.h index b045ae5a566..923f8952b79 100644 --- a/ace/config-cygwin32-common.h +++ b/ace/config-cygwin32-common.h @@ -79,6 +79,10 @@ // Then the compiler specific parts +// config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so +// this must appear before its #include. +#define ACE_HAS_STRING_CLASS + #if defined (__GNUG__) # include "ace/config-g++-common.h" #elif defined (__KCC) @@ -115,8 +119,6 @@ #define ACE_HAS_BIG_FD_SET -#define ACE_HAS_STRING_CLASS - // Linux defines struct msghdr in /usr/include/socket.h #define ACE_HAS_MSG diff --git a/ace/config-g++-common.h b/ace/config-g++-common.h index 057f87845ff..d47be32b277 100644 --- a/ace/config-g++-common.h +++ b/ace/config-g++-common.h @@ -79,7 +79,15 @@ # define ACE_LACKS_PRAGMA_ONCE #endif /* ! ACE_LACKS_PRAGMA_ONCE */ -#define ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION +#if defined (ACE_HAS_GNU_REPO) + // -frepo causes unresolved symbols of basic_string left- and + // right-shift operators with ACE_HAS_STRING_CLASS. +# if defined (ACE_HAS_STRING_CLASS) +# undef ACE_HAS_STRING_CLASS +# endif /* ACE_HAS_STRING_CLASS */ +#else /* ! ACE_HAS_GNU_REPO */ +# define ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION +#endif /* ! ACE_HAS_GNU_REPO */ #define ACE_HAS_GNUC_BROKEN_TEMPLATE_INLINE_FUNCTIONS #define ACE_TEMPLATES_REQUIRE_SOURCE diff --git a/ace/config-hpux-10.x-g++.h b/ace/config-hpux-10.x-g++.h index 166e2124551..06105880292 100644 --- a/ace/config-hpux-10.x-g++.h +++ b/ace/config-hpux-10.x-g++.h @@ -7,13 +7,16 @@ #ifndef ACE_CONFIG_H #define ACE_CONFIG_H +// config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so +// this must appear before its #include. +#define ACE_HAS_STRING_CLASS + #include "ace/config-g++-common.h" // These are apparantly some things which are special to g++ on HP? They are // compiler-related settings, but not in config-g++-common.h #define ACE_HAS_BROKEN_CONVERSIONS -#define ACE_HAS_STRING_CLASS // Compiler supports the ssize_t typedef. #define ACE_HAS_SSIZE_T #define _CLOCKID_T diff --git a/ace/config-irix5.3-g++.h b/ace/config-irix5.3-g++.h index c99ba376c7b..373335cdf03 100644 --- a/ace/config-irix5.3-g++.h +++ b/ace/config-irix5.3-g++.h @@ -7,6 +7,10 @@ #ifndef ACE_CONFIG_H #define ACE_CONFIG_H +// config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so +// this must appear before its #include. +#define ACE_HAS_STRING_CLASS + #include "ace/config-g++-common.h" #define ACE_SIZEOF_LONG_DOUBLE 8 @@ -14,7 +18,6 @@ #define ACE_LACKS_SYSTIME_H // Platform supports getpagesize() call. #define ACE_HAS_GETPAGESIZE -#define ACE_HAS_STRING_CLASS #define IRIX5 #define ACE_HAS_SIGWAIT #define ACE_HAS_DIRENT diff --git a/ace/config-irix6.x-g++.h b/ace/config-irix6.x-g++.h index 52415880e25..b86cf57cf74 100644 --- a/ace/config-irix6.x-g++.h +++ b/ace/config-irix6.x-g++.h @@ -7,8 +7,11 @@ #ifndef ACE_CONFIG_H #define ACE_CONFIG_H -#include "ace/config-g++-common.h" +// config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so +// this must appear before its #include. +#define ACE_HAS_STRING_CLASS +#include "ace/config-g++-common.h" // Platform supports the very odd IRIX 6.2 threads... #define ACE_HAS_THREADS @@ -33,7 +36,6 @@ // Compiler/platform has thread-specific storage #define ACE_HAS_THREAD_SPECIFIC_STORAGE -#define ACE_HAS_STRING_CLASS #define IRIX6 // Denotes that GNU has cstring.h as standard diff --git a/ace/config-linux-common.h b/ace/config-linux-common.h index cb3764738be..076ad628f93 100644 --- a/ace/config-linux-common.h +++ b/ace/config-linux-common.h @@ -84,6 +84,10 @@ // Then the compiler specific parts +// config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so +// this must appear before its #include. +#define ACE_HAS_STRING_CLASS + #if defined (__GNUG__) # include "ace/config-g++-common.h" #elif defined (__KCC) @@ -127,8 +131,6 @@ #define ACE_HAS_BIG_FD_SET -#define ACE_HAS_STRING_CLASS - // Linux defines struct msghdr in /usr/include/socket.h #define ACE_HAS_MSG diff --git a/ace/config-lynxos.h b/ace/config-lynxos.h index 6a9ed5f79c5..3bd869b8848 100644 --- a/ace/config-lynxos.h +++ b/ace/config-lynxos.h @@ -18,17 +18,23 @@ #endif /* ! __ACE_INLINE__ */ #if defined (__GNUG__) -# include "ace/config-g++-common.h" - # if __GNUC_MINOR__ == 7 + +# include "ace/config-g++-common.h" + // The g++ that's distributed with LynxOS 3.0.0 needs this. // It won't hurt with 2.5.0. # undef ACE_HAS_TEMPLATE_SPECIALIZATION # elif __LYNXOS_SDK_VERSION <= 199603L + // config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so + // this must appear before its #include. + // If ACE_HAS_STRING_CLASS is used with LynxOS 3.0.0, some // executables, such as IOStream_Test, require linking with // libg++. # define ACE_HAS_STRING_CLASS + +# include "ace/config-g++-common.h" # endif /* __GNUC_MINOR__ == 7 */ #endif /* __GNUG__ */ diff --git a/ace/config-osf1-4.0.h b/ace/config-osf1-4.0.h index c81fa1cdb45..b8d720342bc 100644 --- a/ace/config-osf1-4.0.h +++ b/ace/config-osf1-4.0.h @@ -40,11 +40,16 @@ #if defined (__GNUG__) // g++ with pthreads + // config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so + // this must appear before its #include. +# define ACE_HAS_STRING_CLASS + # include "ace/config-g++-common.h" # define ACE_HAS_GNU_CSTRING_H # define ACE_HAS_REENTRANT_FUNCTIONS #elif defined (__DECCXX) +# define ACE_HAS_STRING_CLASS # define ACE_HAS_WORKING_EXPLICIT_TEMPLATE_DESTRUCTOR # define ACE_LACKS_LINEBUFFERED_STREAMBUF # define ACE_LACKS_SIGNED_CHAR @@ -94,6 +99,7 @@ #elif defined (__rational__) # define ACE_HAS_REENTRANT_FUNCTIONS +# define ACE_HAS_STRING_CLASS # define ACE_LACKS_LINEBUFFERED_STREAMBUF # define ACE_LACKS_SIGNED_CHAR @@ -104,6 +110,7 @@ # define ACE_HAS_TYPENAME_KEYWORD # define ACE_HAS_USING_KEYWORD #elif defined (__KCC) +# define ACE_HAS_STRING_CLASS # include "ace/config-kcc-common.h" #else # error unsupported compiler on Digital Unix @@ -184,7 +191,6 @@ #define ACE_HAS_STRBUF_T #define ACE_HAS_STREAMS #define ACE_HAS_STRERROR -#define ACE_HAS_STRING_CLASS #define ACE_HAS_STRPTIME #define ACE_HAS_SVR4_DYNAMIC_LINKING #define ACE_HAS_SVR4_SIGNAL_T diff --git a/ace/config-sunos4-g++.h b/ace/config-sunos4-g++.h index 637bf170d1c..739e78174bc 100644 --- a/ace/config-sunos4-g++.h +++ b/ace/config-sunos4-g++.h @@ -10,6 +10,10 @@ #define __ACE_INLINE__ #endif /* ! __ACE_INLINE__ */ +// config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so +// this must appear before its #include. +#define ACE_HAS_STRING_CLASS + #include "ace/config-g++-common.h" // This config file has not been tested with ACE_HAS_TEMPLATE_SPECIALIZATION. // Maybe it will work? @@ -22,7 +26,6 @@ #define ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT -#define ACE_HAS_STRING_CLASS #define ACE_LACKS_SYSTIME_H #define ACE_LACKS_GETPGID diff --git a/ace/config-sunos5.4-g++.h b/ace/config-sunos5.4-g++.h index 54e7d32216c..f81535cec68 100644 --- a/ace/config-sunos5.4-g++.h +++ b/ace/config-sunos5.4-g++.h @@ -11,6 +11,10 @@ # define __ACE_INLINE__ #endif /* ! __ACE_INLINE__ */ +// config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so +// this must appear before its #include. +#define ACE_HAS_STRING_CLASS + #include "ace/config-g++-common.h" #define ACE_HAS_GNU_CSTRING_H @@ -21,8 +25,6 @@ #define ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT -#define ACE_HAS_STRING_CLASS - // Platform supports pread() and pwrite() #define ACE_HAS_P_READ_WRITE diff --git a/ace/config-sunos5.5.h b/ace/config-sunos5.5.h index 24a063fc64c..c8aaf432ec7 100644 --- a/ace/config-sunos5.5.h +++ b/ace/config-sunos5.5.h @@ -31,7 +31,7 @@ // but the newer, explicit instantiation is used (above) # if (__SUNPRO_CC_COMPAT >= 5) # define ACE_HAS_STD_TEMPLATE_SPECIALIZATION -// Note that SunC++ 5.0 doesn't yet appear to support +// Note that SunC++ 5.0 doesn't yet appear to support // ACE_HAS_STD_TEMPLATE_METHOD_SPECIALIZATION... # define ACE_HAS_STANDARD_CPP_LIBRARY 1 # define ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB 1 @@ -76,9 +76,11 @@ from your CFLAGS, e.g., using make threads=0. */ #elif defined (__GNUG__) + // config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so + // this must appear before its #include. +# define ACE_HAS_STRING_CLASS # include "ace/config-g++-common.h" # define ACE_HAS_HI_RES_TIMER -# define ACE_HAS_STRING_CLASS // Denotes that GNU has cstring.h as standard, to redefine memchr(). # define ACE_HAS_GNU_CSTRING_H # define ACE_HAS_XPG4_MULTIBYTE_CHAR diff --git a/ace/config-unixware-2.01-g++.h b/ace/config-unixware-2.01-g++.h index d9e6ec1d64f..c82743a22cf 100644 --- a/ace/config-unixware-2.01-g++.h +++ b/ace/config-unixware-2.01-g++.h @@ -12,6 +12,10 @@ # define __ACE_INLINE__ #endif /* ! __ACE_INLINE__ */ +// config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so +// this must appear before its #include. +#define ACE_HAS_STRING_CLASS + #if defined (__GNUG__) # include "ace/config-g++-common.h" #endif /* __GNUG__ */ @@ -20,7 +24,6 @@ #define ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT #define ACE_HAS_IDTYPE_T -#define ACE_HAS_STRING_CLASS #define ACE_LACKS_STRCASECMP #define ACE_HAS_SIZET_SOCKET_LEN #define ACE_HAS_AUTOMATIC_INIT_FINI diff --git a/ace/config-unixware-2.1.2-g++.h b/ace/config-unixware-2.1.2-g++.h index 12f8799e816..3802c6434aa 100644 --- a/ace/config-unixware-2.1.2-g++.h +++ b/ace/config-unixware-2.1.2-g++.h @@ -13,6 +13,10 @@ # define __ACE_INLINE__ #endif /* ! __ACE_INLINE__ */ +// config-g++-common.h undef's ACE_HAS_STRING_CLASS with -frepo, so +// this must appear before its #include. +#define ACE_HAS_STRING_CLASS + #if defined (__GNUG__) # include "ace/config-g++-common.h" #endif /* __GNUG__ */ @@ -27,7 +31,6 @@ #define ACE_HAS_AUTOMATIC_INIT_FINI #define ACE_HAS_CPLUSPLUS_HEADERS #define ACE_HAS_GNU_CSTRING_H -#define ACE_HAS_STRING_CLASS #define ACE_HAS_MSG #define ACE_HAS_SVR4_GETTIMEOFDAY #define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R diff --git a/include/makeinclude/rules.lib.GNU b/include/makeinclude/rules.lib.GNU index 2e91d5b8bfa..5884f082641 100644 --- a/include/makeinclude/rules.lib.GNU +++ b/include/makeinclude/rules.lib.GNU @@ -81,6 +81,11 @@ $(VLIB): $(VLOBJS) ifdef PRELIB $(PRELIB) endif +ifeq (1,$(ace_lib_prelink)) + #### Attempt a link (which will fail), to add template instantiations + #### to lib files, for example. + -$(LINK.cc) -o ace-templ_inst $? $(LDFLAGS) $(ACE_NUL_STDERR) +endif # ace_lib_prelink $(AR) $(ARFLAGS) $@ $? ifdef TEMPINCDIR # This is required to get AIX xlC to instantiate and compile the needed @@ -126,6 +131,11 @@ ifdef TEMPINCDIR $(SOLINK.cc) -o $@ $(VSHOBJS1) $(LDFLAGS) $(ACE_SHLIBS) $(LIBS); \ fi else +ifeq (1,$(ace_lib_prelink)) + #### Attempt a link (which will fail), to add template instantiations + #### to lib files, for example. + -$(LINK.cc) -o ace-templ_inst $(VSHOBJS1) $(LDFLAGS) $(ACE_NUL_STDERR) +endif # ace_lib_prelink $(SOLINK.cc) -o $@ $(VSHOBJS1) $(LDFLAGS) $(ACE_SHLIBS) $(LIBS) endif -chmod a+rx $@ diff --git a/include/makeinclude/wrapper_macros.GNU b/include/makeinclude/wrapper_macros.GNU index f8fd51c47ca..be2baf9cfb1 100644 --- a/include/makeinclude/wrapper_macros.GNU +++ b/include/makeinclude/wrapper_macros.GNU @@ -167,6 +167,14 @@ ifeq (,$(findstring -L$(ACE_ROOT)/ace,$(LDFLAGS))) LDFLAGS += -L$(ACE_ROOT)/ace -L./ endif LEX = flex +ifdef COMSPEC + #### Assume we're on a WIN32 host. + ACE_NUL = nul +else # ! WIN32 + ACE_NUL = /dev/null +endif # ! WIN32 +#### Redirect stderr to nul device, and mask exit status. +ACE_NUL_STDERR = 2>$(ACE_NUL) || true PCFLAGS += #### set in platform_macros.GNU file, e.g., -p PCCFLAGS += #### set in platform_macros.GNU file, e.g., -p VAR = @@ -471,6 +479,7 @@ ifdef repo #### Remove -fno-implicit-templates from, and add -frepo to, CCFLAGS. CCFLAGS := $(strip $(subst -fno-implicit-templates,,$(CCFLAGS))) CCFLAGS += -frepo -DACE_HAS_GNU_REPO + ace_lib_prelink := 1 endif # repo #---------------------------------------------------------------------------- |