1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-14 00:22:38 +03:00

Test new api to report which options (defines) were used to compile SQLite.

FossilOrigin-Name: 84c9756993caf82710a0905ed1987d144bc764fd
This commit is contained in:
shaneh
2010-02-23 04:19:54 +00:00
parent 127f9d75e2
commit bdea6d1368
5 changed files with 434 additions and 24 deletions

View File

@@ -36,6 +36,402 @@ const char *sqlite3_libversion(void){ return sqlite3_version; }
const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
int sqlite3_libversion_number(void){ return SQLITE_VERSION_NUMBER; }
int sqlite3_threadsafe(void){ return SQLITE_THREADSAFE; }
const char *sqlite3_compileopts(void){
static char zOpts[32] = "";
sqlite_int64 iEnable = 0; /* bitmask of all the SQLITE_ENABLE* defines */
sqlite_int64 iOmit = 0; /* bitmask of all the SQLITE_OMIT* defines */
sqlite_int64 iOther = 0; /* bitmask of all the SQLITE_* defines except */
/* SQLITE_MAX* and SQLITE_DEF* */
#ifdef SQLITE_32BIT_ROWID
iOther |= ((sqlite_int64)1<<0);
#endif
#ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
iOther |= ((sqlite_int64)1<<1);
#endif
#ifdef SQLITE_AMALGAMATION
iOther |= ((sqlite_int64)1<<2);
#endif
#ifdef SQLITE_API
iOther |= ((sqlite_int64)1<<3);
#endif
#ifdef SQLITE_ASCII
iOther |= ((sqlite_int64)1<<4);
#endif
#ifdef SQLITE_BIG_DBL
iOther |= ((sqlite_int64)1<<5);
#endif
#ifdef SQLITE_CASE_SENSITIVE_LIKE
iOther |= ((sqlite_int64)1<<6);
#endif
#ifdef SQLITE_CHECK_PAGES
iOther |= ((sqlite_int64)1<<7);
#endif
#ifdef SQLITE_CORE
iOther |= ((sqlite_int64)1<<8);
#endif
#ifdef SQLITE_COVERAGE_TEST
iOther |= ((sqlite_int64)1<<9);
#endif
#ifdef SQLITE_DEBUG
iOther |= ((sqlite_int64)1<<10);
#endif
#ifdef SQLITE_DISABLE_DIRSYNC
iOther |= ((sqlite_int64)1<<11);
#endif
#ifdef SQLITE_DISABLE_LFS
iOther |= ((sqlite_int64)1<<12);
#endif
#ifdef SQLITE_EBCDIC
iOther |= ((sqlite_int64)1<<13);
#endif
#ifdef SQLITE_ENABLE_ATOMIC_WRITE
iEnable |= ((sqlite_int64)1<<0);
#endif
#ifdef SQLITE_ENABLE_CEROD
iEnable |= ((sqlite_int64)1<<1);
#endif
#ifdef SQLITE_ENABLE_COLUMN_METADATA
iEnable |= ((sqlite_int64)1<<2);
#endif
#ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT
iEnable |= ((sqlite_int64)1<<3);
#endif
#ifdef SQLITE_ENABLE_FTS1
iEnable |= ((sqlite_int64)1<<4);
#endif
#ifdef SQLITE_ENABLE_FTS2
iEnable |= ((sqlite_int64)1<<5);
#endif
#ifdef SQLITE_ENABLE_FTS3
iEnable |= ((sqlite_int64)1<<6);
#endif
#ifdef SQLITE_ENABLE_FTS4
iEnable |= ((sqlite_int64)1<<7);
#endif
#ifdef SQLITE_ENABLE_ICU
iEnable |= ((sqlite_int64)1<<8);
#endif
#ifdef SQLITE_ENABLE_IOTRACE
iEnable |= ((sqlite_int64)1<<9);
#endif
#ifdef SQLITE_ENABLE_LOAD_EXTENSION
iEnable |= ((sqlite_int64)1<<10);
#endif
#ifdef SQLITE_ENABLE_LOCKING_STYLE
iEnable |= ((sqlite_int64)1<<11);
#endif
#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
iEnable |= ((sqlite_int64)1<<12);
#endif
#ifdef SQLITE_ENABLE_MEMSYS3
iEnable |= ((sqlite_int64)1<<13);
#endif
#ifdef SQLITE_ENABLE_MEMSYS5
iEnable |= ((sqlite_int64)1<<14);
#endif
#ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK
iEnable |= ((sqlite_int64)1<<15);
#endif
#ifdef SQLITE_ENABLE_RTREE
iEnable |= ((sqlite_int64)1<<16);
#endif
#ifdef SQLITE_ENABLE_STAT2
iEnable |= ((sqlite_int64)1<<17);
#endif
#ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
iEnable |= ((sqlite_int64)1<<18);
#endif
#ifdef SQLITE_ENABLE_UPDATE_DELETE_LIMIT
iEnable |= ((sqlite_int64)1<<19);
#endif
#ifdef SQLITE_EXTERN
iOther |= ((sqlite_int64)1<<14);
#endif
#ifdef SQLITE_FILE_HEADER
iOther |= ((sqlite_int64)1<<15);
#endif
#ifdef SQLITE_HAS_CODEC
iOther |= ((sqlite_int64)1<<16);
#endif
#ifdef SQLITE_HAVE_ISNAN
iOther |= ((sqlite_int64)1<<17);
#endif
#ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX
iOther |= ((sqlite_int64)1<<18);
#endif
#ifdef SQLITE_IGNORE_AFP_LOCK_ERRORS
iOther |= ((sqlite_int64)1<<19);
#endif
#ifdef SQLITE_IGNORE_FLOCK_LOCK_ERRORS
iOther |= ((sqlite_int64)1<<20);
#endif
#ifdef SQLITE_INT64_TYPE
iOther |= ((sqlite_int64)1<<21);
#endif
#ifdef SQLITE_INTEGRITY_CHECK_ERROR_MAX
iOther |= ((sqlite_int64)1<<22);
#endif
#ifdef SQLITE_LOCK_TRACE
iOther |= ((sqlite_int64)1<<23);
#endif
#ifdef SQLITE_MALLOC_SOFT_LIMIT
iOther |= ((sqlite_int64)1<<24);
#endif
#ifdef SQLITE_MEMDEBUG
iOther |= ((sqlite_int64)1<<25);
#endif
#ifdef SQLITE_MIXED_ENDIAN_64BIT_FLOAT
iOther |= ((sqlite_int64)1<<26);
#endif
#ifdef SQLITE_MUTEX_NOOP
iOther |= ((sqlite_int64)1<<27);
#endif
#ifdef SQLITE_MUTEX_OMIT
iOther |= ((sqlite_int64)1<<28);
#endif
#ifdef SQLITE_MUTEX_OS2
iOther |= ((sqlite_int64)1<<29);
#endif
#ifdef SQLITE_MUTEX_PTHREADS
iOther |= ((sqlite_int64)1<<30);
#endif
#ifdef SQLITE_MUTEX_W32
iOther |= ((sqlite_int64)1<<31);
#endif
#ifdef SQLITE_NO_SYNC
iOther |= ((sqlite_int64)1<<32);
#endif
#ifdef SQLITE_N_COLCACHE
iOther |= ((sqlite_int64)1<<33);
#endif
#ifdef SQLITE_N_KEYWORD
iOther |= ((sqlite_int64)1<<34);
#endif
#ifdef SQLITE_OMIT_ALTERTABLE
iOmit |= ((sqlite_int64)1<<0);
#endif
#ifdef SQLITE_OMIT_ANALYZE
iOmit |= ((sqlite_int64)1<<1);
#endif
#ifdef SQLITE_OMIT_ATTACH
iOmit |= ((sqlite_int64)1<<2);
#endif
#ifdef SQLITE_OMIT_AUTHORIZATION
iOmit |= ((sqlite_int64)1<<3);
#endif
#ifdef SQLITE_OMIT_AUTOINCREMENT
iOmit |= ((sqlite_int64)1<<4);
#endif
#ifdef SQLITE_OMIT_AUTOINIT
iOmit |= ((sqlite_int64)1<<5);
#endif
#ifdef SQLITE_OMIT_AUTOVACUUM
iOmit |= ((sqlite_int64)1<<6);
#endif
#ifdef SQLITE_OMIT_BETWEEN_OPTIMIZATION
iOmit |= ((sqlite_int64)1<<7);
#endif
#ifdef SQLITE_OMIT_BLOB_LITERAL
iOmit |= ((sqlite_int64)1<<8);
#endif
#ifdef SQLITE_OMIT_BTREECOUNT
iOmit |= ((sqlite_int64)1<<9);
#endif
#ifdef SQLITE_OMIT_BUILTIN_TEST
iOmit |= ((sqlite_int64)1<<10);
#endif
#ifdef SQLITE_OMIT_CAST
iOmit |= ((sqlite_int64)1<<11);
#endif
#ifdef SQLITE_OMIT_CHECK
iOmit |= ((sqlite_int64)1<<12);
#endif
#ifdef SQLITE_OMIT_COMPLETE
iOmit |= ((sqlite_int64)1<<13);
#endif
#ifdef SQLITE_OMIT_COMPOUND_SELECT
iOmit |= ((sqlite_int64)1<<14);
#endif
#ifdef SQLITE_OMIT_DATETIME_FUNCS
iOmit |= ((sqlite_int64)1<<15);
#endif
#ifdef SQLITE_OMIT_DECLTYPE
iOmit |= ((sqlite_int64)1<<16);
#endif
#ifdef SQLITE_OMIT_DEPRECATED
iOmit |= ((sqlite_int64)1<<17);
#endif
#ifdef SQLITE_OMIT_DISKIO
iOmit |= ((sqlite_int64)1<<18);
#endif
#ifdef SQLITE_OMIT_EXPLAIN
iOmit |= ((sqlite_int64)1<<19);
#endif
#ifdef SQLITE_OMIT_FLAG_PRAGMAS
iOmit |= ((sqlite_int64)1<<20);
#endif
#ifdef SQLITE_OMIT_FLOATING_POINT
iOmit |= ((sqlite_int64)1<<21);
#endif
#ifdef SQLITE_OMIT_FOREIGN_KEY
iOmit |= ((sqlite_int64)1<<22);
#endif
#ifdef SQLITE_OMIT_GET_TABLE
iOmit |= ((sqlite_int64)1<<23);
#endif
#ifdef SQLITE_OMIT_GLOBALRECOVER
iOmit |= ((sqlite_int64)1<<24);
#endif
#ifdef SQLITE_OMIT_INCRBLOB
iOmit |= ((sqlite_int64)1<<25);
#endif
#ifdef SQLITE_OMIT_INTEGRITY_CHECK
iOmit |= ((sqlite_int64)1<<26);
#endif
#ifdef SQLITE_OMIT_LIKE_OPTIMIZATION
iOmit |= ((sqlite_int64)1<<27);
#endif
#ifdef SQLITE_OMIT_LOAD_EXTENSION
iOmit |= ((sqlite_int64)1<<28);
#endif
#ifdef SQLITE_OMIT_LOCALTIME
iOmit |= ((sqlite_int64)1<<29);
#endif
#ifdef SQLITE_OMIT_LOOKASIDE
iOmit |= ((sqlite_int64)1<<30);
#endif
#ifdef SQLITE_OMIT_MEMORYDB
iOmit |= ((sqlite_int64)1<<31);
#endif
#ifdef SQLITE_OMIT_OR_OPTIMIZATION
iOmit |= ((sqlite_int64)1<<32);
#endif
#ifdef SQLITE_OMIT_PAGER_PRAGMAS
iOmit |= ((sqlite_int64)1<<33);
#endif
#ifdef SQLITE_OMIT_PRAGMA
iOmit |= ((sqlite_int64)1<<34);
#endif
#ifdef SQLITE_OMIT_PROGRESS_CALLBACK
iOmit |= ((sqlite_int64)1<<35);
#endif
#ifdef SQLITE_OMIT_QUICKBALANCE
iOmit |= ((sqlite_int64)1<<36);
#endif
#ifdef SQLITE_OMIT_REINDEX
iOmit |= ((sqlite_int64)1<<37);
#endif
#ifdef SQLITE_OMIT_SCHEMA_PRAGMAS
iOmit |= ((sqlite_int64)1<<38);
#endif
#ifdef SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
iOmit |= ((sqlite_int64)1<<39);
#endif
#ifdef SQLITE_OMIT_SHARED_CACHE
iOmit |= ((sqlite_int64)1<<40);
#endif
#ifdef SQLITE_OMIT_SUBQUERY
iOmit |= ((sqlite_int64)1<<41);
#endif
#ifdef SQLITE_OMIT_TCL_VARIABLE
iOmit |= ((sqlite_int64)1<<42);
#endif
#ifdef SQLITE_OMIT_TEMPDB
iOmit |= ((sqlite_int64)1<<43);
#endif
#ifdef SQLITE_OMIT_TRACE
iOmit |= ((sqlite_int64)1<<44);
#endif
#ifdef SQLITE_OMIT_TRIGGER
iOmit |= ((sqlite_int64)1<<45);
#endif
#ifdef SQLITE_OMIT_TRUNCATE_OPTIMIZATION
iOmit |= ((sqlite_int64)1<<46);
#endif
#ifdef SQLITE_OMIT_UTF16
iOmit |= ((sqlite_int64)1<<47);
#endif
#ifdef SQLITE_OMIT_VACUUM
iOmit |= ((sqlite_int64)1<<48);
#endif
#ifdef SQLITE_OMIT_VIEW
iOmit |= ((sqlite_int64)1<<49);
#endif
#ifdef SQLITE_OMIT_VIRTUALTABLE
iOmit |= ((sqlite_int64)1<<50);
#endif
#ifdef SQLITE_OMIT_WSD
iOmit |= ((sqlite_int64)1<<51);
#endif
#ifdef SQLITE_OMIT_XFER_OPT
iOmit |= ((sqlite_int64)1<<52);
#endif
#ifdef SQLITE_OS_OTHER
iOther |= ((sqlite_int64)1<<35);
#endif
#ifdef SQLITE_OS_UNIX
iOther |= ((sqlite_int64)1<<36);
#endif
#ifdef SQLITE_PERFORMANCE_TRACE
iOther |= ((sqlite_int64)1<<37);
#endif
#ifdef SQLITE_PRINT_BUF_SIZE
iOther |= ((sqlite_int64)1<<38);
#endif
#ifdef SQLITE_PRIVATE
iOther |= ((sqlite_int64)1<<39);
#endif
#ifdef SQLITE_PROXY_DEBUG
iOther |= ((sqlite_int64)1<<40);
#endif
#ifdef SQLITE_SECURE_DELETE
iOther |= ((sqlite_int64)1<<41);
#endif
#ifdef SQLITE_SMALL_STACK
iOther |= ((sqlite_int64)1<<42);
#endif
#ifdef SQLITE_SOUNDEX
iOther |= ((sqlite_int64)1<<43);
#endif
#ifdef SQLITE_SYSTEM_MALLOC
iOther |= ((sqlite_int64)1<<44);
#endif
#ifdef SQLITE_TCL
iOther |= ((sqlite_int64)1<<45);
#endif
#ifdef SQLITE_TEMP_FILE_PREFIX
iOther |= ((sqlite_int64)1<<46);
#endif
#ifdef SQLITE_TEMP_STORE
iOther |= ((sqlite_int64)1<<47);
#endif
#ifdef SQLITE_TEST
iOther |= ((sqlite_int64)1<<48);
#endif
#ifdef SQLITE_TEXT
iOther |= ((sqlite_int64)1<<49);
#endif
#ifdef SQLITE_THREADSAFE
iOther |= ((sqlite_int64)1<<50);
#endif
#ifdef SQLITE_USE_ALLOCA
iOther |= ((sqlite_int64)1<<51);
#endif
#ifdef SQLITE_VERSION
iOther |= ((sqlite_int64)1<<52);
#endif
#ifdef SQLITE_VERSION_NUMBER
iOther |= ((sqlite_int64)1<<53);
#endif
#ifdef SQLITE_ZERO_MALLOC
iOther |= ((sqlite_int64)1<<54);
#endif
sqlite3_snprintf(sizeof(zOpts)-1, zOpts,
"%016llx%016llx%016llx", iEnable, iOmit, iOther);
return zOpts;
}
#if !defined(SQLITE_OMIT_TRACE) && defined(SQLITE_ENABLE_IOTRACE)
/*