blob: 09587ea88e1f945b1fb93963d0636764b232c48c [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
drhaa032582016-07-28 17:24:16 +000048#if defined(__clang__) && defined(__clang_major__)
49 "COMPILER=clang-" CTIMEOPT_VAL(__clang_major__) "."
50 CTIMEOPT_VAL(__clang_minor__) "."
51 CTIMEOPT_VAL(__clang_patchlevel__),
mistachkinf35b8f82016-05-28 00:13:21 +000052#elif defined(_MSC_VER)
53 "COMPILER=msvc-" CTIMEOPT_VAL(_MSC_VER),
mistachkin7ce6cdd2016-05-27 21:13:43 +000054#elif defined(__GNUC__) && defined(__VERSION__)
55 "COMPILER=gcc-" __VERSION__,
mistachkin15e2dde2016-05-27 18:09:45 +000056#endif
drh0ede9eb2015-01-10 16:49:23 +000057#if SQLITE_COVERAGE_TEST
shanehdc97a8c2010-02-23 20:08:35 +000058 "COVERAGE_TEST",
59#endif
drh0ede9eb2015-01-10 16:49:23 +000060#if SQLITE_DEBUG
shanehdc97a8c2010-02-23 20:08:35 +000061 "DEBUG",
62#endif
drh0ede9eb2015-01-10 16:49:23 +000063#if SQLITE_DEFAULT_LOCKING_MODE
shaneh915c8bd2010-02-24 19:36:10 +000064 "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE),
65#endif
drhd16d0bc2013-04-16 18:24:34 +000066#if defined(SQLITE_DEFAULT_MMAP_SIZE) && !defined(SQLITE_DEFAULT_MMAP_SIZE_xc)
drh9b4c59f2013-04-15 17:03:42 +000067 "DEFAULT_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_MMAP_SIZE),
drh34f74902013-04-03 13:09:18 +000068#endif
drh0ede9eb2015-01-10 16:49:23 +000069#if SQLITE_DISABLE_DIRSYNC
shanehdc97a8c2010-02-23 20:08:35 +000070 "DISABLE_DIRSYNC",
71#endif
drh0ede9eb2015-01-10 16:49:23 +000072#if SQLITE_DISABLE_LFS
shanehdc97a8c2010-02-23 20:08:35 +000073 "DISABLE_LFS",
74#endif
drh7a7f6882015-12-03 20:50:10 +000075#if SQLITE_ENABLE_8_3_NAMES
drhc14566a2016-06-13 19:58:46 +000076 "ENABLE_8_3_NAMES=" CTIMEOPT_VAL(SQLITE_ENABLE_8_3_NAMES),
drh7a7f6882015-12-03 20:50:10 +000077#endif
drh0ede9eb2015-01-10 16:49:23 +000078#if SQLITE_ENABLE_API_ARMOR
drh9ca95732014-10-24 00:35:58 +000079 "ENABLE_API_ARMOR",
80#endif
drh0ede9eb2015-01-10 16:49:23 +000081#if SQLITE_ENABLE_ATOMIC_WRITE
shanehdc97a8c2010-02-23 20:08:35 +000082 "ENABLE_ATOMIC_WRITE",
83#endif
drh0ede9eb2015-01-10 16:49:23 +000084#if SQLITE_ENABLE_CEROD
shanehdc97a8c2010-02-23 20:08:35 +000085 "ENABLE_CEROD",
86#endif
drh0ede9eb2015-01-10 16:49:23 +000087#if SQLITE_ENABLE_COLUMN_METADATA
shanehdc97a8c2010-02-23 20:08:35 +000088 "ENABLE_COLUMN_METADATA",
89#endif
drhcda9a932015-05-07 20:26:20 +000090#if SQLITE_ENABLE_DBSTAT_VTAB
91 "ENABLE_DBSTAT_VTAB",
92#endif
drh0ede9eb2015-01-10 16:49:23 +000093#if SQLITE_ENABLE_EXPENSIVE_ASSERT
shanehdc97a8c2010-02-23 20:08:35 +000094 "ENABLE_EXPENSIVE_ASSERT",
95#endif
drh0ede9eb2015-01-10 16:49:23 +000096#if SQLITE_ENABLE_FTS1
shanehdc97a8c2010-02-23 20:08:35 +000097 "ENABLE_FTS1",
98#endif
drh0ede9eb2015-01-10 16:49:23 +000099#if SQLITE_ENABLE_FTS2
shanehdc97a8c2010-02-23 20:08:35 +0000100 "ENABLE_FTS2",
101#endif
drh0ede9eb2015-01-10 16:49:23 +0000102#if SQLITE_ENABLE_FTS3
shanehdc97a8c2010-02-23 20:08:35 +0000103 "ENABLE_FTS3",
104#endif
drh0ede9eb2015-01-10 16:49:23 +0000105#if SQLITE_ENABLE_FTS3_PARENTHESIS
shanehdc97a8c2010-02-23 20:08:35 +0000106 "ENABLE_FTS3_PARENTHESIS",
107#endif
drh0ede9eb2015-01-10 16:49:23 +0000108#if SQLITE_ENABLE_FTS4
shanehdc97a8c2010-02-23 20:08:35 +0000109 "ENABLE_FTS4",
110#endif
drh50065652015-10-08 19:29:18 +0000111#if SQLITE_ENABLE_FTS5
112 "ENABLE_FTS5",
113#endif
drh0ede9eb2015-01-10 16:49:23 +0000114#if SQLITE_ENABLE_ICU
shanehdc97a8c2010-02-23 20:08:35 +0000115 "ENABLE_ICU",
116#endif
drh0ede9eb2015-01-10 16:49:23 +0000117#if SQLITE_ENABLE_IOTRACE
shanehdc97a8c2010-02-23 20:08:35 +0000118 "ENABLE_IOTRACE",
119#endif
drh50065652015-10-08 19:29:18 +0000120#if SQLITE_ENABLE_JSON1
121 "ENABLE_JSON1",
122#endif
drh0ede9eb2015-01-10 16:49:23 +0000123#if SQLITE_ENABLE_LOAD_EXTENSION
shanehdc97a8c2010-02-23 20:08:35 +0000124 "ENABLE_LOAD_EXTENSION",
125#endif
drh0ede9eb2015-01-10 16:49:23 +0000126#if SQLITE_ENABLE_LOCKING_STYLE
shaneh915c8bd2010-02-24 19:36:10 +0000127 "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
shanehdc97a8c2010-02-23 20:08:35 +0000128#endif
drh0ede9eb2015-01-10 16:49:23 +0000129#if SQLITE_ENABLE_MEMORY_MANAGEMENT
shanehdc97a8c2010-02-23 20:08:35 +0000130 "ENABLE_MEMORY_MANAGEMENT",
131#endif
drh0ede9eb2015-01-10 16:49:23 +0000132#if SQLITE_ENABLE_MEMSYS3
shanehdc97a8c2010-02-23 20:08:35 +0000133 "ENABLE_MEMSYS3",
134#endif
drh0ede9eb2015-01-10 16:49:23 +0000135#if SQLITE_ENABLE_MEMSYS5
shanehdc97a8c2010-02-23 20:08:35 +0000136 "ENABLE_MEMSYS5",
137#endif
drh0ede9eb2015-01-10 16:49:23 +0000138#if SQLITE_ENABLE_OVERSIZE_CELL_CHECK
shanehdc97a8c2010-02-23 20:08:35 +0000139 "ENABLE_OVERSIZE_CELL_CHECK",
140#endif
drh0ede9eb2015-01-10 16:49:23 +0000141#if SQLITE_ENABLE_RTREE
shanehdc97a8c2010-02-23 20:08:35 +0000142 "ENABLE_RTREE",
143#endif
dan8ad169a2013-08-12 20:14:04 +0000144#if defined(SQLITE_ENABLE_STAT4)
danf52bb8d2013-08-03 20:24:58 +0000145 "ENABLE_STAT4",
dan8ad169a2013-08-12 20:14:04 +0000146#elif defined(SQLITE_ENABLE_STAT3)
147 "ENABLE_STAT3",
drhfaacf172011-08-12 01:51:45 +0000148#endif
drh0ede9eb2015-01-10 16:49:23 +0000149#if SQLITE_ENABLE_UNLOCK_NOTIFY
shanehdc97a8c2010-02-23 20:08:35 +0000150 "ENABLE_UNLOCK_NOTIFY",
151#endif
drh0ede9eb2015-01-10 16:49:23 +0000152#if SQLITE_ENABLE_UPDATE_DELETE_LIMIT
shanehdc97a8c2010-02-23 20:08:35 +0000153 "ENABLE_UPDATE_DELETE_LIMIT",
154#endif
drh0ede9eb2015-01-10 16:49:23 +0000155#if SQLITE_HAS_CODEC
shanehdc97a8c2010-02-23 20:08:35 +0000156 "HAS_CODEC",
157#endif
drh0ede9eb2015-01-10 16:49:23 +0000158#if HAVE_ISNAN || SQLITE_HAVE_ISNAN
shanehdc97a8c2010-02-23 20:08:35 +0000159 "HAVE_ISNAN",
160#endif
drh0ede9eb2015-01-10 16:49:23 +0000161#if SQLITE_HOMEGROWN_RECURSIVE_MUTEX
shanehdc97a8c2010-02-23 20:08:35 +0000162 "HOMEGROWN_RECURSIVE_MUTEX",
163#endif
drh0ede9eb2015-01-10 16:49:23 +0000164#if SQLITE_IGNORE_AFP_LOCK_ERRORS
shanehdc97a8c2010-02-23 20:08:35 +0000165 "IGNORE_AFP_LOCK_ERRORS",
166#endif
drh0ede9eb2015-01-10 16:49:23 +0000167#if SQLITE_IGNORE_FLOCK_LOCK_ERRORS
shanehdc97a8c2010-02-23 20:08:35 +0000168 "IGNORE_FLOCK_LOCK_ERRORS",
169#endif
170#ifdef SQLITE_INT64_TYPE
171 "INT64_TYPE",
172#endif
drh41d2e662015-12-01 21:23:07 +0000173#ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS
174 "LIKE_DOESNT_MATCH_BLOBS",
175#endif
drh0ede9eb2015-01-10 16:49:23 +0000176#if SQLITE_LOCK_TRACE
shanehdc97a8c2010-02-23 20:08:35 +0000177 "LOCK_TRACE",
178#endif
drhd16d0bc2013-04-16 18:24:34 +0000179#if defined(SQLITE_MAX_MMAP_SIZE) && !defined(SQLITE_MAX_MMAP_SIZE_xc)
drh9b4c59f2013-04-15 17:03:42 +0000180 "MAX_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE),
181#endif
drh5a201fb2011-08-31 20:47:50 +0000182#ifdef SQLITE_MAX_SCHEMA_RETRY
183 "MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY),
184#endif
drh0ede9eb2015-01-10 16:49:23 +0000185#if SQLITE_MEMDEBUG
shanehdc97a8c2010-02-23 20:08:35 +0000186 "MEMDEBUG",
187#endif
drh0ede9eb2015-01-10 16:49:23 +0000188#if SQLITE_MIXED_ENDIAN_64BIT_FLOAT
shanehdc97a8c2010-02-23 20:08:35 +0000189 "MIXED_ENDIAN_64BIT_FLOAT",
190#endif
drh0ede9eb2015-01-10 16:49:23 +0000191#if SQLITE_NO_SYNC
shanehdc97a8c2010-02-23 20:08:35 +0000192 "NO_SYNC",
193#endif
drh0ede9eb2015-01-10 16:49:23 +0000194#if SQLITE_OMIT_ALTERTABLE
shanehdc97a8c2010-02-23 20:08:35 +0000195 "OMIT_ALTERTABLE",
196#endif
drh0ede9eb2015-01-10 16:49:23 +0000197#if SQLITE_OMIT_ANALYZE
shanehdc97a8c2010-02-23 20:08:35 +0000198 "OMIT_ANALYZE",
199#endif
drh0ede9eb2015-01-10 16:49:23 +0000200#if SQLITE_OMIT_ATTACH
shanehdc97a8c2010-02-23 20:08:35 +0000201 "OMIT_ATTACH",
202#endif
drh0ede9eb2015-01-10 16:49:23 +0000203#if SQLITE_OMIT_AUTHORIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000204 "OMIT_AUTHORIZATION",
205#endif
drh0ede9eb2015-01-10 16:49:23 +0000206#if SQLITE_OMIT_AUTOINCREMENT
shanehdc97a8c2010-02-23 20:08:35 +0000207 "OMIT_AUTOINCREMENT",
208#endif
drh0ede9eb2015-01-10 16:49:23 +0000209#if SQLITE_OMIT_AUTOINIT
shanehdc97a8c2010-02-23 20:08:35 +0000210 "OMIT_AUTOINIT",
211#endif
drh0ede9eb2015-01-10 16:49:23 +0000212#if SQLITE_OMIT_AUTOMATIC_INDEX
drhc6339082010-04-07 16:54:58 +0000213 "OMIT_AUTOMATIC_INDEX",
214#endif
drh0ede9eb2015-01-10 16:49:23 +0000215#if SQLITE_OMIT_AUTORESET
drh602acb42011-01-17 17:42:37 +0000216 "OMIT_AUTORESET",
217#endif
drh0ede9eb2015-01-10 16:49:23 +0000218#if SQLITE_OMIT_AUTOVACUUM
shanehdc97a8c2010-02-23 20:08:35 +0000219 "OMIT_AUTOVACUUM",
220#endif
drh0ede9eb2015-01-10 16:49:23 +0000221#if SQLITE_OMIT_BETWEEN_OPTIMIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000222 "OMIT_BETWEEN_OPTIMIZATION",
223#endif
drh0ede9eb2015-01-10 16:49:23 +0000224#if SQLITE_OMIT_BLOB_LITERAL
shanehdc97a8c2010-02-23 20:08:35 +0000225 "OMIT_BLOB_LITERAL",
226#endif
drh0ede9eb2015-01-10 16:49:23 +0000227#if SQLITE_OMIT_BTREECOUNT
shanehdc97a8c2010-02-23 20:08:35 +0000228 "OMIT_BTREECOUNT",
229#endif
drh0ede9eb2015-01-10 16:49:23 +0000230#if SQLITE_OMIT_BUILTIN_TEST
shanehdc97a8c2010-02-23 20:08:35 +0000231 "OMIT_BUILTIN_TEST",
232#endif
drh0ede9eb2015-01-10 16:49:23 +0000233#if SQLITE_OMIT_CAST
shanehdc97a8c2010-02-23 20:08:35 +0000234 "OMIT_CAST",
235#endif
drh0ede9eb2015-01-10 16:49:23 +0000236#if SQLITE_OMIT_CHECK
shanehdc97a8c2010-02-23 20:08:35 +0000237 "OMIT_CHECK",
238#endif
drh0ede9eb2015-01-10 16:49:23 +0000239#if SQLITE_OMIT_COMPLETE
shanehdc97a8c2010-02-23 20:08:35 +0000240 "OMIT_COMPLETE",
241#endif
drh0ede9eb2015-01-10 16:49:23 +0000242#if SQLITE_OMIT_COMPOUND_SELECT
shanehdc97a8c2010-02-23 20:08:35 +0000243 "OMIT_COMPOUND_SELECT",
244#endif
drh0ede9eb2015-01-10 16:49:23 +0000245#if SQLITE_OMIT_CTE
dan03af2162014-03-05 17:29:34 +0000246 "OMIT_CTE",
247#endif
drh0ede9eb2015-01-10 16:49:23 +0000248#if SQLITE_OMIT_DATETIME_FUNCS
shanehdc97a8c2010-02-23 20:08:35 +0000249 "OMIT_DATETIME_FUNCS",
250#endif
drh0ede9eb2015-01-10 16:49:23 +0000251#if SQLITE_OMIT_DECLTYPE
shanehdc97a8c2010-02-23 20:08:35 +0000252 "OMIT_DECLTYPE",
253#endif
drh0ede9eb2015-01-10 16:49:23 +0000254#if SQLITE_OMIT_DEPRECATED
shanehdc97a8c2010-02-23 20:08:35 +0000255 "OMIT_DEPRECATED",
256#endif
drh0ede9eb2015-01-10 16:49:23 +0000257#if SQLITE_OMIT_DISKIO
shanehdc97a8c2010-02-23 20:08:35 +0000258 "OMIT_DISKIO",
259#endif
drh0ede9eb2015-01-10 16:49:23 +0000260#if SQLITE_OMIT_EXPLAIN
shanehdc97a8c2010-02-23 20:08:35 +0000261 "OMIT_EXPLAIN",
262#endif
drh0ede9eb2015-01-10 16:49:23 +0000263#if SQLITE_OMIT_FLAG_PRAGMAS
shanehdc97a8c2010-02-23 20:08:35 +0000264 "OMIT_FLAG_PRAGMAS",
265#endif
drh0ede9eb2015-01-10 16:49:23 +0000266#if SQLITE_OMIT_FLOATING_POINT
shanehdc97a8c2010-02-23 20:08:35 +0000267 "OMIT_FLOATING_POINT",
268#endif
drh0ede9eb2015-01-10 16:49:23 +0000269#if SQLITE_OMIT_FOREIGN_KEY
shanehdc97a8c2010-02-23 20:08:35 +0000270 "OMIT_FOREIGN_KEY",
271#endif
drh0ede9eb2015-01-10 16:49:23 +0000272#if SQLITE_OMIT_GET_TABLE
shanehdc97a8c2010-02-23 20:08:35 +0000273 "OMIT_GET_TABLE",
274#endif
drh0ede9eb2015-01-10 16:49:23 +0000275#if SQLITE_OMIT_INCRBLOB
shanehdc97a8c2010-02-23 20:08:35 +0000276 "OMIT_INCRBLOB",
277#endif
drh0ede9eb2015-01-10 16:49:23 +0000278#if SQLITE_OMIT_INTEGRITY_CHECK
shanehdc97a8c2010-02-23 20:08:35 +0000279 "OMIT_INTEGRITY_CHECK",
280#endif
drh0ede9eb2015-01-10 16:49:23 +0000281#if SQLITE_OMIT_LIKE_OPTIMIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000282 "OMIT_LIKE_OPTIMIZATION",
283#endif
drh0ede9eb2015-01-10 16:49:23 +0000284#if SQLITE_OMIT_LOAD_EXTENSION
shanehdc97a8c2010-02-23 20:08:35 +0000285 "OMIT_LOAD_EXTENSION",
286#endif
drh0ede9eb2015-01-10 16:49:23 +0000287#if SQLITE_OMIT_LOCALTIME
shanehdc97a8c2010-02-23 20:08:35 +0000288 "OMIT_LOCALTIME",
289#endif
drh0ede9eb2015-01-10 16:49:23 +0000290#if SQLITE_OMIT_LOOKASIDE
shanehdc97a8c2010-02-23 20:08:35 +0000291 "OMIT_LOOKASIDE",
292#endif
drh0ede9eb2015-01-10 16:49:23 +0000293#if SQLITE_OMIT_MEMORYDB
shanehdc97a8c2010-02-23 20:08:35 +0000294 "OMIT_MEMORYDB",
295#endif
drh0ede9eb2015-01-10 16:49:23 +0000296#if SQLITE_OMIT_OR_OPTIMIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000297 "OMIT_OR_OPTIMIZATION",
298#endif
drh0ede9eb2015-01-10 16:49:23 +0000299#if SQLITE_OMIT_PAGER_PRAGMAS
shanehdc97a8c2010-02-23 20:08:35 +0000300 "OMIT_PAGER_PRAGMAS",
301#endif
drh0ede9eb2015-01-10 16:49:23 +0000302#if SQLITE_OMIT_PRAGMA
shanehdc97a8c2010-02-23 20:08:35 +0000303 "OMIT_PRAGMA",
304#endif
drh0ede9eb2015-01-10 16:49:23 +0000305#if SQLITE_OMIT_PROGRESS_CALLBACK
shanehdc97a8c2010-02-23 20:08:35 +0000306 "OMIT_PROGRESS_CALLBACK",
307#endif
drh0ede9eb2015-01-10 16:49:23 +0000308#if SQLITE_OMIT_QUICKBALANCE
shanehdc97a8c2010-02-23 20:08:35 +0000309 "OMIT_QUICKBALANCE",
310#endif
drh0ede9eb2015-01-10 16:49:23 +0000311#if SQLITE_OMIT_REINDEX
shanehdc97a8c2010-02-23 20:08:35 +0000312 "OMIT_REINDEX",
313#endif
drh0ede9eb2015-01-10 16:49:23 +0000314#if SQLITE_OMIT_SCHEMA_PRAGMAS
shanehdc97a8c2010-02-23 20:08:35 +0000315 "OMIT_SCHEMA_PRAGMAS",
316#endif
drh0ede9eb2015-01-10 16:49:23 +0000317#if SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
shanehdc97a8c2010-02-23 20:08:35 +0000318 "OMIT_SCHEMA_VERSION_PRAGMAS",
319#endif
drh0ede9eb2015-01-10 16:49:23 +0000320#if SQLITE_OMIT_SHARED_CACHE
shanehdc97a8c2010-02-23 20:08:35 +0000321 "OMIT_SHARED_CACHE",
322#endif
drh0ede9eb2015-01-10 16:49:23 +0000323#if SQLITE_OMIT_SUBQUERY
shanehdc97a8c2010-02-23 20:08:35 +0000324 "OMIT_SUBQUERY",
325#endif
drh0ede9eb2015-01-10 16:49:23 +0000326#if SQLITE_OMIT_TCL_VARIABLE
shanehdc97a8c2010-02-23 20:08:35 +0000327 "OMIT_TCL_VARIABLE",
328#endif
drh0ede9eb2015-01-10 16:49:23 +0000329#if SQLITE_OMIT_TEMPDB
shanehdc97a8c2010-02-23 20:08:35 +0000330 "OMIT_TEMPDB",
331#endif
drh0ede9eb2015-01-10 16:49:23 +0000332#if SQLITE_OMIT_TRACE
shanehdc97a8c2010-02-23 20:08:35 +0000333 "OMIT_TRACE",
334#endif
drh0ede9eb2015-01-10 16:49:23 +0000335#if SQLITE_OMIT_TRIGGER
shanehdc97a8c2010-02-23 20:08:35 +0000336 "OMIT_TRIGGER",
337#endif
drh0ede9eb2015-01-10 16:49:23 +0000338#if SQLITE_OMIT_TRUNCATE_OPTIMIZATION
shanehdc97a8c2010-02-23 20:08:35 +0000339 "OMIT_TRUNCATE_OPTIMIZATION",
340#endif
drh0ede9eb2015-01-10 16:49:23 +0000341#if SQLITE_OMIT_UTF16
shanehdc97a8c2010-02-23 20:08:35 +0000342 "OMIT_UTF16",
343#endif
drh0ede9eb2015-01-10 16:49:23 +0000344#if SQLITE_OMIT_VACUUM
shanehdc97a8c2010-02-23 20:08:35 +0000345 "OMIT_VACUUM",
346#endif
drh0ede9eb2015-01-10 16:49:23 +0000347#if SQLITE_OMIT_VIEW
shanehdc97a8c2010-02-23 20:08:35 +0000348 "OMIT_VIEW",
349#endif
drh0ede9eb2015-01-10 16:49:23 +0000350#if SQLITE_OMIT_VIRTUALTABLE
shanehdc97a8c2010-02-23 20:08:35 +0000351 "OMIT_VIRTUALTABLE",
352#endif
drh0ede9eb2015-01-10 16:49:23 +0000353#if SQLITE_OMIT_WAL
drh4d9a7bf2010-07-07 01:52:31 +0000354 "OMIT_WAL",
355#endif
drh0ede9eb2015-01-10 16:49:23 +0000356#if SQLITE_OMIT_WSD
shanehdc97a8c2010-02-23 20:08:35 +0000357 "OMIT_WSD",
358#endif
drh0ede9eb2015-01-10 16:49:23 +0000359#if SQLITE_OMIT_XFER_OPT
shanehdc97a8c2010-02-23 20:08:35 +0000360 "OMIT_XFER_OPT",
361#endif
drh0ede9eb2015-01-10 16:49:23 +0000362#if SQLITE_PERFORMANCE_TRACE
shanehdc97a8c2010-02-23 20:08:35 +0000363 "PERFORMANCE_TRACE",
364#endif
drh0ede9eb2015-01-10 16:49:23 +0000365#if SQLITE_PROXY_DEBUG
shanehdc97a8c2010-02-23 20:08:35 +0000366 "PROXY_DEBUG",
367#endif
drh0ede9eb2015-01-10 16:49:23 +0000368#if SQLITE_RTREE_INT_ONLY
drhdf324142012-09-13 12:10:55 +0000369 "RTREE_INT_ONLY",
370#endif
drh0ede9eb2015-01-10 16:49:23 +0000371#if SQLITE_SECURE_DELETE
shanehdc97a8c2010-02-23 20:08:35 +0000372 "SECURE_DELETE",
373#endif
drh0ede9eb2015-01-10 16:49:23 +0000374#if SQLITE_SMALL_STACK
shanehdc97a8c2010-02-23 20:08:35 +0000375 "SMALL_STACK",
376#endif
drh0ede9eb2015-01-10 16:49:23 +0000377#if SQLITE_SOUNDEX
shanehdc97a8c2010-02-23 20:08:35 +0000378 "SOUNDEX",
379#endif
drh0ede9eb2015-01-10 16:49:23 +0000380#if SQLITE_SYSTEM_MALLOC
mistachkin1fa85a12013-12-03 22:32:48 +0000381 "SYSTEM_MALLOC",
382#endif
drh0ede9eb2015-01-10 16:49:23 +0000383#if SQLITE_TCL
shanehdc97a8c2010-02-23 20:08:35 +0000384 "TCL",
385#endif
drhd16d0bc2013-04-16 18:24:34 +0000386#if defined(SQLITE_TEMP_STORE) && !defined(SQLITE_TEMP_STORE_xc)
shaneh915c8bd2010-02-24 19:36:10 +0000387 "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE),
388#endif
drh0ede9eb2015-01-10 16:49:23 +0000389#if SQLITE_TEST
shanehdc97a8c2010-02-23 20:08:35 +0000390 "TEST",
391#endif
drhd16d0bc2013-04-16 18:24:34 +0000392#if defined(SQLITE_THREADSAFE)
shaneh915c8bd2010-02-24 19:36:10 +0000393 "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE),
394#endif
drh0ede9eb2015-01-10 16:49:23 +0000395#if SQLITE_USE_ALLOCA
shanehdc97a8c2010-02-23 20:08:35 +0000396 "USE_ALLOCA",
397#endif
drh0ede9eb2015-01-10 16:49:23 +0000398#if SQLITE_USER_AUTHENTICATION
drh09e60542014-09-10 22:46:46 +0000399 "USER_AUTHENTICATION",
400#endif
drh0ede9eb2015-01-10 16:49:23 +0000401#if SQLITE_WIN32_MALLOC
mistachkin1fa85a12013-12-03 22:32:48 +0000402 "WIN32_MALLOC",
403#endif
drh0ede9eb2015-01-10 16:49:23 +0000404#if SQLITE_ZERO_MALLOC
shaneh915c8bd2010-02-24 19:36:10 +0000405 "ZERO_MALLOC"
shanehdc97a8c2010-02-23 20:08:35 +0000406#endif
407};
408
409/*
410** Given the name of a compile-time option, return true if that option
411** was used and false if not.
412**
413** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix
414** is not required for a match.
415*/
416int sqlite3_compileoption_used(const char *zOptName){
417 int i, n;
drh9ca95732014-10-24 00:35:58 +0000418
drh0ede9eb2015-01-10 16:49:23 +0000419#if SQLITE_ENABLE_API_ARMOR
drh9ca95732014-10-24 00:35:58 +0000420 if( zOptName==0 ){
421 (void)SQLITE_MISUSE_BKPT;
422 return 0;
423 }
424#endif
shanehdc97a8c2010-02-23 20:08:35 +0000425 if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7;
426 n = sqlite3Strlen30(zOptName);
427
428 /* Since ArraySize(azCompileOpt) is normally in single digits, a
429 ** linear search is adequate. No need for a binary search. */
430 for(i=0; i<ArraySize(azCompileOpt); i++){
drhd16d0bc2013-04-16 18:24:34 +0000431 if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0
drh97348b32014-09-25 02:44:29 +0000432 && sqlite3IsIdChar((unsigned char)azCompileOpt[i][n])==0
drhd16d0bc2013-04-16 18:24:34 +0000433 ){
434 return 1;
435 }
shanehdc97a8c2010-02-23 20:08:35 +0000436 }
437 return 0;
438}
439
440/*
441** Return the N-th compile-time option string. If N is out of range,
442** return a NULL pointer.
443*/
drh380083c2010-02-23 20:32:15 +0000444const char *sqlite3_compileoption_get(int N){
shanehdc97a8c2010-02-23 20:08:35 +0000445 if( N>=0 && N<ArraySize(azCompileOpt) ){
446 return azCompileOpt[N];
447 }
448 return 0;
449}
450
451#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */