Method: Sqlite3::ExtConf.configure_extension

Defined in:
ext/sqlite3/extconf.rb

.configure_extensionObject



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# File 'ext/sqlite3/extconf.rb', line 105

def configure_extension
  append_cflags("-fvisibility=hidden") # see https://github.com/rake-compiler/rake-compiler-dock/issues/87

  if find_header("sqlite3.h")
    # noop
  elsif sqlcipher? && find_header("sqlcipher/sqlite3.h")
    append_cppflags("-DUSING_SQLCIPHER_INC_SUBDIR")
  else
    abort_could_not_find("sqlite3.h")
  end

  abort_could_not_find(libname) unless find_library(libname, "sqlite3_libversion_number", "sqlite3.h")

  # Truffle Ruby doesn't support this yet:
  # https://github.com/oracle/truffleruby/issues/3408
  have_func("rb_enc_interned_str_cstr")

  # Functions defined in 1.9 but not 1.8
  have_func("rb_proc_arity")

  # Functions defined in 2.1 but not 2.0
  have_func("rb_integer_pack")

  # These functions may not be defined
  have_func("sqlite3_initialize")
  have_func("sqlite3_backup_init")
  have_func("sqlite3_column_database_name")
  have_func("sqlite3_enable_load_extension")
  have_func("sqlite3_load_extension")

  unless have_func("sqlite3_open_v2") # https://www.sqlite.org/releaselog/3_5_0.html
    abort("\nPlease use a version of SQLite3 >= 3.5.0\n\n")
  end

  have_func("sqlite3_prepare_v2")
  have_func("sqlite3_db_name", "sqlite3.h") # v3.39.0
  have_func("sqlite3_error_offset", "sqlite3.h") # v3.38.0

  have_type("sqlite3_int64", "sqlite3.h")
  have_type("sqlite3_uint64", "sqlite3.h")
end