~ubuntu-branches/ubuntu/maverick/wget/maverick

« back to all changes in this revision

Viewing changes to windows/config-compiler.h

  • Committer: Bazaar Package Importer
  • Author(s): Michael Vogt
  • Date: 2008-05-27 11:49:54 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20080527114954-ame070pjhqtofeaf
Tags: 1.11.2-1ubuntu1
* Merge from debian unstable, remaining changes:
  - Add wget-udeb to ship wget.gnu as alternative to busybox wget
    implementation.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Support for various Windows compilation environments.
 
2
   Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
 
3
 
 
4
This file is part of GNU Wget.
 
5
 
 
6
GNU Wget is free software; you can redistribute it and/or modify
 
7
it under the terms of the GNU General Public License as published by
 
8
the Free Software Foundation; either version 3 of the License, or
 
9
(at your option) any later version.
 
10
 
 
11
GNU Wget is distributed in the hope that it will be useful,
 
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
GNU General Public License for more details.
 
15
 
 
16
You should have received a copy of the GNU General Public License
 
17
along with Wget.  If not, see <http://www.gnu.org/licenses/>.
 
18
 
 
19
Additional permission under GNU GPL version 3 section 7
 
20
 
 
21
If you modify this program, or any covered work, by linking or
 
22
combining it with the OpenSSL project's OpenSSL library (or a
 
23
modified version of that library), containing parts covered by the
 
24
terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
 
25
grants you additional permission to convey the resulting work.
 
26
Corresponding Source for a non-source form of such a combination
 
27
shall include the source code for the parts of OpenSSL used as well
 
28
as that of the covered work.  */
 
29
 
 
30
 
 
31
/* This file contains information about various compilers used to
 
32
   build Wget on the Windows platform using its "native" API,
 
33
   sometimes referred to as "Win32".  (This excludes Cygwin, which
 
34
   defines a Unix-compatible layer and is handled with configure.)
 
35
 
 
36
   The above "information about compilers" includes both actual
 
37
   differences in compilers (such as how to construct 64-bit constants
 
38
   or whether C99 `bool' is available) and the properties of the
 
39
   compilation environment and run-time library shipped with the
 
40
   compiler (such as whether stat handles large files or whether
 
41
   strtoll is present).
 
42
 
 
43
   The file is divided into sections for each compiler/environment.
 
44
   Being based on free software, MinGW's section comes first and
 
45
   contains most of the explanatory comments.  Things that apply to
 
46
   *all* compilers, as well as things that are specific to Wget,
 
47
   belong in src/mswindows.h.  */
 
48
 
 
49
/* -------------------- */
 
50
/* MinGW (GCC) section. */
 
51
/* -------------------- */
 
52
#if defined __MINGW32__
 
53
 
 
54
#define OS_TYPE "Windows-MinGW"
 
55
 
 
56
#define LL(n) n##LL
 
57
 
 
58
/* Transparently support statting large files, like POSIX's LFS API
 
59
   does, by aliasing stat and fstat to their equivalents that do LFS.
 
60
   Most Windows compilers we support use _stati64 (but have different
 
61
   names for 2nd argument type, see below), so we use that.  */
 
62
#define stat_alias _stati64
 
63
#define fstat_alias _fstati64
 
64
 
 
65
/* On Windows the 64-bit stat requires an explicitly different type
 
66
   for the 2nd argument, so we define a struct_stat macro that expands
 
67
   to the appropriate type on Windows, and to the regular struct stat
 
68
   on Unix.
 
69
 
 
70
   Note that Borland C 5.5 has 64-bit stat (_stati64), but not a
 
71
   64-bit fstat!  Because of that we also need a struct_fstat that
 
72
   points to struct_stat on Unix and on Windows, except under Borland,
 
73
   where it points to the 32-bit struct stat.  */
 
74
 
 
75
#define struct_stat struct _stati64
 
76
#define struct_fstat struct _stati64
 
77
 
 
78
/* MinGW 3.7 (or older) prototypes gai_strerror(), but is missing
 
79
   from all import libraries. */
 
80
#ifdef ENABLE_IPV6
 
81
# define NEED_GAI_STRERROR
 
82
#endif
 
83
 
 
84
/* MinGW and GCC support some POSIX and C99 features.  */
 
85
#define HAVE_INTTYPES_H 1
 
86
 
 
87
#define HAVE__BOOL 1
 
88
#undef SIZEOF_LONG_LONG         /* avoid redefinition warning */
 
89
#define SIZEOF_LONG_LONG 8
 
90
#define HAVE_INTPTR_T 1
 
91
#define HAVE_UINTPTR_T 1
 
92
#define HAVE_STRTOLL 1
 
93
 
 
94
/* MingW needs _WIN32_WINNT==0x0501 defined to pull in getaddrinfo()
 
95
 * and freeaddrinfo() etc.
 
96
 */
 
97
#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0501)
 
98
#undef _WIN32_WINNT
 
