config-win.h 10.5 KB
Newer Older
unknown's avatar
unknown committed
1 2 3 4
/* Copyright (C) 2000 MySQL AB

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
unknown's avatar
unknown committed
5
   the Free Software Foundation; version 2 of the License.
unknown's avatar
unknown committed
6 7

   This program is distributed in the hope that it will be useful,
unknown's avatar
unknown committed
8
   but WITHOUT ANY WARRANTY; without even the implied warranty of
unknown's avatar
unknown committed
9 10 11 12 13 14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
unknown's avatar
unknown committed
15 16 17

/* Defines for Win32 to make it compatible for MySQL */

18 19 20 21 22
#if defined(_MSC_VER) && _MSC_VER >= 1400
/* Avoid endless warnings about sprintf() etc. being unsafe. */
#define _CRT_SECURE_NO_DEPRECATE 1
#endif

unknown's avatar
unknown committed
23 24 25 26 27 28
#include <sys/locking.h>
#include <windows.h>
#include <fcntl.h>
#include <io.h>
#include <malloc.h>

29
#define BIG_TABLES 1
30 31
#define HAVE_SMEM 1

unknown's avatar
unknown committed
32 33 34 35
#if defined(_WIN64) || defined(WIN64) 
#define SYSTEM_TYPE	"Win64" 
#elif defined(_WIN32) || defined(WIN32) 
#define SYSTEM_TYPE	"Win32" 
unknown's avatar
unknown committed
36
#else
unknown's avatar
unknown committed
37
#define SYSTEM_TYPE	"Windows"
unknown's avatar
unknown committed
38 39
#endif

unknown's avatar
unknown committed
40 41 42 43 44 45
#if defined(_M_IA64) 
#define MACHINE_TYPE	"ia64" 
#elif defined(_M_IX86) 
#define MACHINE_TYPE	"ia32" 
#elif defined(_M_ALPHA) 
#define MACHINE_TYPE	"axp" 
unknown's avatar
unknown committed
46
#else
unknown's avatar
unknown committed
47 48 49 50
#define MACHINE_TYPE	"unknown"	/* Define to machine type name */
#endif 
 
#if !(defined(_WIN64) || defined(WIN64)) 
unknown's avatar
unknown committed
51 52 53 54 55
#ifndef _WIN32
#define _WIN32				/* Compatible with old source */
#endif
#ifndef __WIN32__
#define __WIN32__
unknown's avatar
unknown committed
56
#endif
unknown's avatar
unknown committed
57
#endif /* _WIN64 */
unknown's avatar
unknown committed
58
#ifndef __WIN__
59
#define __WIN__			      /* To make it easier in VC++ */
unknown's avatar
unknown committed
60 61
#endif

unknown's avatar
unknown committed
62 63 64 65
#ifndef MAX_INDEXES
#define MAX_INDEXES 64
#endif

unknown's avatar
unknown committed
66
/* File and lock constants */
67
#define O_SHARE		0x1000		/* Open file in sharing mode */
unknown's avatar
unknown committed
68
#ifdef __BORLANDC__
69 70 71
#define F_RDLCK		LK_NBLCK	/* read lock */
#define F_WRLCK		LK_NBRLCK	/* write lock */
#define F_UNLCK		LK_UNLCK	/* remove lock(s) */
unknown's avatar
unknown committed
72
#else
73 74 75
#define F_RDLCK		_LK_NBLCK	/* read lock */
#define F_WRLCK		_LK_NBRLCK	/* write lock */
#define F_UNLCK		_LK_UNLCK	/* remove lock(s) */
unknown's avatar
unknown committed
76 77
#endif

78 79
#define F_EXCLUSIVE	1		/* We have only exclusive locking */
#define F_TO_EOF	(INT_MAX32/2)	/* size for lock of all file */
unknown's avatar
unknown committed
80
#define F_OK		0		/* parameter to access() */
unknown's avatar
unknown committed
81
#define W_OK		2
unknown's avatar
unknown committed
82 83 84 85 86 87 88 89 90

#define S_IROTH		S_IREAD		/* for my_lib */

#ifdef __BORLANDC__
#define FILE_BINARY	O_BINARY	/* my_fopen in binary mode */
#define O_TEMPORARY	0
#define O_SHORT_LIVED	0
#define SH_DENYNO	_SH_DENYNO
#else
91 92 93 94 95
#define O_BINARY	_O_BINARY	/* compability with MSDOS */
#define FILE_BINARY	_O_BINARY	/* my_fopen in binary mode */
#define O_TEMPORARY	_O_TEMPORARY
#define O_SHORT_LIVED	_O_SHORT_LIVED
#define SH_DENYNO	_SH_DENYNO
unknown's avatar
unknown committed
96 97 98
#endif
#define NO_OPEN_3			/* For my_create() */

