1 // $Id: README 82276 2008-07-09 17:35:49Z jtc $
6 The following describes the meaning of the C++ compiler macros that
7 can be set in the config*.h file. When you port ACE to a new platform
8 and/or C++ compiler, make sure that you check to see which of these
9 need to be defined. It's helpful to check the various config*.h files
10 in this directory to see what's already been defined. If you need to
11 add new macros, please send them to me and I'll add them to this file.
13 Eventually, most of this information should be auto-discovered via GNU
14 autoconf, which is currently available in the ACE distribution.
19 ACE_HAS_DUMP Used to enable the dump()
21 defined, the bodies are ifdef
22 out in order to reduce
23 footprint. By default, it is
25 ACE_CAST_CONST Used to work around broken
26 SunCC ANSI casts that require
28 ACE_DEFINES_DEFAULT_WIN32_SECURITY_ATTRIBUTES
29 Win32 only. Users want to use
32 ACE_OS::default_win32_security_attributes
33 as the default security
35 ACE_DISABLE_DEBUG_DLL_CHECK Define this if you don't want
36 debug version ACE search for
37 debug version DLLs first
38 before looking for the DLL
40 ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER
41 Application will allocate its
42 own object manager. This
44 ACE_HAS_NONSTATIC_OBJECT_MANAGER.
47 ACE_GETNAME_RETURNS_RANDOM_SIN_ZERO Platform does not initialize
48 sockaddr_in::sin_zero field in
49 calls to getpeername() and
50 getsockname(). As a result,
51 memcmp()-based equality
52 comparison can fail despite
53 the fact two sockaddr_in
54 instances refer to the same
56 ACE_MAIN Renames "main (int, char *[])",
57 for platforms such as g++/VxWorks
58 that don't allow "main". Requires
60 ACE_HAS_NONSTATIC_OBJECT_MANAGER.
61 ACE_MKDIR_LACKS_MODE This platform has a mkdir function with
63 ACE_MT_SAFE Compile using multi-thread libraries
64 ACE_NDEBUG Turns off debugging features
65 ACE_NEW_THROWS_EXCEPTIONS Compiler's 'new' throws exception on
66 failure (ANSI C++ behavior).
67 ACE_NLOGGING Turns off the LM_DEBUG and
68 LM_ERROR logging macros...
69 ACE_NTRACE Turns off the tracing feature when = 1.
70 ACE_HAS_TRACE Defined when ACE_NTRACE=0 to
71 help support tracing. Can
72 also be defined by users who
73 implement their own tracing
75 ACE_TRACE_IMPL. Not defining
76 it helps reduce footprint by
77 not requiring applications to
79 ACE_PAGE_SIZE Defines the page size of the
80 system (not used on Win32 or
81 with ACE_HAS_GETPAGESIZE).
82 ACE_REDEFINES_XTI_FUNCTIONS Platform redefines the t_... names (UnixWare)
83 ACE_TEMPLATES_REQUIRE_PRAGMA Compiler's template mechanism
84 must use a pragma This is used
85 for AIX's C++ compiler.
86 ACE_TEMPLATES_REQUIRE_SOURCE Compiler's template mechanim
87 must see source code (i.e.,
88 .cpp files). This is used for
90 ACE_TIMEPROBE_ASSERTS_FIXED_SIZE If enabled then ACE_Timeprobe_Ex<>::timeprobe()
91 will assert if the end of the
92 buffer is reached. If disabled, the
93 counter wraps around to start
94 at the beginning of the buffer.
95 ACE_TIMER_SKEW If a timed ::select () can return
96 early, then ACE_TIMER_SKEW is the
97 maximum adjustment, in microseconds,
98 that ACE_Timer_Queue uses to
99 compensate for the early return.
100 ACE_TLI_TCP_DEVICE Device the platform uses for TCP on
101 TLI. Only needed if not /dev/tcp.
102 ACE_USE_POLL The OS platform supports the
103 poll() event demultiplexor
104 ACE_USES_ASM_SYMBOL_IN_DLSYM Platform uses assembly symbols
105 instead of C symbols in
107 ACE_USES_STATIC_MFC When linking MFC as a static library is desired
108 ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB Platform has its standard c++
109 library in the namespace std.
110 ACE_USES_EXPLICIT_STD_NAMESPACE Set this when ::fclose doesn't
112 explicitly specify the std
113 namespace. This is needed
114 with the Borland 6 and earlier
116 ACE_USES_GPROF ACE calls getitimer before spawning
117 a new thread and setitimer
118 after spawning the thread in
119 order to overcome the problems
120 of gprof with multithreaded
121 applications. It uses the idea from
122 http://sam.zoy.org/writings/programming/gprof.html
123 ACE_USES_FIFO_SEM Directs ACE to use FIFO based semaphores on
124 platforms that support this (not having full
125 POSIX semaphore support, supporting mkfifo, select
127 ACE_WSOCK_VERSION A parameter list indicating
128 the version of WinSock (e.g.,
129 "1, 1" is version 1.1).
130 ACE_HAS_AIO_CALLS Platform supports POSIX aio* calls.
131 Corresponds to _POSIX_ASYNCHRONOUS_IO
132 constant in <unistd.h>.
133 ACE_HAS_ALT_CUSERID Use ACE's alternate cuserid()
134 implementation since a system
135 cuserid() may not exist, or it
136 is not desirable to use it.
137 The implementation requires
138 ACE_LACKS_PWD_FUNCTIONS to be
139 undefined and that the
140 geteuid() system call exists.
141 ACE_HAS_DINKUM_STL Using the Dinkum STL library
142 ACE_HAS_HEADER_ALLOCATED_CLASS_STATIC_CONST_INT_STOREAGE
143 Non-C++ Complient compilers that automatically
144 provide storeage for class static const int
145 when their declaration is seen. I.e. they object
146 to explicit definitions being seen in the .cpp
148 ACE_DEFAULT_THREAD_KEYS Number of TSS keys, with
149 ACE_HAS_TSS_EMULATION _only_.
151 ACE_DEFAULT_THREAD_STACKSIZE Default stack size specified for the
152 ACE thread spawning methods. Defaults
153 to 0, which defers to OS defaults.
154 ACE_DEFAULT_LD_SEARCH_PATH Specify the platform default search
155 paths. This macro should only be
156 defined on platforms that don't
157 support environment variables at all
159 ACE_THREADS_DONT_INHERIT_LOG_MSG Specify this if you don't want
160 threads to inherit parent
163 ACE_THREAD_MANAGER_USES_SAFE_SPAWN Disable the "check before lock" feature
164 in ACE_Thread_Manager. Defining this
165 macro avoids a potential race condition
166 on platforms with aggressive read/write
168 ACE_HAS_CPU_SET_T Platform delivers cpu_set_t.
169 ACE_HAS_PRIOCNTL OS has priocntl (2).
170 ACE_HAS_RECURSIVE_MUTEXES Mutexes are inherently recursive
172 ACE_HAS_NONRECURSIVE_MUTEXES In addition to recursive mutexes,
173 platform has non-recursive ones also.
174 ACE_HAS_RECV_TIMEDWAIT Platform has the MIT pthreads
176 ACE_HAS_RECVFROM_TIMEDWAIT timed send/recv operations
177 ACE_HAS_RECVMSG_TIMEDWAIT
178 ACE_HAS_RLIMIT_RESOURCE_ENUM Platform has enum instead of
179 int for first argument to
180 ::{get,set}rlimit (). The
181 value of this macro is the
182 enum definition, e.g., enum
183 __rlimit_resource, for Linux
185 ACE_HAS_RUSAGE_WHO_ENUM Platform has enum instead of
186 int for first argument to
187 ::getrusage (). The value of
188 this macro is the enum
189 definition, e.g., enum
190 __rusage_who, for Linux glibc
192 ACE_HAS_SCANDIR Platform has a native scandir()
193 function. Without any other scandir-
194 related settings, it's assumed that
195 the selector and comparator functions
196 accept const ACE_DIRENT pointers.
197 ACE_SCANDIR_CMP_USES_VOIDPTR The OS's scandir() comparator function
198 is int (*compare)(void*, void*).
199 ACE_SCANDIR_CMP_USES_CONST_VOIDPTR The OS's scandir() comparator function
200 is int (*compare)(const void*,
202 ACE_SCANDIR_SEL_LACKS_CONST The OS's scandir() selector function
203 is int (*selector)(ACE_DIRENT*)
204 ACE_HAS_SEND_TIMEDWAIT
205 ACE_HAS_SENDTO_TIMEDWAIT
206 ACE_HAS_SENDMSG_TIMEDWAIT
207 ACE_HAS_STDARG_THR_DEST Platform has void (*)(...)
210 destructor (e.g., LynxOS).
211 ACE_HAS_STL_MAP_CONFLICT Used when users want to
212 compile ACE with STL and STL
213 map class conflicts with
214 <net/if.h> map struct.
215 ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS Platform/compiler supports
216 Win32 structural exceptions
217 ACE_HAS_READ_TIMEDWAIT
218 ACE_HAS_READV_TIMEDWAIT
219 ACE_HAS_WRITE_TIMEDWAIT
220 ACE_HAS_WRITEV_TIMEDWAIT
221 ACE_HAS_4_4BSD_SENDMSG_RECVMSG Platform has BSD 4.4
222 sendmsg()/recvmsg() APIs.
223 ACE_HAS_P_READ_WRITE Platform has pread() and
225 ACE_HAS_AIX_BROKEN_SOCKET_HEADER Platform, such as AIX4, needs
230 ACE_HAS_AIX_HI_RES_TIMER Platform has AIX4
232 ACE_HAS_ALLOCA Compiler/platform supports
234 ACE_HAS_ALLOCA_H Compiler/platform has
236 ACE_HAS_ALPHA_TIMER CPU is an Alpha, with the rpcc
237 instruction to read the tick timer.
238 Limited to 32 bits, so not recommended.
239 ACE_HAS_AUTOMATIC_INIT_FINI Compiler/platform correctly
240 calls init()/fini() for shared
242 ACE_HAS_BIG_FD_SET Compiler/platform has typedef
243 u_long fdmask (e.g., Linux and
245 ACE_HAS_WORKING_EXPLICIT_TEMPLATE_DESTRUCTOR
246 Compiler handles explicit calling of
247 template destructor correctly. See
248 "ace/OS.h" for details.
249 ACE_HAS_BROKEN_ACCEPT_ADDR Platform can't correctly deal
250 with a NULL addr to accept()
252 ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS Compiler can't handle const char *
253 as rvalue in conditional operator.
254 ACE_HAS_BROKEN_CTIME Compiler/platform uses macro
255 for ctime (e.g., MVS)
256 ACE_HAS_BROKEN_DGRAM_SENDV Platform sendv() does not work
257 properly with datagrams,
258 i.e. it fails when the iovec
260 ACE_HAS_BROKEN_MAP_FAILED Platform doesn't cast MAP_FAILED
262 ACE_HAS_BROKEN_MSG_H Platform headers don't support
264 ACE_HAS_BROKEN_MMAP_H HP/UX does not wrap the
265 mmap(2) header files with
267 ACE_HAS_BROKEN_NESTED_TEMPLATES MSVC has trouble with defining
268 STL containers for nested
270 ACE_HAS_BROKEN_POSIX_TIME Platform defines struct
271 timespec in <sys/timers.h>
272 ACE_HAS_BROKEN_RANDR OS/compiler's header files are
273 inconsistent with libC
274 definition of rand_r().
275 ACE_HAS_BROKEN_T_ERROR Compiler/platform has the wrong
276 prototype for t_error(), i.e.,
277 t_error(char *) rather than
278 t_error(const char *).
279 ACE_HAS_BSTRING Platform has <bstring.h>
280 (which contains bzero()
282 ACE_HAS_BYTESEX_H Platform has <bytesex.h>.
283 ACE_HAS_CANCEL_IO Platform supports the Win32
284 CancelIO() function (WinNT 4.0
286 ACE_HAS_CHARPTR_DL OS/platform uses char * for
287 dlopen/dlsym args, rather than
289 ACE_HAS_CHARPTR_SOCKOPT OS/platform uses char * for
290 sockopt, rather than const
292 ACE_HAS_CLOCK_GETTIME Platform supports POSIX.1b
293 clock_gettime () at least for clock-id CLOCK_REALTIME
294 ACE_HAS_CLOCK_GETTIME_MONOTONIC Platform supports POSIX.1b
295 clock_gettime () with the clock-id CLOCK_MONOTONIC
296 ACE_HAS_CLOCK_SETTIME Platform supports POSIX.1b
298 ACE_HAS_CONFLICTING_XTI_MACROS OS's XTI header file defines some
299 TCP-related macros that netinet/tcp.h
300 also defines, but they conflict
301 (only seen on HP-UX 11).
302 ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES Prototypes for both signal()
303 and struct sigaction are
305 ACE_HAS_CPLUSPLUS_HEADERS Compiler/platform has
306 correctly prototyped header
308 ACE_HAS_DIRENT Compiler/platform has Dirent
310 ACE_HAS_DLL Build ACE using the frigging
312 ACE_HAS_EBCDIC Compile in the ACE code set classes
314 ACE_HAS_EXCEPTIONS Compiler supports C++
316 ACE_HAS_BROKEN_UNEXPECTED_EXCEPTIONS Compiler does not call
317 unexpected exception handler
318 if exception not listed in
319 exception specification is
320 thrown. In particular, the
321 exception specification is not
323 ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT When a base-class is a
324 specialization of a class template
325 then this class template must be
327 ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION For the GCC compiler
328 on AIX, HPUX and VxWorks we have to
329 explicitly instantiate static template
330 members else we get multiple instances
332 ACE_HAS_GETPAGESIZE Platform supports
333 getpagesize() call (otherwise,
334 ACE_PAGE_SIZE must be defined,
336 ACE_HAS_GETRUSAGE Platform supports the
337 getrusage() system call.
338 ACE_HAS_GETRUSAGE_PROTOTYPE Platform has a getrusage ()
339 prototype in sys/resource.h
340 that differs from the one in
342 ACE_HAS_GNU_CSTRING_H Denotes that GNU has cstring.h
343 as standard which redefines
345 ACE_HAS_GPERF The GPERF utility is compiled
347 ACE_HAS_GETIFADDRS This platform has ifaddrs.h and
348 the getifaddrs() function. This
349 is used in preference to
350 the SIOCGIFCONF ioctl call, since
351 it is much simpler and supports
352 IPv6 and non-IP interfaces better.
353 ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT Optimize
354 ACE_Handle_Set::count_bits for
355 select() operations (common
357 ACE_HAS_LLSEEK Platform supports llseek.
358 ACE_HAS_HI_RES_TIMER Compiler/platform supports
359 SunOS high resolution timers
360 ACE_HAS_IDTYPE_T Compiler/platform supports
362 ACE_HAS_INLINED_OSCALLS Inline all the static class OS
363 methods to remove call
365 ACE_HAS_IP_MULTICAST Platform supports IP multicast
366 ACE_HAS_IPV6 Platform supports IPv6.
367 ACE_HAS_BROKEN_GETHOSTBYADDR_V4MAPPED gethostbyaddr does not handle
368 IPv6-mapped-IPv4 addresses
369 ACE_USES_IPV4_IPV6_MIGRATION Enable IPv6 support in ACE on
370 platforms that don't have IPv6
371 turned on by default.
372 ACE_HAS_IPV6_V6ONLY Platform supports the IPPROTO_IPV6
373 level IPV6_V6ONLY socket option.
374 ACE_HAS_IRIX62_THREADS Platform supports the very odd
376 ACE_HAS_NONSTATIC_OBJECT_MANAGER Causes the ACE_Object_Manager
377 instance to be created in main
378 (int, char *[]), instead of as
379 a static (global) instance.
380 ACE_HAS_THR_KEYDELETE Platform supports
381 thr_keydelete (e.g,. UNIXWARE)
382 ACE_HAS_THR_MINSTACK Platform calls thr_minstack()
383 rather than thr_min_stack()
385 ACE_HAS_LIMITED_RUSAGE_T The rusage_t structure has
387 ACE_HAS_LIMITED_SELECT The select is unable to deal with
388 large file descriptors.
389 ACE_HAS_LINUX_NPTL Linux platform (with kernel >= 2.6.x)
390 with GLibc including new NPTL (Native
391 POSIX Thread Library).
392 This triggers extended POSIX checks
393 since the NPTL library is (almost) fully
395 ACE_HAS_LOG_MSG_NT_EVENT_LOG Platform supports Windows NT event
396 log so we can create an
397 ACE_Log_Msg_Backend to log to it.
398 ACE_HAS_LONG_MAP_FAILED Platform defines MAP_FAILED as
400 ACE_HAS_MALLOC_STATS Enabled malloc statistics
402 ACE_HAS_MEMCHR Use native implementation of memchr.
403 ACE_HAS_MINIMAL_ACE_OS Disables some #includes in ace/OS.*.
404 ACE_HAS_MFC Platform supports Microsoft
406 ACE_HAS_MSG Platform supports recvmsg and
408 ACE_HAS_MT_SAFE_MKTIME Platform supports MT safe
409 mktime() call (do any of
411 ACE_HAS_MUTEX_TIMEOUTS Compiler supports timed mutex
413 (e.g. pthread_mutex_timedlock()).
414 ACE_HAS_NEW_NOTHROW Compiler offers new (nothrow).
415 ACE_HAS_NONCONST_CHDIR Platform uses non-const char *
417 ACE_HAS_NONCONST_CLOCK_SETTIME Platform uses non-const
418 struct timespec * in call to
420 ACE_HAS_NONCONST_OPENDIR Platform uses non-const char *
422 ACE_HAS_NONCONST_UNLINK Platform uses non-const char *
424 ACE_HAS_NONCONST_GETBY Platform uses non-const char *
425 in calls to gethostbyaddr,
426 gethostbyname, getservbyname
427 ACE_HAS_NONCONST_MSGSND Platform has a non-const
428 parameter to msgsend() (e.g.,
430 ACE_HAS_NONCONST_READV Platform omits const qualifier from
431 iovec parameter in readv() prototype.
432 ACE_HAS_NONCONST_SELECT_TIMEVAL Platform's select() uses
433 non-const timeval* (only found
435 ACE_HAS_NONCONST_SENDMSG Platform omits const qualifier
436 from msghdr parameter in sendmsg()
438 ACE_HAS_NONCONST_SETRLIMIT Platform omits const qualifier
439 from rlimit parameter in setrlimit()
441 ACE_HAS_NONCONST_STAT Platform's stat function has non const
443 ACE_HAS_NONCONST_SWAB Platform's swab function has non
445 ACE_HAS_NONCONST_WRITEV Platform omits const qualifier from
446 iovec parameter in writev() prototype.
447 ACE_HAS_OLD_MALLOC Compiler/platform uses old
448 malloc()/free() prototypes
450 ACE_HAS_ONLY_SCHED_FIFO Platform, e.g., HP NonStop OSS,
451 only supports SCHED_FIFO
452 POSIX scheduling policy.
453 ACE_HAS_ONLY_SCHED_OTHER Platform, e.g., Solaris 2.5,
454 only supports SCHED_OTHER
455 POSIX scheduling policy.
456 ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R Uses ctime_r & asctime_r with
459 ACE_HAS_OSF_TIMOD_H Platform supports the OSF TLI
461 ACE_HAS_3_PARAM_WCSTOK Platform has 3-parameter version
462 of wcstok(), which was added in
463 1994 in the ISO C standard Normative
464 Addendum 1. Other standards like XPG4
465 define a 2 parameter wcstok().
466 ACE_HAS_PENTIUM Platform is an Intel Pentium
468 ACE_HAS_POLL Platform contains <poll.h>
469 ACE_HAS_POSITION_INDEPENDENT_POINTERS Platform supports
470 "position-independent" features
471 provided by ACE_Based_Pointer<>.
472 ACE_HAS_POSIX_MESSAGE_PASSING Platform supports POSIX message queues.
473 Corresponds to _POSIX_MESSAGE_PASSING
474 constant in <unistd.h>.
475 ACE_HAS_POSIX_NONBLOCK Platform supports POSIX
477 ACE_HAS_POSIX_REALTIME_SIGNALS Platform supports POSIX RT signals.
478 Corresponds to _POSIX_REALTIME_SIGNALS
479 constant in <unistd.h>.
480 ACE_HAS_POSIX_SEM Platform supports POSIX
481 real-time semaphores (e.g.,
482 VxWorks and Solaris). Corresponds
483 to _POSIX_SEMAPHORES constant
485 ACE_HAS_POSIX_SEM_TIMEOUT Platform supports timed wait operation
486 on POSIX realtime semaphores.
487 ACE_HAS_POSIX_TIME Platform supports the POSIX
489 ACE_HAS_PROC_FS Platform supports the /proc
490 file system and defines tid_t
492 ACE_HAS_POWERPC_TIMER Platform supports PowerPC
494 ACE_HAS_PRUSAGE_T Platform supports the
496 ACE_HAS_PTHREADS Platform supports POSIX
497 Pthreads, of one form or
498 another. This macro says the
499 platform has a pthreads
500 variety - should also define
501 one of the below to say which
502 one. Also may need some
503 ACE_HAS_... thing for
505 ACE_HAS_PTHREADS_DRAFT4 Platform's 'Pthreads' is .4a draft 4
506 ACE_HAS_PTHREADS_DRAFT6 Platform's 'Pthreads' is .4a draft 6
507 ACE_HAS_PTHREADS_DRAFT7 Platform's 'Pthreads' is .1c draft 7
508 ACE_HAS_PTHREADS_STD Platform supports POSIX.1c-1995 threads
509 (This is the final standard
511 ACE_HAS_PTHREADS_UNIX98_EXT Platform has the UNIX98 extensions to
513 ACE_HAS_PTHREAD_ATTR_SETCREATESUSPEND_NP Platform has
514 pthread_attr_setcreatesuspend_np().
515 ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP Platform has pthread_condattr_setkind_np().
516 ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP Platform has
517 pthread_mutexattr_setkind_np().
518 ACE_HAS_PTHREAD_GETCONCURRENCY Platform has pthread_getconcurrency().
519 ACE_HAS_PTHREAD_SETCONCURRENCY Platform has pthread_setconcurrency().
520 ACE_HAS_PTHREAD_PROCESS_ENUM pthread.h declares an enum with
521 PTHREAD_PROCESS_PRIVATE and
522 PTHREAD_PROCESS_SHARED values.
523 ACE_HAS_PTHREAD_SETSTACK Platform has pthread_attr_setstack().
524 ACE_HAS_PTHREAD_NP_H Platform has <pthread_np.h> FreeBSD
525 declares non-portable (*_np) pthread
526 functions in this header.
527 ACE_HAS_PURIFY Purify'ing. Set by wrapper_macros.GNU.
528 ACE_HAS_QUANTIFY Quantify'ing. Set by wrapper_macros.GNU.
529 ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS Platform will recurse
530 infinitely on thread exits
531 from TSS cleanup routines
533 ACE_HAS_REENTRANT_FUNCTIONS Platform supports reentrant
534 functions (i.e., all the POSIX
536 ACE_HAS_XPG4_MULTIBYTE_CHAR Platform has support for
537 multi-byte character support
538 compliant with the XPG4
539 Worldwide Portability
540 Interface wide-character
542 ACE_HAS_REGEX Platform supports the POSIX
543 regular expression library
544 ACE_HAS_DLSYM_SEGFAULT_ON_INVALID_HANDLE For OpenBSD: The dlsym call
545 segfaults when passed an invalid
546 handle. Other platforms handle
547 this more gracefully.
548 ACE_HAS_SELECT_H Platform has special header for select().
549 ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL For Win32: Use Select_Reactor
550 as default implementation of
553 ACE_HAS_SEMUN Compiler/platform defines a
554 union semun for SysV shared
556 ACE_HAS_SET_T_ERRNO Platform has a function to set
557 t_errno (e.g., Tandem).
558 ACE_HAS_SIGACTION_CONSTP2 Platform's sigaction() function takes
559 const sigaction* as 2nd parameter.
560 ACE_HAS_SIGINFO_T Platform supports SVR4
562 ACE_HAS_SIGSUSPEND Platform supports sigsuspend()
563 ACE_HAS_SIGISMEMBER_BUG Platform has bug with
564 sigismember() (HP/UX 11).
565 ACE_HAS_SIG_MACROS Platform/compiler has macros
566 for sig{empty,fill,add,del}set
567 (e.g., SCO and FreeBSD)
568 ACE_HAS_SIGNAL_OBJECT_AND_WAIT Platform supports the Win32
569 SignalObjectAndWait() function
570 (WinNT 4.0 and beyond).
571 ACE_HAS_SIGWAIT Platform/compiler has the
573 ACE_HAS_SIG_ATOMIC_T Compiler/platform defines the
575 ACE_HAS_SIG_C_FUNC Compiler requires extern "C"
576 functions for signals.
577 ACE_HAS_SIZET_SOCKET_LEN OS/compiler uses size_t *
578 rather than int * for socket
580 ACE_HAS_SOCKADDR_IN_SIN_LEN Platform has sin_len member in struct
582 ACE_HAS_SOCKADDR_IN6_SIN_LEN Platform has sin6_len member in struct
584 ACE_HAS_SOCKADDR_MSG_NAME Platform requires (struct
585 sockaddr *) for msg_name field
587 ACE_HAS_SOCKLEN_T Platform provides socklen_t
588 type, such as Linux with
590 ACE_HAS_SOCK_BUF_SIZE_MAX Platform limits the maximum socket
592 ACE_HAS_SPARCWORKS_401_SIGNALS Compiler has brain-damaged
593 SPARCwork SunOS 4.x signal
595 ACE_HAS_SSIZE_T Compiler supports the ssize_t
597 ACE_HAS_STHREADS Platform supports Solaris
599 ACE_HAS_STANDARD_CPP_LIBRARY Platform/compiler supports
601 ACE_HAS_STDCPP_STL_INCLUDES Standard C++ headers can be
602 included in the standard way.
603 e.g. #include <vector>
604 ACE_HAS_STRBUF_T Compiler/platform supports
606 ACE_HAS_STRDUP_EMULATION Use ACE's strdup() emulation (even
607 if platform has a native strdup()).
608 This is useful if you need control
609 over what memory allocator is used.
610 ACE_HAS_WCSDUP_EMULATION Use ACE's wcsdup() emulation (even
611 if platform has a native wcsdup()).
612 This is useful if you need control
613 over what memory allocator is used.
614 ACE_HAS_STRNLEN Platform supports strnlen(3).
615 ACE_HAS_STREAMS Platform supports STREAMS
616 ACE_HAS_STREAM_PIPES Platform supports STREAM pipes
617 ACE_HAS_STRERROR Compiler/platform supports strerror ()
618 ACE_HAS_STRICT Use the STRICT compilation mode on Win32.
619 ACE_HAS_STRING_CLASS Platform/Compiler supports a
620 String class (e.g., GNU or
622 ACE_HAS_STRUCT_NETDB_DATA Compiler/platform has strange
623 hostent API for socket *_r()
625 ACE_HAS_SUNOS4_SIGNAL_T Compiler has horrible SunOS
626 4.x signal handlers...
627 ACE_HAS_SVR4_DYNAMIC_LINKING Compiler/platform supports
628 SVR4 dynamic linking semantics
629 ACE_HAS_SVR4_GETTIMEOFDAY Compiler/platform supports
630 SVR4 gettimeofday() prototype
631 ACE_HAS_SVR4_SIGNAL_T Compiler/platform supports
633 ACE_HAS_SVR4_TLI Compiler/platform supports
634 SVR4 TLI; that is, TLI with extensions
635 like t_getname(). This is sometimes
636 used as a pseudonym for TLI on SunOS4.
637 This is a modifier to ACE_HAS_TLI and
638 isn't used if ACE_HAS_XTI is set.
639 ACE_HAS_SYSCALL_GETRUSAGE HP/UX has an undefined syscall
641 ACE_HAS_SYSENT_H Platform provides <sysent.h>
643 ACE_HAS_SYSINFO Platform supports system
644 configuration information
645 ACE_HAS_SYSV_IPC Platform supports System V IPC
646 (most versions of UNIX, but
648 ACE_HAS_SYS_ERRLIST Platform/compiler supports
650 ACE_HAS_SYS_FILIO_H Platform provides
652 ACE_HAS_SYS_LOADAVG_H Compiler/platform contains the
653 <sys/loadavg.h> file.
654 ACE_HAS_SYS_PSTAT_H Compiler/platform contains the
656 ACE_HAS_SYS_SIGLIST Compiler/platform supports
658 ACE_HAS_SYS_SOCKIO_H Compiler/platform provides the
660 ACE_HAS_SYS_SYSCALL_H Compiler/platform contains the
661 <sys/syscall.h> file.
662 ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA Compiler's template
663 instantiation mechanism
664 supports the use of "#pragma
665 instantiate". Edison Design
666 Group compilers, e.g., SGI C++
667 and Green Hills 1.8.8 and
669 ACE_HAS_TEMPLATE_TYPEDEFS Compiler implements templates
670 that support typedefs inside
671 of classes used as formal
672 arguments to a template
674 ACE_HAS_TERMIO Platform has terminal ioctl
675 flags like TCGETS and TCSETS and
677 ACE_HAS_TERMIOS Platform has POSIX terminal
678 interface and termios struct.
679 ACE_HAS_LAZY_MAP_MANAGER ACE supports lazy Map Managers
680 that allow deletion of entries
681 during active iteration.
682 ACE_HAS_THREADS Platform supports threads
683 ACE_HAS_THREAD_SAFE_ACCEPT Platform allows multiple
684 threads to call accept() on
685 the same port (e.g., WinNT).
686 ACE_HAS_THREAD_SELF Platform has thread_self()
687 rather than pthread_self()
688 (e.g., DCETHREADS and AIX)
689 ACE_HAS_THREAD_SPECIFIC_STORAGE Compiler/platform has
690 thread-specific storage
691 ACE_HAS_THR_C_DEST The pthread_keycreate()
692 routine *must* take extern C
694 ACE_HAS_THR_C_FUNC The pthread_create() routine
697 ACE_HAS_TIMEZONE Platform/compiler supports
698 global "timezone" variable.
699 ACE_HAS_TIMEZONE_GETTIMEOFDAY Platform/compiler supports
700 timezone * as second parameter
702 ACE_HAS_TIMOD_H Platform supports TLI timod
704 ACE_HAS_TIUSER_H Platform provides TLI tiuser.h
706 ACE_HAS_TLI Platform supports TLI. Also
707 see ACE_TLI_TCP_DEVICE. If the
708 platform supports XTI, set ACE_HAS_XTI
710 ACE_HAS_TLI_PROTOTYPES Platform provides TLI function
712 ACE_HAS_TR24731_2005_CRT The platform provides an implementation
713 of C99 draft TR24731 (October 2005),
714 C run-time with more secure parameters.
715 ACE_HAS_TSS_EMULATION ACE provides TSS emulation.
717 ACE_DEFAULT_THREAD_KEYS.
718 ACE_HAS_UALARM Platform supports ualarm()
719 ACE_HAS_UCONTEXT_T Platform supports ucontext_t
720 (which is used in the extended
722 ACE_HAS_UNION_WAIT The wait() system call takes a
723 (union wait *) rather than int
725 ACE_HAS_UNIXWARE_SVR4_SIGNAL_T Has inconsistent SVR4 signal
726 stuff, but not the same as the
728 ACE_HAS_VALGRIND Running with valgrind
729 ACE_HAS_VERBOSE_NOTSUP Prints out console message in
730 ACE_NOTSUP. Useful for
731 tracking down origin of
733 ACE_HAS_VERSIONED_NAMESPACE Wrap all library code within a
734 "versioned namespace" to
735 prevent symbol conflicts with
736 other versions of ACE shared
737 libraries in third party
738 libraries. Default namespace
739 name may be overridden by
740 defining preprocessor symbol
741 ACE_VERSIONED_NAMESPACE_NAME
743 ACE_LACKS_INTMAX_T Platform lacks the intmax_t type
744 ACE_LACKS_UINTMAX_T Platform lacks the uintmax_t type.
745 ACE_LACKS_INTPTR_T Platform lacks the intptr_t type
746 ACE_LACKS_UINTPTR_T Platform lacks the uintptr_t type.
748 ACE_HAS_INT8_T Platform provides the int8_t type.
749 ACE_HAS_INT16_T Platform provides the int16_t type.
750 ACE_HAS_INT32_T Platform provides the int32_t type.
751 ACE_HAS_INT64_T Platform provides the int64_t type.
752 ACE_HAS_UINT8_T Platform provides the uint8_t type.
753 ACE_HAS_UINT16_T Platform provides the uint16_t type.
754 ACE_HAS_UINT32_T Platform provides the uint32_t type.
755 ACE_HAS_UINT64_T Platform provides the uint64_t type.
757 ACE_INT8_TYPE Specific type to use for ACE_INT8.
758 If not defined, ACE will attempt to
759 determine the correct type.
760 ACE_INT16_TYPE Specific type to use for ACE_INT16.
761 If not defined, ACE will attempt to
762 determine the correct type.
763 ACE_INT32_TYPE Specific type to use for ACE_INT32.
764 If not defined, ACE will attempt to
765 determine the correct type.
766 ACE_INT64_TYPE Specific type to use for ACE_INT64.
767 If not defined, ACE will attempt to
768 determine the correct type.
769 ACE_UINT8_TYPE Specific type to use for ACE_UINT8.
770 If not defined, ACE will attempt to
771 determine the correct type.
772 ACE_UINT16_TYPE Specific type to use for ACE_UINT16.
773 If not defined, ACE will attempt to
774 determine the correct type.
775 ACE_UINT32_TYPE Specific type to use for ACE_UINT32.
776 If not defined, ACE will attempt to
777 determine the correct type.
778 ACE_UINT64_TYPE Specific type to use for ACE_UINT64.
779 If not defined, ACE will attempt to
780 determine the correct type.
782 ACE_INT8_FORMAT_SPECIFIER String literal containing *printf
783 format specifier (including the '%')
784 to be used for ACE_INT8 values. If
785 not defined, ACE will attempt to
786 determine the correct setting.
787 ACE_INT16_FORMAT_SPECIFIER String literal containing *printf
788 format specifier (including the '%')
789 to be used for ACE_INT16 values. If
790 not defined, ACE will attempt to
791 determine the correct setting.
792 ACE_INT32_FORMAT_SPECIFIER String literal containing *printf
793 format specifier (including the '%')
794 to be used for ACE_INT32 values. If
795 not defined, ACE will attempt to
796 determine the correct setting.
797 ACE_INT64_FORMAT_SPECIFIER String literal containing *printf
798 format specifier (including the '%')
799 to be used for ACE_INT64 values. If
800 not defined, ACE will attempt to
801 determine the correct setting.
802 ACE_UINT8_FORMAT_SPECIFIER String literal containing *printf
803 format specifier (including the '%')
804 to be used for ACE_UINT8 values. If
805 not defined, ACE will attempt to
806 determine the correct setting.
807 ACE_UINT16_FORMAT_SPECIFIER String literal containing *printf
808 format specifier (including the '%')
809 to be used for ACE_UINT16 values. If
810 not defined, ACE will attempt to
811 determine the correct setting.
812 ACE_UINT32_FORMAT_SPECIFIER String literal containing *printf
813 format specifier (including the '%')
814 to be used for ACE_UINT32 values. If
815 not defined, ACE will attempt to
816 determine the correct setting.
817 ACE_UINT64_FORMAT_SPECIFIER String literal containing *printf
818 format specifier (including the '%')
819 to be used for ACE_UINT64 values. If
820 not defined, ACE will attempt to
821 determine the correct setting.
823 ACE_HAS_VOIDPTR_GETTIMEOFDAY Platform/compiler supports
824 void * as second parameter
826 ACE_HAS_VOIDPTR_MMAP Platform requires void * for
828 ACE_HAS_VOIDPTR_SOCKOPT OS/compiler uses void * arg 4
829 setsockopt() rather than const
831 ACE_HAS_WCSNLEN Platform supports wcsnlen(3).
832 ACE_HAS_WIN32_OVERLAPPED_IO Platform has Windows overlapped I/O;
833 requires I/O completion ports.
834 ACE_HAS_WIN32_TRYLOCK The Win32 platform support
835 TryEnterCriticalSection()
836 (WinNT 4.0 and beyond)
837 ACE_HAS_WINSOCK2 The Win32 platform supports
839 ACE_HAS_XLI Platform has the XLI version
841 ACE_HAS_XTI Platform has XTI
842 (X/Open-standardized superset
843 of TLI). Implies ACE_HAS_TLI
844 but uses a different header
846 ACE_INITIALIZE_MEMORY_BEFORE_USE Memory is explicitly initialized before
847 use. Useful when using a profiler like
849 ACE_HRTIME_T_IS_BASIC_TYPE ACE_hrtime_t is a basic type that
850 doesn't require ACE_U64_TO_U32
852 ACE_LACKS_ACCESS Platform lacks access() (e.g.,
854 ACE_LACKS_ACE_IOSTREAM Platform can not build
855 ace/IOStream{,_T}.cpp. This
856 does not necessarily mean that
857 the platform does not support
859 ACE_LACKS_AUTO_MMAP_REPLACEMENT No system support for replacing any
861 ACE_LACKS_BSEARCH Compiler/platform lacks the
862 standard C library bsearch()
864 ACE_LACKS_CLEARERR Platform lacks the clearerr system
866 ACE_LACKS_CLOSEDIR Platform lacks closedir and the closedir
867 emulation must be used
868 ACE_LACKS_OPENDIR Platform lacks opendir and the opendir
869 emulation must be used
870 ACE_LACKS_READDIR Platform lacks readdir and the readdir
871 emulation must be used
872 ACE_LACKS_CMSG_DATA_MACRO Platform has
873 ACE_HAS_4_4BSD_SENDMSG_RECVMSG but does
874 not define CMSG_DATA (cmsg) macro.
875 ACE_LACKS_CMSG_DATA_MEMBER Platform has
876 ACE_HAS_4_4BSD_SENDMSG_RECVMSG but its
877 cmsghdr structure does not contain
878 an 'unsigned char cmsg_data[0]'
880 'unsigned char __cmsg_data[0]' on some
881 platforms, in which case we need
883 ACE_LACKS_COND_TIMEDWAIT_RESET pthread_cond_timedwait does
884 *not* reset the time argument
885 when the lock is acquired.
886 ACE_LACKS_CONST_STRBUF_PTR Platform uses struct strbuf *
887 rather than const struct
888 strbuf * (e.g., HP/UX 10.x)
889 ACE_LACKS_CONST_TIMESPEC_PTR Platform forgot const in
890 cond_timewait (e.g., HP/UX).
891 ACE_LACKS_COND_T Platform lacks condition
892 variables (e.g., Win32 and
894 ACE_LACKS_CONDATTR_PSHARED Platform has no implementation
896 pthread_condattr_setpshared(),
897 even though it supports
899 ACE_LACKS_DIFFTIME Platform lacks difftime() implementation
900 ACE_LACKS_DUP2 Platform lacks dup2().
901 ACE_LACKS_FCNTL Platform lacks POSIX-style fcntl ().
902 ACE_LACKS_FSYNC Platform lacks fsync().
903 ACE_LACKS_INLINE_FUNCTIONS Platform can't handle "inline"
905 ACE_LACKS_EXEC Platform lacks the exec()
906 family of system calls (e.g.,
907 Win32, VxWorks, Chorus)
908 ACE_LACKS_FILELOCKS Platform lacks file locking
910 ACE_LACKS_FLOATING_POINT Platform does not support
911 floating point operations
912 (e.g., certain Chorus hardware
914 ACE_LACKS_FORK Platform lacks the fork()
915 system call (e.g., Win32,
917 ACE_LACKS_GETOPT_PROTOTYPE Platform lacks the getopt()
918 prototype (e.g., LynxOS)
919 ACE_LACKS_GETPGID Platform lacks getpgid() call
920 (e.g., Win32, Chorus, and
922 ACE_LACKS_GETSERVBYNAME Platforms lacks
923 getservbyname() (e.g., VxWorks
925 ACE_LACKS_GETIPNODEBYADDR Platform lacks getipnodebyaddr().
926 ACE_LACKS_GETIPNODEBYNAME Platform lacks getipnodebyname().
927 ACE_LACKS_INET_ATON Platform lacks the inet_aton()
929 ACE_LACKS_INET_ATON_PROTOTYPE Platform/compiler lacks the
930 inet_aton() prototype (e.g.,
932 ACE_LACKS_IOSTREAMS_TOTALLY Iostreams are not supported
933 adequately on the given platform.
934 ACE_LACKS_IOSTREAM_FX iostream header does not
935 declare ipfx (), opfx (),
937 ACE_LACKS_KEY_T Platform lacks key_t (e.g.,
938 Chorus, VxWorks, Win32)
939 ACE_LACKS_LINEBUFFERED_STREAMBUF Platform lacks streambuf
941 ACE_LACKS_LONGLONG_T Compiler/platform does not
942 support the signed or unsigned long
944 ACE_LACKS_LSTAT Platform lacks the lstat() function.
945 ACE_LACKS_MADVISE Platform lacks madvise()
947 ACE_LACKS_MALLOC_H Platform lacks malloc.h
948 ACE_LACKS_MEMORY_H Platform lacks memory.h (e.g.,
950 ACE_LACKS_MKFIFO Platform lacks mkfifo() e.g.,
951 VxWorks, Chorus, pSoS, and WinNT.
952 ACE_LACKS_MKTEMP Platform lacks the mktemp() function.
953 ACE_LACKS_MKTEMP_PROTOTYPE Platform/compiler lacks the
954 mktemp() prototype (e.g.,
956 ACE_LACKS_MKSTEMP Platform lacks the mkstemp() function.
957 ACE_LACKS_MKSTEMP_PROTOTYPE Platform/compiler lacks the
958 mkstemp() prototype (e.g.,
960 ACE_LACKS_MMAP The platform doesn't have
961 mmap(2) (e.g., SCO UNIX).
962 ACE_LACKS_MODE_MASKS Platform/compiler doesn't have
964 ACE_LACKS_MPROTECT The platform doesn't have
965 mprotect(2) (e.g., EPLX real
966 time OS from CDC (based on
968 ACE_LACKS_MSG_ACCRIGHTS Platform defines ACE_HAS_MSG,
969 but lacks msg_accrights{,len}.
970 ACE_LACKS_MSG_WFMO Platform lacks
971 MsgWaitForMultipleObjects
972 (only needs to be defined when
973 ACE_WIN32 is also defined).
974 ACE_LACKS_MSYNC Platform lacks msync() (e.g.,
976 ACE_LACKS_MUTEXATTR_PSHARED Platform lacks
977 pthread_mutexattr_setpshared().
978 ACE_LACKS_NAMED_POSIX_SEM Platform lacks named POSIX
979 semaphores (e.g., Chorus)
980 ACE_LACKS_NETDB_REENTRANT_FUNCTIONS Platform does not support
981 reentrant netdb functions
987 ACE_LACKS_NEW_H OS doesn't have, or we don't want to
989 ACE_LACKS_NULL_PTHREAD_STATUS OS requires non-null status pointer
990 for ::pthread_join ().
991 ACE_LACKS_NUMERIC_LIMITS Platform lacks std::numeric_limits<>.
992 ACE_LACKS_PERFECT_MULTICAST_FILTERING Platform lacks IGMPv3 "perfect" filtering
993 of multicast dgrams at the socket level.
994 If == 1, ACE_SOCK_Dgram_Mcast will bind
995 the first joined multicast group to the
996 socket, and all future joins on that
997 socket will fail with an error.
998 ACE_LACKS_PRAGMA_ONCE Compiler complains about #pragma once
999 ACE_LACKS_PRI_T Platform lacks pri_t (e.g.,
1000 Tandem NonStop UNIX).
1001 ACE_LACKS_PTHREAD_CANCEL Platform lacks
1003 ACE_LACKS_PTHREAD_SIGMASK Platform lacks pthread_sigmask ().
1004 ACE_LACKS_PTHREAD_THR_SIGSETMASK Platform lacks
1005 pthread_thr_sigsetmask (e.g.,
1006 MVS, HP/UX, and OSF/1 3.2)
1007 ACE_LACKS_PUTENV_PROTOTYPE Platform/compiler lacks the
1008 putenv() prototype (e.g.,
1010 ACE_LACKS_PWD_REENTRANT_FUNCTIONS Platform lacks getpwnam_r()
1011 methods (e.g., SGI 6.2).
1012 ACE_LACKS_SID Platform lacks setsid()
1013 ACE_LACKS_QSORT Compiler/platform lacks the
1014 standard C library qsort()
1016 ACE_LACKS_RAND_REENTRANT_FUNCTIONS Platform lacks rand_r()
1017 ACE_LACKS_READLINK Platform lacks the readlink() function.
1018 ACE_LACKS_READV Platform doesn't define readv,
1020 ACE_LACKS_RENAME Platform lacks rename().
1021 ACE_LACKS_RLIMIT Platform/compiler lacks
1022 {get,set}rlimit() function
1023 (e.g., VxWorks, Chorus, and
1025 ACE_LACKS_RLIMIT_PROTOTYPE Platform/compiler lacks
1026 {get,set}rlimit() prototypes
1028 ACE_LACKS_READDIR_R Platform uses ACE_HAS_DIRENT
1029 but does not have readdir_r
1031 ACE_LACKS_REALPATH Platform/compiler lacks
1032 realpath () function (e.g.,
1034 ACE_LACKS_RECVMSG Platform lacks recvmsg()
1036 ACE_LACKS_RWLOCK_T Platform lacks readers/writer
1038 ACE_LACKS_RWLOCKATTR_PSHARED Platform lacks
1039 pthread_rwlockattr_setpshared().
1040 ACE_LACKS_SBRK Platform lacks a working
1041 sbrk() (e.g., Win32 and
1043 ACE_LACKS_SCANDIR_PROTOTYPE Platform/compiler lacks
1046 ACE_LACKS_SEEKDIR Platform uses ACE_HAS_DIRENT
1047 but does not have seekdir ().
1048 ACE_LACKS_SEMBUF_T Platform lacks struct sembuf
1049 (e.g., Win32 and VxWorks)
1050 ACE_LACKS_SETDETACH Platform lacks
1051 pthread_attr_setdetachstate()
1053 ACE_LACKS_SETSCHED Platform lacks
1054 pthread_attr_setsched()
1056 ACE_LACKS_SIGACTION Platform lacks struct
1057 sigaction (e.g., Win32 and
1059 ACE_LACKS_SIGNED_CHAR Platform lacks "signed char"
1061 ACE_LACKS_SIGSET Platform lacks signal sets
1062 (e.g., Chorus and Win32)
1063 ACE_LACKS_STRPTIME Platform/compiler lacks the strptime()
1065 ACE_LACKS_STRCHR Platform/compiler lacks strchr()
1066 ACE_LACKS_WCSCHR Platform/compiler lacks wcschr()
1067 ACE_LACKS_STRDUP Platform/compiler lacks strdup()
1068 ACE_LACKS_WCSDUP Platform/compiler lacks wcsdup()
1069 ACE_LACKS_STRRCHR Platform/compiler lacks strrchr()
1070 ACE_LACKS_WCSRCHR Platform/compiler lacks wcsrchr()
1071 ACE_LACKS_SWAB Platform/compiler lacks
1073 ACE_LACKS_SYS_MSG_H Platform lacks sys/msg.h
1074 (e.g., Chorus and VxWorks)
1075 ACE_LACKS_SYS_PARAM_H Platform lacks <sys/param.h>
1077 ACE_LACKS_SENDMSG Platform lacks sendmsg()
1079 ACE_LACKS_SI_ADDR Platform lacks the si_addr
1080 field of siginfo_t (e.g.,
1081 VxWorks and HP/UX 10.x)
1082 ACE_LACKS_SYMLINKS Platform lacks symbolic links
1083 ACE_LACKS_SYSV_SHMEM Platform lacks System V shared
1084 memory (e.g., Win32 and
1086 ACE_LACKS_SIGINFO_H Platform lacks the siginfo.h
1087 include file (e.g., MVS)
1088 ACE_LACKS_SOCKET_BUFSIZ Platform doesn't support
1090 ACE_LACKS_SOCKETPAIR Platform lacks the
1091 socketpair() call (e.g., SCO
1093 ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES Compiler doesn't support
1094 static data member templates
1095 ACE_LACKS_STRCASECMP Compiler/platform lacks
1096 strcasecmp() (e.g., DG/UX,
1098 ACE_LACKS_STRCASECMP_PROTOTYPE Platform/compiler lacks the
1099 strcasecmp() prototype (e.g.,
1101 ACE_LACKS_STRNCASECMP_PROTOTYPE Platform/compiler lacks the
1102 strncasecmp() prototype (e.g.,
1104 ACE_LACKS_STRRECVFD Platform doesn't define struct
1106 ACE_LACKS_SYSCALL Platform doesn't have
1108 ACE_LACKS_T_ERRNO Header files lack t_errno for
1110 ACE_LACKS_TCP_NODELAY OS does not support TCP_NODELAY.
1111 ACE_LACKS_TELLDIR Platform uses ACE_HAS_DIRENT
1112 but does not have telldir ().
1113 ACE_LACKS_THREAD_STACK_SIZE Platform lacks
1114 pthread_attr_setstacksize()
1115 (e.g., Linux pthreads)
1116 ACE_LACKS_THR_CONCURRENCY_FUNCS (ONLY APPLIES TO SOLARIS)
1117 Platform does not support
1118 thr_getconcurrency/thr_setconcurrency
1119 functions, or their implementation
1120 is effectively a "no-op". This
1121 notably applies for Solaris >= 5.9.
1122 Note that if you build on Solaris 8
1123 and run on Solaris 9+, you can
1124 encounter thread creation errors
1125 unless you rebuild on the target
1127 ACE_LACKS_TIMEDWAIT_PROTOTYPES MIT pthreads platform lacks
1128 the timedwait prototypes
1129 ACE_LACKS_TIMESPEC_T Platform does not define
1130 timepec_t as a typedef for
1132 ACE_LACKS_TRUNCATE Platform doesn't have truncate()
1134 ACE_LACKS_U_LONGLONG_T Platform does not have
1135 u_longlong_t typedef, and
1137 ACE_LACKS_UALARM_PROTOTYPE Platform/compiler lacks the
1138 ualarm() prototype (e.g.,
1140 ACE_LACKS_CHAR_RIGHT_SHIFTS Compiler does not have any istream
1141 operator>> for chars, u_chars, or
1143 ACE_LACKS_CHAR_STAR_RIGHT_SHIFTS Compiler does not have
1144 operator>> (istream &, u_char *) or
1145 operator>> (istream &, signed char *)
1146 ACE_LACKS_UCONTEXT_H Platform lacks the ucontext.h
1148 ACE_LACKS_UMASK Platform lacks umask function
1149 ACE_LACKS_UNBUFFERED_STREAMBUF Platform lacks streambuf
1151 ACE_LACKS_UNISTD_H Platform lacks the unistd.h
1152 file (e.g., VxWorks and Win32)
1153 ACE_LACKS_UNIX_DOMAIN_SOCKETS ACE platform has no UNIX
1155 ACE_LACKS_UNIX_SIGNALS Platform lacks full signal
1156 support (e.g., Win32 and
1158 ACE_LACKS_UNSIGNEDLONGLONG_T Compiler/platform does not
1159 support the unsigned long
1161 ACE_LACKS_UTSNAME_T Platform lacks struct utsname
1162 (e.g., Win32 and VxWorks)
1163 ACE_LACKS_UNAME Platform lacks uname calls
1164 ACE_LACKS_WAIT The platform lacks wait
1165 ACE_LACKS_WIN32_GETPROCESSTIMES The Windows platform doesn't have
1167 ACE_LACKS_WIN32_MOVEFILEEX The Windows platform doesn't have
1169 ACE_LACKS_WIN32_SECURITY_DESCRIPTORS The Windows platform doesn't have
1170 security descriptor support.
1171 ACE_LACKS_WRITEV Platform doesn't define
1172 writev, so use our own
1174 ACE_LEGACY_MODE When defined, it will enable
1175 some code that is used to
1176 provide some support for
1177 backwards compatibility.
1179 ACE_NEEDS_DEV_IO_CONVERSION Necessary with some compilers
1180 to pass ACE_TTY_IO as
1181 parameter to DEV_Connector.
1182 ACE_NEEDS_FUNC_DEFINITIONS Compiler requires a definition
1183 for a "hidden" function, e.g.,
1184 a private, unimplemented copy
1185 constructor or assignment
1186 operator. The SGI C++
1187 compiler needs this, in
1188 template classes, with
1189 ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA.
1190 ACE_NEEDS_HUGE_THREAD_STACKSIZE Required by platforms with
1191 small default stacks.
1192 ACE_NEEDS_LWP_PRIO_SET OS has LWPs, and when the
1193 priority of a bound thread is
1194 set, then the LWP priority
1196 ACE_NEEDS_SCHED_H Platform needs to #include
1198 to get thread scheduling
1201 ACE_NO_WIN32_LEAN_AND_MEAN If this is set, then ACE does not
1202 define WIN32_LEAN_AND_MEAN before
1203 including <windows.h>. Needed for
1204 code that uses non-lean Win32
1205 facilities such as COM.
1207 ACE_ONLY_LATEST_AND_GREATEST A macro that indicates that
1208 the "latest and greatest"
1209 features of ACE/TAO should be
1210 turned on. It has been
1211 replaced by ACE_LEGACY_MODE,
1212 which has the opposite meaning
1213 but serves the same purpose.
1215 ACE_SHM_OPEN_REQUIRES_ONE_SLASH The path specified on shm_open() must
1216 have a leading, single slash and not
1217 have any other slashes.
1219 ACE_WSTRING_HAS_USHORT_SUPPORT If a platform has wchar_t as a
1221 ACE_WString doesn't have a
1222 constructor that understands
1223 an ACE_USHORT16 string. So
1225 one. (mostly used my ACE Name
1228 ACE_HAS_BROKEN_PREALLOCATED_OBJECTS_AFTER_FORK
1229 Under QNX/RTP the objects preallocated
1230 in ACE_OS_Object_Manager cannot be
1231 destroyed after a fork() call.
1232 Since these objects are only destroyed
1233 at application shutdown we take the
1234 simpler approach of not destroying
1236 Both QNX/RTP and LynxOS suffer from
1239 ACE_LACKS_MEMBER_TEMPLATES Compiler does not support
1240 member template feature.
1242 ACE_LACKS_DEPRECATED_MACROS When this define is set, macros which
1243 are deprecated are not defined. Usefull
1244 to check whether deprecated macros are
1247 ACE_DONT_INIT_WINSOCK This definition defines whether or not
1248 to explicitly initialize Winsock during
1249 ACE::init() (i.e., whether WSAStartup()
1250 is called). Some Win32 platforms have
1251 dependent characteristics between
1252 ACE initialization and
1253 network initialization.
1255 ----------------------------------------
1257 The following macros determine the svc.conf file format ACE uses.
1261 ACE_HAS_CLASSIC_SVC_CONF This macro forces ACE to use
1262 the classic svc.conf format.
1264 ACE_HAS_XML_SVC_CONF This macro forces ACE to use the XML
1267 ACE_USES_CLASSIC_SVC_CONF This macro should be defined
1268 as 0 or 1, depending on the
1269 preferred svc.conf file
1270 format. Defining this macro
1271 to 0 means ACE will use XML
1272 svc.conf file format.
1273 Defining it to 1 will force
1274 ACE to use the classic
1276 ** This macro takes precedence
1277 ** over previous two macros.
1279 ----------------------------------------
1280 The following is a partial list of where some of these macros are used
1281 in the code. This list was originally compiled by Jam Hamidi
1282 (jh1@core01.osi.com). It is now hopelessly out of date. Hopefully,
1283 someone will come along and update it....
1289 libsrc/IPC_SAP/SOCK_SAP/SOCK_Connect.C
1290 for allocation of iovp
1292 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
1293 for alocation of iovp
1296 alloca() allocates size bytes of space in the stack frame of
1297 the caller, and returns a pointer to the allocated block.
1298 This temporary space is automatically freed when the caller
1299 returns. Note: if the allocated block is beyond the current
1300 stack limit, the resulting behavior is undefined.
1306 in HPUX it has to do new and delete. Affects performance.
1309 ACE_HAS_AUTOMATIC_INIT_FINI:
1310 ----------------------------
1313 libsrc/Service_Configurator/Service_Repository.i
1314 libsrc/Service_Configurator/Parse_Node.i
1315 include/Parse_Node.i
1316 include/Service_Repository.i
1319 _init() initializes a loadable module. It is called before
1320 any other routine in a loadable module.
1321 _info() returns information about a loadable module.
1322 _fini() should return the return value from mod_remove(9F).
1323 This flag if set, doesn't do anything. If not set, forces
1324 _init() and _fini() to be executed as is:
1325 dlsym ((char *) handle, "_fini").
1329 Maybe have to look into shl_load( ), shl_definesym( ),
1330 shl_findsym( ), shl_gethandle( ), shl_getsymbols( ),
1331 shl_unload( ), shl_get( )(3X) - explicit load of shared libraries
1332 Means Service Configurator won't be available.
1336 ACE_HAS_CPLUSPLUS_HEADERS:
1337 --------------------------
1346 If this is not defined, libc.h and osfcn.h get included.
1347 Only needed for older compiler/OS platforms that don't
1348 provide standard C++ header files in /usr/include.
1350 ACE_HAS_HI_RES_TIMER:
1351 ---------------------
1354 libsrc/Misc/High_Res_Timer.h
1355 libsrc/Misc/High_Res_Timer.C
1356 include/High_Res_Timer.h
1359 C++ wrapper around gethrtime(), which returns a long long.
1360 gethrtime() returns the current high-resolution real time.
1361 Time is expressed as nanoseconds since some arbitrary time
1362 in the past; it is not correlated in any way to the time of
1363 day, and thus is not subject to resetting, drifting, etc.
1366 look into: getclock(), reltimer(), getitimer()
1367 maybe even vtimes structure vm_utime, vm_stime ?
1387 ACE_HAS_POSIX_NONBLOCK:
1388 -----------------------
1397 if defined, sets ACE_NONBLOCK and O_NONBLOCK
1398 O_NONBLOCK is used in libsrc/Misc/misc.C to do a
1399 fcntl (fd, F_SETFL, opt)
1400 ACE_NONBLOCK is used in libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv.C in the
1401 disable member function and options passed to the open function
1402 in libsrc/IPC_SAP/FIFO_SAP/FIFO.C
1410 libsrc/Misc/Profile_Timer.i
1413 if set, includes <sys/procfs.h>
1414 the PIOCUSAGE define is used in Profile_Timer.
1417 procfs.h defines things for the prpsinfo structure (basically to
1418 do a "ps" from inside a program).
1421 don't set: obviously a different mechanism.
1422 Look into /usr/include/sys/proc.h. The structure is proc. The
1423 pointer to the kernel's proc table may be obtained by
1424 extern struct proc *proc, *procNPROC;
1432 libsrc/Misc/Profile_Timer.h
1433 libsrc/Misc/Profile_Timer.C
1436 If defined, declares the Profile_Timer class that does start(),
1437 stop() and basically gets real_time, user_time, system_time for
1439 This stuff is highly non-portable.
1449 libsrc/Semaphores/Semaphore_Simple.h
1452 if not defined, defines semun as:
1454 int val; /* value for SETVAL */
1455 struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
1456 ushort *array; /* array for GETALL & SETALL */
1461 in /usr/include/sem.h:
1462 /* The fourth argument to semctl() varies depending on the value of
1463 its first argument. If desired, "union semun" can be declared
1464 by the user, but this is not necessary since the individual
1465 member can just be passed as the argument. */
1468 ACE_HAS_SIG_ATOMIC_T:
1469 ---------------------
1475 if not defined, does a:
1476 typedef int sig_atomic_t;
1477 This is used in the Reactor and service configurator.
1481 in /usr/include/sys/signal.h:
1482 typedef unsigned int sig_atomic_t;
1492 if not defined, does a
1493 typedef int ssize_t;
1494 used mostly in IPC_SAP. (don't confuse with size_t).
1498 in /usr/include/sys/types.h
1508 if not defined, declares the strbuf structure as:
1511 int maxlen; /* no. of bytes in buffer */
1512 int len; /* no. of bytes returned */
1513 void *buf; /* pointer to data */
1517 defined in /usr/include/sys/stropts.h
1519 uses strbuf as parameter to putmsg, putpmsg:
1520 int putmsg(int fildes, const struct strbuf *ctlptr,
1521 const struct strbuf *dataptr, int flags);
1533 libsrc/IPC_SAP/SOCK_SAP/LSOCK.C
1536 if defined, includes <stropts.h>
1543 ACE_HAS_STREAM_PIPES:
1544 ---------------------
1547 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.h
1548 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Msg.C
1549 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.h
1550 libsrc/IPC_SAP/SPIPE_SAP/SPIPE_Listener.C
1551 libsrc/IPC_SAP/SPIPE_SAP/SPIPE.h
1552 libsrc/IPC_SAP/SPIPE_SAP/SPIPE.C
1553 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.h
1554 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.C
1555 libsrc/IPC_SAP/FIFO_SAP/FIFO_Send_Msg.i
1556 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.h
1557 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.C
1558 libsrc/IPC_SAP/FIFO_SAP/FIFO_Recv_Msg.i
1561 if not set, won't be able to use the SPIPE class (IPC_SAP) with
1576 if not defined, does a:
1577 #define strerror(err) sys_errlist[err]
1580 /usr/include/string.h
1584 in /usr/include/sys/errno.h and string.h
1585 extern char *strerror (int);
1588 ACE_HAS_SVR4_DYNAMIC_LINKING:
1589 -----------------------------
1593 tests/Service_Configurator/CCM_App.C
1596 if defined, includes <dlfcn.h>
1597 with dlopen(), dlsym(), etc..
1602 shl_findsym( ), shl_gethandle( ), shl_getsymbols( ),
1603 shl_unload( ), shl_get( )(3X) - explicit load of shared libraries
1606 ACE_HAS_SVR4_GETTIMEOFDAY:
1607 --------------------------
1611 libsrc/Reactor/Timer_Queue.i
1614 has to do with gettimeofday ().
1617 gettimeofday (struct timeval *tp)
1621 it has gettimeofday (struct timeval *tp, struct timezone *tzp);
1623 #if defined (ACE_HAS_SVR4_GETTIMEOFDAY)
1624 ::gettimeofday (&cur_time);
1626 ::gettimeofday (&cur_time, 0);
1627 #endif /* ACE_HAS_SVR4_GETTIMEOFDAY */
1636 #if defined (ACE_HAS_POLL)
1637 #include /**/ <poll.h>
1638 #endif /* ACE_HAS_POLL */
1640 ACE_USE_POLL_IMPLEMENTATION:
1647 Use the poll() event demultiplexor rather than select().
1653 ACE_HAS_SVR4_SIGNAL_T:
1654 ----------------------
1660 #if defined (ACE_HAS_SVR4_SIGNAL_T)
1661 typedef void (*SignalHandler)(int);
1662 typedef void (*SignalHandlerV)(void);
1663 #elif defined (ACE_HAS_SIGNALHANDLERV_INT_ARG)
1664 typedef void (*SignalHandler)(int);
1665 typedef void (*SignalHandlerV)(int);
1667 #define SignalHandler SIG_PF
1668 typedef void (*SignalHandlerV)(...);
1669 #endif /* ACE_HAS_SVR4_SIGNAL_T */
1679 libsrc/IPC_SAP/TLI_SAP/TLI.C
1680 libsrc/IPC_SAP/TLI_SAP/TLI.h
1681 libsrc/IPC_SAP/TLI_SAP/TLI_Stream.C
1684 TLI is the transport layer calls as in: t_bind(), t_open(), t_unbind(),
1685 t_optmgmt(), ... in SunOS and Solaris.
1692 ACE_HAS_SYS_FILIO_H:
1693 --------------------
1699 if not defined, includes <sys/filio.h>.
1700 didn't find any reference to anything in this file in the ACE code.
1703 filio.h defines FIOCLEX, FIOASYNC, ... as _IO('f', 1), ..
1704 for FIOLFS,.. solaris has this to say:
1706 * ioctl's for Online: DiskSuite.
1707 * WARNING - the support for these ioctls may be withdrawn
1708 * in the future OS releases.
1712 <sys/ioctl.h> defines FIOASYNC and some other ones,
1713 <sgtty.h> defines some like FIOCLEX.
1714 some are never defined.
1715 use #ifdef HP-UX to modify sysincludes.h
1718 ACE_HAS_SYS_SIGLIST:
1719 --------------------
1723 libsrc/Log_Msg/Log_Msg.C
1726 if not defined, does a:
1727 extern const char **_sys_siglist;
1730 This is an array holding signal descriptions.
1734 Some additional work is required. In libsrc/Log_Msg/Log_Msg.C,
1735 sys_siglist is used regardless of ACE_HAS_SYS_SIGLIST.
1736 have to add #ifdefs to remove them.
1739 ACE_HAS_TEMPLATE_TYPEDEFS:
1740 --------------------------
1746 cfront-based C++ compilers don't implement templates that support
1747 classes with typedefs of other types as formal arguments. This
1748 typedef uses the C++ preprocessor to work around this problem.
1754 libsrc/Service_Configurator/Svc_Conf.y.C
1755 libsrc/Service_Configurator/Thread_Spawn.i
1756 libsrc/Threads/Synch.C
1757 libsrc/Threads/Synch.i
1758 libsrc/Threads/Thr_Manager.i
1762 libsrc/ASX/Stream_Modules.C
1763 libsrc/ASX/Multiplexor.C
1764 libsrc/ASX/Message_List.C
1765 include/Message_List.h
1767 include/Multiplexor.h
1770 include/Stream_Modules.h
1771 include/Service_Types.h
1772 include/Thread_Spawn.h
1774 include/Thr_Manager.h
1777 We use Message_List.h even in a non-threaded environment.
1778 our XOMessageList.h does this by #ifdefs around Threaded things.
1791 if defined, include <sys/timod.h>
1794 timod is a STREAMS module for use with the Transport Inter-
1795 face (TI) functions of the Network Services library. The
1796 timod module converts a set of ioctl(2) calls into STREAMS
1797 messages that may be consumed by a transport protocol pro-
1798 vider that supports the Transport Interface. This allows a
1799 user to initiate certain TI functions as atomic operations.
1812 if set, includes <tiuser.h>
1815 in conjunction with t_bind, t_accept, etc.. transport layer.
1821 ACE_USE_POLL_IMPLEMENTATION:
1822 ----------------------------
1825 libsrc/Reactor/Reactor.i
1826 include/Event_Handler.h
1831 in the reactor, use poll instead of select. In general,
1832 good thing to have set.
1835 ----------------------------
1837 ace/Base_Thread_Adapter.h
1838 ace/Base_Thread_Adapter.inl
1839 ace/Base_Thread_Adapter.cpp
1842 When using gprof mainly on Linux, #define ACE_USES_GPROF
1843 will add calls to getitimer/setitimer in order to initialize profile
1844 timer and overcome the problem of gprof with multithreaded applications.
1846 ACE_QTREACTOR_CLEAR_PENDING_EVENTS:
1847 ----------------------------
1850 QtReactor by default does not clear qt events pending for
1851 activated socket. Clearing costs much, at least 2 hash accesses
1852 in ACE, and 2 another in Qt. It is also better to not clear
1853 pending events as some side effects are unknown. However,
1854 when events are not clear, then some user applications may be
1855 confused by handle_input/output/exception called without any
1856 data eg. in ACE_Acceptor::make_svc_handler. This swithc is
1857 intended to quickly fix user application which does not
1858 follow some reactor rules.
1860 It seems linux::qt does not queue pending events. Do not define
1863 Windows::qt queues pending events. If user application has handle_*
1864 methods which cannot be called without data, then turn on this switch
1865 to quickly fix the bug. However, one should seriously fix the