summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-08-30 02:52:59 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-08-30 02:52:59 +0000
commit3523150947472e0712fa0ca29300d43aef951606 (patch)
tree788030ca0b005f6aa273184dd7f590a8fe8d2c55
parent9b43c9521d0cb1e14f1b85fe2112fff479843585 (diff)
downloadATCD-3523150947472e0712fa0ca29300d43aef951606.tar.gz
ChangeLogTag: Sun Aug 29 21:35:17 1999 David L. Levine <levine@cs.wustl.edu>
-rw-r--r--ChangeLog-99b232
-rw-r--r--ace/config-aix-4.x.h5
-rw-r--r--ace/config-cygwin32-common.h6
-rw-r--r--ace/config-g++-common.h10
-rw-r--r--ace/config-hpux-10.x-g++.h5
-rw-r--r--ace/config-irix5.3-g++.h5
-rw-r--r--ace/config-irix6.x-g++.h6
-rw-r--r--ace/config-linux-common.h6
-rw-r--r--ace/config-lynxos.h10
-rw-r--r--ace/config-osf1-4.0.h8
-rw-r--r--ace/config-sunos4-g++.h5
-rw-r--r--ace/config-sunos5.4-g++.h6
-rw-r--r--ace/config-sunos5.5.h6
-rw-r--r--ace/config-unixware-2.01-g++.h5
-rw-r--r--ace/config-unixware-2.1.2-g++.h5
-rw-r--r--include/makeinclude/rules.lib.GNU10
-rw-r--r--include/makeinclude/wrapper_macros.GNU9
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
#----------------------------------------------------------------------------