config-win.h 11.7 KB
Newer Older
unknown's avatar
unknown committed
1 2 3 4 5 6 7 8
/* 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
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
unknown's avatar
unknown committed
9
   but WITHOUT ANY WARRANTY; without even the implied warranty of
unknown's avatar
unknown committed
10 11 12 13 14 15
   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
16 17 18

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

19 20 21 22 23 24
#ifdef __WIN2000__
/* We have to do this define before including windows.h to get the AWE API
functions */
#define _WIN32_WINNT     0x0500
#endif

unknown's avatar
unknown committed
25 26 27 28 29 30 31
#include <sys/locking.h>
#include <windows.h>
#include <math.h>			/* Because of rint() */
#include <fcntl.h>
#include <io.h>
#include <malloc.h>

32 33
#define HAVE_SMEM 1

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

unknown's avatar
unknown committed
42 43 44 45 46 47
#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
48
#else
unknown's avatar
unknown committed
49 50 51 52
#define MACHINE_TYPE	"unknown"	/* Define to machine type name */
#endif 
 
#if !(defined(_WIN64) || defined(WIN64)) 
unknown's avatar
unknown committed
53 54 55 56 57
#ifndef _WIN32
#define _WIN32				/* Compatible with old source */
#endif
#ifndef __WIN32__
#define __WIN32__
unknown's avatar
unknown committed
58
#endif
unknown's avatar
unknown committed
59
#endif /* _WIN64 */
unknown's avatar
unknown committed
60
#ifndef __WIN__
61
#define __WIN__			      /* To make it easier in VC++ */
unknown's avatar
unknown committed
62 63 64
#endif

/* File and lock constants */
65
#define O_SHARE		0x1000		/* Open file in sharing mode */
unknown's avatar
unknown committed
66
#ifdef __BORLANDC__
67 68 69
#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
70
#else
71 72 73
#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
74 75
#endif

76 77
#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
78 79 80 81 82 83 84 85 86 87
#define F_OK		0		/* parameter to access() */

#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
88 89 90 91 92
#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
93 94 95
#endif
#define NO_OPEN_3			/* For my_create() */

96
#define SIGQUIT		SIGTERM		/* No SIGQUIT */
unknown's avatar
unknown committed
97 98

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

#define LONGLONG_MIN	((__int64) 0x8000000000000000)
#define LONGLONG_MAX	((__int64) 0x7FFFFFFFFFFFFFFF)
103
#define ULONGLONG_MAX	((unsigned __int64) 0xFFFFFFFFFFFFFFFF)
unknown's avatar
unknown committed
104
#define LL(A)		((__int64) A)
105
#define ULL(A)		((unsigned __int64) A)
unknown's avatar
unknown committed
106 107 108

/* Type information */

109 110
typedef unsigned short	ushort;
typedef unsigned int	uint;
unknown's avatar
unknown committed
111
typedef unsigned __int64 ulonglong;	/* Microsofts 64 bit types */
112
typedef __int64 longlong;
unknown's avatar
unknown committed
113 114 115 116
typedef int sigset_t;
#define longlong_defined
/* off_t should not be __int64 because of conflicts in header files;
   Use my_off_t or os_off_t instead */
117
typedef long off_t;
unknown's avatar
unknown committed
118
typedef __int64 os_off_t;
119 120 121 122 123 124
#ifdef _WIN64
typedef UINT_PTR rf_SetTimer;
#else
typedef unsigned int size_t;
typedef uint rf_SetTimer;
#endif
unknown's avatar
unknown committed
125 126 127 128

#define Socket_defined
#define my_socket SOCKET
#define bool BOOL
129
#define SIGPIPE SIGINT
unknown's avatar
unknown committed
130 131 132 133 134 135 136 137
#define RETQSORTTYPE void
#define QSORT_TYPE_IS_VOID
#define RETSIGTYPE void
#define SOCKET_SIZE_TYPE int
#define my_socket_defined
#define bool_defined
#define byte_defined
#define HUGE_PTR
138 139 140
#define STDCALL __stdcall	    /* Used by libmysql.dll */
#define isnan(X) _isnan(X)
#define finite(X) _finite(X)
unknown's avatar
unknown committed
141 142 143 144 145 146 147 148 149

