]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Rework the code in ctime.c a bit to report on more compile time options. And
authordan <dan@noemail.net>
Fri, 16 Jun 2017 19:51:47 +0000 (19:51 +0000)
committerdan <dan@noemail.net>
Fri, 16 Jun 2017 19:51:47 +0000 (19:51 +0000)
to only output configuration options passed in to SQLite, not the default
values of #define symbols set automatically. Also generate the large array in
ctime.c using new script tool/mkctime.tcl, instead of entering it manually.

FossilOrigin-Name: bc1951d699e6eeacbe15776a37cd0f5cf3f09eb85d3ae01cff43293cb286fcd7

manifest
manifest.uuid
src/ctime.c
src/main.c
src/sqliteInt.h
test/ctime.test
tool/mkctimec.tcl [new file with mode: 0644]
tool/mksqlite3c.tcl

index f763fdfac057cbe949eab7ff4e7be216f025a814..59ad1f94f0193d8e98fd207a3e0bfec76edd5d08 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Minor\srefactoring\schange\sto\sclarify\show\sATTACH\sworks.\s\sNo\sfunctional\schanges.
-D 2017-06-16T18:31:30.375
+C Rework\sthe\scode\sin\sctime.c\sa\sbit\sto\sreport\son\smore\scompile\stime\soptions.\sAnd\nto\sonly\soutput\sconfiguration\soptions\spassed\sin\sto\sSQLite,\snot\sthe\sdefault\nvalues\sof\s#define\ssymbols\sset\sautomatically.\sAlso\sgenerate\sthe\slarge\sarray\sin\nctime.c\susing\snew\sscript\stool/mkctime.tcl,\sinstead\sof\sentering\sit\smanually.
+D 2017-06-16T19:51:47.668
 F Makefile.in 1cc758ce3374a32425e4d130c2fe7b026b20de5b8843243de75f087c0a2661fb
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 8eeb80162074004e906b53d7340a12a14c471a83743aab975947e95ce061efcc
@@ -354,7 +354,7 @@ F src/btreeInt.h a392d353104b4add58b4a59cb185f5d5693dde832c565b77d8d4c343ed98f61
 F src/build.c 88a8cdc11d1c081ed565aa3e795bdf9160f4556463b4c4555e9860b59dd80340
 F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
-F src/ctime.c 47d91a25ad8f199a71a5b1b7b169d6dd0d6e98c5719eca801568798743d1161c
+F src/ctime.c 6327cb262d3468bcd3af863db42b4daed033441ddd5e612ccf9079ac2e23247f
 F src/date.c cc42a41c7422389860d40419a5e3bce5eaf6e7835c3ba2677751dc653550a5c7
 F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
 F src/delete.c 3213547e97b676c6fa79948b7a9ede4801ea04a01a2043241deafedf132ecf5d
@@ -370,7 +370,7 @@ F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
 F src/insert.c 974499a3999d339a4c1ba8ef129a988d9f136b3789e423808b38cdc19d28adbe
 F src/legacy.c e88ed13c2d531decde75d42c2e35623fb9ce3cb0
 F src/loadext.c a72909474dadce771d3669bf84bf689424f6f87d471fee898589c3ef9b2acfd9
-F src/main.c 65eb6093de90ab4372f2ae0d0cd0acfe718ea26ef0145435e0d9eecb854c9d7e
+F src/main.c 18f2145d572069dae91161add89446aec680aab296492a92ae5afcc2fc7c6b5a
 F src/malloc.c e20bb2b48abec52d3faf01cce12e8b4f95973755fafec98d45162dfdab111978
 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
 F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
@@ -410,7 +410,7 @@ F src/shell.c bcd3358ad6cb3f3dc7ec76ad3bd8191f123ed2425360c5c48fe431780eceb729
 F src/sqlite.h.in 67fa8bd29808e7988e0ce36c8d4c6043eb1727f94522fc612687aa5af51931e6
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 58fd0676d3111d02e62e5a35992a7d3da5d3f88753acc174f2d37b774fbbdd28
-F src/sqliteInt.h f90955604b4d8e5a1f672bd230978640be89e0bbbf833d352cf4945ce3a799df
+F src/sqliteInt.h bdbc175a05b29293505530412a994fb259c7dfb63b06aa2016f13ef641229fa5
 F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
 F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1
 F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
@@ -645,7 +645,7 @@ F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2
 F test/createtab.test b5de160630b209c4b8925bdcbbaf48cc90b67fe8
 F test/cse.test 277350a26264495e86b1785f34d2d0c8600e021c
 F test/csv01.test e0ba3caaa57e4c667a0b45977689fb8082f14348
-F test/ctime.test ff6c38e822459d6ca743c34901caf57740b08b54
+F test/ctime.test d19124daeadb9194f2af349b0e06cff723d6e3e7ac14903b4472edaf88b1839d
 F test/cursorhint.test 7bc346788390475e77a345da2b92270d04d35856
 F test/cursorhint2.test 8457e93d97f665f23f97cdbc8477d16e3480331b
 F test/date.test 9b73bbeb1b82d9c1f44dec5cf563bf7da58d2373
@@ -1515,6 +1515,7 @@ F tool/loadfts.c c3c64e4d5e90e8ba41159232c2189dba4be7b862
 F tool/logest.c 11346aa019e2e77a00902aa7d0cabd27bd2e8cca
 F tool/max-limits.c cbb635fbb37ae4d05f240bfb5b5270bb63c54439
 F tool/mkautoconfamal.sh e855df211ecbcc7131dee817110ff386cfb112f7
+F tool/mkctimec.tcl 4751d3c3e3ca8551b4c707574661db03e231b2b5a300af3f613eae4d39e4445a
 F tool/mkkeywordhash.c f7f3b342211ac6a14258b9726d5b97cf4f548f22
 F tool/mkmsvcmin.tcl cbd93f1cfa3a0a9ae56fc958510aa3fc3ac65e29cb111716199e3d0e66eefaa4
 F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c
@@ -1523,7 +1524,7 @@ F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
 F tool/mkpragmatab.tcl 32bb40741df11bddc8451de9ea4d130e7b4476d8064794b1cf402ac110840fba
 F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
 F tool/mksqlite3c-noext.tcl fef88397668ae83166735c41af99d79f56afaabb
-F tool/mksqlite3c.tcl 06b2e6a0f21cc0a5d70fbbd136b3e0a96470645e
+F tool/mksqlite3c.tcl 226da6d794d7d43a31e159a6fa89db867bf1f5eafe4b37d031222287ef8dbadc
 F tool/mksqlite3h.tcl 51bd5e7e840a920388a5966c9f2ccc618f434c57bd68c1bab4085b2553e1e237
 F tool/mksqlite3internalh.tcl eb994013e833359137eb53a55acdad0b5ae1049b
 F tool/mkvsix.tcl b9e0777a213c23156b6542842c238479e496ebf5