99
#define SIGQUIT		SIGTERM		/* No SIGQUIT */
unknown's avatar
unknown committed
100 101

#undef _REENTRANT			/* Crashes something for win32 */
102
#undef SAFE_MUTEX			/* Can't be used on windows */
unknown's avatar
unknown committed
103

unknown's avatar
unknown committed
104 105 106 107 108 109 110 111 112 113 114
#if defined(_MSC_VER) && _MSC_VER >= 1310
#define LL(A)           A##ll
#define ULL(A)          A##ull
#else
#define LL(A)           ((__int64) A)
#define ULL(A)          ((unsigned __int64) A)
#endif

#define LONGLONG_MIN	LL(0x8000000000000000)
#define LONGLONG_MAX	LL(0x7FFFFFFFFFFFFFFF)
#define ULONGLONG_MAX	ULL(0xFFFFFFFFFFFFFFFF)
unknown's avatar
unknown committed
115 116 117

/* Type information */

118 119 120
#if defined(__EMX__) || !defined(HAVE_UINT)
#undef HAVE_UINT
#define HAVE_UINT
121 122
typedef unsigned short	ushort;
typedef unsigned int	uint;
123 124
#endif /* defined(__EMX__) || !defined(HAVE_UINT) */

unknown's avatar
unknown committed
125
typedef unsigned __int64 ulonglong;	/* Microsofts 64 bit types */
126
typedef __int64 longlong;
127
#ifndef HAVE_SIGSET_T
unknown's avatar
unknown committed
128
typedef int sigset_t;
129
#endif
unknown's avatar
unknown committed
130
#define longlong_defined
131 132 133 134 135
/*
  off_t should not be __int64 because of conflicts in header files;
  Use my_off_t or os_off_t instead
*/
#ifndef HAVE_OFF_T
136
typedef long off_t;
137
#endif
unknown's avatar
unknown committed
138
typedef __int64 os_off_t;
139 140 141
#ifdef _WIN64
typedef UINT_PTR rf_SetTimer;
#else
142
#ifndef HAVE_SIZE_T
143
typedef unsigned int size_t;
144
#endif
145 146
typedef uint rf_SetTimer;
#endif
unknown's avatar
unknown committed
147 148 149

#define Socket_defined
#define my_socket SOCKET
150
#define SIGPIPE SIGINT
unknown's avatar
unknown committed
151 152 153 154 155 156 157
#define RETQSORTTYPE void
#define QSORT_TYPE_IS_VOID
#define RETSIGTYPE void
#define SOCKET_SIZE_TYPE int
#define my_socket_defined
#define byte_defined
#define HUGE_PTR
158 159 160
#define STDCALL __stdcall	    /* Used by libmysql.dll */
#define isnan(X) _isnan(X)
#define finite(X) _finite(X)
unknown's avatar
unknown committed
161 162 163 164 165 166 167 168 169

#ifndef UNDEF_THREAD_HACK
#define THREAD
#endif
#define VOID_SIGHANDLER
#define SIZEOF_CHAR		1
#define SIZEOF_LONG		4
#define SIZEOF_LONG_LONG	8
#define SIZEOF_OFF_T		8
170 171 172 173 174
#ifdef _WIN64
#define SIZEOF_CHARP		8
#else
#define SIZEOF_CHARP		4
#endif
unknown's avatar
unknown committed
175 176 177 178 179
#define HAVE_BROKEN_NETINET_INCLUDES
#ifdef __NT__
#define HAVE_NAMED_PIPE			/* We can only create pipes on NT */
#endif

180 181 182
/* ERROR is defined in wingdi.h */
#undef ERROR

183 184 185 186 187
/* We need to close files to break connections on shutdown */
#ifndef SIGNAL_WITH_VIO_CLOSE
#define SIGNAL_WITH_VIO_CLOSE
#endif

unknown's avatar
unknown committed
188 189 190 191
/* Use all character sets in MySQL */
#define USE_MB 1
#define USE_MB_IDENT 1
#define USE_STRCOLL 1
unknown's avatar
unknown committed
192

193 194 195 196
/* All windows servers should support .sym files */
#undef USE_SYMDIR
#define USE_SYMDIR

unknown's avatar
unknown committed
197 198 199
/* If LOAD DATA LOCAL INFILE should be enabled by default */
#define ENABLED_LOCAL_INFILE 1

unknown's avatar
unknown committed
200 201
/* Convert some simple functions to Posix */

202
#define my_sigset(A,B) signal((A),(B))
unknown's avatar
unknown committed
203 204
#define finite(A) _finite(A)
#define sleep(A)  Sleep((A)*1000)
unknown's avatar
unknown committed
205
#define popen(A,B) _popen((A),(B))
unknown's avatar
unknown committed
206
#define pclose(A) _pclose(A)
unknown's avatar
unknown committed
207 208 209 210 211