#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
150 151 152 153 154
#ifdef _WIN64
#define SIZEOF_CHARP		8
#else
#define SIZEOF_CHARP		4
#endif
unknown's avatar
unknown committed
155 156 157 158 159
#define HAVE_BROKEN_NETINET_INCLUDES
#ifdef __NT__
#define HAVE_NAMED_PIPE			/* We can only create pipes on NT */
#endif

160 161 162
/* ERROR is defined in wingdi.h */
#undef ERROR

163 164 165 166 167
/* 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
168 169 170 171
/* Use all character sets in MySQL */
#define USE_MB 1
#define USE_MB_IDENT 1
#define USE_STRCOLL 1
unknown's avatar
unknown committed
172

173 174 175 176
/* All windows servers should support .sym files */
#undef USE_SYMDIR
#define USE_SYMDIR

unknown's avatar
unknown committed
177 178 179
/* If LOAD DATA LOCAL INFILE should be enabled by default */
#define ENABLED_LOCAL_INFILE 1

unknown's avatar
unknown committed
180 181 182 183 184
/* Convert some simple functions to Posix */

#define sigset(A,B) signal((A),(B))
#define finite(A) _finite(A)
#define sleep(A)  Sleep((A)*1000)
unknown's avatar
unknown committed
185 186
#define popen(A) popen(A,B) _popen((A),(B))
#define pclose(A) _pclose(A)
unknown's avatar
unknown committed
187 188 189 190 191

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

192 193 194
#if !defined(__cplusplus)
#define inline __inline
#endif /* __cplusplus */
unknown's avatar
unknown committed
195 196 197 198 199 200 201 202 203

inline double rint(double nr)
{
  double f = floor(nr);
  double c = ceil(nr);
  return (((c-nr) >= (nr-f)) ? f :c);
}

#ifdef _WIN64
204 205
#define ulonglong2double(A) ((double) (ulonglong) (A))
#define my_off_t2double(A)  ((double) (my_off_t) (A))
unknown's avatar
unknown committed
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222

#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 */

#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
223 224
#define set_timespec(ABSTIME,SEC) { (ABSTIME).tv_sec=time((time_t*)0) + (time_t) (SEC); (ABSTIME).tv_nsec=0; }

unknown's avatar
unknown committed
225 226 227 228
#define STACK_DIRECTION -1

/* Optimized store functions for Intel x86 */

229
#ifndef _WIN64
unknown's avatar
unknown committed
230 231 232 233 234 235 236 237 238 239 240
#define sint2korr(A)	(*((int16 *) (A)))
#define sint3korr(A)	((int32) ((((uchar) (A)[2]) & 128) ? \
				  (((uint32) 255L << 24) | \
				   (((uint32) (uchar) (A)[2]) << 16) |\
				   (((uint32) (uchar) (A)[1]) << 8) | \
				   ((uint32) (uchar) (A)[0])) : \
				  (((uint32) (uchar) (A)[2]) << 16) |\
				  (((uint32) (uchar) (A)[1]) << 8) | \
				  ((uint32) (uchar) (A)[0])))
#define sint4korr(A)	(*((long *) (A)))
#define uint2korr(A)	(*((uint16 *) (A)))
241 242 243 244 245 246 247
/*
   ATTENTION !
   
    Please, note, uint3korr reads 4 bytes (not 3) !
    It means, that you have to provide enough allocated space !
*/
#define uint3korr(A)	(long) (*((unsigned int *) (A)) & 0xFFFFFF)
unknown's avatar
unknown committed
248 249 250 251 252
#define uint4korr(A)	(*((unsigned long *) (A)))
#define uint5korr(A)	((ulonglong)(((uint32) ((uchar) (A)[0])) +\
				    (((uint32) ((uchar) (A)[1])) << 8) +\
				    (((uint32) ((uchar) (A)[2])) << 16) +\
				    (((uint32) ((uchar) (A)[3])) << 24)) +\
253
				    (((ulonglong) ((uchar) (A)[4])) << 32))
unknown's avatar
unknown committed
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272
#define uint8korr(A)	(*((ulonglong *) (A)))
#define sint8korr(A)	(*((longlong *) (A)))
#define int2store(T,A)	*((uint16*) (T))= (uint16) (A)
#define int3store(T,A)		{ *(T)=  (uchar) ((A));\
				  *(T+1)=(uchar) (((uint) (A) >> 8));\
				  *(T+2)=(uchar) (((A) >> 16)); }