@@ -1582,7 +1583,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 11693849342a308ad929e2d9ead67faabacb523af76128c6973ed6cc8b62c11e
-R a34795f4d0fcef5a05bf2f69a4f53c3a
-U drh
-Z 099d10b7bf311f5813d7dd796aa1a1dd
+P 3944a32e1dd90ff903bcbaaa7cb497cebcfcb2ba2a326726ec2268505e524ae3
+R 7b6facdeed4814ee6f89b7d52660f8c0
+T *branch * ctime-refactor
+T *sym-ctime-refactor *
+T -sym-trunk *
+U dan
+Z 9b2fed7077fb54fd01f0379fb1045ffa
index 480e594a2ca8c28ce6ee347eaae551db11ff4096..6039069bcb84446acc941a6910b1683b7840f37f 100644 (file)
@@ -1 +1 @@
-3944a32e1dd90ff903bcbaaa7cb497cebcfcb2ba2a326726ec2268505e524ae3
\ No newline at end of file
+bc1951d699e6eeacbe15776a37cd0f5cf3f09eb85d3ae01cff43293cb286fcd7
\ No newline at end of file
index 20e94edba5e4ada40c195f416cc2e0258b36a3a3..b04736e808d2774aa005da68669a35a0bf78955e 100644 (file)
 
 #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
 