#ifndef __BORLANDC__
#define access(A,B) _access(A,B)
#endif

212 213 214
#if !defined(__cplusplus)
#define inline __inline
#endif /* __cplusplus */
unknown's avatar
unknown committed
215 216

#ifdef _WIN64
217 218
#define ulonglong2double(A) ((double) (ulonglong) (A))
#define my_off_t2double(A)  ((double) (my_off_t) (A))
unknown's avatar
unknown committed
219 220 221 222 223 224 225 226 227 228 229 230

#else
inline double ulonglong2double(ulonglong value)
{
  longlong nr=(longlong) value;
  if (nr >= 0)
    return (double) nr;
  return (18446744073709551616.0 + (double) nr);
}
#define my_off_t2double(A) ulonglong2double(A)
#endif /* _WIN64 */

231 232 233 234 235 236 237 238 239
inline ulonglong double2ulonglong(double d)
{
  double t= d - (double) 0x8000000000000000ULL;

  if (t >= 0)
    return  ((ulonglong) t) + 0x8000000000000000ULL;
  return (ulonglong) d;
}

unknown's avatar
unknown committed
240 241 242 243 244
#if SIZEOF_OFF_T > 4
#define lseek(A,B,C) _lseeki64((A),(longlong) (B),(C))
#define tell(A) _telli64(A)
#endif

unknown's avatar
unknown committed
245

unknown's avatar
unknown committed
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
#define STACK_DIRECTION -1
#define HAVE_PERROR
#define HAVE_VFPRINT
#define HAVE_RENAME		/* Have rename() as function */
#define HAVE_BINARY_STREAMS	/* Have "b" flag in streams */
#define HAVE_LONG_JMP		/* Have long jump function */
#define HAVE_LOCKING		/* have locking() call */
#define HAVE_ERRNO_AS_DEFINE	/* errno is a define */
#define HAVE_STDLIB		/* everything is include in this file */
#define HAVE_MEMCPY
#define HAVE_MEMMOVE
#define HAVE_GETCWD
#define HAVE_TELL
#define HAVE_TZNAME
#define HAVE_PUTENV
#define HAVE_SELECT
#define HAVE_SETLOCALE
#define HAVE_SOCKET		/* Giangi */
#define HAVE_FLOAT_H
#define HAVE_LIMITS_H
#define HAVE_STDDEF_H
267
#define NO_FCNTL_NONBLOCK	/* No FCNTL */
unknown's avatar
unknown committed
268
#define HAVE_ALLOCA
unknown's avatar
unknown committed
269 270
#define HAVE_STRPBRK
#define HAVE_STRSTR
unknown's avatar
unknown committed
271
#define HAVE_COMPRESS
unknown's avatar
unknown committed
272
#define HAVE_CREATESEMAPHORE
273 274
#define HAVE_ISNAN
#define HAVE_FINITE
275
#define HAVE_QUERY_CACHE
unknown's avatar
unknown committed
276
#define SPRINTF_RETURNS_INT
unknown's avatar
unknown committed
277
#define HAVE_SETFILEPOINTER
278
#define HAVE_VIO_READ_BUFF
279 280
#define HAVE_STRNLEN

281 282 283 284 285
#ifndef __NT__
#undef FILE_SHARE_DELETE
#define FILE_SHARE_DELETE 0     /* Not implemented on Win 98/ME */
#endif

unknown's avatar
unknown committed
286 287 288 289 290
#ifdef NOT_USED
#define HAVE_SNPRINTF		/* Gave link error */
#define _snprintf snprintf
#endif

unknown's avatar
unknown committed
291 292 293 294 295 296 297 298 299
#ifdef _MSC_VER
#define HAVE_LDIV		/* The optimizer breaks in zortech for ldiv */
#define HAVE_ANSI_INCLUDE
#define HAVE_SYS_UTIME_H
#define HAVE_STRTOUL
#endif
#define my_reinterpret_cast(A) reinterpret_cast <A>
#define my_const_cast(A) const_cast<A>

unknown's avatar
unknown committed
300

unknown's avatar
unknown committed
301 302 303 304 305
/* MYSQL OPTIONS */

#ifdef _CUSTOMCONFIG_
#include <custom_conf.h>
#else
306
#ifndef CMAKE_CONFIGD
307
#define DEFAULT_MYSQL_HOME	"c:\\mysql"
308
#define MYSQL_DATADIR          "c:\\mysql\\data"
309
#define PACKAGE			"mysql"
unknown's avatar
unknown committed
310 311 312 313
#define DEFAULT_BASEDIR		"C:\\"
#define SHAREDIR		"share"
#define DEFAULT_CHARSET_HOME	"C:/mysql/"
#endif
314
#endif
315 316 317
#ifndef DEFAULT_HOME_ENV
#define DEFAULT_HOME_ENV MYSQL_HOME
#endif
unknown's avatar
unknown committed
318 319 320
#ifndef DEFAULT_GROUP_SUFFIX_ENV
#define DEFAULT_GROUP_SUFFIX_ENV MYSQL_GROUP_SUFFIX
#endif
unknown's avatar
unknown committed
321 322 323 324 325

