1// Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
2//
3// This program is free software; you can redistribute it and/or modify
4// it under the terms of the GNU General Public License, version 2.0, as
5// published by the Free Software Foundation.
6//
7// This program is also distributed with certain software (including
8// but not limited to OpenSSL) that is licensed under separate terms,
9// as designated in a particular file or component or in included license
10// documentation. The authors of MySQL hereby grant you an
11// additional permission to link the program and your derivative works
12// with the separately licensed software that they have included with
13// MySQL.
14//
15// Without limiting anything contained in the foregoing, this file,
16// which is part of MySQL Connector/ODBC, is also subject to the
17// Universal FOSS Exception, version 1.0, a copy of which can be found at
18// http://oss.oracle.com/licenses/universal-foss-exception.
19//
20// This program is distributed in the hope that it will be useful, but
21// WITHOUT ANY WARRANTY; without even the implied warranty of
22// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
23// See the GNU General Public License, version 2.0, for more details.
24//
25// You should have received a copy of the GNU General Public License
26// along with this program; if not, write to the Free Software Foundation, Inc.,
27// 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28
29#ifndef MY_CONFIG_H
30#define MY_CONFIG_H
31
32/*
33 * From configure.cmake, in order of appearance
34 */
35#cmakedefine HAVE_LLVM_LIBCPP 1
36
37/* Libraries */
38#cmakedefine HAVE_LIBM 1
39#cmakedefine HAVE_LIBNSL 1
40#cmakedefine HAVE_LIBCRYPT 1
41#cmakedefine HAVE_LIBSOCKET 1
42#cmakedefine HAVE_LIBDL 1
43#cmakedefine HAVE_LIBRT 1
44#cmakedefine HAVE_LIBWRAP 1
45#cmakedefine HAVE_LIBWRAP_PROTOTYPES 1
46
47/* Header files */
48#cmakedefine HAVE_ALLOCA_H 1
49#cmakedefine HAVE_ARPA_INET_H 1
50#cmakedefine HAVE_DLFCN_H 1
51#cmakedefine HAVE_EXECINFO_H 1
52#cmakedefine HAVE_FPU_CONTROL_H 1
53#cmakedefine HAVE_GRP_H 1
54#cmakedefine HAVE_IEEEFP_H 1
55#cmakedefine HAVE_LANGINFO_H 1
56#cmakedefine HAVE_LSAN_INTERFACE_H 1
57#cmakedefine HAVE_MALLOC_H 1
58#cmakedefine HAVE_NETINET_IN_H 1
59#cmakedefine HAVE_POLL_H 1
60#cmakedefine HAVE_PWD_H 1
61#cmakedefine HAVE_STRINGS_H 1
62#cmakedefine HAVE_SYS_CDEFS_H 1
63#cmakedefine HAVE_SYS_IOCTL_H 1
64#cmakedefine HAVE_SYS_MMAN_H 1
65#cmakedefine HAVE_SYS_RESOURCE_H 1
66#cmakedefine HAVE_SYS_SELECT_H 1
67#cmakedefine HAVE_SYS_SOCKET_H 1
68#cmakedefine HAVE_TERM_H 1
69#cmakedefine HAVE_TERMIOS_H 1
70#cmakedefine HAVE_TERMIO_H 1
71#cmakedefine HAVE_UNISTD_H 1
72#cmakedefine HAVE_SYS_WAIT_H 1
73#cmakedefine HAVE_SYS_PARAM_H 1
74#cmakedefine HAVE_FNMATCH_H 1
75#cmakedefine HAVE_SYS_UN_H 1
76#cmakedefine HAVE_VIS_H 1
77#cmakedefine HAVE_SASL_SASL_H 1
78
79/* Libevent */
80#cmakedefine HAVE_DEVPOLL 1
81#cmakedefine HAVE_SYS_DEVPOLL_H 1
82#cmakedefine HAVE_SYS_EPOLL_H 1
83#cmakedefine HAVE_TAILQFOREACH 1
84
85/* Functions */
86#cmakedefine HAVE_ALIGNED_MALLOC 1
87#cmakedefine HAVE_BACKTRACE 1
88#cmakedefine HAVE_PRINTSTACK 1
89#cmakedefine HAVE_INDEX 1
90#cmakedefine HAVE_CHOWN 1
91#cmakedefine HAVE_CUSERID 1
92#cmakedefine HAVE_DIRECTIO 1
93#cmakedefine HAVE_FTRUNCATE 1
94#cmakedefine HAVE_FCHMOD 1
95#cmakedefine HAVE_FCNTL 1
96#cmakedefine HAVE_FDATASYNC 1
97#cmakedefine HAVE_DECL_FDATASYNC 1
98#cmakedefine HAVE_FEDISABLEEXCEPT 1
99#cmakedefine HAVE_FSEEKO 1
100#cmakedefine HAVE_FSYNC 1
101#cmakedefine HAVE_GETHRTIME 1
102#cmakedefine HAVE_GETNAMEINFO 1
103#cmakedefine HAVE_GETPASS 1
104#cmakedefine HAVE_GETPASSPHRASE 1
105#cmakedefine HAVE_GETPWNAM 1
106#cmakedefine HAVE_GETPWUID 1
107#cmakedefine HAVE_GETRLIMIT 1
108#cmakedefine HAVE_GETRUSAGE 1
109#cmakedefine HAVE_INITGROUPS 1
110#cmakedefine HAVE_ISSETUGID 1
111#cmakedefine HAVE_GETUID 1
112#cmakedefine HAVE_GETEUID 1
113#cmakedefine HAVE_GETGID 1
114#cmakedefine HAVE_GETEGID 1
115#cmakedefine HAVE_LSAN_DO_RECOVERABLE_LEAK_CHECK 1
116#cmakedefine HAVE_MADVISE 1
117#cmakedefine HAVE_MALLOC_INFO 1
118#cmakedefine HAVE_MEMRCHR 1
119#cmakedefine HAVE_MLOCK 1
120#cmakedefine HAVE_MLOCKALL 1
121#cmakedefine HAVE_MMAP64 1
122#cmakedefine HAVE_POLL 1
123#cmakedefine HAVE_POSIX_FALLOCATE 1
124#cmakedefine HAVE_POSIX_MEMALIGN 1
125#cmakedefine HAVE_PREAD 1
126#cmakedefine HAVE_PTHREAD_CONDATTR_SETCLOCK 1
127#cmakedefine HAVE_PTHREAD_SIGMASK 1
128#cmakedefine HAVE_SETFD 1
129#cmakedefine HAVE_SIGACTION 1
130#cmakedefine HAVE_SLEEP 1
131#cmakedefine HAVE_STPCPY 1
132#cmakedefine HAVE_STPNCPY 1
133#cmakedefine HAVE_STRLCPY 1
134#cmakedefine HAVE_STRLCAT 1
135#cmakedefine HAVE_STRSIGNAL 1
136#cmakedefine HAVE_FGETLN 1
137#cmakedefine HAVE_STRSEP 1
138#cmakedefine HAVE_TELL 1
139#cmakedefine HAVE_VASPRINTF 1
140#cmakedefine HAVE_MEMALIGN 1
141#cmakedefine HAVE_NL_LANGINFO 1
142#cmakedefine HAVE_HTONLL 1
143#cmakedefine HAVE_EPOLL 1
144/* #cmakedefine HAVE_EVENT_PORTS 1 */
145#cmakedefine HAVE_INET_NTOP 1
146#cmakedefine HAVE_WORKING_KQUEUE 1
147#cmakedefine HAVE_TIMERADD 1
148#cmakedefine HAVE_TIMERCLEAR 1
149#cmakedefine HAVE_TIMERCMP 1
150#cmakedefine HAVE_TIMERISSET 1
151
152/* WL2373 */
153#cmakedefine HAVE_SYS_TIME_H 1
154#cmakedefine HAVE_SYS_TIMES_H 1
155#cmakedefine HAVE_TIMES 1
156#cmakedefine HAVE_GETTIMEOFDAY 1
157
158/* Symbols */
159#cmakedefine HAVE_LRAND48 1
160#cmakedefine GWINSZ_IN_SYS_IOCTL 1
161#cmakedefine FIONREAD_IN_SYS_IOCTL 1
162#cmakedefine FIONREAD_IN_SYS_FILIO 1
163
164#cmakedefine HAVE_ISINF 1
165
166#cmakedefine HAVE_KQUEUE 1
167#cmakedefine HAVE_KQUEUE_TIMERS 1
168#cmakedefine HAVE_POSIX_TIMERS 1
169
170/* Endianess */
171#cmakedefine WORDS_BIGENDIAN 1
172
173/* Type sizes */
174#cmakedefine SIZEOF_VOIDP     @SIZEOF_VOIDP@
175#cmakedefine SIZEOF_CHARP     @SIZEOF_CHARP@
176#cmakedefine SIZEOF_LONG      @SIZEOF_LONG@
177#cmakedefine SIZEOF_SHORT     @SIZEOF_SHORT@
178#cmakedefine SIZEOF_INT       @SIZEOF_INT@
179#cmakedefine SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@
180#cmakedefine SIZEOF_OFF_T     @SIZEOF_OFF_T@
181#cmakedefine SIZEOF_TIME_T    @SIZEOF_TIME_T@
182#cmakedefine HAVE_ULONG 1
183#cmakedefine HAVE_U_INT32_T 1
184
185/* Support for tagging symbols with __attribute__((visibility("hidden"))) */
186#cmakedefine HAVE_VISIBILITY_HIDDEN 1
187
188/* Code tests*/
189#cmakedefine HAVE_CLOCK_GETTIME 1
190#cmakedefine HAVE_CLOCK_REALTIME 1
191#cmakedefine DNS_USE_CPU_CLOCK_FOR_ID 1
192#cmakedefine STACK_DIRECTION @STACK_DIRECTION@
193#cmakedefine TIME_WITH_SYS_TIME 1
194#cmakedefine NO_FCNTL_NONBLOCK 1
195#cmakedefine HAVE_PAUSE_INSTRUCTION 1
196#cmakedefine HAVE_FAKE_PAUSE_INSTRUCTION 1
197#cmakedefine HAVE_HMT_PRIORITY_INSTRUCTION 1
198#cmakedefine HAVE_ABI_CXA_DEMANGLE 1
199#cmakedefine HAVE_BUILTIN_UNREACHABLE 1
200#cmakedefine HAVE_BUILTIN_EXPECT 1
201#cmakedefine HAVE_BUILTIN_STPCPY 1
202#cmakedefine HAVE_GCC_ATOMIC_BUILTINS 1
203#cmakedefine HAVE_GCC_SYNC_BUILTINS 1
204#cmakedefine HAVE_VALGRIND
205#cmakedefine HAVE_SYS_GETTID 1
206#cmakedefine HAVE_PTHREAD_GETTHREADID_NP 1
207#cmakedefine HAVE_PTHREAD_THREADID_NP 1
208#cmakedefine HAVE_INTEGER_PTHREAD_SELF 1
209#cmakedefine HAVE_PTHREAD_SETNAME_NP 1
210/*
211  This macro defines whether the compiler in use needs a 'typename' keyword
212  to access the types defined inside a class template, such types are called
213  dependent types. Some compilers require it, some others forbid it, and some
214  others may work with or without it. For example, GCC requires the 'typename'
215  keyword whenever needing to access a type inside a template, but msvc
216  forbids it.
217 */
218#cmakedefine HAVE_IMPLICIT_DEPENDENT_NAME_TYPING 1
219
220/* IPV6 */
221#cmakedefine HAVE_NETINET_IN6_H 1
222#cmakedefine HAVE_STRUCT_IN6_ADDR 1
223
224/*
225 * Platform specific CMake files
226 */
227#define MACHINE_TYPE "@MYSQL_MACHINE_TYPE@"
228#cmakedefine LINUX_ALPINE 1
229#cmakedefine HAVE_LINUX_LARGE_PAGES 1
230#cmakedefine HAVE_SOLARIS_LARGE_PAGES 1
231#cmakedefine HAVE_SOLARIS_ATOMIC 1
232#define SYSTEM_TYPE "@SYSTEM_TYPE@"
233/* This should mean case insensitive file system */
234#cmakedefine FN_NO_CASE_SENSE 1
235
236/*
237 * From main CMakeLists.txt
238 */
239#cmakedefine MAX_INDEXES @MAX_INDEXES@
240#cmakedefine WITH_INNODB_MEMCACHED 1
241#cmakedefine ENABLE_MEMCACHED_SASL 1
242#cmakedefine ENABLE_MEMCACHED_SASL_PWDB 1
243#cmakedefine ENABLED_PROFILING 1
244#cmakedefine HAVE_ASAN
245#cmakedefine HAVE_UBSAN
246#cmakedefine ENABLED_LOCAL_INFILE 1
247#cmakedefine DEFAULT_MYSQL_HOME "@DEFAULT_MYSQL_HOME@"
248#cmakedefine SHAREDIR "@SHAREDIR@"
249#cmakedefine DEFAULT_BASEDIR "@DEFAULT_BASEDIR@"
250#cmakedefine MYSQL_DATADIR "@MYSQL_DATADIR@"
251#cmakedefine MYSQL_KEYRINGDIR "@MYSQL_KEYRINGDIR@"
252#cmakedefine DEFAULT_CHARSET_HOME "@DEFAULT_CHARSET_HOME@"
253#cmakedefine PLUGINDIR "@PLUGINDIR@"
254#cmakedefine DEFAULT_SYSCONFDIR "@DEFAULT_SYSCONFDIR@"
255#cmakedefine DEFAULT_TMPDIR @DEFAULT_TMPDIR@
256#cmakedefine INSTALL_SBINDIR "@default_prefix@/@INSTALL_SBINDIR@"
257#cmakedefine INSTALL_BINDIR "@default_prefix@/@INSTALL_BINDIR@"
258#cmakedefine INSTALL_MYSQLSHAREDIR "@default_prefix@/@INSTALL_MYSQLSHAREDIR@"
259#cmakedefine INSTALL_SHAREDIR "@default_prefix@/@INSTALL_SHAREDIR@"
260#cmakedefine INSTALL_PLUGINDIR "@default_prefix@/@INSTALL_PLUGINDIR@"
261#cmakedefine INSTALL_INCLUDEDIR "@default_prefix@/@INSTALL_INCLUDEDIR@"
262#cmakedefine INSTALL_MYSQLDATADIR "@default_prefix@/@INSTALL_MYSQLDATADIR@"
263#cmakedefine INSTALL_MYSQLKEYRINGDIR "@default_prefix@/@INSTALL_MYSQLKEYRINGDIR@"
264#cmakedefine INSTALL_PLUGINTESTDIR "@INSTALL_PLUGINTESTDIR@"
265#cmakedefine INSTALL_INFODIR "@default_prefix@/@INSTALL_INFODIR@"
266#cmakedefine INSTALL_MYSQLTESTDIR "@default_prefix@/@INSTALL_MYSQLTESTDIR@"
267#cmakedefine INSTALL_DOCREADMEDIR "@default_prefix@/@INSTALL_DOCREADMEDIR@"
268#cmakedefine INSTALL_DOCDIR "@default_prefix@/@INSTALL_DOCDIR@"
269#cmakedefine INSTALL_MANDIR "@default_prefix@/@INSTALL_MANDIR@"
270#cmakedefine INSTALL_SUPPORTFILESDIR "@default_prefix@/@INSTALL_SUPPORTFILESDIR@"
271#cmakedefine INSTALL_LIBDIR "@default_prefix@/@INSTALL_LIBDIR@"
272
273/*
274 * Readline
275 */
276#cmakedefine HAVE_MBSTATE_T
277#cmakedefine HAVE_LANGINFO_CODESET
278#cmakedefine HAVE_WCSDUP
279#cmakedefine HAVE_WCHAR_T 1
280#cmakedefine HAVE_WINT_T 1
281#cmakedefine HAVE_CURSES_H 1
282#cmakedefine HAVE_NCURSES_H 1
283#cmakedefine USE_LIBEDIT_INTERFACE 1
284#cmakedefine HAVE_HIST_ENTRY 1
285#cmakedefine USE_NEW_EDITLINE_INTERFACE 1
286
287/*
288 * Libedit
289 */
290#cmakedefine HAVE_DECL_TGOTO 1
291
292/*
293 * Character sets
294 */
295#cmakedefine MYSQL_DEFAULT_CHARSET_NAME "@MYSQL_DEFAULT_CHARSET_NAME@"
296#cmakedefine MYSQL_DEFAULT_COLLATION_NAME "@MYSQL_DEFAULT_COLLATION_NAME@"
297
298/*
299 * Performance schema
300 */
301#cmakedefine WITH_PERFSCHEMA_STORAGE_ENGINE 1
302#cmakedefine DISABLE_PSI_THREAD 1
303#cmakedefine DISABLE_PSI_MUTEX 1
304#cmakedefine DISABLE_PSI_RWLOCK 1
305#cmakedefine DISABLE_PSI_COND 1
306#cmakedefine DISABLE_PSI_FILE 1
307#cmakedefine DISABLE_PSI_TABLE 1
308#cmakedefine DISABLE_PSI_SOCKET 1
309#cmakedefine DISABLE_PSI_STAGE 1
310#cmakedefine DISABLE_PSI_STATEMENT 1
311#cmakedefine DISABLE_PSI_SP 1
312#cmakedefine DISABLE_PSI_PS 1
313#cmakedefine DISABLE_PSI_IDLE 1
314#cmakedefine DISABLE_PSI_ERROR 1
315#cmakedefine DISABLE_PSI_STATEMENT_DIGEST 1
316#cmakedefine DISABLE_PSI_METADATA 1
317#cmakedefine DISABLE_PSI_MEMORY 1
318#cmakedefine DISABLE_PSI_TRANSACTION 1
319
320/*
321 * MySQL version
322 */
323#define MYSQL_VERSION_MAJOR @MAJOR_VERSION@
324#define MYSQL_VERSION_MINOR @MINOR_VERSION@
325#define MYSQL_VERSION_PATCH @PATCH_VERSION@
326#define MYSQL_VERSION_EXTRA "@EXTRA_VERSION@"
327#define PACKAGE "mysql"
328#define PACKAGE_BUGREPORT ""
329#define PACKAGE_NAME "MySQL Server"
330#define PACKAGE_STRING "MySQL Server @VERSION@"
331#define PACKAGE_TARNAME "mysql"
332#define PACKAGE_VERSION "@VERSION@"
333#define VERSION "@VERSION@"
334#define PROTOCOL_VERSION 10
335
336/*
337 * CPU info
338 */
339#cmakedefine CPU_LEVEL1_DCACHE_LINESIZE @CPU_LEVEL1_DCACHE_LINESIZE@
340
341/*
342 * NDB
343 */
344#cmakedefine WITH_NDBCLUSTER_STORAGE_ENGINE 1
345#cmakedefine HAVE_PTHREAD_SETSCHEDPARAM 1
346
347/*
348 * Other
349 */
350#cmakedefine EXTRA_DEBUG 1
351
352/*
353 * Hardcoded values needed by libevent/NDB/memcached
354 */
355#define HAVE_FCNTL_H 1
356#define HAVE_GETADDRINFO 1
357#define HAVE_INTTYPES_H 1
358/* libevent's select.c is not Windows compatible */
359#ifndef _WIN32
360#define HAVE_SELECT 1
361#endif
362#define HAVE_SIGNAL_H 1
363#define HAVE_STDARG_H 1
364#define HAVE_STDINT_H 1
365#define HAVE_STDLIB_H 1
366#define HAVE_STRDUP 1
367#define HAVE_STRTOK_R 1
368#define HAVE_STRTOLL 1
369#define HAVE_SYS_STAT_H 1
370#define HAVE_SYS_TYPES_H 1
371#define SIZEOF_CHAR 1
372
373/*
374 * Needed by libevent
375 */
376#cmakedefine HAVE_SOCKLEN_T 1
377
378/* For --secure-file-priv */
379#cmakedefine DEFAULT_SECURE_FILE_PRIV_DIR @DEFAULT_SECURE_FILE_PRIV_DIR@
380#cmakedefine HAVE_LIBNUMA 1
381
382/* For default value of --early_plugin_load */
383#cmakedefine DEFAULT_EARLY_PLUGIN_LOAD @DEFAULT_EARLY_PLUGIN_LOAD@
384
385#define SO_EXT "@CMAKE_SHARED_MODULE_SUFFIX@"
386
387#endif
388