99
#define _WIN32_WINNT 0x0501
 
100
#endif
 
101
 
 
102
 
 
103
/* -------------------- */
 
104
/* MS Visual C section. */
 
105
/* -------------------- */
 
106
#elif defined _MSC_VER
 
107
 
 
108
#define OS_TYPE "Windows-MSVC"
 
109
 
 
110
#define LL(n) n##I64
 
111
 
 
112
#define stat_alias _stati64
 
113
#define fstat_alias _fstati64
 
114
#define struct_stat struct _stati64
 
115
#define struct_fstat struct _stati64
 
116
 
 
117
#define isatty _isatty
 
118
 
 
119
#if _MSC_VER >= 1300
 
120
# define HAVE__STRTOI64 1
 
121
#endif
 
122
 
 
123
#if _MSC_VER >= 1310
 
124
#define HAVE_INTPTR_T 1
 
125
#define HAVE_UINTPTR_T 1
 
126
#endif
 
127
 
 
128
#if _MSC_VER >= 1400
 
129
#pragma warning ( disable : 4996 )
 
130
#define _CRT_SECURE_NO_DEPRECATE
 
131
#endif
 
132
 
 
133
 
 
134
#undef HAVE_UTIME_H         /* no <utime.h> */
 
135
 
 
136
 
 
137
/* ------------------ */
 
138
/* Borland C section. */
 
139
/* ------------------ */
 
140
#elif defined __BORLANDC__
 
141
 
 
142
#define OS_TYPE "Windows-Borland"
 
143
 
 
144
#define LL(n) n##I64
 
145
 
 
146
#define stat_alias _stati64
 
147
#undef fstat_alias
 
148
#define struct_stat struct stati64
 
149
#undef struct_fstat
 
150
 
 
151
/* ------------------------------ */
 
152
/* Digital Mars Compiler section. */
 
153
/* ------------------------------ */
 
154
#elif defined __DMC__
 
155
 
 
156
#define OS_TYPE "Windows-DMC"
 
157
 
 
158
#define LL(n) n##LL
 
159
 
 
160
/* DMC supports 64-bit types, including long long, but not statting
 
161
   large files.  */
 
162
#undef stat_alias
 
163
#undef fstat_alias
 
164
/* If left undefined, sysdep.h will define these to struct stat. */
 
165
#undef struct_stat
 
166
#undef struct_fstat
 
167
 
 
168
/* DMC's runtime supports some POSIX and C99 headers, types, and
 
169
   functions that we use.  */
 
170
 
 
171
#define HAVE_STDINT_H 1
 
172
#define HAVE_INTTYPES_H 1
 
173
#define HAVE_STDBOOL_H 1
 
174
 
 
175
#define HAVE_UINT32_T 1
 
176
#define HAVE_UINTPTR_T 1
 
177
#define HAVE_INTPTR_T 1
 
178
 
 
179
#undef SIZEOF_LONG_LONG
 
180
#define SIZEOF_LONG_LONG 8
 
181
#define HAVE__BOOL 1
 
182
 
 
183
#define HAVE_USLEEP 1
 
184
#define HAVE_STRTOLL 1
 
185
#undef HAVE_UTIME_H         /* no <utime.h> */
 
186
 
 
187
 
 
188
/* -------------------- */
 
189
/* OpenWatcom section.  */
 
190
/* -------------------- */
 
191
#elif defined __WATCOMC__
 
192
 
 
193
#define OS_TYPE "Windows-Watcom"
 
194
 
 
195
#define LL(n) n##LL
 
196
 
 
197
#define stat_alias _stati64
 
198
#define fstat_alias _fstati64
 
199
#define struct_stat struct _stati64
 
200
#define struct_fstat struct _stati64
 
201
 
 
202
#ifdef ENABLE_IPV6
 
203
# define NEED_GAI_STRERROR
 
204
#endif
 
205
 
 
206
#define HAVE_STDINT_H 1
 
207
#define HAVE_INTTYPES_H 1
 
208
 
 
209
/* Watcom 1.6 do have <stdbool.h>, but definition of '_Bool' is missing! */
 
210
/* #define HAVE_STDBOOL_H 1 */
 
211
#define HAVE_STRTOLL 1
 
212
#define HAVE_UINT32_T 1
 
213
#undef HAVE_UTIME_H
 
214
#undef socklen_t                /* avoid clash with <ws2tcpip.h> */
 
215
 
 
216
#undef SIZEOF_LONG_LONG
 
217
#define SIZEOF_LONG_LONG 8
 
218
 
 
219
/* OpenWatcom needs _WIN32_WINNT==0x0501 defined to pull in getaddrinfo()
 
220
 * and freeaddrinfo() etc.
 
221
 */
 
222
#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0501)
 
223
#undef _WIN32_WINNT
 
224
#define _WIN32_WINNT 0x0501
 
225
#endif
 
226
 
 
227
 
 
228
#else
 
229
# error Your compiler is not supported.
 
230
#endif