-#include "sqliteInt.h"
+
+/* These macros are provided to "stringify" the value of the define
+** for those options in which the value is meaningful. */
+#define CTIMEOPT_VAL_(opt) #opt
+#define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt)
 
 /*
 ** An array of names of all compile-time options.  This array should 
 */
 static const char * const azCompileOpt[] = {
 
-/* These macros are provided to "stringify" the value of the define
-** for those options in which the value is meaningful. */
-#define CTIMEOPT_VAL_(opt) #opt
-#define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt)
-
+/* 
+** BEGIN CODE GENERATED BY tool/mkctime.tcl 
+*/
 #if SQLITE_32BIT_ROWID
   "32BIT_ROWID",
 #endif
 #if SQLITE_4_BYTE_ALIGNED_MALLOC
   "4_BYTE_ALIGNED_MALLOC",
 #endif
+#if SQLITE_64BIT_STATS
+  "64BIT_STATS",
+#endif
+#if SQLITE_ALLOW_COVERING_INDEX_SCAN
+  "ALLOW_COVERING_INDEX_SCAN",
+#endif
+#if SQLITE_ALLOW_URI_AUTHORITY
+  "ALLOW_URI_AUTHORITY",
+#endif
+#ifdef SQLITE_BITMASK_TYPE
+  "BITMASK_TYPE=" CTIMEOPT_VAL(SQLITE_BITMASK_TYPE),
+#endif
+#if SQLITE_BUG_COMPATIBLE_20160819
+  "BUG_COMPATIBLE_20160819",
+#endif
 #if SQLITE_CASE_SENSITIVE_LIKE
   "CASE_SENSITIVE_LIKE",
 #endif
@@ -57,31 +74,100 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_COVERAGE_TEST
   "COVERAGE_TEST",
 #endif
-#ifdef SQLITE_DEBUG
+#if SQLITE_DEBUG
   "DEBUG",
 #endif
-#if SQLITE_DEFAULT_LOCKING_MODE
+#if SQLITE_DEFAULT_AUTOMATIC_INDEX
+  "DEFAULT_AUTOMATIC_INDEX",
+#endif
+#if SQLITE_DEFAULT_AUTOVACUUM
+  "DEFAULT_AUTOVACUUM",
+#endif
+#ifdef SQLITE_DEFAULT_CACHE_SIZE
+  "DEFAULT_CACHE_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_CACHE_SIZE),
+#endif
+#if SQLITE_DEFAULT_CKPTFULLFSYNC
+  "DEFAULT_CKPTFULLFSYNC",
+#endif
+#ifdef SQLITE_DEFAULT_FILE_FORMAT
+  "DEFAULT_FILE_FORMAT=" CTIMEOPT_VAL(SQLITE_DEFAULT_FILE_FORMAT),
+#endif
+#ifdef SQLITE_DEFAULT_FILE_PERMISSIONS
+  "DEFAULT_FILE_PERMISSIONS=" CTIMEOPT_VAL(SQLITE_DEFAULT_FILE_PERMISSIONS),
+#endif
+#if SQLITE_DEFAULT_FOREIGN_KEYS
+  "DEFAULT_FOREIGN_KEYS",
+#endif
+#ifdef SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT
+  "DEFAULT_JOURNAL_SIZE_LIMIT=" CTIMEOPT_VAL(SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT),
+#endif
+#ifdef SQLITE_DEFAULT_LOCKING_MODE
   "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE),
 #endif
-#if defined(SQLITE_DEFAULT_MMAP_SIZE) && !defined(SQLITE_DEFAULT_MMAP_SIZE_xc)
+#ifdef SQLITE_DEFAULT_LOOKASIDE
+  "DEFAULT_LOOKASIDE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOOKASIDE),
+#endif
+#if SQLITE_DEFAULT_MEMSTATUS
+  "DEFAULT_MEMSTATUS",
+#endif
+#ifdef SQLITE_DEFAULT_MMAP_SIZE
   "DEFAULT_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_MMAP_SIZE),
 #endif
-#if SQLITE_DEFAULT_SYNCHRONOUS
+#ifdef SQLITE_DEFAULT_PAGE_SIZE
+  "DEFAULT_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_PAGE_SIZE),
+#endif
+#ifdef SQLITE_DEFAULT_PCACHE_INITSZ
+  "DEFAULT_PCACHE_INITSZ=" CTIMEOPT_VAL(SQLITE_DEFAULT_PCACHE_INITSZ),
+#endif
+#ifdef SQLITE_DEFAULT_PROXYDIR_PERMISSIONS
+  "DEFAULT_PROXYDIR_PERMISSIONS=" CTIMEOPT_VAL(SQLITE_DEFAULT_PROXYDIR_PERMISSIONS),
+#endif
+#if SQLITE_DEFAULT_RECURSIVE_TRIGGERS
+  "DEFAULT_RECURSIVE_TRIGGERS",
+#endif
+#ifdef SQLITE_DEFAULT_ROWEST
+  "DEFAULT_ROWEST=" CTIMEOPT_VAL(SQLITE_DEFAULT_ROWEST),
+#endif
+#ifdef SQLITE_DEFAULT_SECTOR_SIZE
+  "DEFAULT_SECTOR_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_SECTOR_SIZE),
+#endif
+#ifdef SQLITE_DEFAULT_SYNCHRONOUS
   "DEFAULT_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_SYNCHRONOUS),
 #endif
-#if SQLITE_DEFAULT_WAL_SYNCHRONOUS
+#ifdef SQLITE_DEFAULT_WAL_AUTOCHECKPOINT
+  "DEFAULT_WAL_AUTOCHECKPOINT=" CTIMEOPT_VAL(SQLITE_DEFAULT_WAL_AUTOCHECKPOINT),
+#endif
+#ifdef SQLITE_DEFAULT_WAL_SYNCHRONOUS
   "DEFAULT_WAL_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_WAL_SYNCHRONOUS),
 #endif
+#ifdef SQLITE_DEFAULT_WORKER_THREADS
+  "DEFAULT_WORKER_THREADS=" CTIMEOPT_VAL(SQLITE_DEFAULT_WORKER_THREADS),
+#endif
 #if SQLITE_DIRECT_OVERFLOW_READ
   "DIRECT_OVERFLOW_READ",
 #endif
 #if SQLITE_DISABLE_DIRSYNC
   "DISABLE_DIRSYNC",
 #endif
+#if SQLITE_DISABLE_FTS3_UNICODE
+  "DISABLE_FTS3_UNICODE",
+#endif
+#if SQLITE_DISABLE_FTS4_DEFERRED
+  "DISABLE_FTS4_DEFERRED",
+#endif
+#if SQLITE_DISABLE_INTRINSIC
+  "DISABLE_INTRINSIC",
+#endif
 #if SQLITE_DISABLE_LFS
   "DISABLE_LFS",
 #endif
-#if SQLITE_ENABLE_8_3_NAMES
+#if SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
+  "DISABLE_PAGECACHE_OVERFLOW_STATS",
+#endif
+#if SQLITE_DISABLE_SKIPAHEAD_DISTINCT
+  "DISABLE_SKIPAHEAD_DISTINCT",
+#endif
+#ifdef SQLITE_ENABLE_8_3_NAMES
   "ENABLE_8_3_NAMES=" CTIMEOPT_VAL(SQLITE_ENABLE_8_3_NAMES),
 #endif
 #if SQLITE_ENABLE_API_ARMOR
@@ -96,6 +182,15 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_ENABLE_COLUMN_METADATA
   "ENABLE_COLUMN_METADATA",
 #endif
+#if SQLITE_ENABLE_COLUMN_USED_MASK
+  "ENABLE_COLUMN_USED_MASK",
+#endif
+#if SQLITE_ENABLE_COSTMULT
+  "ENABLE_COSTMULT",
+#endif
+#if SQLITE_ENABLE_CURSOR_HINTS
+  "ENABLE_CURSOR_HINTS",
+#endif
 #if SQLITE_ENABLE_DBSTAT_VTAB
   "ENABLE_DBSTAT_VTAB",
 #endif
@@ -114,12 +209,18 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_ENABLE_FTS3_PARENTHESIS
   "ENABLE_FTS3_PARENTHESIS",
 #endif
+#if SQLITE_ENABLE_FTS3_TOKENIZER
+  "ENABLE_FTS3_TOKENIZER",
+#endif
 #if SQLITE_ENABLE_FTS4
   "ENABLE_FTS4",
 #endif
 #if SQLITE_ENABLE_FTS5
   "ENABLE_FTS5",
 #endif
+#if SQLITE_ENABLE_HIDDEN_COLUMNS
+  "ENABLE_HIDDEN_COLUMNS",
+#endif
 #if SQLITE_ENABLE_ICU
   "ENABLE_ICU",
 #endif
@@ -132,7 +233,7 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_ENABLE_LOAD_EXTENSION
   "ENABLE_LOAD_EXTENSION",
 #endif
-#if SQLITE_ENABLE_LOCKING_STYLE
+#ifdef SQLITE_ENABLE_LOCKING_STYLE
   "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
 #endif
 #if SQLITE_ENABLE_MEMORY_MANAGEMENT
@@ -144,26 +245,86 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_ENABLE_MEMSYS5
   "ENABLE_MEMSYS5",
 #endif
+#if SQLITE_ENABLE_MULTIPLEX
+  "ENABLE_MULTIPLEX",
+#endif
+#if SQLITE_ENABLE_NULL_TRIM
+  "ENABLE_NULL_TRIM",
+#endif
 #if SQLITE_ENABLE_OVERSIZE_CELL_CHECK
   "ENABLE_OVERSIZE_CELL_CHECK",
 #endif
+#if SQLITE_ENABLE_PREUPDATE_HOOK
+  "ENABLE_PREUPDATE_HOOK",
+#endif
+#if SQLITE_ENABLE_RBU
+  "ENABLE_RBU",
+#endif
 #if SQLITE_ENABLE_RTREE
   "ENABLE_RTREE",
 #endif
+#if SQLITE_ENABLE_SELECTTRACE
+  "ENABLE_SELECTTRACE",
+#endif
+#if SQLITE_ENABLE_SESSION
+  "ENABLE_SESSION",
+#endif
+#if SQLITE_ENABLE_SNAPSHOT
+  "ENABLE_SNAPSHOT",
+#endif
+#if SQLITE_ENABLE_SQLLOG
+  "ENABLE_SQLLOG",
+#endif
 #if defined(SQLITE_ENABLE_STAT4)
   "ENABLE_STAT4",
 #elif defined(SQLITE_ENABLE_STAT3)
   "ENABLE_STAT3",
 #endif
+#if SQLITE_ENABLE_STMT_SCANSTATUS
+  "ENABLE_STMT_SCANSTATUS",
+#endif
+#if SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
+  "ENABLE_UNKNOWN_SQL_FUNCTION",
+#endif
 #if SQLITE_ENABLE_UNLOCK_NOTIFY
   "ENABLE_UNLOCK_NOTIFY",
 #endif
 #if SQLITE_ENABLE_UPDATE_DELETE_LIMIT
   "ENABLE_UPDATE_DELETE_LIMIT",
 #endif
-#if defined(SQLITE_ENABLE_URI_00_ERROR)
+#if SQLITE_ENABLE_URI_00_ERROR
   "ENABLE_URI_00_ERROR",
 #endif
+#if SQLITE_ENABLE_VFSTRACE
+  "ENABLE_VFSTRACE",
+#endif
+#if SQLITE_ENABLE_WHERETRACE
+  "ENABLE_WHERETRACE",
+#endif
+#if SQLITE_ENABLE_ZIPVFS
+  "ENABLE_ZIPVFS",
+#endif
+#if SQLITE_EXPLAIN_ESTIMATED_ROWS
+  "EXPLAIN_ESTIMATED_ROWS",
+#endif
+#if SQLITE_EXTRA_IFNULLROW
+  "EXTRA_IFNULLROW",
+#endif
+#ifdef SQLITE_EXTRA_INIT
+  "EXTRA_INIT=" CTIMEOPT_VAL(SQLITE_EXTRA_INIT),
+#endif
+#ifdef SQLITE_EXTRA_SHUTDOWN
+  "EXTRA_SHUTDOWN=" CTIMEOPT_VAL(SQLITE_EXTRA_SHUTDOWN),
+#endif
+#ifdef SQLITE_FTS3_MAX_EXPR_DEPTH
+  "FTS3_MAX_EXPR_DEPTH=" CTIMEOPT_VAL(SQLITE_FTS3_MAX_EXPR_DEPTH),
+#endif
+#if SQLITE_FTS5_ENABLE_TEST_MI
+  "FTS5_ENABLE_TEST_MI",
+#endif
+#if SQLITE_FTS5_NO_WITHOUT_ROWID
+  "FTS5_NO_WITHOUT_ROWID",
+#endif
 #if SQLITE_HAS_CODEC
   "HAS_CODEC",
 #endif
@@ -179,27 +340,114 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_IGNORE_FLOCK_LOCK_ERRORS
   "IGNORE_FLOCK_LOCK_ERRORS",
 #endif
-#ifdef SQLITE_INT64_TYPE
+#if SQLITE_INLINE_MEMCPY
+  "INLINE_MEMCPY",
+#endif
+#if SQLITE_INT64_TYPE
   "INT64_TYPE",
 #endif
-#ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS
+#ifdef SQLITE_INTEGRITY_CHECK_ERROR_MAX
+  "INTEGRITY_CHECK_ERROR_MAX=" CTIMEOPT_VAL(SQLITE_INTEGRITY_CHECK_ERROR_MAX),
+#endif
+#if SQLITE_LIKE_DOESNT_MATCH_BLOBS
   "LIKE_DOESNT_MATCH_BLOBS",
 #endif
 #if SQLITE_LOCK_TRACE
   "LOCK_TRACE",
 #endif
-#if defined(SQLITE_MAX_MMAP_SIZE) && !defined(SQLITE_MAX_MMAP_SIZE_xc)
+#if SQLITE_LOG_CACHE_SPILL
+  "LOG_CACHE_SPILL",
+#endif
+#ifdef SQLITE_MALLOC_SOFT_LIMIT
+  "MALLOC_SOFT_LIMIT=" CTIMEOPT_VAL(SQLITE_MALLOC_SOFT_LIMIT),
+#endif
+#ifdef SQLITE_MAX_ATTACHED
+  "MAX_ATTACHED=" CTIMEOPT_VAL(SQLITE_MAX_ATTACHED),
+#endif
+#ifdef SQLITE_MAX_COLUMN
+  "MAX_COLUMN=" CTIMEOPT_VAL(SQLITE_MAX_COLUMN),
+#endif
+#ifdef SQLITE_MAX_COMPOUND_SELECT
+  "MAX_COMPOUND_SELECT=" CTIMEOPT_VAL(SQLITE_MAX_COMPOUND_SELECT),
+#endif
+#ifdef SQLITE_MAX_DEFAULT_PAGE_SIZE
+  "MAX_DEFAULT_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_DEFAULT_PAGE_SIZE),
+#endif
+#ifdef SQLITE_MAX_EXPR_DEPTH
+  "MAX_EXPR_DEPTH=" CTIMEOPT_VAL(SQLITE_MAX_EXPR_DEPTH),
+#endif
+#ifdef SQLITE_MAX_FUNCTION_ARG
+  "MAX_FUNCTION_ARG=" CTIMEOPT_VAL(SQLITE_MAX_FUNCTION_ARG),
+#endif
+#ifdef SQLITE_MAX_LENGTH
+  "MAX_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_LENGTH),
+#endif
+#ifdef SQLITE_MAX_LIKE_PATTERN_LENGTH
+  "MAX_LIKE_PATTERN_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_LIKE_PATTERN_LENGTH),
+#endif
+#ifdef SQLITE_MAX_MEMORY
+  "MAX_MEMORY=" CTIMEOPT_VAL(SQLITE_MAX_MEMORY),
+#endif
+#ifdef SQLITE_MAX_MMAP_SIZE
   "MAX_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE),
 #endif
+#ifdef SQLITE_MAX_MMAP_SIZE_
+  "MAX_MMAP_SIZE_=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE_),
+#endif
+#ifdef SQLITE_MAX_PAGE_COUNT
+  "MAX_PAGE_COUNT=" CTIMEOPT_VAL(SQLITE_MAX_PAGE_COUNT),
+#endif
+#ifdef SQLITE_MAX_PAGE_SIZE
+  "MAX_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_PAGE_SIZE),
+#endif
 #ifdef SQLITE_MAX_SCHEMA_RETRY
   "MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY),
 #endif
+#ifdef SQLITE_MAX_SQL_LENGTH
+  "MAX_SQL_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_SQL_LENGTH),
+#endif
+#ifdef SQLITE_MAX_TRIGGER_DEPTH
+  "MAX_TRIGGER_DEPTH=" CTIMEOPT_VAL(SQLITE_MAX_TRIGGER_DEPTH),
+#endif
+#ifdef SQLITE_MAX_VARIABLE_NUMBER
+  "MAX_VARIABLE_NUMBER=" CTIMEOPT_VAL(SQLITE_MAX_VARIABLE_NUMBER),
+#endif
+#ifdef SQLITE_MAX_VDBE_OP
+  "MAX_VDBE_OP=" CTIMEOPT_VAL(SQLITE_MAX_VDBE_OP),
+#endif
+#ifdef SQLITE_MAX_WORKER_THREADS
+  "MAX_WORKER_THREADS=" CTIMEOPT_VAL(SQLITE_MAX_WORKER_THREADS),
+#endif
 #if SQLITE_MEMDEBUG
   "MEMDEBUG",
 #endif
 #if SQLITE_MIXED_ENDIAN_64BIT_FLOAT
   "MIXED_ENDIAN_64BIT_FLOAT",
 #endif
+#if SQLITE_MMAP_READWRITE
+  "MMAP_READWRITE",
+#endif
+#if SQLITE_MUTEX_NOOP
+  "MUTEX_NOOP",
+#endif
+#if SQLITE_MUTEX_NREF
+  "MUTEX_NREF",
+#endif
+#if SQLITE_MUTEX_OMIT
+  "MUTEX_OMIT",
+#endif
+#if SQLITE_MUTEX_PTHREADS
+  "MUTEX_PTHREADS",
+#endif
+#if SQLITE_MUTEX_W32
+  "MUTEX_W32",
+#endif
+#if SQLITE_NEED_ERR_NAME
+  "NEED_ERR_NAME",
+#endif
+#if SQLITE_NOINLINE
+  "NOINLINE",
+#endif
 #if SQLITE_NO_SYNC
   "NO_SYNC",
 #endif
@@ -251,6 +499,9 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_OMIT_COMPOUND_SELECT
   "OMIT_COMPOUND_SELECT",
 #endif
+#if SQLITE_OMIT_CONFLICT_CLAUSE
+  "OMIT_CONFLICT_CLAUSE",
+#endif
 #if SQLITE_OMIT_CTE
   "OMIT_CTE",
 #endif
@@ -281,6 +532,9 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_OMIT_GET_TABLE
   "OMIT_GET_TABLE",
 #endif
+#if SQLITE_OMIT_HEX_INTEGER
+  "OMIT_HEX_INTEGER",
+#endif
 #if SQLITE_OMIT_INCRBLOB
   "OMIT_INCRBLOB",
 #endif
@@ -308,6 +562,12 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_OMIT_PAGER_PRAGMAS
   "OMIT_PAGER_PRAGMAS",
 #endif
+#if SQLITE_OMIT_PARSER_TRACE
+  "OMIT_PARSER_TRACE",
+#endif
+#if SQLITE_OMIT_POPEN
+  "OMIT_POPEN",
+#endif
 #if SQLITE_OMIT_PRAGMA
   "OMIT_PRAGMA",
 #endif
@@ -329,6 +589,9 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_OMIT_SHARED_CACHE
   "OMIT_SHARED_CACHE",
 #endif
+#if SQLITE_OMIT_SHUTDOWN_DIRECTORIES
+  "OMIT_SHUTDOWN_DIRECTORIES",
+#endif
 #if SQLITE_OMIT_SUBQUERY
   "OMIT_SUBQUERY",
 #endif
@@ -338,6 +601,9 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_OMIT_TEMPDB
   "OMIT_TEMPDB",
 #endif
+#if SQLITE_OMIT_TEST_CONTROL
+  "OMIT_TEST_CONTROL",
+#endif
 #if SQLITE_OMIT_TRACE
   "OMIT_TRACE",
 #endif
@@ -368,12 +634,24 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_OMIT_XFER_OPT
   "OMIT_XFER_OPT",
 #endif
+#if SQLITE_PCACHE_SEPARATE_HEADER
+  "PCACHE_SEPARATE_HEADER",
+#endif
 #if SQLITE_PERFORMANCE_TRACE
   "PERFORMANCE_TRACE",
 #endif
+#if SQLITE_POWERSAFE_OVERWRITE
+  "POWERSAFE_OVERWRITE",
+#endif
+#if SQLITE_PREFER_PROXY_LOCKING
+  "PREFER_PROXY_LOCKING",
+#endif
 #if SQLITE_PROXY_DEBUG
   "PROXY_DEBUG",
 #endif
+#if SQLITE_REVERSE_UNORDERED_SELECTS
+  "REVERSE_UNORDERED_SELECTS",
+#endif
 #if SQLITE_RTREE_INT_ONLY
   "RTREE_INT_ONLY",
 #endif
@@ -383,81 +661,72 @@ static const char * const azCompileOpt[] = {
 #if SQLITE_SMALL_STACK
   "SMALL_STACK",
 #endif
+#ifdef SQLITE_SORTER_PMASZ
+  "SORTER_PMASZ=" CTIMEOPT_VAL(SQLITE_SORTER_PMASZ),
+#endif
 #if SQLITE_SOUNDEX
   "SOUNDEX",
 #endif
+#ifdef SQLITE_STAT4_SAMPLES
+  "STAT4_SAMPLES=" CTIMEOPT_VAL(SQLITE_STAT4_SAMPLES),
+#endif
+#ifdef SQLITE_STMTJRNL_SPILL
+  "STMTJRNL_SPILL=" CTIMEOPT_VAL(SQLITE_STMTJRNL_SPILL),
+#endif
+#if SQLITE_SUBSTR_COMPATIBILITY
+  "SUBSTR_COMPATIBILITY",
+#endif
 #if SQLITE_SYSTEM_MALLOC
   "SYSTEM_MALLOC",
 #endif
 #if SQLITE_TCL
   "TCL",
 #endif
-#if defined(SQLITE_TEMP_STORE) && !defined(SQLITE_TEMP_STORE_xc)
+#ifdef SQLITE_TEMP_STORE
   "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE),
 #endif
 #if SQLITE_TEST
   "TEST",
 #endif
-#if defined(SQLITE_THREADSAFE)
+#ifdef SQLITE_THREADSAFE
   "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE),
 #endif
+#if SQLITE_UNLINK_AFTER_CLOSE
+  "UNLINK_AFTER_CLOSE",
+#endif
 #if SQLITE_UNTESTABLE
-  "UNTESTABLE"
+  "UNTESTABLE",
+#endif
+#if SQLITE_USER_AUTHENTICATION
+  "USER_AUTHENTICATION",
 #endif
 #if SQLITE_USE_ALLOCA
   "USE_ALLOCA",
 #endif
-#if SQLITE_USER_AUTHENTICATION
-  "USER_AUTHENTICATION",
+#if SQLITE_USE_FCNTL_TRACE
+  "USE_FCNTL_TRACE",
+#endif
+#if SQLITE_USE_URI
+  "USE_URI",
+#endif
+#if SQLITE_VDBE_COVERAGE
+  "VDBE_COVERAGE",
 #endif
 #if SQLITE_WIN32_MALLOC
   "WIN32_MALLOC",
 #endif
 #if SQLITE_ZERO_MALLOC
-  "ZERO_MALLOC"
+  "ZERO_MALLOC",
 #endif
-};
-
-/*
-** Given the name of a compile-time option, return true if that option
-** was used and false if not.
-**
-** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix
-** is not required for a match.
+/* 
+** END CODE GENERATED BY tool/mkctime.tcl 
 */
-int sqlite3_compileoption_used(const char *zOptName){
-  int i, n;
-
-#if SQLITE_ENABLE_API_ARMOR
-  if( zOptName==0 ){
-    (void)SQLITE_MISUSE_BKPT;
-    return 0;
-  }
-#endif
-  if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7;
-  n = sqlite3Strlen30(zOptName);
-
-  /* Since ArraySize(azCompileOpt) is normally in single digits, a
-  ** linear search is adequate.  No need for a binary search. */
-  for(i=0; i<ArraySize(azCompileOpt); i++){
-    if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0
-     && sqlite3IsIdChar((unsigned char)azCompileOpt[i][n])==0
-    ){
-      return 1;
-    }
-  }
-  return 0;
-}
+};
 
-/*
-** Return the N-th compile-time option string.  If N is out of range,
-** return a NULL pointer.
-*/
-const char *sqlite3_compileoption_get(int N){
-  if( N>=0 && N<ArraySize(azCompileOpt) ){
-    return azCompileOpt[N];
-  }
-  return 0;
+const char **sqlite3CompileOptions(int *pnOpt){
+  *pnOpt = sizeof(azCompileOpt) / sizeof(azCompileOpt[0]);
+  return (const char**)azCompileOpt;
 }
 
 #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */
+
index 44b7d5df895045ede93ffe780f1e9df1cf7fdb55..6a48f93d173336044a9d0b9fbf7b75d9c619e973 100644 (file)
@@ -4102,3 +4102,55 @@ void sqlite3_snapshot_free(sqlite3_snapshot *pSnapshot){
   sqlite3_free(pSnapshot);
 }
 #endif /* SQLITE_ENABLE_SNAPSHOT */
+
+#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
+/*
+** Given the name of a compile-time option, return true if that option
+** was used and false if not.
+**
+** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix
+** is not required for a match.
+*/
+int sqlite3_compileoption_used(const char *zOptName){
+  int i, n;
+  int nOpt;
+  const char **azCompileOpt;
+#if SQLITE_ENABLE_API_ARMOR
+  if( zOptName==0 ){
+    (void)SQLITE_MISUSE_BKPT;
+    return 0;
+  }
+#endif
+
+  azCompileOpt = sqlite3CompileOptions(&nOpt);
+
+  if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7;
+  n = sqlite3Strlen30(zOptName);
+
+  /* Since nOpt is normally in single digits, a linear search is 
+  ** adequate. No need for a binary search. */
+  for(i=0; i<nOpt; i++){
+    if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0
+     && sqlite3IsIdChar((unsigned char)azCompileOpt[i][n])==0
+    ){
+      return 1;
+    }
+  }
+  return 0;
+}
+
+/*
+** Return the N-th compile-time option string.  If N is out of range,
+** return a NULL pointer.
+*/
+const char *sqlite3_compileoption_get(int N){
+  int nOpt;
+  const char **azCompileOpt;
+  azCompileOpt = sqlite3CompileOptions(&nOpt);
+  if( N>=0 && N<nOpt ){
+    return azCompileOpt[N];
+  }
+  return 0;
+}
+#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */
index 9252c352b88420d7813783e8fe1adb21b177858d..ed1b98c7e47d0fe20ee7acc8b1f9afd14aea13f3 100644 (file)
@@ -4370,4 +4370,6 @@ Expr *sqlite3VectorFieldSubexpr(Expr*, int);
 Expr *sqlite3ExprForVectorField(Parse*,Expr*,int);
 void sqlite3VectorErrorMsg(Parse*, Expr*);
 
