5 # const char **azCompileOpt[]
7 # definition used in src/ctime.c, run this script from
8 # the checkout root. It generates src/ctime.c .
10 # Results are normally written into src/ctime.c. But if an argument is
11 # provided, results are written there instead. Examples:
13 # tclsh tool/mkctimec.tcl ;# <-- results to src/ctime.c
15 # tclsh tool/mkctimec.tcl /dev/tty ;# <-- results to the terminal
19 set ::headWarning {/* DO NOT EDIT
!
20 ** This
file is automatically generated by the script in the canonical
21 ** SQLite
source tree at tool
/mkctimec.tcl.
23 ** To modify this header
, edit any of the various lists in that script
24 ** which specify categories of generated conditionals in this
file.
27 # Make { and } easier to put into literals (even on EBCDIC machines.)
28 regexp {(\{)(\})} "{}" ma
::lb ::rb
34 ** The author disclaims copyright to this source code. In place of
35 ** a legal notice, here is a blessing:
37 ** May you do good and not evil.
38 ** May you find forgiveness for yourself and forgive others.
39 ** May you share freely, never taking more than you give.
41 *************************************************************************
43 ** This file implements routines used to report what compile-time options
44 ** SQLite was built with.
46 #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS /* IMP: R-16824-07538 */
49 ** Include the configuration header output by 'configure' if we're using the
50 ** autoconf-based build
52 #if defined(_HAVE_SQLITE_CONFIG_H) && !defined(SQLITECONFIG_H)
53 #include \"sqlite_cfg.h\"
54 #define SQLITECONFIG_H 1
57 /* These macros are provided to \"stringify\" the value of the define
58 ** for those options in which the value is meaningful. */
59 #define CTIMEOPT_VAL_(opt) #opt
60 #define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt)
62 /* Like CTIMEOPT_VAL, but especially for SQLITE_DEFAULT_LOOKASIDE. This
63 ** option requires a separate macro because legal values contain a single
64 ** comma. e.g. (-DSQLITE_DEFAULT_LOOKASIDE=\"100,100\") */
65 #define CTIMEOPT_VAL2_(opt1,opt2) #opt1 \",\" #opt2
66 #define CTIMEOPT_VAL2(opt) CTIMEOPT_VAL2_(opt)
67 #include \"sqliteInt.h\"
70 ** An array of names of all compile-time options. This array should
73 ** This array looks large, but in a typical installation actually uses
74 ** only a handful of compile-time options, so most times this array is usually
75 ** rather short and uses little memory space.
77 static const char * const sqlite3azCompileOpt\[\] = $::lb
83 const char **sqlite3CompileOptions(int *pnOpt){
84 *pnOpt = sizeof(sqlite3azCompileOpt) / sizeof(sqlite3azCompileOpt\[0\]);
85 return (const char**)sqlite3azCompileOpt;
88 #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */
91 # All Boolean compile time options which default to something
92 # other than 0 or empty. The default is paired with the PP
93 # symbol so that a differing define can be detected.
95 set boolean_defnnz_options
{
96 {SQLITE_HOMEGROWN_RECURSIVE_MUTEX
1}
97 {SQLITE_POWERSAFE_OVERWRITE
1}
98 {SQLITE_DEFAULT_MEMSTATUS
1}
100 {SQLITE_ALLOW_COVERING_INDEX_SCAN
1}
103 # All Boolean compile time options which default to 0 or empty.
105 set boolean_defnil_options
{
107 SQLITE_4_BYTE_ALIGNED_MALLOC
108 SQLITE_ALLOW_ROWID_IN_VIEW
109 SQLITE_ALLOW_URI_AUTHORITY
110 SQLITE_BUG_COMPATIBLE_20160819
111 SQLITE_CASE_SENSITIVE_LIKE
115 SQLITE_DEFAULT_AUTOMATIC_INDEX
116 SQLITE_DEFAULT_AUTOVACUUM
117 SQLITE_DEFAULT_CKPTFULLFSYNC
118 SQLITE_DEFAULT_FOREIGN_KEYS
119 SQLITE_DEFAULT_LOCKING_MODE
120 SQLITE_DEFAULT_RECURSIVE_TRIGGERS
121 SQLITE_DEFAULT_SYNCHRONOUS
122 SQLITE_DEFAULT_WAL_SYNCHRONOUS
123 SQLITE_DIRECT_OVERFLOW_READ
124 SQLITE_DISABLE_DIRSYNC
125 SQLITE_DISABLE_FTS3_UNICODE
126 SQLITE_DISABLE_FTS4_DEFERRED
127 SQLITE_DISABLE_INTRINSIC
129 SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
130 SQLITE_DISABLE_SKIPAHEAD_DISTINCT
131 SQLITE_ENABLE_8_3_NAMES
132 SQLITE_ENABLE_API_ARMOR
133 SQLITE_ENABLE_ATOMIC_WRITE
134 SQLITE_ENABLE_BATCH_ATOMIC_WRITE
135 SQLITE_ENABLE_BYTECODE_VTAB
136 SQLITE_ENABLE_COLUMN_METADATA
137 SQLITE_ENABLE_COLUMN_USED_MASK
138 SQLITE_ENABLE_COSTMULT
139 SQLITE_ENABLE_CURSOR_HINTS
140 SQLITE_ENABLE_DBPAGE_VTAB
141 SQLITE_ENABLE_DBSTAT_VTAB
142 SQLITE_ENABLE_EXPENSIVE_ASSERT
143 SQLITE_ENABLE_EXPLAIN_COMMENTS
145 SQLITE_ENABLE_FTS3_PARENTHESIS
146 SQLITE_ENABLE_FTS3_TOKENIZER
149 SQLITE_ENABLE_GEOPOLY
150 SQLITE_ENABLE_HIDDEN_COLUMNS
152 SQLITE_ENABLE_IOTRACE
153 SQLITE_ENABLE_LOAD_EXTENSION
154 SQLITE_ENABLE_LOCKING_STYLE
155 SQLITE_ENABLE_MATH_FUNCTIONS
156 SQLITE_ENABLE_MEMORY_MANAGEMENT
157 SQLITE_ENABLE_MEMSYS3
158 SQLITE_ENABLE_MEMSYS5
159 SQLITE_ENABLE_MULTIPLEX
160 SQLITE_ENABLE_NORMALIZE
161 SQLITE_ENABLE_NULL_TRIM
162 SQLITE_ENABLE_OFFSET_SQL_FUNC
163 SQLITE_ENABLE_OVERSIZE_CELL_CHECK
164 SQLITE_ENABLE_PREUPDATE_HOOK
168 SQLITE_ENABLE_SESSION
169 SQLITE_ENABLE_SNAPSHOT
170 SQLITE_ENABLE_SORTER_REFERENCES
173 SQLITE_ENABLE_STMT_SCANSTATUS
174 SQLITE_ENABLE_STMTVTAB
175 SQLITE_ENABLE_TREETRACE
176 SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
177 SQLITE_ENABLE_UNLOCK_NOTIFY
178 SQLITE_ENABLE_UPDATE_DELETE_LIMIT
179 SQLITE_ENABLE_URI_00_ERROR
180 SQLITE_ENABLE_VFSTRACE
181 SQLITE_ENABLE_WHERETRACE
183 SQLITE_EXPLAIN_ESTIMATED_ROWS
184 SQLITE_EXTRA_IFNULLROW
185 SQLITE_FTS5_ENABLE_TEST_MI
186 SQLITE_FTS5_NO_WITHOUT_ROWID
187 SQLITE_IGNORE_AFP_LOCK_ERRORS
188 SQLITE_IGNORE_FLOCK_LOCK_ERRORS
191 SQLITE_LEGACY_JSON_VALID
192 SQLITE_LIKE_DOESNT_MATCH_BLOBS
194 SQLITE_LOG_CACHE_SPILL
196 SQLITE_MIXED_ENDIAN_64BIT_FLOAT
197 SQLITE_MMAP_READWRITE
200 SQLITE_MUTEX_PTHREADS
204 SQLITE_OMIT_ALTERTABLE
207 SQLITE_OMIT_AUTHORIZATION
208 SQLITE_OMIT_AUTOINCREMENT
210 SQLITE_OMIT_AUTOMATIC_INDEX
211 SQLITE_OMIT_AUTORESET
212 SQLITE_OMIT_AUTOVACUUM
213 SQLITE_OMIT_BETWEEN_OPTIMIZATION
214 SQLITE_OMIT_BLOB_LITERAL
218 SQLITE_OMIT_COMPOUND_SELECT
219 SQLITE_OMIT_CONFLICT_CLAUSE
222 SQLITE_OMIT_DEPRECATED
223 SQLITE_OMIT_DESERIALIZE
226 SQLITE_OMIT_FLAG_PRAGMAS
227 SQLITE_OMIT_FLOATING_POINT
228 SQLITE_OMIT_FOREIGN_KEY
229 SQLITE_OMIT_GET_TABLE
230 SQLITE_OMIT_HEX_INTEGER
232 SQLITE_OMIT_INTEGRITY_CHECK
233 SQLITE_OMIT_INTROSPECTION_PRAGMAS
235 SQLITE_OMIT_LIKE_OPTIMIZATION
236 SQLITE_OMIT_LOAD_EXTENSION
237 SQLITE_OMIT_LOCALTIME
238 SQLITE_OMIT_LOOKASIDE
240 SQLITE_OMIT_OR_OPTIMIZATION
241 SQLITE_OMIT_PAGER_PRAGMAS
242 SQLITE_OMIT_PARSER_TRACE
245 SQLITE_OMIT_PROGRESS_CALLBACK
246 SQLITE_OMIT_QUICKBALANCE
248 SQLITE_OMIT_SCHEMA_PRAGMAS
249 SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
251 SQLITE_OMIT_SHARED_CACHE
252 SQLITE_OMIT_SHUTDOWN_DIRECTORIES
254 SQLITE_OMIT_TCL_VARIABLE
256 SQLITE_OMIT_TEST_CONTROL
258 SQLITE_OMIT_TRUNCATE_OPTIMIZATION
262 SQLITE_OMIT_VIRTUALTABLE
266 SQLITE_PERFORMANCE_TRACE
267 SQLITE_PREFER_PROXY_LOCKING
269 SQLITE_REVERSE_UNORDERED_SELECTS
270 SQLITE_RTREE_INT_ONLY
274 SQLITE_SUBSTR_COMPATIBILITY
277 SQLITE_UNLINK_AFTER_CLOSE
280 SQLITE_USE_FCNTL_TRACE
281 SQLITE_USER_AUTHENTICATION
288 # All compile time options for which the assigned value is other than boolean
289 # and is a comma-separated scalar pair.
292 SQLITE_DEFAULT_LOOKASIDE
295 # All compile time options for which the assigned value is other than boolean
296 # and is a single scalar.
299 SQLITE_ATOMIC_INTRINSICS
301 SQLITE_DEFAULT_CACHE_SIZE
302 SQLITE_DEFAULT_FILE_FORMAT
303 SQLITE_DEFAULT_FILE_PERMISSIONS
304 SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT
305 SQLITE_DEFAULT_LOCKING_MODE
306 SQLITE_DEFAULT_MMAP_SIZE
307 SQLITE_DEFAULT_PAGE_SIZE
308 SQLITE_DEFAULT_PCACHE_INITSZ
309 SQLITE_DEFAULT_PROXYDIR_PERMISSIONS
310 SQLITE_DEFAULT_ROWEST
311 SQLITE_DEFAULT_SECTOR_SIZE
312 SQLITE_DEFAULT_SYNCHRONOUS
313 SQLITE_DEFAULT_WAL_AUTOCHECKPOINT
314 SQLITE_DEFAULT_WAL_SYNCHRONOUS
315 SQLITE_DEFAULT_WORKER_THREADS
317 SQLITE_ENABLE_8_3_NAMES
319 SQLITE_ENABLE_LOCKING_STYLE
322 SQLITE_EXTRA_SHUTDOWN
323 SQLITE_FTS3_MAX_EXPR_DEPTH
324 SQLITE_INTEGRITY_CHECK_ERROR_MAX
325 SQLITE_MALLOC_SOFT_LIMIT
328 SQLITE_MAX_COMPOUND_SELECT
329 SQLITE_MAX_DEFAULT_PAGE_SIZE
330 SQLITE_MAX_EXPR_DEPTH
331 SQLITE_MAX_FUNCTION_ARG
333 SQLITE_MAX_LIKE_PATTERN_LENGTH
336 SQLITE_MAX_MMAP_SIZE_
337 SQLITE_MAX_PAGE_COUNT
339 SQLITE_MAX_SCHEMA_RETRY
340 SQLITE_MAX_SQL_LENGTH
341 SQLITE_MAX_TRIGGER_DEPTH
342 SQLITE_MAX_VARIABLE_NUMBER
344 SQLITE_MAX_WORKER_THREADS
347 SQLITE_STMTJRNL_SPILL
351 # Options that require custom code.
353 set options(COMPILER
) {
354 #if defined(__clang__) && defined(__clang_major__)
355 "COMPILER=clang-" CTIMEOPT_VAL
(__clang_major__
) "."
356 CTIMEOPT_VAL
(__clang_minor__
) "."
357 CTIMEOPT_VAL
(__clang_patchlevel__
),
358 #elif defined(_MSC_VER)
359 "COMPILER=msvc-" CTIMEOPT_VAL
(_MSC_VER
),
360 #elif defined(__GNUC__) && defined(__VERSION__)
361 "COMPILER=gcc-" __VERSION__
,
364 set options(HAVE_ISNAN
) {
365 #if HAVE_ISNAN || SQLITE_HAVE_ISNAN
369 set options(OMIT_DATETIME_FUNCS
) {
370 #if defined(SQLITE_OMIT_DATETIME_FUNCS) || defined(SQLITE_OMIT_FLOATING_POINT)
371 "OMIT_DATETIME_FUNCS",
374 set options(SYSTEM_MALLOC
) "\
375 #if (!defined(SQLITE_WIN32_MALLOC) \\
376 && !defined(SQLITE_ZERO_MALLOC) \\
377 && !defined(SQLITE_MEMDEBUG) \\
378 ) || defined(SQLITE_SYSTEM_MALLOC)
382 set options(THREADSAFE
) {
383 #if defined(SQLITE_THREADSAFE)
384 "THREADSAFE=" CTIMEOPT_VAL
(SQLITE_THREADSAFE
),
385 #elif defined(THREADSAFE)
386 "THREADSAFE=" CTIMEOPT_VAL
(THREADSAFE
),
392 proc trim_name
{in
} {
394 if {[string range
$in 0 6]=="SQLITE_"} {
395 set ret
[string range
$in 7 end
]
400 foreach name_defval
$boolean_defnnz_options {
401 set b
[lindex $name_defval 0]
402 set defval
[lindex $name_defval 1]
403 set name
[trim_name
$b]
404 set options($name) [subst {
407 "$name=" CTIMEOPT_VAL
($b),
413 foreach b
$boolean_defnil_options {
414 set name
[trim_name
$b]
415 set options($name) [subst {
422 foreach v
$value_options {
423 set name
[trim_name
$v]
424 set options($name) [subst {
426 "$name=" CTIMEOPT_VAL
($v),
431 foreach v
$value2_options {
432 set name
[trim_name
$v]
433 set options($name) [subst {
435 "$name=" CTIMEOPT_VAL2
($v),
441 set destfile
[lindex $argv 0]
443 set destfile
"[file dir [file dir [file normal $argv0]]]/src/ctime.c"
444 puts "Overwriting $destfile..."
447 if {[catch {set cfd
[open $destfile w
]}]!=0} {
448 puts stderr
"File '$destfile' unwritable."
452 puts $cfd $::headWarning;
453 puts $cfd $::headCode;
454 foreach o
[lsort [array names
options]] {
455 puts $cfd [string trim
$options($o)]
457 puts -nonewline $cfd $::tailCode;