sqlite: Don't rename types / macros

This commit is contained in:
Nicolas Williams
2026-01-22 11:31:34 -06:00
parent 8961f81de7
commit bab1bca910
2 changed files with 16 additions and 48 deletions

View File

@@ -1,18 +1,18 @@
#!/bin/sh
#
# Generate sqlite3_namespace.h from sqlite3.c and sqlite3.h
# Generate sqlite3_namespace.h from sqlite3.c
#
# This script extracts all public SQLite3 symbols and generates a header
# that renames them with a heim_ prefix to avoid symbol conflicts.
# This script extracts all public SQLite3 function and data symbols
# (marked with SQLITE_API) and generates a header that renames them
# with a heim_ prefix to avoid symbol conflicts.
#
# Usage: ./gen-sqlite3-namespace.sh [sqlite3.c] [sqlite3.h]
# Usage: ./gen-sqlite3-namespace.sh [sqlite3.c]
#
# Run this script after importing a new version of SQLite3.
set -e
SQLITE3_C="${1:-sqlite3.c}"
SQLITE3_H="${2:-sqlite3.h}"
OUTPUT="sqlite3_namespace.h"
if [ ! -f "$SQLITE3_C" ]; then
@@ -20,30 +20,16 @@ if [ ! -f "$SQLITE3_C" ]; then
exit 1
fi
if [ ! -f "$SQLITE3_H" ]; then
echo "Error: $SQLITE3_H not found" >&2
exit 1
fi
# Extract symbols from SQLITE_API declarations in sqlite3.c
# This catches functions and variables like sqlite3_open, sqlite3_version, etc.
# This catches functions and data symbols like sqlite3_open, sqlite3_version, etc.
# Also catches sqlite3session_*, sqlite3changegroup_*, sqlite3rbu_*, etc.
grep '^SQLITE_API' "$SQLITE3_C" | grep -oE 'sqlite3[a-zA-Z0-9_]*' | sort -u > /tmp/sqlite_funcs.$$
# Extract type names from typedef declarations in sqlite3.h
grep -E '^typedef' "$SQLITE3_H" | grep -oE 'sqlite3[a-zA-Z0-9_]*' | sort -u > /tmp/sqlite_types.$$
# Also get sqlite_int64 and sqlite_uint64
grep -E '^typedef' "$SQLITE3_H" | grep -oE 'sqlite_[a-zA-Z0-9_]*' | sort -u >> /tmp/sqlite_types.$$
# Combine and deduplicate
cat /tmp/sqlite_funcs.$$ /tmp/sqlite_types.$$ | sort -u > /tmp/all_symbols.$$
grep '^SQLITE_API' "$SQLITE3_C" | grep -oE 'sqlite3[a-zA-Z0-9_]*' | sort -u > /tmp/sqlite_symbols.$$
# Clean up temp files on exit
trap "rm -f /tmp/sqlite_funcs.$$ /tmp/sqlite_types.$$ /tmp/all_symbols.$$" EXIT
trap "rm -f /tmp/sqlite_symbols.$$" EXIT
# Count symbols
NUM_SYMBOLS=$(wc -l < /tmp/all_symbols.$$)
NUM_SYMBOLS=$(wc -l < /tmp/sqlite_symbols.$$)
echo "Found $NUM_SYMBOLS symbols to rename"
# Generate the header
@@ -82,9 +68,9 @@ cat > "$OUTPUT" << 'HEADER_EOF'
*/
/*
* This header renames all public SQLite3 symbols to use a heim_ prefix
* to avoid symbol conflicts when both libheimsqlite and libsqlite3 are
* loaded in the same process.
* This header renames all public SQLite3 function and data symbols to use
* a heim_ prefix to avoid symbol conflicts when both libheimsqlite and
* libsqlite3 are loaded in the same process.
*
* This file is auto-generated by gen-sqlite3-namespace.sh
* Regenerate after importing a new SQLite version:
@@ -100,7 +86,7 @@ HEADER_EOF
# Generate the #define lines
while read sym; do
echo "#define $sym heim_$sym"
done < /tmp/all_symbols.$$ >> "$OUTPUT"
done < /tmp/sqlite_symbols.$$ >> "$OUTPUT"
cat >> "$OUTPUT" << 'FOOTER_EOF'

View File

@@ -32,9 +32,9 @@
*/
/*
* This header renames all public SQLite3 symbols to use a heim_ prefix
* to avoid symbol conflicts when both libheimsqlite and libsqlite3 are
* loaded in the same process.
* This header renames all public SQLite3 function and data symbols to use
* a heim_ prefix to avoid symbol conflicts when both libheimsqlite and
* libsqlite3 are loaded in the same process.
*
* This file is auto-generated by gen-sqlite3-namespace.sh
* Regenerate after importing a new SQLite version:
@@ -49,7 +49,6 @@
#define sqlite3_activate_cerod heim_sqlite3_activate_cerod
#define sqlite3_aggregate_context heim_sqlite3_aggregate_context
#define sqlite3_aggregate_count heim_sqlite3_aggregate_count
#define sqlite3_api_routines heim_sqlite3_api_routines
#define sqlite3_auto_extension heim_sqlite3_auto_extension
#define sqlite3_backup heim_sqlite3_backup
#define sqlite3_backup_finish heim_sqlite3_backup_finish
@@ -82,7 +81,6 @@
#define sqlite3_blob_write heim_sqlite3_blob_write
#define sqlite3_busy_handler heim_sqlite3_busy_handler
#define sqlite3_busy_timeout heim_sqlite3_busy_timeout
#define sqlite3_callback heim_sqlite3_callback
#define sqlite3_cancel_auto_extension heim_sqlite3_cancel_auto_extension
#define sqlite3_changegroup heim_sqlite3_changegroup
#define sqlite3changegroup_add heim_sqlite3changegroup_add
@@ -172,7 +170,6 @@
#define sqlite3_db_status heim_sqlite3_db_status
#define sqlite3_declare_vtab heim_sqlite3_declare_vtab
#define sqlite3_deserialize heim_sqlite3_deserialize
#define sqlite3_destructor_type heim_sqlite3_destructor_type
#define sqlite3_diskfull heim_sqlite3_diskfull
#define sqlite3_diskfull_pending heim_sqlite3_diskfull_pending
#define sqlite3_drop_modules heim_sqlite3_drop_modules
@@ -221,7 +218,6 @@
#define sqlite3_io_error_hit heim_sqlite3_io_error_hit
#define sqlite3_io_error_pending heim_sqlite3_io_error_pending
#define sqlite3_io_error_persist heim_sqlite3_io_error_persist
#define sqlite3_io_methods heim_sqlite3_io_methods
#define sqlite3IoTrace heim_sqlite3IoTrace
#define sqlite3_json_init heim_sqlite3_json_init
#define sqlite3_keyword_check heim_sqlite3_keyword_check
@@ -238,11 +234,9 @@
#define sqlite3_malloc64 heim_sqlite3_malloc64
#define sqlite3_max_blobsize heim_sqlite3_max_blobsize
#define sqlite3_memdebug_vfs_oom_test heim_sqlite3_memdebug_vfs_oom_test
#define sqlite3_mem_methods heim_sqlite3_mem_methods
#define sqlite3_memory_alarm heim_sqlite3_memory_alarm
#define sqlite3_memory_highwater heim_sqlite3_memory_highwater
#define sqlite3_memory_used heim_sqlite3_memory_used
#define sqlite3_module heim_sqlite3_module
#define sqlite3_mprintf heim_sqlite3_mprintf
#define sqlite3_msize heim_sqlite3_msize
#define sqlite3_mutex heim_sqlite3_mutex
@@ -251,7 +245,6 @@
#define sqlite3_mutex_free heim_sqlite3_mutex_free
#define sqlite3_mutex_held heim_sqlite3_mutex_held
#define sqlite3_mutex_leave heim_sqlite3_mutex_leave
#define sqlite3_mutex_methods heim_sqlite3_mutex_methods
#define sqlite3_mutex_notheld heim_sqlite3_mutex_notheld
#define sqlite3_mutex_try heim_sqlite3_mutex_try
#define sqlite3_next_stmt heim_sqlite3_next_stmt
@@ -268,10 +261,6 @@
#define sqlite3_pager_readdb_count heim_sqlite3_pager_readdb_count
#define sqlite3_pager_writedb_count heim_sqlite3_pager_writedb_count
#define sqlite3_pager_writej_count heim_sqlite3_pager_writej_count
#define sqlite3_pcache heim_sqlite3_pcache
#define sqlite3_pcache_methods heim_sqlite3_pcache_methods
#define sqlite3_pcache_methods2 heim_sqlite3_pcache_methods2
#define sqlite3_pcache_page heim_sqlite3_pcache_page
#define sqlite3_prepare heim_sqlite3_prepare
#define sqlite3_prepare16 heim_sqlite3_prepare16
#define sqlite3_prepare16_v2 heim_sqlite3_prepare16_v2
@@ -333,11 +322,9 @@
#define sqlite3_result_zeroblob heim_sqlite3_result_zeroblob
#define sqlite3_result_zeroblob64 heim_sqlite3_result_zeroblob64
#define sqlite3_rollback_hook heim_sqlite3_rollback_hook
#define sqlite3_rtree_geometry heim_sqlite3_rtree_geometry
#define sqlite3_rtree_geometry_callback heim_sqlite3_rtree_geometry_callback
#define sqlite3_rtree_init heim_sqlite3_rtree_init
#define sqlite3_rtree_query_callback heim_sqlite3_rtree_query_callback
#define sqlite3_rtree_query_info heim_sqlite3_rtree_query_info
#define sqlite3_search_count heim_sqlite3_search_count
#define sqlite3_serialize heim_sqlite3_serialize
#define sqlite3_session heim_sqlite3_session
@@ -399,7 +386,6 @@
#define sqlite3_str_value heim_sqlite3_str_value
#define sqlite3_str_vappendf heim_sqlite3_str_vappendf
#define sqlite3_sync_count heim_sqlite3_sync_count
#define sqlite3_syscall_ptr heim_sqlite3_syscall_ptr
#define sqlite3_system_errno heim_sqlite3_system_errno
#define sqlite3_table_column_metadata heim_sqlite3_table_column_metadata
#define sqlite3_temp_directory heim_sqlite3_temp_directory
@@ -446,10 +432,8 @@
#define sqlite3_vfs_unregister heim_sqlite3_vfs_unregister
#define sqlite3_vmprintf heim_sqlite3_vmprintf
#define sqlite3_vsnprintf heim_sqlite3_vsnprintf
#define sqlite3_vtab heim_sqlite3_vtab
#define sqlite3_vtab_collation heim_sqlite3_vtab_collation
#define sqlite3_vtab_config heim_sqlite3_vtab_config
#define sqlite3_vtab_cursor heim_sqlite3_vtab_cursor
#define sqlite3_vtab_nochange heim_sqlite3_vtab_nochange
#define sqlite3_vtab_on_conflict heim_sqlite3_vtab_on_conflict
#define sqlite3_wal_autocheckpoint heim_sqlite3_wal_autocheckpoint
@@ -473,7 +457,5 @@
#define sqlite3_wsd_find heim_sqlite3_wsd_find
#define sqlite3_wsd_init heim_sqlite3_wsd_init
#define sqlite3_xferopt_count heim_sqlite3_xferopt_count
#define sqlite_int64 heim_sqlite_int64
#define sqlite_uint64 heim_sqlite_uint64
#endif /* SQLITE3_NAMESPACE_H */