blob: 589cabc1ab550cd4cacd1167ce8a723e7b93220f [file] [log] [blame]
shanehdc97a8c2010-02-23 20:08:35 +00001/*
2** 2010 February 23
3**
4** The author disclaims copyright to this source code. In place of
5** a legal notice, here is a blessing:
6**
7** May you do good and not evil.
8** May you find forgiveness for yourself and forgive others.
9** May you share freely, never taking more than you give.
10**
11*************************************************************************
12**
13** This file implements routines used to report what compile-time options
14** SQLite was built with.
15*/
16
17#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
18
19#include "sqliteInt.h"
20
21/*
shaneh915c8bd2010-02-24 19:36:10 +000022** An array of names of all compile-time options. This array should
23** be sorted A-Z.
shanehdc97a8c2010-02-23 20:08:35 +000024**
25** This array looks large, but in a typical installation actually uses
shaneh915c8bd2010-02-24 19:36:10 +000026** only a handful of compile-time options, so most times this array is usually
shanehdc97a8c2010-02-23 20:08:35 +000027** rather short and uses little memory space.
28*/
29static const char * const azCompileOpt[] = {
shaneh915c8bd2010-02-24 19:36:10 +000030
31/* These macros are provided to "stringify" the value of the define
32** for those options in which the value is meaningful. */
33#define CTIMEOPT_VAL_(opt) #opt
34#define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt)
35
drh0ede9eb2015-01-10 16:49:23 +000036#if SQLITE_32BIT_ROWID
shanehdc97a8c2010-02-23 20:08:35 +000037 "32BIT_ROWID",
38#endif
drh0ede9eb2015-01-10 16:49:23 +000039#if SQLITE_4_BYTE_ALIGNED_MALLOC
shanehdc97a8c2010-02-23 20:08:35 +000040 "4_BYTE_ALIGNED_MALLOC",
41#endif
drh0ede9eb2015-01-10 16:49:23 +000042#if SQLITE_CASE_SENSITIVE_LIKE
shanehdc97a8c2010-02-23 20:08:35 +000043 "CASE_SENSITIVE_LIKE",
44#endif
drh0ede9eb2015-01-10 16:49:23 +000045#if SQLITE_CHECK_PAGES
shanehdc97a8c2010-02-23 20:08:35 +000046 "CHECK_PAGES",
47#endif
mistachkinf35b8f82016-05-28 00:13:21 +000048#if defined(__clang__) && defined(__clang_version__)
mistachkin756e09c2016-05-27 20:30:02 +000049 "COMPILER=clang-" __clang_version__,
mistachkinf35b8f82016-05-28 00:13:21 +000050#elif defined(_MSC_VER)
51 "COMPILER=msvc-" CTIMEOPT_VAL(_MSC_VER),
mistachkin7ce6cdd2016-05-27 21:13:43 +000052#elif defined(__GNUC__) && defined(__VERSION__)
53 "COMPILER=gcc-" __VERSION__,
mistachkin15e2dde2016-05-27 18:09:45 +000054#endif
drh0ede9eb2015-01-10 16:49:23 +000055#if SQLITE_COVERAGE_TEST
shanehdc97a8c2010-02-23 20:08:35 +000056 "COVERAGE_TEST",
57#endif
drh0ede9eb2015-01-10 16:49:23 +000058#if SQLITE_DEBUG
shanehdc97a8c2010-02-23 20:08:35 +000059 "DEBUG",
60#endif
drh0ede9eb2015-01-10 16:49:23 +000061#if SQLITE_DEFAULT_LOCKING_MODE
shaneh915c8bd2010-02-24 19:36:10 +000062 "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE),
63#endif
drhd16d0bc2013-04-16 18:24:34 +000064#if defined(SQLITE_DEFAULT_MMAP_SIZE) && !defined(SQLITE_DEFAULT_MMAP_SIZE_xc)
drh9b4c59f2013-04-15 17:03:42 +000065 "DEFAULT_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_MMAP_SIZE),
drh34f74902013-04-03 13:09:18 +000066#endif
drh0ede9eb2015-01-10 16:49:23 +000067#if SQLITE_DISABLE_DIRSYNC
shanehdc97a8c2010-02-23 20:08:35 +000068 "DISABLE_DIRSYNC",
69#endif
drh0ede9eb2015-01-10 16:49:23 +000070#if SQLITE_DISABLE_LFS
shanehdc97a8c2010-02-23 20:08:35 +000071 "DISABLE_LFS",
72#endif
drh7a7f6882015-12-03 20:50:10 +000073#if SQLITE_ENABLE_8_3_NAMES
74 "ENABLE_8_3_NAMES",
75#endif
drh0ede9eb2015-01-10 16:49:23 +000076#if SQLITE_ENABLE_API_ARMOR
drh9ca95732014-10-24 00:35:58 +000077 "ENABLE_API_ARMOR",
78#endif
drh0ede9eb2015-01-10 16:49:23 +000079#if SQLITE_ENABLE_ATOMIC_WRITE
shanehdc97a8c2010-02-23 20:08:35 +000080 "ENABLE_ATOMIC_WRITE",
81#endif
drh0ede9eb2015-01-10 16:49:23 +000082#if SQLITE_ENABLE_CEROD
shanehdc97a8c2010-02-23 20:08:35 +000083 "ENABLE_CEROD",
84#endif
drh0ede9eb2015-01-10 16:49:23 +000085#if SQLITE_ENABLE_COLUMN_METADATA
shanehdc97a8c2010-02-23 20:08:35 +000086 "ENABLE_COLUMN_METADATA",
87#endif
drhcda9a932015-05-07 20:26:20 +000088#if SQLITE_ENABLE_DBSTAT_VTAB
89 "ENABLE_DBSTAT_VTAB",
90#endif
drh0ede9eb2015-01-10 16:49:23 +000091#if SQLITE_ENABLE_EXPENSIVE_ASSERT
shanehdc97a8c2010-02-23 20:08:35 +000092 "ENABLE_EXPENSIVE_ASSERT",
93#endif
drh0ede9eb2015-01-10 16:49:23 +000094#if SQLITE_ENABLE_FTS1
shanehdc97a8c2010-02-23 20:08:35 +000095 "ENABLE_FTS1",
96#endif
drh0ede9eb2015-01-10 16:49:23 +000097#if SQLITE_ENABLE_FTS2
shanehdc97a8c2010-02-23 20:08:35 +000098 "ENABLE_FTS2",
99#endif
drh0ede9eb2015-01-10 16:49:23 +0000100#if SQLITE_ENABLE_FTS3
shanehdc97a8c2010-02-23 20:08:35 +0000101 "ENABLE_FTS3",
102#endif
drh0ede9eb2015-01-10 16:49:23 +0000103#if SQLITE_ENABLE_FTS3_PARENTHESIS
shanehdc97a8c2010-02-23 20:08:35 +0000104 "ENABLE_FTS3_PARENTHESIS",
105#endif
drh0ede9eb2015-01-10 16:49:23 +0000106#if SQLITE_ENABLE_FTS4
shanehdc97a8c2010-02-23 20:08:35 +0000107 "ENABLE_FTS4",
108#endif
drh50065652015-10-08 19:29:18 +0000109#if SQLITE_ENABLE_FTS5
110 "ENABLE_FTS5",
111#endif
drh0ede9eb2015-01-10 16:49:23 +0000112#if SQLITE_ENABLE_ICU
shanehdc97a8c2010-02-23 20:08:35 +0000113 "ENABLE_ICU",
114#endif
drh0ede9eb2015-01-10 16:49:23 +0000115#if SQLITE_ENABLE_IOTRACE
shanehdc97a8c2010-02-23 20:08:35 +0000116 "ENABLE_IOTRACE",
117#endif
drh50065652015-10-08 19:29:18 +0000118#if SQLITE_ENABLE_JSON1
119 "ENABLE_JSON1",
120#endif
drh0ede9eb2015-01-10 16:49:23 +0000121#if SQLITE_ENABLE_LOAD_EXTENSION
shanehdc97a8c2010-02-23 20:08:35 +0000122 "ENABLE_LOAD_EXTENSION",
123#endif
drh0ede9eb2015-01-10 16:49:23 +0000124#if SQLITE_ENABLE_LOCKING_STYLE
shaneh915c8bd2010-02-24 19:36:10 +0000125 "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
shanehdc97a8c2010-02-23 20:08:35 +0000126#endif
drh0ede9eb2015-01-10 16:49:23 +0000127#if SQLITE_ENABLE_MEMORY_MANAGEMENT
shanehdc97a8c2010-02-23 20:08:35 +0000128 "ENABLE_MEMORY_MANAGEMENT",
129#endif
drh0ede9eb2015-01-10 16:49:23 +0000130#if SQLITE_ENABLE_MEMSYS3
shanehdc97a8c2010-02-23 20:08:35 +0000131 "ENABLE_MEMSYS3",
132#endif
drh0ede9eb2015-01-10 16:49:23 +0000133#if SQLITE_ENABLE_MEMSYS5
shanehdc97a8c2010-02-23 20:08:35 +0000134 "ENABLE_MEMSYS5",
135#endif
drh0ede9eb2015-01-10 16:49:23 +0000136#if SQLITE_ENABLE_OVERSIZE_CELL_CHECK
shanehdc97a8c2010-02-23 20:08:35 +0000137 "ENABLE_OVERSIZE_CELL_CHECK",
138#endif
drh0ede9eb2015-01-10 16:49:23 +0000139#if SQLITE_ENABLE_RTREE
shanehdc97a8c2010-02-23 20:08:35 +0000140 "ENABLE_RTREE",
141#endif
dan8ad169a2013-08-12 20:14:04 +0000142#if defined(SQLITE_ENABLE_STAT4)
danf52bb8d2013-08-03 20:24:58 +0000143 "ENABLE_STAT4",
dan8ad169a2013-08-12 20:14:04 +0000144#elif defined(SQLITE_ENABLE_STAT3)
145 "ENABLE_STAT3",
drhfaacf172011-08-12 01:51:45 +0000146#endif
drh0ede9eb2015-01-10 16:49:23 +0000147#if SQLITE_ENABLE_UNLOCK_NOTIFY
shanehdc97a8c2010-02-23 20:08:35 +0000148 "ENABLE_UNLOCK_NOTIFY",
149#endif
drh0ede9eb2015-01-10 16:49:23 +0000150#if SQLITE_ENABLE_UPDATE_DELETE_LIMIT
shanehdc97a8c2010-02-23 20:08:35 +0000151 "ENABLE_UPDATE_DELETE_LIMIT",
152#endif
drh0ede9eb2015-01-10 16:49:23 +0000153#if SQLITE_HAS_CODEC
shanehdc97a8c2010-02-23 20:08:35 +0000154 "HAS_CODEC",
155#endif
drh0ede9eb2015-01-10 16:49:23 +0000156#if HAVE_ISNAN || SQLITE_HAVE_ISNAN
shanehdc97a8c2010-02-23 20:08:35 +0000157 "HAVE_ISNAN",
158#endif
drh0ede9eb2015-01-10 16:49:23 +0000159#if SQLITE_HOMEGROWN_RECURSIVE_MUTEX
shanehdc97a8c2010-02-23 20:08:35 +0000160 "HOMEGROWN_RECURSIVE_MUTEX",
161#endif
drh0ede9eb2015-01-10 16:49:23 +0000162#if SQLITE_IGNORE_AFP_LOCK_ERRORS
shanehdc97a8c2010-02-23 20:08:35 +0000163 "IGNORE_AFP_LOCK_ERRORS",
164#endif
drh0ede9eb2015-01-10 16:49:23 +0000165#if SQLITE_IGNORE_FLOCK_LOCK_ERRORS
shanehdc97a8c2010-02-23 20:08:35 +0000166 "IGNORE_FLOCK_LOCK_ERRORS",
167#endif
168#ifdef SQLITE_INT64_TYPE
169 "INT64_TYPE",
170#endif
drh41d2e662015-12-01 21:23:07 +0000171#ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS
172 "LIKE_DOESNT_MATCH_BLOBS",
173#endif
drh0ede9eb2015-01-10 16:49:23 +0000174#if SQLITE_LOCK_TRACE
shanehdc97a8c2010-02-23 20:08:35 +0000175 "LOCK_TRACE",
176#endif
drhd16d0bc2013-04-16 18:24:34 +0000177#if defined(SQLITE_MAX_MMAP_SIZE) && !defined(SQLITE_MAX_MMAP_SIZE_xc)
drh9b4c59f2013-04-15 17:03:42 +0000178 "MAX_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE),
179#endif
drh5a201fb2011-08-31 20:47:50 +0000180#ifdef SQLITE_MAX_SCHEMA_RETRY
181 "MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY),
182#endif
drh0ede9eb2015-01-10 16:49:23 +0000183#if SQLITE_MEMDEBUG
shanehdc97a8c2010-02-23 20:08:35 +0000184 "MEMDEBUG",
185#endif
drh0ede9eb2015-01-10 16:49:23 +0000186#if SQLITE_MIXED_ENDIAN_64BIT_FLOAT
shanehdc97a8c2010-02-23 20:08:35 +0000187 "MIXED_ENDIAN_64BIT_FLOAT",
188#endif
drh0ede9eb2015-01-10 16:49:23 +0000189#if SQLITE_NO_SYNC
shanehdc97a8c2010-02-23 20:08:35 +0000190 "NO_SYNC",
191#endif
drh0ede9eb2015-01-10 16:49:23 +0000192#if SQLITE_OMIT_ALTERTABLE
shanehdc97a8c2010-02-23 20:08:35 +0000193 "OMIT_ALTERTABLE",
194#endif
drh0ede9eb2015-01-10 16:49:23 +0000195#if SQLITE_OMIT_ANALYZE
shanehdc97a8c2010-02-23 20:08:35 +0000196 "OMIT_ANALYZE",
197#endif
drh0ede9eb2015-01-10 16:49:23 +0000198#if SQLITE_OMIT_ATTACH
shanehdc97a8c2010-02-23 20:08:35 +0000199 "OMIT_ATTACH",
200#endif
drh0ede9eb2015-01-10 16:49:23 +0000201#if SQLITE_OMIT_AUTHORIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000202 "OMIT_AUTHORIZATION",
203#endif
drh0ede9eb2015-01-10 16:49:23 +0000204#if SQLITE_OMIT_AUTOINCREMENT
shanehdc97a8c2010-02-23 20:08:35 +0000205 "OMIT_AUTOINCREMENT",
206#endif
drh0ede9eb2015-01-10 16:49:23 +0000207#if SQLITE_OMIT_AUTOINIT
shanehdc97a8c2010-02-23 20:08:35 +0000208 "OMIT_AUTOINIT",
209#endif
drh0ede9eb2015-01-10 16:49:23 +0000210#if SQLITE_OMIT_AUTOMATIC_INDEX
drhc6339082010-04-07 16:54:58 +0000211 "OMIT_AUTOMATIC_INDEX",
212#endif
drh0ede9eb2015-01-10 16:49:23 +0000213#if SQLITE_OMIT_AUTORESET
drh602acb42011-01-17 17:42:37 +0000214 "OMIT_AUTORESET",
215#endif
drh0ede9eb2015-01-10 16:49:23 +0000216#if SQLITE_OMIT_AUTOVACUUM
shanehdc97a8c2010-02-23 20:08:35 +0000217 "OMIT_AUTOVACUUM",
218#endif
drh0ede9eb2015-01-10 16:49:23 +0000219#if SQLITE_OMIT_BETWEEN_OPTIMIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000220 "OMIT_BETWEEN_OPTIMIZATION",
221#endif
drh0ede9eb2015-01-10 16:49:23 +0000222#if SQLITE_OMIT_BLOB_LITERAL
shanehdc97a8c2010-02-23 20:08:35 +0000223 "OMIT_BLOB_LITERAL",
224#endif
drh0ede9eb2015-01-10 16:49:23 +0000225#if SQLITE_OMIT_BTREECOUNT
shanehdc97a8c2010-02-23 20:08:35 +0000226 "OMIT_BTREECOUNT",
227#endif
drh0ede9eb2015-01-10 16:49:23 +0000228#if SQLITE_OMIT_BUILTIN_TEST
shanehdc97a8c2010-02-23 20:08:35 +0000229 "OMIT_BUILTIN_TEST",
230#endif
drh0ede9eb2015-01-10 16:49:23 +0000231#if SQLITE_OMIT_CAST
shanehdc97a8c2010-02-23 20:08:35 +0000232 "OMIT_CAST",
233#endif
drh0ede9eb2015-01-10 16:49:23 +0000234#if SQLITE_OMIT_CHECK
shanehdc97a8c2010-02-23 20:08:35 +0000235 "OMIT_CHECK",
236#endif
drh0ede9eb2015-01-10 16:49:23 +0000237#if SQLITE_OMIT_COMPLETE
shanehdc97a8c2010-02-23 20:08:35 +0000238 "OMIT_COMPLETE",
239#endif
drh0ede9eb2015-01-10 16:49:23 +0000240#if SQLITE_OMIT_COMPOUND_SELECT
shanehdc97a8c2010-02-23 20:08:35 +0000241 "OMIT_COMPOUND_SELECT",
242#endif
drh0ede9eb2015-01-10 16:49:23 +0000243#if SQLITE_OMIT_CTE
dan03af2162014-03-05 17:29:34 +0000244 "OMIT_CTE",
245#endif
drh0ede9eb2015-01-10 16:49:23 +0000246#if SQLITE_OMIT_DATETIME_FUNCS
shanehdc97a8c2010-02-23 20:08:35 +0000247 "OMIT_DATETIME_FUNCS",
248#endif
drh0ede9eb2015-01-10 16:49:23 +0000249#if SQLITE_OMIT_DECLTYPE
shanehdc97a8c2010-02-23 20:08:35 +0000250 "OMIT_DECLTYPE",
251#endif
drh0ede9eb2015-01-10 16:49:23 +0000252#if SQLITE_OMIT_DEPRECATED
shanehdc97a8c2010-02-23 20:08:35 +0000253 "OMIT_DEPRECATED",
254#endif
drh0ede9eb2015-01-10 16:49:23 +0000255#if SQLITE_OMIT_DISKIO
shanehdc97a8c2010-02-23 20:08:35 +0000256 "OMIT_DISKIO",
257#endif
drh0ede9eb2015-01-10 16:49:23 +0000258#if SQLITE_OMIT_EXPLAIN
shanehdc97a8c2010-02-23 20:08:35 +0000259 "OMIT_EXPLAIN",
260#endif
drh0ede9eb2015-01-10 16:49:23 +0000261#if SQLITE_OMIT_FLAG_PRAGMAS
shanehdc97a8c2010-02-23 20:08:35 +0000262 "OMIT_FLAG_PRAGMAS",
263#endif
drh0ede9eb2015-01-10 16:49:23 +0000264#if SQLITE_OMIT_FLOATING_POINT
shanehdc97a8c2010-02-23 20:08:35 +0000265 "OMIT_FLOATING_POINT",
266#endif
drh0ede9eb2015-01-10 16:49:23 +0000267#if SQLITE_OMIT_FOREIGN_KEY
shanehdc97a8c2010-02-23 20:08:35 +0000268 "OMIT_FOREIGN_KEY",
269#endif
drh0ede9eb2015-01-10 16:49:23 +0000270#if SQLITE_OMIT_GET_TABLE
shanehdc97a8c2010-02-23 20:08:35 +0000271 "OMIT_GET_TABLE",
272#endif
drh0ede9eb2015-01-10 16:49:23 +0000273#if SQLITE_OMIT_INCRBLOB
shanehdc97a8c2010-02-23 20:08:35 +0000274 "OMIT_INCRBLOB",
275#endif
drh0ede9eb2015-01-10 16:49:23 +0000276#if SQLITE_OMIT_INTEGRITY_CHECK
shanehdc97a8c2010-02-23 20:08:35 +0000277 "OMIT_INTEGRITY_CHECK",
278#endif
drh0ede9eb2015-01-10 16:49:23 +0000279#if SQLITE_OMIT_LIKE_OPTIMIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000280 "OMIT_LIKE_OPTIMIZATION",
281#endif
drh0ede9eb2015-01-10 16:49:23 +0000282#if SQLITE_OMIT_LOAD_EXTENSION
shanehdc97a8c2010-02-23 20:08:35 +0000283 "OMIT_LOAD_EXTENSION",
284#endif
drh0ede9eb2015-01-10 16:49:23 +0000285#if SQLITE_OMIT_LOCALTIME
shanehdc97a8c2010-02-23 20:08:35 +0000286 "OMIT_LOCALTIME",
287#endif
drh0ede9eb2015-01-10 16:49:23 +0000288#if SQLITE_OMIT_LOOKASIDE
shanehdc97a8c2010-02-23 20:08:35 +0000289 "OMIT_LOOKASIDE",
290#endif
drh0ede9eb2015-01-10 16:49:23 +0000291#if SQLITE_OMIT_MEMORYDB
shanehdc97a8c2010-02-23 20:08:35 +0000292 "OMIT_MEMORYDB",
293#endif
drh0ede9eb2015-01-10 16:49:23 +0000294#if SQLITE_OMIT_OR_OPTIMIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000295 "OMIT_OR_OPTIMIZATION",
296#endif
drh0ede9eb2015-01-10 16:49:23 +0000297#if SQLITE_OMIT_PAGER_PRAGMAS
shanehdc97a8c2010-02-23 20:08:35 +0000298 "OMIT_PAGER_PRAGMAS",
299#endif
drh0ede9eb2015-01-10 16:49:23 +0000300#if SQLITE_OMIT_PRAGMA
shanehdc97a8c2010-02-23 20:08:35 +0000301 "OMIT_PRAGMA",
302#endif
drh0ede9eb2015-01-10 16:49:23 +0000303#if SQLITE_OMIT_PROGRESS_CALLBACK
shanehdc97a8c2010-02-23 20:08:35 +0000304 "OMIT_PROGRESS_CALLBACK",
305#endif
drh0ede9eb2015-01-10 16:49:23 +0000306#if SQLITE_OMIT_QUICKBALANCE
shanehdc97a8c2010-02-23 20:08:35 +0000307 "OMIT_QUICKBALANCE",
308#endif
drh0ede9eb2015-01-10 16:49:23 +0000309#if SQLITE_OMIT_REINDEX
shanehdc97a8c2010-02-23 20:08:35 +0000310 "OMIT_REINDEX",
311#endif
drh0ede9eb2015-01-10 16:49:23 +0000312#if SQLITE_OMIT_SCHEMA_PRAGMAS
shanehdc97a8c2010-02-23 20:08:35 +0000313 "OMIT_SCHEMA_PRAGMAS",
314#endif
drh0ede9eb2015-01-10 16:49:23 +0000315#if SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
shanehdc97a8c2010-02-23 20:08:35 +0000316 "OMIT_SCHEMA_VERSION_PRAGMAS",
317#endif
drh0ede9eb2015-01-10 16:49:23 +0000318#if SQLITE_OMIT_SHARED_CACHE
shanehdc97a8c2010-02-23 20:08:35 +0000319 "OMIT_SHARED_CACHE",
320#endif
drh0ede9eb2015-01-10 16:49:23 +0000321#if SQLITE_OMIT_SUBQUERY
shanehdc97a8c2010-02-23 20:08:35 +0000322 "OMIT_SUBQUERY",
323#endif
drh0ede9eb2015-01-10 16:49:23 +0000324#if SQLITE_OMIT_TCL_VARIABLE
shanehdc97a8c2010-02-23 20:08:35 +0000325 "OMIT_TCL_VARIABLE",
326#endif
drh0ede9eb2015-01-10 16:49:23 +0000327#if SQLITE_OMIT_TEMPDB
shanehdc97a8c2010-02-23 20:08:35 +0000328 "OMIT_TEMPDB",
329#endif
drh0ede9eb2015-01-10 16:49:23 +0000330#if SQLITE_OMIT_TRACE
shanehdc97a8c2010-02-23 20:08:35 +0000331 "OMIT_TRACE",
332#endif
drh0ede9eb2015-01-10 16:49:23 +0000333#if SQLITE_OMIT_TRIGGER
shanehdc97a8c2010-02-23 20:08:35 +0000334 "OMIT_TRIGGER",
335#endif
drh0ede9eb2015-01-10 16:49:23 +0000336#if SQLITE_OMIT_TRUNCATE_OPTIMIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000337 "OMIT_TRUNCATE_OPTIMIZATION",
338#endif
drh0ede9eb2015-01-10 16:49:23 +0000339#if SQLITE_OMIT_UTF16
shanehdc97a8c2010-02-23 20:08:35 +0000340 "OMIT_UTF16",
341#endif
drh0ede9eb2015-01-10 16:49:23 +0000342#if SQLITE_OMIT_VACUUM
shanehdc97a8c2010-02-23 20:08:35 +0000343 "OMIT_VACUUM",
344#endif
drh0ede9eb2015-01-10 16:49:23 +0000345#if SQLITE_OMIT_VIEW
shanehdc97a8c2010-02-23 20:08:35 +0000346 "OMIT_VIEW",
347#endif
drh0ede9eb2015-01-10 16:49:23 +0000348#if SQLITE_OMIT_VIRTUALTABLE
shanehdc97a8c2010-02-23 20:08:35 +0000349 "OMIT_VIRTUALTABLE",
350#endif
drh0ede9eb2015-01-10 16:49:23 +0000351#if SQLITE_OMIT_WAL
drh4d9a7bf2010-07-07 01:52:31 +0000352 "OMIT_WAL",
353#endif
drh0ede9eb2015-01-10 16:49:23 +0000354#if SQLITE_OMIT_WSD
shanehdc97a8c2010-02-23 20:08:35 +0000355 "OMIT_WSD",
356#endif
drh0ede9eb2015-01-10 16:49:23 +0000357#if SQLITE_OMIT_XFER_OPT
shanehdc97a8c2010-02-23 20:08:35 +0000358 "OMIT_XFER_OPT",
359#endif
drh0ede9eb2015-01-10 16:49:23 +0000360#if SQLITE_PERFORMANCE_TRACE
shanehdc97a8c2010-02-23 20:08:35 +0000361 "PERFORMANCE_TRACE",
362#endif
drh0ede9eb2015-01-10 16:49:23 +0000363#if SQLITE_PROXY_DEBUG
shanehdc97a8c2010-02-23 20:08:35 +0000364 "PROXY_DEBUG",
365#endif
drh0ede9eb2015-01-10 16:49:23 +0000366#if SQLITE_RTREE_INT_ONLY
drhdf324142012-09-13 12:10:55 +0000367 "RTREE_INT_ONLY",
368#endif
drh0ede9eb2015-01-10 16:49:23 +0000369#if SQLITE_SECURE_DELETE
shanehdc97a8c2010-02-23 20:08:35 +0000370 "SECURE_DELETE",
371#endif
drh0ede9eb2015-01-10 16:49:23 +0000372#if SQLITE_SMALL_STACK
shanehdc97a8c2010-02-23 20:08:35 +0000373 "SMALL_STACK",
374#endif
drh0ede9eb2015-01-10 16:49:23 +0000375#if SQLITE_SOUNDEX
shanehdc97a8c2010-02-23 20:08:35 +0000376 "SOUNDEX",
377#endif
drh0ede9eb2015-01-10 16:49:23 +0000378#if SQLITE_SYSTEM_MALLOC
mistachkin1fa85a12013-12-03 22:32:48 +0000379 "SYSTEM_MALLOC",
380#endif
drh0ede9eb2015-01-10 16:49:23 +0000381#if SQLITE_TCL
shanehdc97a8c2010-02-23 20:08:35 +0000382 "TCL",
383#endif
drhd16d0bc2013-04-16 18:24:34 +0000384#if defined(SQLITE_TEMP_STORE) && !defined(SQLITE_TEMP_STORE_xc)
shaneh915c8bd2010-02-24 19:36:10 +0000385 "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE),
386#endif
drh0ede9eb2015-01-10 16:49:23 +0000387#if SQLITE_TEST
shanehdc97a8c2010-02-23 20:08:35 +0000388 "TEST",
389#endif
drhd16d0bc2013-04-16 18:24:34 +0000390#if defined(SQLITE_THREADSAFE)
shaneh915c8bd2010-02-24 19:36:10 +0000391 "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE),
392#endif
drh0ede9eb2015-01-10 16:49:23 +0000393#if SQLITE_USE_ALLOCA
shanehdc97a8c2010-02-23 20:08:35 +0000394 "USE_ALLOCA",
395#endif
drh0ede9eb2015-01-10 16:49:23 +0000396#if SQLITE_USER_AUTHENTICATION
drh09e60542014-09-10 22:46:46 +0000397 "USER_AUTHENTICATION",
398#endif
drh0ede9eb2015-01-10 16:49:23 +0000399#if SQLITE_WIN32_MALLOC
mistachkin1fa85a12013-12-03 22:32:48 +0000400 "WIN32_MALLOC",
401#endif
drh0ede9eb2015-01-10 16:49:23 +0000402#if SQLITE_ZERO_MALLOC
shaneh915c8bd2010-02-24 19:36:10 +0000403 "ZERO_MALLOC"
shanehdc97a8c2010-02-23 20:08:35 +0000404#endif
405};
406
407/*
408** Given the name of a compile-time option, return true if that option
409** was used and false if not.
410**
411** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix
412** is not required for a match.
413*/
414int sqlite3_compileoption_used(const char *zOptName){
415 int i, n;
drh9ca95732014-10-24 00:35:58 +0000416
drh0ede9eb2015-01-10 16:49:23 +0000417#if SQLITE_ENABLE_API_ARMOR
drh9ca95732014-10-24 00:35:58 +0000418 if( zOptName==0 ){
419 (void)SQLITE_MISUSE_BKPT;
420 return 0;
421 }
422#endif
shanehdc97a8c2010-02-23 20:08:35 +0000423 if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7;
424 n = sqlite3Strlen30(zOptName);
425
426 /* Since ArraySize(azCompileOpt) is normally in single digits, a
427 ** linear search is adequate. No need for a binary search. */
428 for(i=0; i<ArraySize(azCompileOpt); i++){
drhd16d0bc2013-04-16 18:24:34 +0000429 if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0
drh97348b32014-09-25 02:44:29 +0000430 && sqlite3IsIdChar((unsigned char)azCompileOpt[i][n])==0
drhd16d0bc2013-04-16 18:24:34 +0000431 ){
432 return 1;
433 }
shanehdc97a8c2010-02-23 20:08:35 +0000434 }
435 return 0;
436}
437
438/*
439** Return the N-th compile-time option string. If N is out of range,
440** return a NULL pointer.
441*/
drh380083c2010-02-23 20:32:15 +0000442const char *sqlite3_compileoption_get(int N){
shanehdc97a8c2010-02-23 20:08:35 +0000443 if( N>=0 && N<ArraySize(azCompileOpt) ){
444 return azCompileOpt[N];
445 }
446 return 0;
447}
448
449#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */