I've been having problems getting sqlite3 version 1.4.2 to install on mac. I have a legacy http server application which I am trying to install the dependancies for, but bundle install keeps hanging up on sqlite3 specifically. Versions 1.3.13 and below install fine but 1.4.1 and above will not.
I've tried gem installing it with the flags --with-cflags=-Wno-error=implicit-function-declaration -Wno-error=incompatible-function-pointer-types
, which helped for previous packages the installer had a hard time with, but it hasn't worked. I have brew installed sqlite3, and no improvement. I am using an Intel mac with OS 15.1.1, xcode and command line tools are installed, ruby 2.7.2, and sqlite3 -version
gives 3.48.0. The (mostly) full output of running gem install sqlite3 -v 1.4.2
is below. Some lines in the middle were cutout due to post size limitations, hopefully not a problem as most of the middle lines seem to be repetitive.
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.
current directory: /Users/fatcullen/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sqlite3-1.4.2/ext/sqlite3
/Users/fatcullen/.rbenv/versions/2.7.2/bin/ruby -I /Users/fatcullen/.rbenv/versions/2.7.2/lib/ruby/2.7.0 -r ./siteconf20250118-12176-hparbb.rb extconf.rb
checking for sqlite3.h... yes
checking for pthread_create() in -lpthread... yes
checking for -ldl... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... yes
checking for rb_integer_pack()... yes
checking for sqlite3_initialize()... yes
checking for sqlite3_backup_init()... yes
checking for sqlite3_column_database_name()... yes
checking for sqlite3_enable_load_extension()... yes
checking for sqlite3_load_extension()... yes
checking for sqlite3_open_v2()... yes
checking for sqlite3_prepare_v2()... yes
checking for sqlite3_int64 in sqlite3.h... yes
checking for sqlite3_uint64 in sqlite3.h... yes
creating Makefile
current directory: /Users/fatcullen/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sqlite3-1.4.2/ext/sqlite3
make "DESTDIR=" clean
current directory: /Users/fatcullen/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sqlite3-1.4.2/ext/sqlite3
make "DESTDIR="
compiling aggregator.c
aggregator.c:74:22: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
74 | handler_klass, rb_intern("new"), 0, NULL, &exc_status));
| ^~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:23: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
aggregator.c:74:22: note: '{' token is here
74 | handler_klass, rb_intern("new"), 0, NULL, &exc_status));
| ^~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1832:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1832 | { \
| ^
aggregator.c:74:22: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
74 | handler_klass, rb_intern("new"), 0, NULL, &exc_status));
| ^~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^
aggregator.c:74:22: note: ')' token is here
74 | handler_klass, rb_intern("new"), 0, NULL, &exc_status));
| ^~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:56: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
aggregator.c:141:23: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
141 | handler_instance, rb_intern("step"), argc, params, &exc_status);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:23: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
aggregator.c:141:23: note: '{' token is here
141 | handler_instance, rb_intern("step"), argc, params, &exc_status);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1832:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1832 | { \
| ^
aggregator.c:141:23: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
141 | handler_instance, rb_intern("step"), argc, params, &exc_status);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^
aggregator.c:141:23: note: ')' token is here
141 | handler_instance, rb_intern("step"), argc, params, &exc_status);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:56: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
aggregator.c:159:25: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
159 | handler_instance, rb_intern("finalize"), 0, NULL, &exc_status);
| ^~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:23: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
aggregator.c:159:25: note: '{' token is here
159 | handler_instance, rb_intern("finalize"), 0, NULL, &exc_status);
| ^~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1832:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1832 | { \
| ^
aggregator.c:159:25: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
159 | handler_instance, rb_intern("finalize"), 0, NULL, &exc_status);
| ^~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^
aggregator.c:159:25: note: ')' token is here
159 | handler_instance, rb_intern("finalize"), 0, NULL, &exc_status);
| ^~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:56: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
aggregator.c:219:33: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
219 | if (rb_respond_to(aggregator, rb_intern("arity"))) {
| ^~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:23: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
aggregator.c:219:33: note: '{' token is here
219 | if (rb_respond_to(aggregator, rb_intern("arity"))) {
| ^~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1832:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1832 | { \
| ^
aggregator.c:219:33: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
219 | if (rb_respond_to(aggregator, rb_intern("arity"))) {
| ^~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^
aggregator.c:219:33: note: ')' token is here
219 | if (rb_respond_to(aggregator, rb_intern("arity"))) {
| ^~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:56: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
aggregator.c:220:47: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
220 | VALUE ruby_arity = rb_funcall(aggregator, rb_intern("arity"), 0);
| ^~~~~~~~~~~~~~~~~~
aggregator.c:220:47: note: '{' token is here
220 | VALUE ruby_arity = rb_funcall(aggregator, rb_intern("arity"), 0);
| ^~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1832:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1832 | { \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
aggregator.c:220:47: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
220 | VALUE ruby_arity = rb_funcall(aggregator, rb_intern("arity"), 0);
| ^~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
aggregator.c:220:47: note: ')' token is here
220 | VALUE ruby_arity = rb_funcall(aggregator, rb_intern("arity"), 0);
| ^~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:56: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
aggregator.c:235:30: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
235 | if (!rb_ivar_defined(self, rb_intern("-aggregators"))) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:23: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
aggregator.c:235:30: note: '{' token is here
235 | if (!rb_ivar_defined(self, rb_intern("-aggregators"))) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
database.c:116:21: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
116 | rb_funcall(thing, rb_intern("call"), 1, rb_str_new2(sql));
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^ ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:23: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:150:37: note: '{' token is here
150 | VALUE result = rb_funcall(handle, rb_intern("call"), 1, INT2NUM((long)count));
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1832:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1832 | { \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:150:37: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
150 | VALUE result = rb_funcall(handle, rb_intern("call"), 1, INT2NUM((long)count));
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:150:37: note: ')' token is here
150 | VALUE result = rb_funcall(handle, rb_intern("call"), 1, INT2NUM((long)count));
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:56: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:299:31: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
299 | result = rb_apply(callable, rb_intern("call"), params);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:23: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
database.c:299:31: note: '{' token is here
299 | result = rb_apply(callable, rb_intern("call"), params);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1832:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1832 | { \
| ^
database.c:299:31: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
299 | result = rb_apply(callable, rb_intern("call"), params);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^
database.c:299:31: note: ')' token is here
299 | result = rb_apply(callable, rb_intern("call"), params);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:56: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
database.c:441:39: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
441 | VALUE result = rb_funcall(callback, rb_intern("call"), 5, action, a, b, c, d);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:23: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:441:39: note: '{' token is here
441 | VALUE result = rb_funcall(callback, rb_intern("call"), 5, action, a, b, c, d);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1832:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1832 | { \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:441:39: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
441 | VALUE result = rb_funcall(callback, rb_intern("call"), 5, action, a, b, c, d);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:441:39: note: ')' token is here
441 | VALUE result = rb_funcall(callback, rb_intern("call"), 5, action, a, b, c, d);
| ^~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:56: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:538:39: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
538 | comparison = rb_funcall(comparator, rb_intern("compare"), 2, a_str, b_str);
| ^~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:23: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:538:39: note: '{' token is here
538 | comparison = rb_funcall(comparator, rb_intern("compare"), 2, a_str, b_str);
| ^~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1832:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1832 | { \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:538:39: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]
538 | comparison = rb_funcall(comparator, rb_intern("compare"), 2, a_str, b_str);
| ^~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:24: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1837:5: note: expanded from macro 'RUBY_CONST_ID_CACHE'
1837 | }
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:538:39: note: ')' token is here
538 | comparison = rb_funcall(comparator, rb_intern("compare"), 2, a_str, b_str);
| ^~~~~~~~~~~~~~~~~~~~
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1847:56: note: expanded from macro 'rb_intern'
1847 | __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
| ^
/Users/fatcullen/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2689:27: note: expanded from macro 'rb_funcall'
2689 | rb_funcallv(recv, mid, \
| ^~~
database.c:726:57: error: incompatible function pointer types passing 'int (VALUE, int, char **, char **)' (aka 'int (unsigned long, int, char **, char **)') to parameter of type 'int (*)(void *, int, char **, char **)' [-Wincompatible-function-pointer-types]
726 | status = sqlite3_exec(ctx->db, StringValuePtr(sql), hash_callback_function, callback_ary, &errMsg);
| ^~~~~~~~~~~~~~~~~~~~~~
/usr/local/opt/sqlite/include/sqlite3.h:430:9: note: passing argument to parameter 'callback' here
430 | int (*callback)(void*,int,char**,char**), /* Callback function */
| ^
database.c:726:81: error: incompatible integer to pointer conversion passing 'VALUE' (aka 'unsigned long') to parameter of type 'void *' [-Wint-conversion]
726 | status = sqlite3_exec(ctx->db, StringValuePtr(sql), hash_callback_function, callback_ary, &errMsg);
| ^~~~~~~~~~~~
/usr/local/opt/sqlite/include/sqlite3.h:431:9: note: passing argument to parameter here
431 | void *, /* 1st argument to callback */
| ^
database.c:728:57: error: incompatible function pointer types passing 'int (VALUE, int, char **, char **)' (aka 'int (unsigned long, int, char **, char **)') to parameter of type 'int (*)(void *, int, char **, char **)' [-Wincompatible-function-pointer-types]
728 | status = sqlite3_exec(ctx->db, StringValuePtr(sql), regular_callback_function, callback_ary, &errMsg);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/opt/sqlite/include/sqlite3.h:430:9: note: passing argument to parameter 'callback' here
430 | int (*callback)(void*,int,char**,char**), /* Callback function */
| ^
database.c:728:84: error: incompatible integer to pointer conversion passing 'VALUE' (aka 'unsigned long') to parameter of type 'void *' [-Wint-conversion]
728 | status = sqlite3_exec(ctx->db, StringValuePtr(sql), regular_callback_function, callback_ary, &errMsg);
| ^~~~~~~~~~~~
/usr/local/opt/sqlite/include/sqlite3.h:431:9: note: passing argument to parameter here
431 | void *, /* 1st argument to callback */
| ^
11 warnings and 4 errors generated.
make: *** [database.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/fatcullen/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/sqlite3-1.4.2 for inspection.
Results logged to /Users/fatcullen/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-24/2.7.0/sqlite3-1.4.2/gem_make.out
Figured it out, there was another flag to add. Buried deep in the log file behind all the warnings there was one integer-conversion error, so adding an ignore flag to this solved the problem. Full command was: gem install sqlite3 -v 1.4.2 -- --with-cflags="--with-cflags=-g -O0 -std=c11 -Wno-error=implicit-function-declaration -Wno-error=incompatible-function-pointer-types -Wno-error=int-conversion"