#define int4store(T,A)	*((long *) (T))= (long) (A)
#define int5store(T,A)	{ *(T)= (uchar)((A));\
			  *((T)+1)=(uchar) (((A) >> 8));\
			  *((T)+2)=(uchar) (((A) >> 16));\
			  *((T)+3)=(uchar) (((A) >> 24)); \
			  *((T)+4)=(uchar) (((A) >> 32)); }
#define int8store(T,A)	*((ulonglong *) (T))= (ulonglong) (A)

#define doubleget(V,M)	{ *((long *) &V) = *((long*) M); \
			  *(((long *) &V)+1) = *(((long*) M)+1); }
#define doublestore(T,V) { *((long *) T) = *((long*) &V); \
			   *(((long *) T)+1) = *(((long*) &V)+1); }
#define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }
273
#define floatstore(T,V) memcpy((byte*)(T), (byte*)(&V), sizeof(float))
unknown's avatar
unknown committed
274 275 276
#define float8get(V,M) doubleget((V),(M))
#define float4store(V,M) memcpy((byte*) V,(byte*) (&M),sizeof(float))
#define float8store(V,M) doublestore((V),(M))
277
#endif /* _WIN64 */
unknown's avatar
unknown committed
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298

#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
299 300
#define HAVE_RINT		/* defined in this file */
#define NO_FCNTL_NONBLOCK	/* No FCNTL */
unknown's avatar
unknown committed
301
#define HAVE_ALLOCA
unknown's avatar
unknown committed
302 303
#define HAVE_STRPBRK
#define HAVE_STRSTR
unknown's avatar
unknown committed
304
#define HAVE_COMPRESS
unknown's avatar
unknown committed
305
#define HAVE_CREATESEMAPHORE
306 307
#define HAVE_ISNAN
#define HAVE_FINITE
308
#define HAVE_QUERY_CACHE
unknown's avatar
unknown committed
309
#define SPRINTF_RETURNS_INT
unknown's avatar
unknown committed
310
#define HAVE_SETFILEPOINTER
unknown's avatar
unknown committed
311
#define HAVE_VIO
312

unknown's avatar
unknown committed
313 314 315 316 317
#ifdef NOT_USED
#define HAVE_SNPRINTF		/* Gave link error */
#define _snprintf snprintf
#endif

unknown's avatar
unknown committed
318 319 320 321 322 323 324 325 326
#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
327

unknown's avatar
unknown committed
328 329 330 331 332
/* MYSQL OPTIONS */

#ifdef _CUSTOMCONFIG_
#include <custom_conf.h>
#else
333 334
#define DEFAULT_MYSQL_HOME	"c:\\mysql"
#define PACKAGE			"mysql"
unknown's avatar
unknown committed
335 336 337 338 339 340 341 342 343 344 345
#define DEFAULT_BASEDIR		"C:\\"
#define SHAREDIR		"share"
#define DEFAULT_CHARSET_HOME	"C:/mysql/"
#endif

/* File name handling */

#define FN_LIBCHAR	'\\'
#define FN_ROOTDIR	"\\"
#define FN_NETWORK_DRIVES	/* Uses \\ to indicate network drives */
#define FN_NO_CASE_SENCE	/* Files are not case-sensitive */
346
#define OS_FILE_LIMIT	2048
unknown's avatar
unknown committed
347

348
#define DO_NOT_REMOVE_THREAD_WRAPPERS
unknown's avatar
unknown committed
349 350 351 352 353 354 355 356 357 358 359
#define thread_safe_increment(V,L) InterlockedIncrement((long*) &(V))
/* 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));
360
#define statistic_add(V,C,L)	 (V)+=(C)
unknown's avatar
unknown committed
361 362
#endif
#define statistic_increment(V,L) thread_safe_increment((V),(L))
363 364

#define shared_memory_buffer_length 16000
unknown's avatar
unknown committed
365
#define default_shared_memory_base_name "MYSQL"
366 367
#define MYSQL_DEFAULT_CHARSET_NAME "latin1"
#define MYSQL_DEFAULT_COLLATION_NAME "latin1_swedish_ci"
368

369
#define HAVE_SPATIAL 1
370
#define HAVE_RTREE_KEYS 1
371

372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405
/* 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 */
/* #undef HAVE_CHARSET_dec8 */
#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