summaryrefslogtreecommitdiff
path: root/boehm-gc/include/gc_config_macros.h
blob: a01da4a1342d177b0401f9396c62d2924edc22d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*
 * This should never be included directly.  It is included only from gc.h.
 * We separate it only to make gc.h more suitable as documentation.
 */
#if !defined(_REENTRANT) && (defined(GC_SOLARIS_THREADS) \
		             || defined(GC_SOLARIS_PTHREADS) \
			     || defined(GC_HPUX_THREADS) \
			     || defined(GC_AIX_THREADS) \
			     || defined(GC_LINUX_THREADS) \
			     || defined(GC_GNU_THREADS))
# define _REENTRANT
	/* Better late than never.  This fails if system headers that	*/
	/* depend on this were previously included.			*/
#endif

#if defined(GC_DGUX386_THREADS) && !defined(_POSIX4A_DRAFT10_SOURCE)
# define _POSIX4A_DRAFT10_SOURCE 1
#endif

# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \
	defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \
	defined(GC_GNU_THREADS) || \
	defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \
	defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
	defined(GC_AIX_THREADS) || \
        (defined(GC_WIN32_THREADS) && defined(__CYGWIN__))
#   define GC_PTHREADS
# endif

#if defined(GC_THREADS) && !defined(GC_PTHREADS)
# if defined(__linux__)
#   define GC_LINUX_THREADS
#   define GC_PTHREADS
# endif
# if !defined(LINUX) && (defined(_PA_RISC1_1) || defined(_PA_RISC2_0) \
                         || defined(hppa) || defined(__HPPA))
#   define GC_HPUX_THREADS
#   define GC_PTHREADS
# endif
# if !defined(__linux__) && (defined(__alpha) || defined(__alpha__))
#   define GC_OSF1_THREADS
#   define GC_PTHREADS
# endif
# if defined(__mips) && !defined(__linux__)
#   define GC_IRIX_THREADS
#   define GC_PTHREADS
# endif
# if defined(__sparc) && !defined(__linux__)
#   define GC_SOLARIS_PTHREADS
#   define GC_PTHREADS
# endif
# if defined(__APPLE__) && defined(__MACH__) && defined(__ppc__)
#   define GC_DARWIN_THREADS
#   define GC_PTHREADS
# endif
# if !defined(GC_PTHREADS) && defined(__FreeBSD__)
#   define GC_FREEBSD_THREADS
#   define GC_PTHREADS
# endif
# if defined(DGUX) && (defined(i386) || defined(__i386__))
#   define GC_DGUX386_THREADS
#   define GC_PTHREADS
# endif
# if defined(_AIX)
#   define GC_AIX_THREADS
#   define GC_PTHREADS
# endif
#endif /* GC_THREADS */

#if defined(GC_THREADS) && !defined(GC_PTHREADS) && \
    (defined(_WIN32) || defined(_MSC_VER) || defined(__CYGWIN__) \
     || defined(__MINGW32__) || defined(__BORLANDC__) \
     || defined(_WIN32_WCE))
# define GC_WIN32_THREADS
#endif

# define __GC
# ifndef _WIN32_WCE
#   include <stddef.h>
# else /* ! _WIN32_WCE */
/* Yet more kluges for WinCE */
#   include <stdlib.h>		/* size_t is defined here */
    typedef long ptrdiff_t;	/* ptrdiff_t is not defined */
# endif

#if ((defined(_DLL) && !defined (__MINGW32__)) \
     || (defined (DLL_EXPORT) && defined (GC_BUILD))) \
    && !defined(GC_DLL)
# define GC_DLL
#endif

#if defined(__MINGW32__) && defined(GC_DLL)
# ifdef GC_BUILD
#   define GC_API __declspec(dllexport)
# else
#   define GC_API __declspec(dllimport)
# endif
#endif

#if (defined(__DMC__) || defined(_MSC_VER)) && defined(GC_DLL)
# ifdef GC_BUILD
#   define GC_API extern __declspec(dllexport)
# else
#   define GC_API __declspec(dllimport)
# endif
#endif

#if defined(__WATCOMC__) && defined(GC_DLL)
# ifdef GC_BUILD
#   define GC_API extern __declspec(dllexport)
# else
#   define GC_API extern __declspec(dllimport)
# endif
#endif

#ifndef GC_API
#define GC_API extern
#endif