+const char **sqlite3CompileOptions(int *pnOpt);
+
 #endif /* SQLITEINT_H */
index 8ed556358ff8a2f5b7d53e7fe8cc33b048daf762..7624b625e3c34d0ef91e14521e281212eade039a 100644 (file)
@@ -61,49 +61,30 @@ do_test ctime-1.2.2 {
   list [ lindex $ans 0 ] [ expr { [lsort [lindex $ans 1]]==[lindex $ans 1] } ]
 } {0 1}
 
-# SQLITE_THREADSAFE should pretty much always be defined
-# one way or the other, and it must have a value of 0 or 1.
-do_test ctime-1.4.1 {
-  catchsql {
-    SELECT sqlite_compileoption_used('SQLITE_THREADSAFE');
-  }
-} {0 1}
-do_test ctime-1.4.2 {
-  catchsql {
-    SELECT sqlite_compileoption_used('THREADSAFE');
-  }
-} {0 1}
-do_test ctime-1.4.3 {
-  catchsql {
-    SELECT sqlite_compileoption_used("THREADSAFE");
-  }
-} {0 1}
-
-do_test ctime-1.5 {
-  set ans1 [ catchsql {
-    SELECT sqlite_compileoption_used('THREADSAFE=0');
-  } ]
-  set ans2 [ catchsql {
-    SELECT sqlite_compileoption_used('THREADSAFE=1');
-  } ]
-  set ans3 [ catchsql {
-    SELECT sqlite_compileoption_used('THREADSAFE=2');
-  } ]
-  lsort [ list $ans1 $ans2 $ans3 ]
-} {{0 0} {0 0} {0 1}}
-
-do_test ctime-1.6 {
-  execsql {
-    SELECT sqlite_compileoption_used('THREADSAFE=');
+# Check the THREADSAFE option for SQLITE_THREADSAFE=2 builds (there are
+# a couple of these configurations in releasetest.tcl).
+#
+ifcapable threadsafe2 {
+  foreach {tn opt res} {
+    1 SQLITE_THREADSAFE     1
+    2 THREADSAFE            1
+    3 THREADSAFE=0          0
+    4 THREADSAFE=1          0
+    5 THREADSAFE=2          1
+    6 THREADSAFE=           0
+  } {
+    do_execsql_test ctime-1.3.$tn {
+      SELECT sqlite_compileoption_used($opt)
+    } $res
   }
-} {0}
+}
 
-do_test ctime-1.7.1 {
+do_test ctime-1.4.1 {
   execsql {
     SELECT sqlite_compileoption_used('SQLITE_OMIT_COMPILEOPTION_DIAGS');
   }
 } {0}
-do_test ctime-1.7.2 {
+do_test ctime-1.4.2 {
   execsql {
     SELECT sqlite_compileoption_used('OMIT_COMPILEOPTION_DIAGS');
   }
diff --git a/tool/mkctimec.tcl b/tool/mkctimec.tcl
new file mode 100644 (file)
index 0000000..c1f5137
--- /dev/null
@@ -0,0 +1,303 @@
+#!/usr/bin/tclsh
+#
+# To build the
+#
+#   const char **azCompileOpt[]
+#
+# declaration used in src/ctime.c, run this script.
+#
+
+# All Boolean compile time options.
+#
+set boolean_options {
+  SQLITE_32BIT_ROWID
+  SQLITE_4_BYTE_ALIGNED_MALLOC
+  SQLITE_64BIT_STATS
+  SQLITE_ALLOW_COVERING_INDEX_SCAN
+  SQLITE_ALLOW_URI_AUTHORITY
+  SQLITE_BUG_COMPATIBLE_20160819
+  SQLITE_CASE_SENSITIVE_LIKE
+  SQLITE_CHECK_PAGES
+  SQLITE_COVERAGE_TEST
+  SQLITE_DEBUG
+  SQLITE_DEFAULT_AUTOMATIC_INDEX
+  SQLITE_DEFAULT_AUTOVACUUM
+  SQLITE_DEFAULT_CKPTFULLFSYNC
+  SQLITE_DEFAULT_FOREIGN_KEYS
+  SQLITE_DEFAULT_LOCKING_MODE
+  SQLITE_DEFAULT_MEMSTATUS
+  SQLITE_DEFAULT_RECURSIVE_TRIGGERS
+  SQLITE_DEFAULT_SYNCHRONOUS
+  SQLITE_DEFAULT_WAL_SYNCHRONOUS
+  SQLITE_DIRECT_OVERFLOW_READ
+  SQLITE_DISABLE_DIRSYNC
+  SQLITE_DISABLE_FTS3_UNICODE
+  SQLITE_DISABLE_FTS4_DEFERRED
+  SQLITE_DISABLE_INTRINSIC
+  SQLITE_DISABLE_LFS
+  SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
+  SQLITE_DISABLE_SKIPAHEAD_DISTINCT
+  SQLITE_ENABLE_8_3_NAMES
+  SQLITE_ENABLE_API_ARMOR
+  SQLITE_ENABLE_ATOMIC_WRITE
+  SQLITE_ENABLE_CEROD
+  SQLITE_ENABLE_COLUMN_METADATA
+  SQLITE_ENABLE_COLUMN_USED_MASK
+  SQLITE_ENABLE_COSTMULT
+  SQLITE_ENABLE_CURSOR_HINTS
+  SQLITE_ENABLE_DBSTAT_VTAB
+  SQLITE_ENABLE_EXPENSIVE_ASSERT
+  SQLITE_ENABLE_FTS1
+  SQLITE_ENABLE_FTS2
+  SQLITE_ENABLE_FTS3
+  SQLITE_ENABLE_FTS3_PARENTHESIS
+  SQLITE_ENABLE_FTS3_TOKENIZER
+  SQLITE_ENABLE_FTS4
+  SQLITE_ENABLE_FTS5
+  SQLITE_ENABLE_HIDDEN_COLUMNS
+  SQLITE_ENABLE_ICU
+  SQLITE_ENABLE_IOTRACE
+  SQLITE_ENABLE_JSON1
+  SQLITE_ENABLE_LOAD_EXTENSION
+  SQLITE_ENABLE_LOCKING_STYLE
+  SQLITE_ENABLE_MEMORY_MANAGEMENT
+  SQLITE_ENABLE_MEMSYS3
+  SQLITE_ENABLE_MEMSYS5
+  SQLITE_ENABLE_MULTIPLEX
+  SQLITE_ENABLE_NULL_TRIM
+  SQLITE_ENABLE_OVERSIZE_CELL_CHECK
+  SQLITE_ENABLE_PREUPDATE_HOOK
+  SQLITE_ENABLE_RBU
+  SQLITE_ENABLE_RTREE
+  SQLITE_ENABLE_SELECTTRACE
+  SQLITE_ENABLE_SESSION
+  SQLITE_ENABLE_SNAPSHOT
+  SQLITE_ENABLE_SQLLOG
+  SQLITE_ENABLE_STMT_SCANSTATUS
+  SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
+  SQLITE_ENABLE_UNLOCK_NOTIFY
+  SQLITE_ENABLE_UPDATE_DELETE_LIMIT
+  SQLITE_ENABLE_URI_00_ERROR
+  SQLITE_ENABLE_VFSTRACE
+  SQLITE_ENABLE_WHERETRACE
+  SQLITE_ENABLE_ZIPVFS
+  SQLITE_EXPLAIN_ESTIMATED_ROWS
+  SQLITE_EXTRA_IFNULLROW
+  SQLITE_FTS5_ENABLE_TEST_MI
+  SQLITE_FTS5_NO_WITHOUT_ROWID
+  SQLITE_HAS_CODEC
+  SQLITE_HOMEGROWN_RECURSIVE_MUTEX
+  SQLITE_IGNORE_AFP_LOCK_ERRORS
+  SQLITE_IGNORE_FLOCK_LOCK_ERRORS
+  SQLITE_INLINE_MEMCPY
+  SQLITE_INT64_TYPE
+  SQLITE_LIKE_DOESNT_MATCH_BLOBS
+  SQLITE_LOCK_TRACE
+  SQLITE_LOG_CACHE_SPILL
+  SQLITE_MEMDEBUG
+  SQLITE_MIXED_ENDIAN_64BIT_FLOAT
+  SQLITE_MMAP_READWRITE
+  SQLITE_MUTEX_NOOP
+  SQLITE_MUTEX_NREF
+  SQLITE_MUTEX_OMIT
+  SQLITE_MUTEX_PTHREADS
+  SQLITE_MUTEX_W32
+  SQLITE_NEED_ERR_NAME
+  SQLITE_NOINLINE
+  SQLITE_NO_SYNC
+  SQLITE_OMIT_ALTERTABLE
+  SQLITE_OMIT_ANALYZE
+  SQLITE_OMIT_ATTACH
+  SQLITE_OMIT_AUTHORIZATION
+  SQLITE_OMIT_AUTOINCREMENT
+  SQLITE_OMIT_AUTOINIT
+  SQLITE_OMIT_AUTOMATIC_INDEX
+  SQLITE_OMIT_AUTORESET
+  SQLITE_OMIT_AUTOVACUUM
+  SQLITE_OMIT_BETWEEN_OPTIMIZATION
+  SQLITE_OMIT_BLOB_LITERAL
+  SQLITE_OMIT_BTREECOUNT
+  SQLITE_OMIT_CAST
+  SQLITE_OMIT_CHECK
+  SQLITE_OMIT_COMPLETE
+  SQLITE_OMIT_COMPOUND_SELECT
+  SQLITE_OMIT_CONFLICT_CLAUSE
+  SQLITE_OMIT_CTE
+  SQLITE_OMIT_DATETIME_FUNCS
+  SQLITE_OMIT_DECLTYPE
+  SQLITE_OMIT_DEPRECATED
+  SQLITE_OMIT_DISKIO
+  SQLITE_OMIT_EXPLAIN
+  SQLITE_OMIT_FLAG_PRAGMAS
+  SQLITE_OMIT_FLOATING_POINT
+  SQLITE_OMIT_FOREIGN_KEY
+  SQLITE_OMIT_GET_TABLE
+  SQLITE_OMIT_HEX_INTEGER
+  SQLITE_OMIT_INCRBLOB
+  SQLITE_OMIT_INTEGRITY_CHECK
+  SQLITE_OMIT_LIKE_OPTIMIZATION
+  SQLITE_OMIT_LOAD_EXTENSION
+  SQLITE_OMIT_LOCALTIME
+  SQLITE_OMIT_LOOKASIDE
+  SQLITE_OMIT_MEMORYDB
+  SQLITE_OMIT_OR_OPTIMIZATION
+  SQLITE_OMIT_PAGER_PRAGMAS
+  SQLITE_OMIT_PARSER_TRACE
+  SQLITE_OMIT_POPEN
+  SQLITE_OMIT_PRAGMA
+  SQLITE_OMIT_PROGRESS_CALLBACK
+  SQLITE_OMIT_QUICKBALANCE
+  SQLITE_OMIT_REINDEX
+  SQLITE_OMIT_SCHEMA_PRAGMAS
+  SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
+  SQLITE_OMIT_SHARED_CACHE
+  SQLITE_OMIT_SHUTDOWN_DIRECTORIES
+  SQLITE_OMIT_SUBQUERY
+  SQLITE_OMIT_TCL_VARIABLE
+  SQLITE_OMIT_TEMPDB
+  SQLITE_OMIT_TEST_CONTROL
+  SQLITE_OMIT_TRACE
+  SQLITE_OMIT_TRIGGER
+  SQLITE_OMIT_TRUNCATE_OPTIMIZATION
+  SQLITE_OMIT_UTF16
+  SQLITE_OMIT_VACUUM
+  SQLITE_OMIT_VIEW
+  SQLITE_OMIT_VIRTUALTABLE
+  SQLITE_OMIT_WAL
+  SQLITE_OMIT_WSD
+  SQLITE_OMIT_XFER_OPT
+  SQLITE_PCACHE_SEPARATE_HEADER
+  SQLITE_PERFORMANCE_TRACE
+  SQLITE_POWERSAFE_OVERWRITE
+  SQLITE_PREFER_PROXY_LOCKING
+  SQLITE_PROXY_DEBUG
+  SQLITE_REVERSE_UNORDERED_SELECTS
+  SQLITE_RTREE_INT_ONLY
+  SQLITE_SECURE_DELETE
+  SQLITE_SMALL_STACK
+  SQLITE_SOUNDEX
+  SQLITE_SUBSTR_COMPATIBILITY
+  SQLITE_SYSTEM_MALLOC
+  SQLITE_TCL
+  SQLITE_TEST
+  SQLITE_UNLINK_AFTER_CLOSE
+  SQLITE_UNTESTABLE
+  SQLITE_USE_ALLOCA
+  SQLITE_USE_FCNTL_TRACE
+  SQLITE_USER_AUTHENTICATION
+  SQLITE_USE_URI
+  SQLITE_VDBE_COVERAGE
+  SQLITE_WIN32_MALLOC
+  SQLITE_ZERO_MALLOC
+}
+
+# All compile time options for which the assigned value is other than boolean.
+#
+set value_options {
+  SQLITE_BITMASK_TYPE
+  SQLITE_DEFAULT_CACHE_SIZE
+  SQLITE_DEFAULT_FILE_FORMAT
+  SQLITE_DEFAULT_FILE_PERMISSIONS
+  SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT
+  SQLITE_DEFAULT_LOCKING_MODE
+  SQLITE_DEFAULT_LOOKASIDE
+  SQLITE_DEFAULT_MMAP_SIZE
+  SQLITE_DEFAULT_PAGE_SIZE
+  SQLITE_DEFAULT_PCACHE_INITSZ
+  SQLITE_DEFAULT_PROXYDIR_PERMISSIONS
+  SQLITE_DEFAULT_ROWEST
+  SQLITE_DEFAULT_SECTOR_SIZE
+  SQLITE_DEFAULT_SYNCHRONOUS
+  SQLITE_DEFAULT_WAL_AUTOCHECKPOINT
+  SQLITE_DEFAULT_WAL_SYNCHRONOUS
+  SQLITE_DEFAULT_WORKER_THREADS
+  SQLITE_ENABLE_8_3_NAMES
+  SQLITE_ENABLE_LOCKING_STYLE
+  SQLITE_EXTRA_INIT
+  SQLITE_EXTRA_SHUTDOWN
+  SQLITE_FTS3_MAX_EXPR_DEPTH
+  SQLITE_INTEGRITY_CHECK_ERROR_MAX
+  SQLITE_MALLOC_SOFT_LIMIT
+  SQLITE_MAX_ATTACHED
+  SQLITE_MAX_COLUMN
+  SQLITE_MAX_COMPOUND_SELECT
+  SQLITE_MAX_DEFAULT_PAGE_SIZE
+  SQLITE_MAX_EXPR_DEPTH
+  SQLITE_MAX_FUNCTION_ARG
+  SQLITE_MAX_LENGTH
+  SQLITE_MAX_LIKE_PATTERN_LENGTH
+  SQLITE_MAX_MEMORY
+  SQLITE_MAX_MMAP_SIZE
+  SQLITE_MAX_MMAP_SIZE_
+  SQLITE_MAX_PAGE_COUNT
+  SQLITE_MAX_PAGE_SIZE
+  SQLITE_MAX_SCHEMA_RETRY
+  SQLITE_MAX_SQL_LENGTH
+  SQLITE_MAX_TRIGGER_DEPTH
+  SQLITE_MAX_VARIABLE_NUMBER
+  SQLITE_MAX_VDBE_OP
+  SQLITE_MAX_WORKER_THREADS
+  SQLITE_SORTER_PMASZ
+  SQLITE_STAT4_SAMPLES
+  SQLITE_STMTJRNL_SPILL
+  SQLITE_TEMP_STORE
+  SQLITE_THREADSAFE
+}
+
+# Options that require custom code.
+#
+set options(ENABLE_STAT3) {
+#if defined(SQLITE_ENABLE_STAT4)
+  "ENABLE_STAT4",
+#elif defined(SQLITE_ENABLE_STAT3)
+  "ENABLE_STAT3",
+#endif
+}
+set options(COMPILER) {
+#if defined(__clang__) && defined(__clang_major__)
+  "COMPILER=clang-" CTIMEOPT_VAL(__clang_major__) "."
+                    CTIMEOPT_VAL(__clang_minor__) "."
+                    CTIMEOPT_VAL(__clang_patchlevel__),
+#elif defined(_MSC_VER)
+  "COMPILER=msvc-" CTIMEOPT_VAL(_MSC_VER),
+#elif defined(__GNUC__) && defined(__VERSION__)
+  "COMPILER=gcc-" __VERSION__,
+#endif
+}
+set options(HAVE_ISNAN) {
+#if HAVE_ISNAN || SQLITE_HAVE_ISNAN
+  "HAVE_ISNAN",
+#endif
+}
+
+proc trim_name {in} {
+  set ret $in
+  if {[string range $in 0 6]=="SQLITE_"} {
+    set ret [string range $in 7 end]
+  }
+  return $ret
+}
+
+foreach b $boolean_options {
+  set name [trim_name $b]
+  set options($name) [subst {
+#if $b
+  "$name",
+#endif
+}]
+}
+  
+foreach v $value_options {
+  set name [trim_name $v]
+  set options($name) [subst {
+#ifdef $v
+  "$name=" CTIMEOPT_VAL($v),
+#endif
+}]
+}
+
+foreach o [lsort [array names options]] {
+  puts [string trim $options($o)]
+}
+
+
index 55179c4b80b1988462c31cfd224b48af5e7cda10..431fc42593a0b8fc76370c37cb0218a4bb334d66 100644 (file)
@@ -282,10 +282,10 @@ proc copy_file {filename} {
 # inlining opportunities.
 #
 foreach file {
+   ctime.c
    sqliteInt.h
 
    global.c
-   ctime.c
    status.c
    date.c
    os.c