15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* config.h  */
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PTW32_CONFIG_H
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PTW32_CONFIG_H
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*********************************************************************
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Defaults: see target specific redefinitions below.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *********************************************************************/
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* We're building the pthreads-win32 library */
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PTW32_BUILD
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Do we know about the C type sigset_t? */
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_SIGSET_T
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you have the <signal.h> header file.  */
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_SIGNAL_H
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you have the Borland TASM32 or compatible assembler.  */
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_TASM32
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 DuplicateHandle. (eg. WinCE) */
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_DUPLICATEHANDLE
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 _beginthreadex. (eg. WinCE) */
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_CREATETHREAD
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 errno. (eg. WinCE) */
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_ERRNO
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 calloc. (eg. WinCE)  */
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_CALLOC
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 ftime. (eg. WinCE)  */
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_FTIME
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have Win32 semaphores. (eg. WinCE 2.1 or earlier)  */
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_SEM
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you need to convert string parameters to unicode. (eg. WinCE)  */
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_UNICODE_CONSTS
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if your C (not C++) compiler supports "inline" functions. */
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_C_INLINE
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Do we know about type mode_t? */
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_MODE_T
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Define if GCC has atomic builtins, i.e. __sync_* intrinsics
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * __sync_lock_* is implemented in mingw32 gcc 4.5.2 at least
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * so this define does not turn those on or off. If you get an
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * error from __sync_lock* then consider upgrading your gcc.
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_GCC_ATOMIC_BUILTINS
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you have the timespec struct */
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef HAVE_STRUCT_TIMESPEC
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if you don't have the GetProcessAffinityMask() */
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef NEED_PROCESS_AFFINITY_MASK
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define if your version of Windows TLSGetValue() clears WSALastError
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * and calling SetLastError() isn't enough restore it. You'll also need to
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * link against wsock32.lib (or libwsock32.a for MinGW).
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef RETAIN_WSALASTERROR
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ----------------------------------------------------------------------
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The library can be built with some alternative behaviour to better
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# facilitate development of applications on Win32 that will be ported
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# to other POSIX systems.
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Nothing described here will make the library non-compliant and strictly
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# compliant applications will not be affected in any way, but
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# applications that make assumptions that POSIX does not guarantee are
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# not strictly compliant and may fail or misbehave with some settings.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# PTW32_THREAD_ID_REUSE_INCREMENT
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Purpose:
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# POSIX says that applications should assume that thread IDs can be
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# recycled. However, Solaris (and some other systems) use a [very large]
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# sequence number as the thread ID, which provides virtual uniqueness.
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This provides a very high but finite level of safety for applications
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# that are not meticulous in tracking thread lifecycles e.g. applications
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# that call functions which target detached threads without some form of
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# thread exit synchronisation.
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Usage:
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Set to any value in the range: 0 <= value < 2^wordsize.
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Set to 0 to emulate reusable thread ID behaviour like Linux or *BSD.
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Set to 1 for unique thread IDs like Solaris (this is the default).
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Set to some factor of 2^wordsize to emulate smaller word size types
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# (i.e. will wrap sooner). This might be useful to emulate some embedded
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# systems.
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define PTW32_THREAD_ID_REUSE_INCREMENT 0
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ----------------------------------------------------------------------
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef PTW32_THREAD_ID_REUSE_INCREMENT
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*********************************************************************
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Target specific groups
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If you find that these are incorrect or incomplete please report it
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to the pthreads-win32 maintainer. Thanks.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *********************************************************************/
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(WINCE)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_DUPLICATEHANDLE
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_CREATETHREAD
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_ERRNO
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_CALLOC
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_FTIME
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* #define NEED_SEM */
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_UNICODE_CONSTS
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NEED_PROCESS_AFFINITY_MASK
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This may not be needed */
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define RETAIN_WSALASTERROR
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_UWIN)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_MODE_T
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_STRUCT_TIMESPEC
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__GNUC__)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_C_INLINE
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__MINGW64__)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_MODE_T
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_STRUCT_TIMESPEC
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(__MINGW32__)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_MODE_T
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__BORLANDC__)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__WATCOMC__)
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(__DMC__)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_SIGNAL_H
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_C_INLINE
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
154