node-sqlcipher/deps/sqlcipher/sqlcipher.gyp
2025-11-19 12:08:32 -08:00

135 lines
3.9 KiB
Python
Executable File

# ===
# This configuration defines options specific to compiling SQLite3 itself.
# Compile-time options are loaded by the auto-generated file "defines.gypi".
# Before SQLite3 is compiled, it gets extracted from "sqlcipher.tar.gz".
# The --sqlite3 option can be provided to use a custom amalgamation instead.
# ===
{
'targets': [
{
'target_name': 'sqlcipher',
'type': 'static_library',
'sources': ['sqlite3.c'],
'include_dirs': ['.'],
'direct_dependent_settings': {
'include_dirs': [
'.',
],
},
'cflags': ['-std=c99', '-w'],
'xcode_settings': {
'OTHER_CFLAGS': ['-std=c99'],
'WARNING_CFLAGS': ['-w'],
'DEAD_CODE_STRIPPING': 'YES',
'LLVM_LTO': 'YES',
},
'defines': [
'SQLITE_LIKE_DOESNT_MATCH_BLOBS',
'SQLITE_THREADSAFE=2',
'SQLITE_USE_URI=0',
'SQLITE_USE_ALLOCA',
'SQLITE_OMIT_AUTOINIT',
'SQLITE_OMIT_DECLTYPE',
'SQLITE_OMIT_DEPRECATED',
'SQLITE_OMIT_DESERIALIZE',
'SQLITE_OMIT_GET_TABLE',
'SQLITE_OMIT_TCL_VARIABLE',
'SQLITE_OMIT_PROGRESS_CALLBACK',
'SQLITE_OMIT_SHARED_CACHE',
'SQLITE_OMIT_UTF16',
'SQLITE_OMIT_COMPLETE',
'SQLITE_OMIT_AUTHORIZATION',
'SQLITE_OMIT_LOAD_EXTENSION',
'SQLITE_OMIT_INTROSPECTION_PRAGMAS',
'SQLITE_OMIT_INCRBLOB',
'SQLITE_OMIT_TRACE',
'SQLITE_DEFAULT_CACHE_SIZE=-16000',
'SQLITE_DEFAULT_FOREIGN_KEYS=1',
'SQLITE_DEFAULT_WAL_SYNCHRONOUS=1',
'SQLITE_DEFAULT_MEMSTATUS=0',
'SQLITE_LIKE_DOESNT_MATCH_BLOBS',
'SQLITE_MAX_EXPR_DEPTH=0',
'SQLITE_DQS=0',
'SQLITE_ENABLE_MATH_FUNCTIONS',
'SQLITE_ENABLE_UPDATE_DELETE_LIMIT',
'SQLITE_ENABLE_STAT4',
'SQLITE_ENABLE_FTS5',
'SQLITE_ENABLE_JSON1',
'SQLCIPHER_CRYPTO_CUSTOM=signal_crypto_provider_setup',
'HAVE_STDINT_H=1',
'HAVE_INT8_T=1',
'HAVE_INT16_T=1',
'HAVE_INT32_T=1',
'HAVE_UINT8_T=1',
'HAVE_INT8_T=1',
'HAVE_STDINT_H=1',
'HAVE_UINT16_T=1',
'HAVE_UINT32_T=1',
# SQLCipher-specific options
'SQLITE_HAS_CODEC',
'SQLITE_TEMP_STORE=2',
'SQLITE_SECURE_DELETE',
'SQLITE_EXTRA_INIT=sqlcipher_extra_init',
'SQLITE_EXTRA_SHUTDOWN=sqlcipher_extra_shutdown',
],
'conditions': [
# Link with extension
['OS == "win"', {
'defines': [
'WIN32'
],
'link_settings': {
'libraries': [
'-luserenv.lib',
'-lntdll.lib',
'-lbcrypt.lib',
'-lcrypt32.lib',
'-lsignal_sqlcipher_extension.lib'
],
'library_dirs': [
'<(PRODUCT_DIR)',
]
}
}, {
'link_settings': {
'libraries': [
'<(SHARED_INTERMEDIATE_DIR)/libsignal_sqlcipher_extension.a',
]
},
}],
# LTO on Linux
['OS == "linux"', {
# GCC only for now
'cflags': ['-flto=4', '-fuse-linker-plugin', '-ffat-lto-objects'],
'ldflags': ['-flto=4', '-fuse-linker-plugin', '-ffat-lto-objects'],
}],
# Profiling
["\"-profiling.\" in \"<!(node -p \"require('../../package.json').version\")\"", {
'defines': [
'SQLITE_ENABLE_STMT_SCANSTATUS'
],
'direct_dependent_settings': {
'defines': [
'SQLITE_ENABLE_STMT_SCANSTATUS'
],
},
}],
],
'configurations': {
'Debug': {
'msvs_settings': { 'VCCLCompilerTool': { 'RuntimeLibrary': 1 } }, # static debug
},
'Release': {
'msvs_settings': { 'VCCLCompilerTool': { 'RuntimeLibrary': 0 } }, # static release
},
},
},
],
}