summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog-97a45
-rw-r--r--Makefile2
-rw-r--r--ace/ACE.cpp2
-rw-r--r--ace/Connector.cpp15
-rw-r--r--ace/Connector.h12
-rw-r--r--ace/Event_Handler_T.i16
-rw-r--r--ace/Handle_Set.cpp4
-rw-r--r--ace/IOStream.cpp2
-rw-r--r--ace/IOStream.h2
-rw-r--r--ace/Local_Name_Space_T.h8
-rw-r--r--ace/Malloc_T.h2
-rw-r--r--ace/Memory_Pool.cpp2
-rw-r--r--ace/OS.cpp18
-rw-r--r--ace/OS.h53
-rw-r--r--ace/OS.i231
-rw-r--r--ace/README5
-rw-r--r--ace/SOCK_Dgram_Mcast.cpp9
-rw-r--r--ace/Signal.cpp6
-rw-r--r--ace/Strategies_T.cpp8
-rw-r--r--ace/Strategies_T.h2
-rw-r--r--ace/Stream_Modules.cpp2
-rw-r--r--ace/Stream_Modules.h2
-rw-r--r--ace/Task_T.cpp1
-rw-r--r--ace/config-chorus.h94
-rw-r--r--ace/config-hpux-10.x-aCC.h122
-rw-r--r--ace/config-hpux-10.x-g++.h5
-rw-r--r--ace/config-hpux-10.x.h6
-rw-r--r--ace/config-vxworks-ghs-1.8.h3
-rw-r--r--ace/config-vxworks5.2-g++.h3
-rw-r--r--ace/config-win32-msvc2.0.h3
-rw-r--r--ace/config-win32-msvc4.x.h3
-rw-r--r--ace/config-winnt-4.0-msvc4.x.h3
-rw-r--r--examples/Reactor/Misc/test_demuxing.cpp2
-rw-r--r--include/makeinclude/platform_chorus.GNU42
-rw-r--r--include/makeinclude/platform_hpux.GNU12
-rw-r--r--include/makeinclude/rules.lib.GNU16
-rw-r--r--netsvcs/lib/Makefile2
37 files changed, 544 insertions, 221 deletions
diff --git a/ChangeLog-97a b/ChangeLog-97a
index 1c0119f3612..37b3987ab71 100644
--- a/ChangeLog-97a
+++ b/ChangeLog-97a
@@ -1,22 +1,17 @@
-Wed Mar 19 16:06:32 1997 David L. Levine <levine@cs.wustl.edu>
-
- * ace/OS.h,README: added ACE_HAS_AIX_BROKEN_SOCKET_HEADER to wrap
- #include of sys/socket.h with #undef/#define of __cplusplus.
-
- * ace/config-aix-4.[12].x.h: added ACE_HAS_AIX_BROKEN_SOCKET_HEADER,
- ACE_HAS_PTHREAD_T, ACE_LACKS_TCP_H, and ACE_LACKS_SETSCHED.
- Removed ACE_HAS_SVR4_DYNAMIC_LINKING and ACE_HAS_THREAD_SELF.
+Wed Mar 19 15:02:09 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
- Thanks to Daniel Montalibet <daniel_montalibet@stortek.com> for
- both of the above modifications.
+ * ace: Added zillions of minor changes so that ACE will compile on
+ the new aCC compiler for HPUX. Thanks to Gonzalo A. Diethelm
+ <gonzo@ing.puc.cl> and Carlos O'Ryan for help with this.
- * platform_{dgux4_epc,irix5.3_g++,linux*,m88k,osf1_3.2,sco*,
- sunos4_g++,sunos5_centerline*,sunos5_g++,sunos5_sunc++*,
- unixware_g++,vxworks5.2_g++}.GNU: split out CFLAGS and CCFLAGS.
- Also, removed -lstdc++/-lm from g++ versions, because we now set
- CXX to g++ instead of gcc, so those libraries are picked up.
+ * ace/SOCK_Dgram_Mcast.cpp (subscribe): In addition to the
+ SO_REUSEADDR option, Irix has a SO_REUSEPORT option that must
+ also be set to allow multiple sockets to bind to the same
+ multicast address. Thanks to Robert V. Head <rhead@vtcs20a> for
+ reporting this.
-Wed Mar 19 15:02:09 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
+ * ace: Added a slew of changes to support CHORUS. Thanks to
+ Wei Chiang <chiang@tele.nokia.fi> for these changes.
* ace/config-sunos4.*.h: Added #define ACE_HAS_UNION_WAIT based
on the recommendation of Kumar Neelakantan
@@ -42,7 +37,23 @@ Wed Mar 19 15:02:09 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
check on the first loop therein. Thanks to Michael Newton
<michaeln@in.ot.com.au> for reporting this.
-Wed Mar 19 07:33:42 1997 David L. Levine <levine@cs.wustl.edu>
+Wed Mar 19 16:06:32 1997 David L. Levine <levine@cs.wustl.edu>
+
+ * ace/OS.h,README: added ACE_HAS_AIX_BROKEN_SOCKET_HEADER to wrap
+ #include of sys/socket.h with #undef/#define of __cplusplus.
+
+ * ace/config-aix-4.[12].x.h: added ACE_HAS_AIX_BROKEN_SOCKET_HEADER,
+ ACE_HAS_PTHREAD_T, ACE_LACKS_TCP_H, and ACE_LACKS_SETSCHED.
+ Removed ACE_HAS_SVR4_DYNAMIC_LINKING and ACE_HAS_THREAD_SELF.
+
+ Thanks to Daniel Montalibet <daniel_montalibet@stortek.com> for
+ both of the above modifications.
+
+ * platform_{dgux4_epc,irix5.3_g++,linux*,m88k,osf1_3.2,sco*,
+ sunos4_g++,sunos5_centerline*,sunos5_g++,sunos5_sunc++*,
+ unixware_g++,vxworks5.2_g++}.GNU: split out CFLAGS and CCFLAGS.
+ Also, removed -lstdc++/-lm from g++ versions, because we now set
+ CXX to g++ instead of gcc, so those libraries are picked up.
* include/makeinclude/platform_osf1_4.0{,_g++}.GNU:
added -lrt to support ACE_Sched_Params. Thanks to
diff --git a/Makefile b/Makefile
index b33ac504ac5..1cd8b3e60ab 100644
--- a/Makefile
+++ b/Makefile
@@ -51,7 +51,6 @@ clone:
RELEASE_FILES = ACE_wrappers/ACE-categories \
ACE_wrappers/ACE-install.sh \
ACE_wrappers/BIBLIOGRAPHY \
- ACE_wrappers/ChangeLog \
ACE_wrappers/ChangeLog-97a \
ACE_wrappers/ChangeLog-96b \
ACE_wrappers/ChangeLog-96a \
@@ -76,7 +75,6 @@ RELEASE_FILES = ACE_wrappers/ACE-categories \
ACE_wrappers/tests
RELEASE_LIB_FILES = \
- ACE_wrappers/ChangeLog \
ACE_wrappers/STL \
ACE_wrappers/VERSION \
ACE_wrappers/ace \
diff --git a/ace/ACE.cpp b/ace/ACE.cpp
index d8ade8a0530..1ea3416abb1 100644
--- a/ace/ACE.cpp
+++ b/ace/ACE.cpp
@@ -862,7 +862,7 @@ int
ACE::daemonize (const char pathname[])
{
ACE_TRACE ("ACE::daemonize");
-#if !defined (ACE_WIN32)
+#if !defined (ACE_LACKS_EXEC)
pid_t pid = ACE_OS::fork ();
if (pid == -1)
diff --git a/ace/Connector.cpp b/ace/Connector.cpp
index 76d20b2f1b3..d9ff5973a9d 100644
--- a/ace/Connector.cpp
+++ b/ace/Connector.cpp
@@ -11,7 +11,7 @@
#define SH SVC_HANDLER
#define PR_CO_1 ACE_PEER_CONNECTOR_1
#define PR_CO_2 ACE_PEER_CONNECTOR_2
-#define PR_AD ACE_PEER_CONNECTOR_ADDR
+#define PEER_ADDR ACE_PEER_CONNECTOR_ADDR
ACE_ALLOC_HOOK_DEFINE(ACE_Connector)
@@ -58,9 +58,9 @@ ACE_Connector<SH, PR_CO_2>::activate_svc_handler (SVC_HANDLER *svc_handler)
template <class SH, PR_CO_1> int
ACE_Connector<SH, PR_CO_2>::connect_svc_handler (SVC_HANDLER *svc_handler,
- const PR_AD &remote_addr,
+ const PEER_ADDR &remote_addr,
const ACE_Synch_Options &synch_options,
- const PR_AD &local_addr,
+ const PEER_ADDR &local_addr,
int reuse_addr,
int flags,
int perms)
@@ -313,7 +313,7 @@ ACE_Connector<SH, PR_CO_2>::handle_output (ACE_HANDLE handle)
// Transfer ownership of the ACE_HANDLE to the SVC_HANDLER.
ast->svc_handler ()->set_handle (handle);
- PR_AD raddr;
+ PEER_ADDR raddr;
// Check to see if we're connected.
if (ast->svc_handler ()->peer ().get_remote_addr (raddr) != -1)
@@ -329,9 +329,9 @@ ACE_Connector<SH, PR_CO_2>::handle_output (ACE_HANDLE handle)
template <class SH, PR_CO_1> int
ACE_Connector<SH, PR_CO_2>::connect (SH *sh,
- const PR_AD &remote_addr,
+ const PEER_ADDR &remote_addr,
const ACE_Synch_Options &synch_options,
- const PR_AD &local_addr,
+ const PEER_ADDR &local_addr,
int reuse_addr,
int flags,
int perms)
@@ -504,7 +504,7 @@ ACE_Connector<SH, PR_CO_2>::info (char **strp, size_t length) const
ACE_TRACE ("ACE_Connector<SH, PR_CO_2>::info");
char buf[BUFSIZ];
char addr_str[BUFSIZ];
- PR_AD addr;
+ PEER_ADDR addr;
if (this->connector ().get_local_addr (addr) == -1)
return -1;
@@ -533,5 +533,4 @@ ACE_Connector<SH, PR_CO_2>::~ACE_Connector (void)
#undef SH
#undef PR_CO_1
#undef PR_CO_2
-#undef PR_AD
#endif /* ACE_CONNECTOR_C */
diff --git a/ace/Connector.h b/ace/Connector.h
index 02a193621b4..0a2470ac05f 100644
--- a/ace/Connector.h
+++ b/ace/Connector.h
@@ -118,6 +118,8 @@ class ACE_Connector : public ACE_Service_Object
public:
// = Initialization and termination methods.
+ typedef ACE_TYPENAME ACE_PEER_CONNECTOR_ADDR PEER_ADDR;
+
ACE_Connector (ACE_Reactor *r = ACE_Service_Config::reactor ());
// Initialize a connector.
@@ -130,10 +132,10 @@ public:
// = Connection establishment method
virtual int connect (SVC_HANDLER *svc_handler,
- const ACE_PEER_CONNECTOR_ADDR &remote_addr,
+ const PEER_ADDR &remote_addr,
const ACE_Synch_Options &synch_options = ACE_Synch_Options::defaults,
- const ACE_PEER_CONNECTOR_ADDR &local_addr
- = (ACE_PEER_CONNECTOR_ADDR &) ACE_PEER_CONNECTOR_ADDR::sap_any,
+ const PEER_ADDR &local_addr
+ = (PEER_ADDR &) PEER_ADDR::sap_any,
int reuse_addr = 0,
int flags = O_RDWR,
int perms = 0);
@@ -183,9 +185,9 @@ protected:
// connecting and activating SVC_HANDLER's, respectively.
virtual int connect_svc_handler (SVC_HANDLER *svc_handler,
- const ACE_PEER_CONNECTOR_ADDR &remote_addr,
+ const PEER_ADDR &remote_addr,
const ACE_Synch_Options &synch_options,
- const ACE_PEER_CONNECTOR_ADDR &local_addr,
+ const PEER_ADDR &local_addr,
int reuse_addr,
int flags,
int perms);
diff --git a/ace/Event_Handler_T.i b/ace/Event_Handler_T.i
index 2f7b5e6deb7..160eac4e5e3 100644
--- a/ace/Event_Handler_T.i
+++ b/ace/Event_Handler_T.i
@@ -74,7 +74,7 @@ ACE_Event_Handler_T<T>::handle_signal (ACE_HANDLE signum, siginfo_t *s, ucontext
return this->sig_handler_ == 0 ? 0 : (this->op_handler_->*sig_handler_) (signum, s, u);
}
-template<class T> ACE_INLINE ACE_Event_Handler_T<T>::GET_HANDLE
+template<class T> ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T<T>::GET_HANDLE
ACE_Event_Handler_T<T>::handle_get (void)
{
ACE_TRACE ("ACE_Event_Handler_T<T>::handle_get");
@@ -88,7 +88,7 @@ ACE_Event_Handler_T<T>::handle_get (ACE_Event_Handler_T<T>::GET_HANDLE h)
this->get_handle_ = h;
}
-template<class T> ACE_INLINE ACE_Event_Handler_T<T>::SET_HANDLE
+template<class T> ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T<T>::SET_HANDLE
ACE_Event_Handler_T<T>::handle_set (void)
{
ACE_TRACE ("ACE_Event_Handler_T<T>::handle_set");
@@ -102,7 +102,7 @@ ACE_Event_Handler_T<T>::handle_set (ACE_Event_Handler_T<T>::SET_HANDLE h)
this->set_handle_ = h;
}
-template<class T> ACE_INLINE ACE_Event_Handler_T<T>::IO_HANDLER
+template<class T> ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T<T>::IO_HANDLER
ACE_Event_Handler_T<T>::input_handler (void)
{
ACE_TRACE ("ACE_Event_Handler_T<T>::input_handler");
@@ -116,7 +116,7 @@ ACE_Event_Handler_T<T>::input_handler (ACE_Event_Handler_T<T>::IO_HANDLER h)
this->input_handler_ = h;
}
-template<class T> ACE_INLINE ACE_Event_Handler_T<T>::IO_HANDLER
+template<class T> ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T<T>::IO_HANDLER
ACE_Event_Handler_T<T>::output_handler (void)
{
ACE_TRACE ("ACE_Event_Handler_T<T>::output_handler");
@@ -130,7 +130,7 @@ ACE_Event_Handler_T<T>::output_handler (ACE_Event_Handler_T<T>::IO_HANDLER h)
this->output_handler_ = h;
}
-template<class T> ACE_INLINE ACE_Event_Handler_T<T>::IO_HANDLER
+template<class T> ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T<T>::IO_HANDLER
ACE_Event_Handler_T<T>::except_handler (void)
{
ACE_TRACE ("ACE_Event_Handler_T<T>::except_handler");
@@ -144,7 +144,7 @@ ACE_Event_Handler_T<T>::except_handler (ACE_Event_Handler_T<T>::IO_HANDLER h)
this->except_handler_ = h;
}
-template<class T> ACE_INLINE ACE_Event_Handler_T<T>::TO_HANDLER
+template<class T> ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T<T>::TO_HANDLER
ACE_Event_Handler_T<T>::to_handler (void)
{
ACE_TRACE ("ACE_Event_Handler_T<T>::to_handler");
@@ -158,7 +158,7 @@ ACE_Event_Handler_T<T>::to_handler (ACE_Event_Handler_T<T>::TO_HANDLER h)
this->to_handler_ = h;
}
-template<class T> ACE_INLINE ACE_Event_Handler_T<T>::CL_HANDLER
+template<class T> ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T<T>::CL_HANDLER
ACE_Event_Handler_T<T>::cl_handler (void)
{
ACE_TRACE ("ACE_Event_Handler_T<T>::cl_handler");
@@ -172,7 +172,7 @@ ACE_Event_Handler_T<T>::cl_handler (ACE_Event_Handler_T<T>::CL_HANDLER h)
this->cl_handler_ = h;
}
-template<class T> ACE_INLINE ACE_Event_Handler_T<T>::SIG_HANDLER
+template<class T> ACE_INLINE ACE_TYPENAME ACE_Event_Handler_T<T>::SIG_HANDLER
ACE_Event_Handler_T<T>::sig_handler (void)
{
ACE_TRACE ("ACE_Event_Handler_T<T>::sig_handler");
diff --git a/ace/Handle_Set.cpp b/ace/Handle_Set.cpp
index 3eeb6032da5..12037575cfd 100644
--- a/ace/Handle_Set.cpp
+++ b/ace/Handle_Set.cpp
@@ -208,12 +208,12 @@ ACE_Handle_Set_Iterator::ACE_Handle_Set_Iterator (const ACE_Handle_Set &f)
// end of the bitset.
for (;
this->handles_.mask_.fds_bits[this->index_] == 0
- && this->num_ < ACE_Handle_Set::MAXSIZE
+ && this->num_ < ACE_Handle_Set::MAXSIZE;
this->index_++)
this->num_ += ACE_Handle_Set::WORDSIZE;
if (this->num_ >= ACE_Handle_Set::MAXSIZE)
- this->num_ = this->handles_.max_handle + 1;
+ this->num_ = this->handles_.max_handle_ + 1;
else
for (this->val_ = this->handles_.mask_.fds_bits[this->index_];
(ACE_BIT_DISABLED (this->val_, 1)) && this->num_ < ACE_Handle_Set::MAXSIZE;
diff --git a/ace/IOStream.cpp b/ace/IOStream.cpp
index b4691b9d5bb..e9e8384b917 100644
--- a/ace/IOStream.cpp
+++ b/ace/IOStream.cpp
@@ -517,7 +517,7 @@ ACE_IOStream<STREAM>::close (void)
return STREAM::close ();
}
-#if defined (__GNUC__)
+#if defined (__GNUC__) && !defined (CHORUS)
// A simple string operator. The base iostream has 'em for char* but
// that isn't always the best thing for a String. If we don't provide
// our own here, we may not get what we want.
diff --git a/ace/IOStream.h b/ace/IOStream.h
index c0114c037ac..9ebe978ac18 100644
--- a/ace/IOStream.h
+++ b/ace/IOStream.h
@@ -23,7 +23,7 @@
#include "ace/OS.h"
#include <iomanip.h>
-#if defined (__GNUC__)
+#if defined (__GNUC__) && !defined (CHORUS)
#include <String.h>
class QuotedString : public String
diff --git a/ace/Local_Name_Space_T.h b/ace/Local_Name_Space_T.h
index 880ba0f6f82..f16375433f4 100644
--- a/ace/Local_Name_Space_T.h
+++ b/ace/Local_Name_Space_T.h
@@ -1,8 +1,6 @@
/* -*- C++ -*- */
// $Id$
-/*-*- C++ -*- */
-
// ============================================================================
//
// = LIBRARY
@@ -198,6 +196,9 @@ public:
virtual void dump_i (void) const;
// Dump the state of the object
+ // = I just know this is going to cause problems on some platform...
+ typedef ACE_Allocator_Adapter <ACE_Malloc <ACE_MEM_POOL_2, LOCK> > ALLOCATOR;
+
private:
#if defined (ACE_WIN32)
int remap (EXCEPTION_POINTERS *ep);
@@ -215,9 +216,6 @@ private:
// Allocate the appropriate type of map manager that stores the
// key/value binding.
- // = I just know this is going to cause problems on some platform...
- typedef ACE_Allocator_Adapter <ACE_Malloc <ACE_MEM_POOL_2, LOCK> > ALLOCATOR;
-
ALLOCATOR *allocator_;
// Pointer to the allocator
diff --git a/ace/Malloc_T.h b/ace/Malloc_T.h
index 71fd12c5652..aae4e2ce82b 100644
--- a/ace/Malloc_T.h
+++ b/ace/Malloc_T.h
@@ -34,7 +34,7 @@ public:
#if defined (ACE_HAS_TEMPLATE_TYPEDEFS)
// The following code will break C++ compilers that don't support
// template typedefs correctly.
- typedef const MALLOC::MEMORY_POOL_OPTIONS *MEMORY_POOL_OPTIONS;
+ typedef const ACE_TYPENAME MALLOC::MEMORY_POOL_OPTIONS *MEMORY_POOL_OPTIONS;
#else
typedef const void *MEMORY_POOL_OPTIONS;
#endif /* ACE_HAS_TEMPLATE_TYPEDEFS */
diff --git a/ace/Memory_Pool.cpp b/ace/Memory_Pool.cpp
index cc42d2f3aa4..dd61df574e0 100644
--- a/ace/Memory_Pool.cpp
+++ b/ace/Memory_Pool.cpp
@@ -133,7 +133,7 @@ ACE_MMAP_Memory_Pool::ACE_MMAP_Memory_Pool (LPCTSTR backing_store_name,
backing_store_name,
(sizeof this->backing_store_name_ / sizeof (TCHAR)));
-#if !defined (ACE_WIN32)
+#if !defined (ACE_WIN32) && !defined (CHORUS)
if (this->signal_handler_.register_handler (SIGSEGV, this) == -1)
ACE_ERROR ((LM_ERROR, "%p\n", this->backing_store_name_));
#endif /* ACE_WIN32 */
diff --git a/ace/OS.cpp b/ace/OS.cpp
index eb297daff8b..b3d06d77211 100644
--- a/ace/OS.cpp
+++ b/ace/OS.cpp
@@ -441,7 +441,7 @@ ACE_OS::ace_flock_t::dump (void) const
ACE_DEBUG ((LM_DEBUG, "\nInternalHigh = %d", this->overlapped_.InternalHigh));
ACE_DEBUG ((LM_DEBUG, "\nOffsetHigh = %d", this->overlapped_.OffsetHigh));
ACE_DEBUG ((LM_DEBUG, "\nhEvent = %d", this->overlapped_.hEvent));
-#else
+#elif !defined (CHORUS)
ACE_DEBUG ((LM_DEBUG, "\nl_whence = %d", this->lock_.l_whence));
ACE_DEBUG ((LM_DEBUG, "\nl_start = %d", this->lock_.l_start));
ACE_DEBUG ((LM_DEBUG, "\nl_len = %d", this->lock_.l_len));
@@ -742,6 +742,18 @@ ACE_OS::sched_params (const ACE_Sched_Params &sched_params)
// Set the thread priority on the current thread.
return ACE_OS::thr_setprio (sched_params.priority ());
+#elif defined (CHORUS)
+ int result;
+ struct sched_param param;
+ ACE_thread_t thr_id = ACE_OS::thr_self ();
+
+ param.sched_priority = sched_params.priority ();
+
+ ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_setschedparam (thr_id,
+ sched_params.policy (),
+ &param),
+ result),
+ int, -1);
#else
ACE_NOTSUP_RETURN (-1);
#endif /* ACE_HAS_STHREADS */
@@ -1947,6 +1959,8 @@ ACE_OS::fork_exec (char *argv[])
// CreateProcess failed.
return -1;
+#elif defined (CHORUS)
+ return -1; // do it later!!!
#else
pid_t result = ACE_OS::fork ();
@@ -2197,7 +2211,7 @@ pid_t
ACE_OS::fork (const char *program_name)
{
// ACE_TRACE ("ACE_OS::fork");
-#if defined (ACE_WIN32) || defined (VXWORKS)
+#if defined (ACE_LACKS_EXEC)
ACE_UNUSED_ARG (program_name);
ACE_NOTSUP_RETURN (pid_t (-1));
#else
diff --git a/ace/OS.h b/ace/OS.h
index 616c73b95f2..6f660a9ee4b 100644
--- a/ace/OS.h
+++ b/ace/OS.h
@@ -186,10 +186,23 @@ typedef int key_t;
#include /**/ <vxWorks.h>
#endif /* VXWORKS */
+#if defined (CHORUS)
+#include /**/ <chorus.h>
+#endif /* CHORUS */
+
// This file should be a link to the platform/compiler-specific
// configuration file (e.g., config-sunos5-sunc++-4.x.h).
#include "ace/config.h"
+#if defined (ACE_LACKS_SIGACTION)
+struct sigaction
+{
+ int sa_flags;
+ ACE_SignalHandlerV sa_handler;
+ sigset_t sa_mask;
+};
+#endif /* ACE_LACKS_SIGACTION */
+
#if defined (ACE_HAS_CHARPTR_SPRINTF)
#define ACE_SPRINTF_ADAPTER(X) ::strlen (X)
#else
@@ -493,6 +506,12 @@ private:
#define ACE_USING
#endif /* ACE_HAS_USING_KEYWORD */
+#if defined (ACE_HAS_TYPENAME_KEYWORD)
+#define ACE_TYPENAME typename
+#else
+#deifne ACE_TYPENAME
+#endif /* ACE_HAS_TYPENAME_KEYWORD */
+
// The following is necessary since many C++ compilers don't support
// typedef'd types inside of classes used as formal template
// arguments... ;-(. Luckily, using the C++ preprocessor I can hide
@@ -503,26 +522,26 @@ private:
// Handle ACE_Message_Queue.
#define ACE_SYNCH_1 class _ACE_SYNCH
#define ACE_SYNCH_2 _ACE_SYNCH
-#define ACE_SYNCH_MUTEX _ACE_SYNCH::MUTEX
-#define ACE_SYNCH_CONDITION _ACE_SYNCH::CONDITION
+#define ACE_SYNCH_MUTEX ACE_TYPENAME _ACE_SYNCH::MUTEX
+#define ACE_SYNCH_CONDITION ACE_TYPENAME _ACE_SYNCH::CONDITION
// Handle ACE_Malloc*
#define ACE_MEM_POOL_1 class _ACE_MEM_POOL
#define ACE_MEM_POOL_2 _ACE_MEM_POOL
#define ACE_MEM_POOL _ACE_MEM_POOL
-#define ACE_MEM_POOL_OPTIONS _ACE_MEM_POOL::OPTIONS
+#define ACE_MEM_POOL_OPTIONS ACE_TYPENAME _ACE_MEM_POOL::OPTIONS
// Handle ACE_Svc_Handler
#define ACE_PEER_STREAM_1 class _ACE_PEER_STREAM
#define ACE_PEER_STREAM_2 _ACE_PEER_STREAM
#define ACE_PEER_STREAM _ACE_PEER_STREAM
-#define ACE_PEER_STREAM_ADDR _ACE_PEER_STREAM::PEER_ADDR
+#define ACE_PEER_STREAM_ADDR ACE_TYPENAME _ACE_PEER_STREAM::PEER_ADDR
// Handle ACE_Acceptor
#define ACE_PEER_ACCEPTOR_1 class _ACE_PEER_ACCEPTOR
#define ACE_PEER_ACCEPTOR_2 _ACE_PEER_ACCEPTOR
#define ACE_PEER_ACCEPTOR _ACE_PEER_ACCEPTOR
-#define ACE_PEER_ACCEPTOR_ADDR _ACE_PEER_ACCEPTOR::PEER_ADDR
+#define ACE_PEER_ACCEPTOR_ADDR ACE_TYPENAME _ACE_PEER_ACCEPTOR::PEER_ADDR
// Handle ACE_SOCK_*
#define ACE_SOCK_ACCEPTOR ACE_SOCK_Acceptor
@@ -1215,6 +1234,10 @@ typedef int ACE_thread_key_t;
#include /**/ <errno.h>
#include /**/ <stdlib.h>
+#if defined (CHORUS) // This must come after limits.h is included
+#define MAXPATHLEN _POSIX_PATH_MAX
+#endif /* CHORUS */
+
// This must come after signal.h is #included.
#if defined (SCO)
#define SIGIO SIGPOLL
@@ -1557,16 +1580,6 @@ typedef SOCKET ACE_SOCKET;
#define MAXNAMLEN _MAX_FNAME
#define EADDRINUSE WSAEADDRINUSE
-// Undefined structs becomes undeclared overloads with MSVC++ 2.0
-// Thus we need to resort to this for unsupported system calls.
-
-struct sigaction
-{
- int sa_flags;
- ACE_SignalHandlerV sa_handler;
- sigset_t sa_mask;
-};
-
struct iovec
{
char *iov_base; // data to be read/written
@@ -1724,7 +1737,13 @@ extern "C" {
#else
#include /**/ <netdb.h>
#endif /* VXWORKS */
+#if defined (HPUX)
+#define volatile
+#endif /* HPUX */
#include /**/ <net/if.h>
+#if defined (HPUX)
+#undef volatile
+#endif /* HPUX */
#include /**/ <netinet/in.h>
#include /**/ <arpa/inet.h>
}
@@ -1974,6 +1993,10 @@ typedef fd_set ACE_FD_SET_TYPE;
#define SIGHUP 1
#endif /* SIGHUP */
+#if !defined (SIGINT)
+#define SIGINT 2
+#endif /* SIGINT */
+
#if !defined (SIGQUIT)
#define SIGQUIT 3
#endif /* SIGQUIT */
diff --git a/ace/OS.i b/ace/OS.i
index 47eeac9356f..b7991824647 100644
--- a/ace/OS.i
+++ b/ace/OS.i
@@ -268,7 +268,7 @@ operator != (const ACE_Time_Value &tv1,
// Define this file to keep /usr/include/memory.h from being included.
#include /**/ <cstring>
#else
-#if defined (VXWORKS)
+#if defined (ACE_LACKS_MEMORY_H)
#include /**/ <string.h>
#else
#include /**/ <memory.h>
@@ -425,7 +425,7 @@ ACE_INLINE int
ACE_OS::mkfifo (const char *file, mode_t mode)
{
// ACE_TRACE ("ACE_OS::mkfifo");
-#if defined (VXWORKS)
+#if defined (VXWORKS) || defined (CHORUS)
ACE_NOTSUP_RETURN (-1);
#else
ACE_OSCALL_RETURN (::mkfifo (file, mode), int, -1);
@@ -492,52 +492,6 @@ ACE_OS::setsid (void)
}
ACE_INLINE int
-ACE_OS::sigaddset (sigset_t *s, int signum)
-{
- // ACE_TRACE ("ACE_OS::sigaddset");
- ACE_OSCALL_RETURN (::sigaddset (s, signum), int, -1);
-}
-
-ACE_INLINE int
-ACE_OS::sigdelset (sigset_t *s, int signum)
-{
- // ACE_TRACE ("ACE_OS::sigdelset");
- ACE_OSCALL_RETURN (::sigdelset (s, signum), int, -1);
-}
-
-ACE_INLINE int
-ACE_OS::sigemptyset (sigset_t *s)
-{
- // ACE_TRACE ("ACE_OS::sigemptyset");
- ACE_OSCALL_RETURN (::sigemptyset (s), int, -1);
-}
-
-ACE_INLINE int
-ACE_OS::sigfillset (sigset_t *s)
-{
- // ACE_TRACE ("ACE_OS::sigfillset");
- ACE_OSCALL_RETURN (::sigfillset (s), int, -1);
-}
-
-ACE_INLINE int
-ACE_OS::sigismember (sigset_t *s, int signum)
-{
- // ACE_TRACE ("ACE_OS::sigismember");
- ACE_OSCALL_RETURN (::sigismember (s, signum), int, -1);
-}
-
-ACE_INLINE int
-ACE_OS::sigprocmask (int how, const sigset_t *nsp, sigset_t *osp)
-{
- // ACE_TRACE ("ACE_OS::sigprocmask");
-#if defined (ACE_LACKS_POSIX_PROTO)
- ACE_OSCALL_RETURN (::sigprocmask (how, (int*) nsp, osp), int, -1);
-#else
- ACE_OSCALL_RETURN (::sigprocmask (how, nsp, osp), int, -1);
-#endif /* ACE_LACKS_POSIX_PROTO */
-}
-
-ACE_INLINE int
ACE_OS::strcasecmp (const char *s, const char *t)
{
// ACE_TRACE ("ACE_OS::strcasecmp");
@@ -712,66 +666,6 @@ ACE_OS::setsid (void)
ACE_NOTSUP_RETURN (0);
}
-ACE_INLINE int
-ACE_OS::sigaddset (sigset_t *s, int signum)
-{
- ACE_UNUSED_ARG (s);
- ACE_UNUSED_ARG (signum);
-
- // ACE_TRACE ("ACE_OS::sigaddset");
-
- ACE_NOTSUP_RETURN (0);
-}
-
-ACE_INLINE int
-ACE_OS::sigdelset (sigset_t *s, int signum)
-{
- ACE_UNUSED_ARG (s);
- ACE_UNUSED_ARG (signum);
-
- // ACE_TRACE ("ACE_OS::sigdelset");
- ACE_NOTSUP_RETURN (0);
-}
-
-ACE_INLINE int
-ACE_OS::sigemptyset (sigset_t *s)
-{
- ACE_UNUSED_ARG (s);
-
- // ACE_TRACE ("ACE_OS::sigemptyset");
- ACE_NOTSUP_RETURN (0);
-}
-
-ACE_INLINE int
-ACE_OS::sigfillset (sigset_t *s)
-{
- ACE_UNUSED_ARG (s);
-
- // ACE_TRACE ("ACE_OS::sigfillset");
- ACE_NOTSUP_RETURN (0);
-}
-
-ACE_INLINE int
-ACE_OS::sigismember (sigset_t *s, int signum)
-{
- ACE_UNUSED_ARG (s);
- ACE_UNUSED_ARG (signum);
-
- // ACE_TRACE ("ACE_OS::sigismember");
- ACE_NOTSUP_RETURN (0);
-}
-
-ACE_INLINE int
-ACE_OS::sigprocmask (int how, const sigset_t *nsp, sigset_t *osp)
-{
- ACE_UNUSED_ARG (how);
- ACE_UNUSED_ARG (nsp);
- ACE_UNUSED_ARG (osp);
-
- // ACE_TRACE ("ACE_OS::sigprocmask");
- ACE_NOTSUP_RETURN (0);
-}
-
ACE_INLINE mode_t
ACE_OS::umask (mode_t cmask)
{
@@ -846,7 +740,7 @@ ACE_OS::gettimeofday (void)
#if defined (ACE_HAS_TIMEZONE_GETTIMEOFDAY) || (defined (ACE_HAS_SVR4_GETTIMEOFDAY) && !defined (m88k))
int result;
ACE_OSCALL (::gettimeofday (&tv, 0), int, -1, result);
-#elif defined (VXWORKS)
+#elif defined (VXWORKS) || defined (CHORUS)
// Assumes that struct timespec is same size as struct timeval,
// which assumes that time_t is a long: it currently (VxWorks 5.2/5.3) is.
struct timespec ts;
@@ -1091,7 +985,8 @@ ACE_OS::mutex_lock (ACE_mutex_t *m)
// ACE_TRACE ("ACE_OS::mutex_lock");
#if defined (ACE_HAS_THREADS)
#if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS)
- ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_mutex_lock (m), ace_result_), int, -1);
+ // Note, don't use "::" here since the following call is often a macro.
+ ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_mutex_lock (m), ace_result_), int, -1);
#elif defined (ACE_HAS_STHREADS)
ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::mutex_lock (m), ace_result_), int, -1);
#elif defined (ACE_HAS_WTHREADS)
@@ -1134,7 +1029,8 @@ ACE_OS::mutex_trylock (ACE_mutex_t *m)
// ACE_TRACE ("ACE_OS::mutex_trylock");
#if defined (ACE_HAS_THREADS)
#if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS)
- ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_mutex_trylock (m), ace_result_), int, -1);
+ // Note, don't use "::" here since the following call is often a macro.
+ ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_mutex_trylock (m), ace_result_), int, -1);
#elif defined (ACE_HAS_STHREADS)
ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::mutex_trylock (m), ace_result_), int, -1);
#elif defined (ACE_HAS_WTHREADS)
@@ -1189,7 +1085,8 @@ ACE_OS::mutex_unlock (ACE_mutex_t *m)
// ACE_TRACE ("ACE_OS::mutex_unlock");
#if defined (ACE_HAS_THREADS)
#if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS)
- ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_mutex_unlock (m), ace_result_), int, -1);
+ // Note, don't use "::" here since the following call is often a macro.
+ ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_mutex_unlock (m), ace_result_), int, -1);
#elif defined (ACE_HAS_STHREADS)
ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::mutex_unlock (m), ace_result_), int, -1);
#elif defined (ACE_HAS_WTHREADS)
@@ -3589,7 +3486,8 @@ ACE_OS::thr_getspecific (ACE_thread_key_t key, void **data)
ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_getspecific (key, data), ace_result_), int, -1);
#elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS)
#if !defined (ACE_HAS_FSU_PTHREADS) && !defined (ACE_HAS_SETKIND_NP) && !defined (ACE_HAS_PTHREAD_GETSPECIFIC_DATAPTR)
- *data = ::pthread_getspecific (key);
+ // Note, don't use "::" here since the following call is often a macro.
+ *data = pthread_getspecific (key);
#elif !defined (ACE_HAS_FSU_PTHREADS) && defined (ACE_HAS_SETKIND_NP) || defined (ACE_HAS_PTHREAD_GETSPECIFIC_DATAPTR)
::pthread_getspecific (key, data);
#else /* ACE_HAS_FSU_PTHREADS */
@@ -4017,7 +3915,8 @@ ACE_OS::thr_self (ACE_hthread_t &self)
// ACE_TRACE ("ACE_OS::thr_self");
#if defined (ACE_HAS_THREADS)
#if defined (ACE_HAS_DCETHREADS)
- self = ::pthread_self ();
+ // Note, don't use "::" here since the following call is often a macro.
+ self = pthread_self ();
#elif defined (ACE_HAS_THREAD_SELF)
self = ::thread_self ();
#elif defined (ACE_HAS_PTHREADS) || defined (ACE_HAS_SETKIND_NP)
@@ -4040,7 +3939,8 @@ ACE_OS::thr_self (void)
// ACE_TRACE ("ACE_OS::thr_self");
#if defined (ACE_HAS_THREADS)
#if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS)
- ACE_OSCALL_RETURN (::pthread_self (), int, -1);
+ // Note, don't use "::" here since the following call is often a macro.
+ ACE_OSCALL_RETURN (pthread_self (), int, -1);
#elif defined (ACE_HAS_STHREADS)
ACE_OSCALL_RETURN (::thr_self (), int, -1);
#elif defined (ACE_HAS_WTHREADS)
@@ -5540,7 +5440,7 @@ ACE_OS::flock_wrlock (ACE_OS::ace_flock_t *lock, short whence, off_t start, off_
len = ::GetFileSize (lock->handle_, NULL);
ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::LockFileEx (lock->handle_, LOCKFILE_EXCLUSIVE_LOCK, 0, len, 0, &lock->overlapped_),
ace_result_), int, -1);
-#elif defined (VXWORKS)
+#elif defined (ACE_LACKS_FILELOCKS)
ACE_NOTSUP_RETURN (-1);
#else
lock->lock_.l_whence = whence;
@@ -5563,7 +5463,7 @@ ACE_OS::flock_rdlock (ACE_OS::ace_flock_t *lock, short whence, off_t start, off_
len = ::GetFileSize (lock->handle_, NULL);
ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::LockFileEx (lock->handle_, 0, 0, len, 0, &lock->overlapped_),
ace_result_), int, -1);
-#elif defined (VXWORKS)
+#elif defined (ACE_LACKS_FILELOCKS)
ACE_NOTSUP_RETURN (-1);
#else
lock->lock_.l_whence = whence;
@@ -5586,7 +5486,7 @@ ACE_OS::flock_trywrlock (ACE_OS::ace_flock_t *lock, short whence, off_t start, o
len = ::GetFileSize (lock->handle_, NULL);
ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::LockFileEx (lock->handle_, LOCKFILE_FAIL_IMMEDIATELY | LOCKFILE_EXCLUSIVE_LOCK, 0, len, 0, &lock->overlapped_),
ace_result_), int, -1);
-#elif defined (VXWORKS)
+#elif defined (ACE_LACKS_FILELOCKS)
ACE_NOTSUP_RETURN (-1);
#else
lock->lock_.l_whence = whence;
@@ -5610,7 +5510,7 @@ ACE_OS::flock_tryrdlock (ACE_OS::ace_flock_t *lock, short whence, off_t start, o
len = ::GetFileSize (lock->handle_, NULL);
ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::LockFileEx (lock->handle_, LOCKFILE_FAIL_IMMEDIATELY, 0, len, 0, &lock->overlapped_),
ace_result_), int, -1);
-#elif defined (VXWORKS)
+#elif defined (ACE_LACKS_FILELOCKS)
ACE_NOTSUP_RETURN (-1);
#else
lock->lock_.l_whence = whence;
@@ -5634,7 +5534,7 @@ ACE_OS::flock_unlock (ACE_OS::ace_flock_t *lock, short whence, off_t start, off_
len = ::GetFileSize (lock->handle_, NULL);
ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::UnlockFileEx (lock->handle_, 0, len, 0, &lock->overlapped_),
ace_result_), int, -1);
-#elif defined (VXWORKS)
+#elif defined (ACE_LACKS_FILELOCKS)
ACE_NOTSUP_RETURN (-1);
#else
lock->lock_.l_whence = whence;
@@ -5664,7 +5564,7 @@ ACE_INLINE int
ACE_OS::execv (const char *path, char *const argv[])
{
// ACE_TRACE ("ACE_OS::execv");
-#if defined (ACE_WIN32) || defined (VXWORKS)
+#if defined (ACE_LACKS_EXEC)
ACE_UNUSED_ARG (path);
ACE_UNUSED_ARG (argv);
@@ -5678,7 +5578,7 @@ ACE_INLINE int
ACE_OS::execve (const char *path, char *const argv[], char *const envp[])
{
// ACE_TRACE ("ACE_OS::execve");
-#if defined (ACE_WIN32) || defined (VXWORKS)
+#if defined (ACE_LACKS_EXEC)
ACE_UNUSED_ARG (path);
ACE_UNUSED_ARG (argv);
ACE_UNUSED_ARG (envp);
@@ -5693,7 +5593,7 @@ ACE_INLINE int
ACE_OS::execvp (const char *file, char *const argv[])
{
// ACE_TRACE ("ACE_OS::execvp");
-#if defined (ACE_WIN32) || defined (VXWORKS)
+#if defined (ACE_LACKS_EXEC)
ACE_UNUSED_ARG (file);
ACE_UNUSED_ARG (argv);
@@ -5914,7 +5814,7 @@ ACE_INLINE pid_t
ACE_OS::fork (void)
{
// ACE_TRACE ("ACE_OS::fork");
-#if defined (ACE_WIN32) || defined (VXWORKS)
+#if defined (ACE_LACKS_EXEC)
ACE_NOTSUP_RETURN (pid_t (-1));
#else
ACE_OSCALL_RETURN (::fork (), pid_t, -1);
@@ -5927,7 +5827,7 @@ ACE_OS::getpid (void)
// ACE_TRACE ("ACE_OS::getpid");
#if defined (ACE_WIN32)
return ::GetCurrentProcessId();
-#elif defined (VXWORKS)
+#elif defined (VXWORKS) || defined (CHORUS)
// getpid() is not supported: just one process anyways
return 0;
#else
@@ -6061,6 +5961,8 @@ ACE_OS::sigaction (int signum,
osa->sa_handler = ::signal (signum, nsa->sa_handler);
return osa->sa_handler == SIG_ERR ? -1 : 0;
+#elif defined (CHORUS)
+ ACE_NOTSUP_RETURN (-1);
#elif defined (ACE_LACKS_POSIX_PROTO)
ACE_OSCALL_RETURN (::sigaction (signum, (struct sigaction*) nsa, osa), int, -1);
#else
@@ -6489,3 +6391,82 @@ ACE_OS::thr_suspend (const ACE_Thread_ID &thr_id)
}
#endif /* 0 */
+
+ACE_INLINE int
+ACE_OS::sigaddset (sigset_t *s, int signum)
+{
+ // ACE_TRACE ("ACE_OS::sigaddset");
+#if !defined (ACE_LACKS_SIGSET)
+ ACE_OSCALL_RETURN (::sigaddset (s, signum), int, -1);
+#else
+ ACE_UNUSED_ARG (s);
+ ACE_UNUSED_ARG (signum);
+ ACE_NOTSUP_RETURN (-1);
+#endif /* !ACE_LACKS_SIGSET */
+}
+
+ACE_INLINE int
+ACE_OS::sigdelset (sigset_t *s, int signum)
+{
+#if !defined (ACE_LACKS_SIGSET)
+ ACE_OSCALL_RETURN (::sigdelset (s, signum), int, -1);
+#else
+ ACE_UNUSED_ARG (s);
+ ACE_UNUSED_ARG (signum);
+ ACE_NOTSUP_RETURN (-1);
+#endif /* !ACE_LACKS_SIGSET */
+}
+
+ACE_INLINE int
+ACE_OS::sigemptyset (sigset_t *s)
+{
+#if !defined (ACE_LACKS_SIGSET)
+ ACE_OSCALL_RETURN (::sigemptyset (s), int, -1);
+#else
+ ACE_UNUSED_ARG (s);
+ ACE_NOTSUP_RETURN (-1);
+#endif /* !ACE_LACKS_SIGSET */
+}
+
+ACE_INLINE int
+ACE_OS::sigfillset (sigset_t *s)
+{
+#if !defined (ACE_LACKS_SIGSET)
+ ACE_OSCALL_RETURN (::sigfillset (s), int, -1);
+#else
+ ACE_UNUSED_ARG (s);
+ ACE_NOTSUP_RETURN (0);
+ ACE_NOTSUP_RETURN (-1);
+#endif /* !ACE_LACKS_SIGSET */
+}
+
+ACE_INLINE int
+ACE_OS::sigismember (sigset_t *s, int signum)
+{
+#if !defined (ACE_LACKS_SIGSET)
+ ACE_OSCALL_RETURN (::sigismember (s, signum), int, -1);
+#else
+ ACE_UNUSED_ARG (s);
+ ACE_UNUSED_ARG (signum);
+ ACE_NOTSUP_RETURN (-1);
+#endif /* !ACE_LACKS_SIGSET */
+}
+
+ACE_INLINE int
+ACE_OS::sigprocmask (int how, const sigset_t *nsp, sigset_t *osp)
+{
+#if !defined (ACE_LACKS_SIGSET)
+#if defined (ACE_LACKS_POSIX_PROTO)
+ ACE_OSCALL_RETURN (::sigprocmask (how, (int*) nsp, osp), int, -1);
+#else
+ ACE_OSCALL_RETURN (::sigprocmask (how, nsp, osp), int, -1);
+#endif /* ACE_LACKS_POSIX_PROTO */
+#else
+ ACE_UNUSED_ARG (how);
+ ACE_UNUSED_ARG (nsp);
+ ACE_UNUSED_ARG (osp);
+ ACE_NOTSUP_RETURN (-1);
+#endif /* !ACE_LACKS_SIGSET */
+}
+
+
diff --git a/ace/README b/ace/README
index 2ab682799b7..d9547908216 100644
--- a/ace/README
+++ b/ace/README
@@ -149,10 +149,13 @@ ACE_HAS_YIELD_VOID_PTR Platform requires pthread_yield() to take a NULL.
ACE_LACKS_CONST_TIMESPEC_PTR Platform forgot const in cond_timewait (e.g., HP/UX).
ACE_LACKS_COND_T Platform lacks condition variables (e.g., Win32 and VxWorks)
ACE_LACKS_CONDATTR_PSHARED Platform has no implementation of pthread_condattr_setpshared(), even though it supports pthreads!
+ACE_LACKS_EXEC Platform lacks the exec() family of system calls (e.g., Win32, VxWorks, Chorus)
+ACE_LACKS_FILELOCKS Platform lacks file locking mechanism
ACE_LACKS_IOSTREAM_FX iostream header does not declare ipfx (), opfx (), etc.
ACE_LACKS_LINEBUFFERED_STREAMBUF Platform lacks streambuf "linebuffered ()".
ACE_LACKS_MADVISE Platform lacks madvise() (e.g., Linux)
ACE_LACKS_MALLOC_H Platform lacks malloc.h
+ACE_LACKS_MEMORY_H Platform lacks memory.h (e.g., VxWorks and Chorus)
ACE_LACKS_MKTEMP ACE has no mktemp()
ACE_LACKS_MMAP The platform doesn't have mmap(2) (e.g., SCO UNIX).
ACE_LACKS_MODE_MASKS Platform/compiler doesn't have open() mode masks.
@@ -172,7 +175,9 @@ ACE_LACKS_SBRK Platform lacks a working sbrk() (e.g., Win32 and VxWorks)
ACE_LACKS_SEMBUF_T Platform lacks struct sembuf (e.g., Win32 and VxWorks)
ACE_LACKS_SETDETACH Platform lacks pthread_attr_setdetachstate() (e.g., HP/UX 10.x)
ACE_LACKS_SETSCHED Platform lacks pthread_attr_setsched() (e.g. MVS)
+ACE_LACKS_SIGACTION Platform lacks struct sigaction (e.g., Win32 and Chorus)
ACE_LACKS_SIGNED_CHAR Platform lacks "signed char" type (broken!)
+ACE_LACKS_SIGSET Platform lacks signal sets (e.g., Chorus and Win32)
ACE_LACKS_SYS_NERR Platforms/compiler lacks the sys_nerr variable (e.g., VxWorks and MVS).
ACE_LACKS_KEYDELETE Platform lacks TSS keydelete (e.g., HP/UX)
ACE_LACKS_SENDMSG Platform lacks sendmsg() (e.g., Linux)
diff --git a/ace/SOCK_Dgram_Mcast.cpp b/ace/SOCK_Dgram_Mcast.cpp
index 559f65ab63f..9b6630f3ef9 100644
--- a/ace/SOCK_Dgram_Mcast.cpp
+++ b/ace/SOCK_Dgram_Mcast.cpp
@@ -48,7 +48,14 @@ ACE_SOCK_Dgram_Mcast::subscribe (const ACE_INET_Addr &mcast_addr,
&one,
sizeof one) == -1)
return -1;
-
+#if defined (SO_REUSEPORT)
+ if (this->ACE_SOCK::set_option (SOL_SOCKET,
+ SO_REUSEPORT,
+ &one,
+ sizeof one) == -1)
+ return -1;
+#endif /* SO_REUSEPORT */
+
// Create an address to bind the socket to.
ACE_INET_Addr local;
diff --git a/ace/Signal.cpp b/ace/Signal.cpp
index 794211522b6..2e4ec3d5d78 100644
--- a/ace/Signal.cpp
+++ b/ace/Signal.cpp
@@ -18,6 +18,9 @@ ace_sig_handler_dispatch (int signum, siginfo_t *info, ucontext_t *context)
ACE_Sig_Handler::dispatch (signum, info, context);
}
+static ACE_SignalHandler ace_signal_handler_dispatcher = ACE_SignalHandler (ace_sig_handler_dispatch);
+
+#if !defined (HPUX)
extern "C" void
ace_sig_handlers_dispatch (int signum, siginfo_t *info, ucontext_t *context)
{
@@ -25,8 +28,9 @@ ace_sig_handlers_dispatch (int signum, siginfo_t *info, ucontext_t *context)
ACE_Sig_Handlers::dispatch (signum, info, context);
}
-static ACE_SignalHandler ace_signal_handler_dispatcher = ACE_SignalHandler (ace_sig_handler_dispatch);
static ACE_SignalHandler ace_signal_handlers_dispatcher = ACE_SignalHandler (ace_sig_handlers_dispatch);
+#endif /* HPUX */
+
#else
static ACE_SignalHandler ace_signal_handler_dispatcher = ACE_SignalHandler (ACE_Sig_Handler::dispatch);
diff --git a/ace/Strategies_T.cpp b/ace/Strategies_T.cpp
index 85ea21ee970..9772ce6f0c9 100644
--- a/ace/Strategies_T.cpp
+++ b/ace/Strategies_T.cpp
@@ -343,13 +343,7 @@ template <class SVC_HANDLER>
ACE_Process_Strategy<SVC_HANDLER>::ACE_Process_Strategy (int n_processes)
{
ACE_TRACE ("ACE_Process_Strategy<SVC_HANDLER>::ACE_Process_Strategy");
- this->open (thr_mgr, thr_flags, n_threads);
-}
-
-template <class SVC_HANDLER>
-ACE_Process_Strategy<SVC_HANDLER>::ACE_Process_Strategy (void)
-{
- ACE_TRACE ("ACE_Process_Strategy<SVC_HANDLER>::ACE_Process_Strategy");
+ this->open (n_processes);
}
template <class SVC_HANDLER>
diff --git a/ace/Strategies_T.h b/ace/Strategies_T.h
index 3834a980eda..2f130f263aa 100644
--- a/ace/Strategies_T.h
+++ b/ace/Strategies_T.h
@@ -250,8 +250,6 @@ class ACE_Process_Strategy : public ACE_Concurrency_Strategy<SVC_HANDLER>
{
public:
// = Intialization and termination methods.
- ACE_Process_Strategy (void);
- // "Do-nothing constructor"
ACE_Process_Strategy (int n_processes = 1);
// Initialize the strategy.
diff --git a/ace/Stream_Modules.cpp b/ace/Stream_Modules.cpp
index 9bbea1b0ae2..7842eb55944 100644
--- a/ace/Stream_Modules.cpp
+++ b/ace/Stream_Modules.cpp
@@ -288,7 +288,7 @@ ACE_Stream_Tail<ACE_SYNCH_2>::fini (void)
return 0;
}
-ACE_ALLOC_HOOK_DEFINE(ACE_Thru_Task)
+// ACE_ALLOC_HOOK_DEFINE(ACE_Thru_Task)
template <ACE_SYNCH_1>
ACE_Thru_Task<ACE_SYNCH_2>::ACE_Thru_Task (void)
diff --git a/ace/Stream_Modules.h b/ace/Stream_Modules.h
index 26e3151ae1a..7bb102b82cb 100644
--- a/ace/Stream_Modules.h
+++ b/ace/Stream_Modules.h
@@ -116,7 +116,7 @@ public:
void dump (void) const;
// Dump the state of an object.
- ACE_ALLOC_HOOK_DECLARE;
+ // ACE_ALLOC_HOOK_DECLARE;
// Declare the dynamic allocation hooks.
};
diff --git a/ace/Task_T.cpp b/ace/Task_T.cpp
index 489ec46371b..b7df72d00c5 100644
--- a/ace/Task_T.cpp
+++ b/ace/Task_T.cpp
@@ -6,7 +6,6 @@
#define ACE_BUILD_DLL
#include "ace/Task_T.h"
-#include "ace/Module.h"
#include "ace/Service_Config.h"
#if !defined (__ACE_INLINE__)
diff --git a/ace/config-chorus.h b/ace/config-chorus.h
new file mode 100644
index 00000000000..50d517cce74
--- /dev/null
+++ b/ace/config-chorus.h
@@ -0,0 +1,94 @@
+/* -*- C++ -*- */
+// $Id:
+
+// The following configuration file is designed to work for chorus
+// platforms using GNU C++ and the MIT threads package.
+
+#if !defined (ACE_CONFIG_H)
+#define ACE_CONFIG_H
+
+#if !defined (__ACE_INLINE__)
+#define __ACE_INLINE__
+#endif /* ! __ACE_INLINE__ */
+
+#if defined (__ACE_INLINE__)
+#define ACE_HAS_INLINED_OSCALLS
+#endif /* __ACE_INLINE__ */
+
+#define CHORUS 3.1b
+#if defined (linux)
+#undef linux
+#endif
+
+#define ACE_LACKS_EXEC
+#define ACE_LACKS_SIGACTION
+#define ACE_LACKS_SIGSET
+#define ACE_LACKS_FILELOCKS
+
+// got struct timespec
+#define ACE_HAS_POSIX_TIME
+#define ACE_LACKS_STRRECVFD
+
+#define ACE_HAS_CPLUSPLUS_HEADERS
+
+// Platform supports System V IPC (most versions of UNIX, but not Win32)
+#define ACE_HAS_SYSV_IPC
+#define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
+
+#define ACE_NEEDS_WRITEV
+#define ACE_NEEDS_READV
+
+// Platforms lacks UNIX domain sockets.
+#define ACE_LACKS_UNIX_DOMAIN_SOCKETS
+#define ACE_LACKS_UTSNAME_T
+#define ACE_LACKS_SETSCHED
+
+#define ACE_LACKS_MSYNC
+#define ACE_LACKS_MADVISE
+#define ACE_LACKS_MALLOC_T
+#define ACE_LACKS_MEMORY_H
+#define ACE_LACKS_PARAM_H
+
+// Compiler/platform supports sys_siglist array.
+//#define ACE_HAS_SYS_SIGLIST
+
+// Compiler supports the ssize_t typedef.
+#define ACE_HAS_SSIZE_T
+
+// Compiler/platform supports strerror ().
+#define ACE_HAS_STRERROR
+
+// Defines the page size of the system.
+#define ACE_PAGE_SIZE 4096
+
+
+// Turns off the tracing feature.
+#if !defined (ACE_NTRACE)
+#define ACE_NTRACE 1
+#endif /* ACE_NTRACE */
+
+// Chorus defines struct msghdr in posix/sys/socket.h
+#define ACE_HAS_MSG
+
+// TDN - adapted from file for SunOS4 platforms using the GNU g++ compiler
+// Compiler's template mechanism must see source code (i.e., .C files).
+#define ACE_TEMPLATES_REQUIRE_SOURCE
+
+#define ACE_TEMPLATES_REQUIRE_SPECIALIZATION
+
+// Compiler doesn't support static data member templates.
+#define ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES
+
+// Yes, we do have threads.
+#define ACE_HAS_THREADS
+#define ACE_HAS_POSIX_SEM
+#define ACE_HAS_THREAD_SPECIFIC_STORAGE
+#define ACE_MT_SAFE
+// And they're even POSIX pthreads
+#define ACE_HAS_PTHREADS
+#define ACE_LACKS_RWLOCK_T
+#define ACE_HAS_SIGWAIT
+#define ACE_LACKS_CONDATTR_PSHARED
+#define ACE_LACKS_SEMBUF_T
+
+#endif /* ACE_CONFIG_H */
diff --git a/ace/config-hpux-10.x-aCC.h b/ace/config-hpux-10.x-aCC.h
new file mode 100644
index 00000000000..540d31882a6
--- /dev/null
+++ b/ace/config-hpux-10.x-aCC.h
@@ -0,0 +1,122 @@
+/* -*- C++ -*- */
+// $Id$
+
+// The following configuration file is designed to work for HP
+// platforms running HP/UX 10.x. For using HP C++ compiler with
+// templates you should have patch PHSS_6246.
+
+#if !defined (ACE_CONFIG_H)
+#define ACE_CONFIG_H
+
+// Compiling for HPUX.
+#if !defined (HPUX)
+#define HPUX
+#endif /* HPUX */
+
+#define _HPUX_SOURCE
+#include /**/ <sys/stdsyms.h>
+#include /**/ <sched.h> /* pthread.h doesn't include this */
+
+#define ACE_HAS_BROKEN_CONVERSIONS
+
+// They forgot a const in the prototype of const_timewait...
+#define ACE_LACKS_CONST_TIMESPEC_PTR
+
+#define ACE_HAS_TYPENAME_KEYWORD
+#define ACE_HAS_TEMPLATE_TYPEDEFS
+#define ACE_TEMPLATES_REQUIRE_SOURCE
+
+#define ACE_LACKS_SYSCALL
+#define ACE_HAS_POSIX_TIME
+
+// Platform supports System V IPC (most versions of UNIX, but not Win32)
+#define ACE_HAS_SYSV_IPC
+
+// Platform supports recvmsg and sendmsg.
+#define ACE_HAS_MSG
+
+// Compiler/platform contains the <sys/syscall.h> file.
+#define ACE_HAS_SYSCALL_H
+
+// Fixes a problem with HP/UX not wrapping the mmap(2) header files
+// with extern "C".
+#define ACE_HAS_BROKEN_MMAP_H
+
+// Prototypes for both signal() and struct sigaction are consistent.
+#define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
+
+// Compiler/platform has correctly prototyped header files.
+#define ACE_HAS_CPLUSPLUS_HEADERS
+
+// Header files lack t_errno for ACE_TLI.
+#define ACE_LACKS_T_ERRNO
+
+// Compiler/platform supports poll().
+#define ACE_HAS_POLL
+
+// Platform supports POSIX O_NONBLOCK semantics.
+#define ACE_HAS_POSIX_NONBLOCK
+
+// Compiler/platform defines the sig_atomic_t typedef
+#define ACE_HAS_SIG_ATOMIC_T
+
+// #define ACE_HAS_THREADS
+// #define ACE_HAS_PTHREADS
+// #define ACE_MT_SAFE
+#define ACE_HAS_SIGINFO_T
+#define ACE_HAS_UCONTEXT_T
+#define ACE_LACKS_PTHREAD_THR_SIGSETMASK
+#define ACE_HAS_SETKIND_NP
+#define ACE_LACKS_CONDATTR_PSHARED
+#define ACE_LACKS_SI_ADDR
+#define ACE_LACKS_SETDETACH /* new */
+#define ACE_LACKS_KEYDELETE /* new */
+#define ACE_LACKS_THREAD_PROCESS_SCOPING
+#define ACE_LACKS_THREAD_STACK_ADDR
+
+// Compiler/platform has thread-specific storage
+// #define ACE_HAS_THREAD_SPECIFIC_STORAGE
+
+// Compiler/platform supports struct strbuf.
+#define ACE_HAS_STRBUF_T
+#include /**/ <stropts.h> /* for struct strbuf */
+
+// Compiler supports the ssize_t typedef.
+#define ACE_HAS_SSIZE_T
+
+// Defines the page size of the system.
+#define ACE_PAGE_SIZE 4096
+
+// Compiler/platform supports strerror ().
+#define ACE_HAS_STRERROR
+
+// ???
+#define ACE_HAS_SUNOS4_GETTIMEOFDAY
+
+// HP/UX has an undefined syscall for GETRUSAGE...
+#define ACE_HAS_SYSCALL_GETRUSAGE
+
+// Note, this only works if the flag is set above!
+#define ACE_HAS_GETRUSAGE
+
+// Platform uses int for select() rather than fd_set.
+// #define ACE_SELECT_USES_INT
+
+// Platform has the XLI version of ACE_TLI.
+// #define ACE_HAS_XLI
+
+// Platform supports ACE_TLI tiuser header.
+#define ACE_HAS_TIUSER_H
+
+// Platform provides ACE_TLI function prototypes.
+#define ACE_HAS_TLI_PROTOTYPES
+
+// Platform supports ACE_TLI.
+#define ACE_HAS_TLI
+
+// Turns off the tracing feature.
+#if !defined (ACE_NTRACE)
+#define ACE_NTRACE 1
+#endif /* ACE_NTRACE */
+
+#endif /* ACE_CONFIG_H */
diff --git a/ace/config-hpux-10.x-g++.h b/ace/config-hpux-10.x-g++.h
index 01ea21616ad..ab34959076d 100644
--- a/ace/config-hpux-10.x-g++.h
+++ b/ace/config-hpux-10.x-g++.h
@@ -81,8 +81,11 @@
// Note, this only works if the flag is set above!
#define ACE_HAS_GETRUSAGE
+#define ACE_HAS_SIGINFO_T
+#define ACE_HAS_UCONTEXT_T
+
// Platform uses int for select() rather than fd_set.
-#define ACE_SELECT_USES_INT
+// #define ACE_SELECT_USES_INT
// Platform has the XLI version of ACE_TLI.
// #define ACE_HAS_XLI
diff --git a/ace/config-hpux-10.x.h b/ace/config-hpux-10.x.h
index 9b4307720a7..78ac070cf20 100644
--- a/ace/config-hpux-10.x.h
+++ b/ace/config-hpux-10.x.h
@@ -23,6 +23,7 @@
#define ACE_LACKS_CONST_TIMESPEC_PTR
#define ACE_LACKS_SYSCALL
+#define ACE_LACKS_STRRECVFD
#define ACE_HAS_POSIX_TIME
// Platform supports System V IPC (most versions of UNIX, but not Win32)
@@ -94,8 +95,11 @@
// Note, this only works if the flag is set above!
#define ACE_HAS_GETRUSAGE
+#define ACE_HAS_SIGINFO_T
+#define ACE_HAS_UCONTEXT_T
+
// Platform uses int for select() rather than fd_set.
-#define ACE_SELECT_USES_INT
+// #define ACE_SELECT_USES_INT
// Platform has the XLI version of ACE_TLI.
// #define ACE_HAS_XLI
diff --git a/ace/config-vxworks-ghs-1.8.h b/ace/config-vxworks-ghs-1.8.h
index c85c1bfa56b..679ed67954a 100644
--- a/ace/config-vxworks-ghs-1.8.h
+++ b/ace/config-vxworks-ghs-1.8.h
@@ -11,6 +11,9 @@
#define __ACE_INLINE__
#endif /* ! __ACE_INLINE__ */
+#define ACE_LACKS_EXEC
+#define ACE_LACKS_MEMORY_H
+#define ACE_LACKS_FILELOCKS
#define ACE_LACKS_STRCASECMP
#define ACE_LACKS_SYS_NERR
#define ACE_LACKS_COND_T
diff --git a/ace/config-vxworks5.2-g++.h b/ace/config-vxworks5.2-g++.h
index 9fab6c5f906..394f868a873 100644
--- a/ace/config-vxworks5.2-g++.h
+++ b/ace/config-vxworks5.2-g++.h
@@ -11,7 +11,10 @@
#define __ACE_INLINE__
#endif /* ! __ACE_INLINE__ */
+#define ACE_LACKS_EXEC
#define ACE_LACKS_STRCASECMP
+#define ACE_LACKS_FILELOCKS
+#define ACE_LACKS_MEMORY_H
#define ACE_LACKS_SYS_NERR
#define ACE_LACKS_COND_T
#define ACE_LACKS_RWLOCK_T
diff --git a/ace/config-win32-msvc2.0.h b/ace/config-win32-msvc2.0.h
index 2fcb17091a2..3a399254928 100644
--- a/ace/config-win32-msvc2.0.h
+++ b/ace/config-win32-msvc2.0.h
@@ -9,6 +9,9 @@
#define ACE_CONFIG_H
#define ACE_HAS_EXCEPTIONS
+#define ACE_LACKS_SIGACTION
+#define ACE_LACKS_SIGSET
+#define ACE_LACKS_EXEC
// We are using STL's min and max (in algobase.h). Therefore the
// macros in window.h are extra
diff --git a/ace/config-win32-msvc4.x.h b/ace/config-win32-msvc4.x.h
index c7e1efc3bcf..092e0a11a3f 100644
--- a/ace/config-win32-msvc4.x.h
+++ b/ace/config-win32-msvc4.x.h
@@ -10,6 +10,9 @@
#define ACE_HAS_EXCEPTIONS
#define ACE_HAS_MFC
+#define ACE_LACKS_SIGACTION
+#define ACE_LACKS_SIGSET
+#define ACE_LACKS_EXEC
// We are using STL's min and max (in algobase.h). Therefore the
// macros in window.h are extra
diff --git a/ace/config-winnt-4.0-msvc4.x.h b/ace/config-winnt-4.0-msvc4.x.h
index 9b03e2c3827..a4b4aa3c967 100644
--- a/ace/config-winnt-4.0-msvc4.x.h
+++ b/ace/config-winnt-4.0-msvc4.x.h
@@ -8,7 +8,10 @@
#define ACE_CONFIG_H
#define ACE_HAS_EXCEPTIONS
+#define ACE_LACKS_SIGACTION
#define ACE_HAS_MFC
+#define ACE_LACKS_SIGSET
+#define ACE_LACKS_EXEC
// We are using STL's min and max (in algobase.h). Therefore the
// macros in window.h are extra
diff --git a/examples/Reactor/Misc/test_demuxing.cpp b/examples/Reactor/Misc/test_demuxing.cpp
index 99813ae3076..5b2527cf5b2 100644
--- a/examples/Reactor/Misc/test_demuxing.cpp
+++ b/examples/Reactor/Misc/test_demuxing.cpp
@@ -200,7 +200,7 @@ STDIN_Handler::handle_input (ACE_HANDLE handle)
return 0;
}
-class Message_Handler : public ACE_Task <ACE_MT_SYNCH>
+class Message_Handler : public ACE_Task <ACE_SYNCH>
{
public:
Message_Handler (void);
diff --git a/include/makeinclude/platform_chorus.GNU b/include/makeinclude/platform_chorus.GNU
new file mode 100644
index 00000000000..31a4940a4ed
--- /dev/null
+++ b/include/makeinclude/platform_chorus.GNU
@@ -0,0 +1,42 @@
+# Chorus 3.1b with GNU g++ 2.7.2
+# *not* using Orbix
+#
+# Note: Change CLASSIXDIR to an appropriate directory
+
+CLASSIXDIR = /usr/home/chiang/chorus/merge/extended-i386at
+INC_DIR = $(CLASSIXDIR)/include
+BIN_DIR =
+LIB_DIR = $(CLASSIXDIR)/lib
+
+CC = gcc -w
+CXX = g++
+
+CFLAGS += -w
+CCFLAGS += -w -fno-strict-prototypes \
+ -D_POSIX_THREADS \
+ -D_POSIX_THREAD_SAFE_FUNCTIONS
+
+INCLDIRS += -I$(INC_DIR)/posix \
+ -I$(INC_DIR)/stdc \
+ -I$(INC_DIR)/chorus/ \
+ -I$(INC_DIR)/chorus/iom \
+ -I$(INC_DIR)/CC
+
+DLD =
+LD = $(CXX)
+LDFLAGS += -r -Ur -nostdlib \
+ -L$(LIB_DIR)/CC \
+ -L$(LIB_DIR)/classix
+
+LIBS += -lC -lcx.u
+PIC = -fPIC
+AR = ar
+ARFLAGS = rv
+RANLIB = /bin/true
+PRELIB = (echo "main() { }" > gcctemp.c && \
+ $(COMPILE.cc) -o gcctemp.o gcctemp.c && \
+ $(LD) $^ $(LDFLAGS) $(LIBS); \
+ status=$$?; rm -f gcctemp.* a.out; exit $$status)
+
+#### don't build shared objects:
+BUILD = $(VOBJS) $(VLIB) $(VBIN)
diff --git a/include/makeinclude/platform_hpux.GNU b/include/makeinclude/platform_hpux.GNU
index 74b53c5d86b..e27510dca06 100644
--- a/include/makeinclude/platform_hpux.GNU
+++ b/include/makeinclude/platform_hpux.GNU
@@ -1,14 +1,16 @@
-CC = /bin/cc
-CXX = /usr/bin/CC
+CC = /bin/cc -Aa -z
+CXX = /usr/bin/CC -Aa -pta -ptb -z
DLD = $(CXX)
LD = $(CXX)
-PIC =
+PIC = +Z
ARFLAGS = ruv
RANLIB = echo
-CFLAGS = -Aa -z +z $(DCFLAGS)
+CFLAGS = $(DCFLAGS)
LDFLAGS = -L$(WRAPPER_ROOT)/ace -Wl,+s
-CCFLAGS = -Aa -z +z -pta -ptb
+LIBS += -lxti
+CCFLAGS =
SOFLAGS = -b
+SOEXT = sl
SOBUILD = @echo ""; \
echo "$(COMPILE.cc) $(PIC) -o $(VSHDIR)$*.o $<"; \
$(COMPILE.cc) $(PIC) -o $(VSHDIR)$*.o $<; \
diff --git a/include/makeinclude/rules.lib.GNU b/include/makeinclude/rules.lib.GNU
index 320ede89975..1823816f81a 100644
--- a/include/makeinclude/rules.lib.GNU
+++ b/include/makeinclude/rules.lib.GNU
@@ -10,7 +10,11 @@
# The following targets arrange to build both unshared and shared libraries
#----------------------------------------------------------------------------
-VSHLIB = $(SHLIB:%.so=%$(VAR).so)
+ifndef SOEXT
+SOEXT=so
+endif
+
+VSHLIB = $(SHLIB:%.$(SOEXT)=%$(VAR).$(SOEXT))
VOBJS = $(LSRC:%.cpp=$(VDIR)%.o)
ifdef TEMPINCDIR
@@ -30,7 +34,7 @@ endif
# $(DEFS:%=$(INSINC)/%) \
INSTALL = $(VLIB:%.a=$(INSLIB)/%.a) \
- $(VSHLIB:%.so=$(INSLIB)/%.so)
+ $(VSHLIB:%.$(SOEXT)=$(INSLIB)/%.$(SOEXT))
ifdef PRELIB
# Unfortunately, gcc has to do a link of all of the objects (during which
@@ -107,8 +111,12 @@ $(VSHLIB): $(VSHOBJS) $(STATLIB)
ifdef PRELIB
$(PRELIB)
endif
- $(SOLINK.cc) -o $@ $(VSHOBJS1) $(LDFLAGS) $(LIBS) $(STATLIB)
- -chmod a+rx $@
+ifdef SHLIBBUILD
+ $(SHLIBBUILD)
+else
+ $(SOLINK.cc) -o $@ $(VSHOBJS1) $(LDFLAGS) $(LIBS) $(STATLIB)
+ -chmod a+rx $@
+endif
ifdef SHLIBA
$(SHLIBA): $(VSHLIB)
diff --git a/netsvcs/lib/Makefile b/netsvcs/lib/Makefile
index aa9c35dbd8d..3b3c2822cb1 100644
--- a/netsvcs/lib/Makefile
+++ b/netsvcs/lib/Makefile
@@ -5,7 +5,7 @@
#----------------------------------------------------------------------------
#LIB = libnetsvcs.a
-SHLIB = libnetsvcs.so
+SHLIB = libnetsvcs.$(SOEXT)
FILES = TS_Server_Handler \
TS_Clerk_Handler \