summaryrefslogtreecommitdiff
path: root/tvision/include/cl/needs.h
blob: 335812318e946616d27c71635338a3a225a9fd2b (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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/**[txh]********************************************************************

  Description:
  This header defines which functions must be defined for each supported
compiler.@p

  Copyright (c) 2000-2005 by Salvador E. Tropea
  Covered by the GPL license.

***************************************************************************/

#include <tv/configtv.h>

#ifdef TVComp_GCC
 // GNU c is supported for various OSs:
 
 #define NEEDS_GETCURDIR
 
 // Win32 MinGW
 #ifdef TVCompf_MinGW
  #define NEEDS_FIXPATH
  #define NEEDS_GLOB
  #define NEEDS_FNMATCH
  #define NEEDS_REGEX
  #define NEEDS_GETOPT
  #define NEEDS_MKSTEMP
  #define NEEDS_NL_LANGINFO
  #define NEEDS_GETLINE
  // Internal implementation is broken. Is the same provided by MSVC.
  #define NEEDS_SNPRINTF
 #endif
 
 // Win32 Cygwin
 #ifdef TVCompf_Cygwin
  #define NEEDS_FIXPATH
  #define NEEDS_FILELENGTH
  #define NEEDS_NL_LANGINFO
  #define NEEDS_FNMATCH
  #define NEEDS_ITOA
  #define NEEDS_GETLINE
 #endif
 
 // DOS djgpp
 #ifdef TVCompf_djgpp
  #define NEEDS_GETOPT
  #define NEEDS_NL_LANGINFO
  #define NEEDS_GETLINE
  #define NEEDS_SNPRINTF
 #endif
 
 // Linux
 #ifdef TVOSf_Linux
  // Strings
  #define NEEDS_STRLWR
  #define NEEDS_STRUPR
  #define NEEDS_FIXPATH
  #define NEEDS_FILELENGTH
  #define NEEDS_ITOA
 #endif
 
 // Solaris
 #ifdef TVOSf_Solaris
  // Strings
  #define NEEDS_STRLWR
  #define NEEDS_STRUPR
  #define NEEDS_GETOPT
  #define NEEDS_FIXPATH
  #define NEEDS_FILELENGTH
  #define NEEDS_ITOA
  #define NEEDS_NL_LANGINFO
  #define NEEDS_GETLINE
  #define NEEDS_SNPRINTF
 #endif

 #ifdef TVOSf_QNX4
  #define NEEDS_SNPRINTF
 #endif // TVOSf_QNX4

 #ifdef TVOSf_Darwin
  #define NEEDS_SNPRINTF
 #endif

 // Generic UNIX system
 #if defined(TVOS_UNIX) && !defined(TVOSf_Linux) && !defined(TVOSf_Solaris)
  // Strings
  #define NEEDS_STRLWR
  #define NEEDS_STRUPR
  #define NEEDS_FIXPATH
  #define NEEDS_FILELENGTH
  #define NEEDS_ITOA
  #define NEEDS_NL_LANGINFO
  #define NEEDS_GETLINE
  #if defined(TVOSf_FreeBSD) || defined(TVOSf_QNXRtP) || defined(TVOSf_QNX4) \
      || defined(TVOSf_Darwin)
   // Not for OpenBSD and NetBSD
   #define NEEDS_GETOPT
  #endif
 #endif
#endif


// BC++ 5.5 for Win32 is supported
#ifdef TVComp_BCPP
 #define NEEDS_FIXPATH
 #define NEEDS_GLOB
 #define NEEDS_FNMATCH
 #define NEEDS_UNC
 #define NEEDS_REGEX
 #define NEEDS_GETOPT
 #define NEEDS_OPENDIR
 #define NEEDS_MKSTEMP
 #define NEEDS_NL_LANGINFO
 #define NEEDS_IFSTREAMGETLINE
 #define NEEDS_GETLINE
#endif


// MSVC will be supported if volunteers tests it or Microsoft decides to
// give it for free ;-). After all Borland released BC++ 5.5.
#if (defined(_MSVC) || defined(__MSC_VER)) && !defined(_MSC_VER)
 #define _MSC_VER 100
#endif

#ifdef TVComp_MSC
 #define NEEDS_GETCURDIR
 #define NEEDS_FIXPATH
 #define NEEDS_GLOB
 #define NEEDS_FNMATCH
 #define NEEDS_REGEX
 #define NEEDS_GETOPT
 #define NEEDS_MKSTEMP
 #define NEEDS_NL_LANGINFO
 #define NEEDS_GETLINE
 #define NEEDS_OPENDIR
 // Internal implementation is broken.
 #define NEEDS_SNPRINTF
 #define NEEDS_UNC
#endif

// Open Watcom for Win32 is supported
#ifdef TVComp_Watcom
 #define NEEDS_FIXPATH
 #define NEEDS_GLOB
 #define NEEDS_FNMATCH
 #define NEEDS_UNC
 #define NEEDS_GETOPT
 #define NEEDS_OPENDIR
 #define NEEDS_NL_LANGINFO
 #define NEEDS_IFSTREAMGETLINE
 #define NEEDS_GETLINE
 #define NEEDS_GETCURDIR
#endif