/* File name handling */

#define FN_LIBCHAR	'\\'
#define FN_ROOTDIR	"\\"
326
#define FN_DEVCHAR	':'
unknown's avatar
unknown committed
327 328
#define FN_NETWORK_DRIVES	/* Uses \\ to indicate network drives */
#define FN_NO_CASE_SENCE	/* Files are not case-sensitive */
329
#define OS_FILE_LIMIT	2048
unknown's avatar
unknown committed
330

331
#define DO_NOT_REMOVE_THREAD_WRAPPERS
unknown's avatar
unknown committed
332
#define thread_safe_increment(V,L) InterlockedIncrement((long*) &(V))
unknown's avatar
unknown committed
333
#define thread_safe_decrement(V,L) InterlockedDecrement((long*) &(V))
unknown's avatar
unknown committed
334 335 336 337 338 339 340 341 342 343
/* The following is only used for statistics, so it should be good enough */
#ifdef __NT__  /* This should also work on Win98 but .. */
#define thread_safe_add(V,C,L) InterlockedExchangeAdd((long*) &(V),(C))
#define thread_safe_sub(V,C,L) InterlockedExchangeAdd((long*) &(V),-(long) (C))
#define statistic_add(V,C,L) thread_safe_add((V),(C),(L))
#else
#define thread_safe_add(V,C,L) \
	pthread_mutex_lock((L)); (V)+=(C); pthread_mutex_unlock((L));
#define thread_safe_sub(V,C,L) \
	pthread_mutex_lock((L)); (V)-=(C); pthread_mutex_unlock((L));
344
#define statistic_add(V,C,L)	 (V)+=(C)
unknown's avatar
unknown committed
345 346
#endif
#define statistic_increment(V,L) thread_safe_increment((V),(L))
unknown's avatar
unknown committed
347
#define statistic_decrement(V,L) thread_safe_decrement((V),(L))
348 349

#define shared_memory_buffer_length 16000
unknown's avatar
unknown committed
350
#define default_shared_memory_base_name "MYSQL"
unknown's avatar
unknown committed
351

352 353
#define MYSQL_DEFAULT_CHARSET_NAME "latin1"
#define MYSQL_DEFAULT_COLLATION_NAME "latin1_swedish_ci"
354

355
#define HAVE_SPATIAL 1
356
#define HAVE_RTREE_KEYS 1
357

358 359
#define HAVE_OPENSSL 1
#define HAVE_YASSL 1
unknown's avatar
unknown committed
360

361 362 363 364 365 366 367 368 369 370 371
/* Define charsets you want */
/* #undef HAVE_CHARSET_armscii8 */
/* #undef HAVE_CHARSET_ascii */
#define HAVE_CHARSET_big5 1
#define HAVE_CHARSET_cp1250 1
/* #undef HAVE_CHARSET_cp1251 */
/* #undef HAVE_CHARSET_cp1256 */
/* #undef HAVE_CHARSET_cp1257 */
/* #undef HAVE_CHARSET_cp850 */
/* #undef HAVE_CHARSET_cp852 */
/* #undef HAVE_CHARSET_cp866 */
372
#define HAVE_CHARSET_cp932 1
373
/* #undef HAVE_CHARSET_dec8 */
374
#define HAVE_CHARSET_eucjpms 1
375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395
#define HAVE_CHARSET_euckr 1
#define HAVE_CHARSET_gb2312 1
#define HAVE_CHARSET_gbk 1
/* #undef HAVE_CHARSET_greek */
/* #undef HAVE_CHARSET_hebrew */
/* #undef HAVE_CHARSET_hp8 */
/* #undef HAVE_CHARSET_keybcs2 */
/* #undef HAVE_CHARSET_koi8r */
/* #undef HAVE_CHARSET_koi8u */
#define HAVE_CHARSET_latin1 1
#define HAVE_CHARSET_latin2 1
/* #undef HAVE_CHARSET_latin5 */
/* #undef HAVE_CHARSET_latin7 */
/* #undef HAVE_CHARSET_macce */
/* #undef HAVE_CHARSET_macroman */
#define HAVE_CHARSET_sjis 1
/* #undef HAVE_CHARSET_swe7 */
#define HAVE_CHARSET_tis620 1
#define HAVE_CHARSET_ucs2 1
#define HAVE_CHARSET_ujis 1
#define HAVE_CHARSET_utf8 1
unknown's avatar
unknown committed
396
#define HAVE_UCA_COLLATIONS 1
397
#define HAVE_BOOL 1