Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix broken compilation with Ruby interpreter compiled with XCode 14
XCode 14 warns if the `-undefined dynamic_lookup` linker option is used. As a result, the `configure` script for the Ruby interpreter disables these flags, causing building the native gem to fail with undefined symbols: ``` compiling encoder.c encoder.c:307:14: warning: unused function 'rb_cBignum_ffi_yajl' [-Wunused-function] static VALUE rb_cBignum_ffi_yajl(VALUE self, VALUE rb_yajl_gen, VALUE state) { ^ 1 warning generated. linking shared-object ffi_yajl/ext/encoder.bundle Undefined symbols for architecture arm64: "_yajl_gen_alloc", referenced from: _mEncoder_do_yajl_encode in encoder.o "_yajl_gen_array_close", referenced from: _gen_array_close in encoder.o "_yajl_gen_array_open", referenced from: _gen_array_open in encoder.o "_yajl_gen_bool", referenced from: _gen_true in encoder.o _gen_false in encoder.o "_yajl_gen_config", referenced from: _mEncoder_do_yajl_encode in encoder.o "_yajl_gen_free", referenced from: _mEncoder_do_yajl_encode in encoder.o "_yajl_gen_get_buf", referenced from: _mEncoder_do_yajl_encode in encoder.o "_yajl_gen_map_close", referenced from: _gen_map_close in encoder.o "_yajl_gen_map_open", referenced from: _gen_map_open in encoder.o "_yajl_gen_null", referenced from: _gen_null in encoder.o "_yajl_gen_number", referenced from: _gen_number in encoder.o "_yajl_gen_string", referenced from: _gen_cstring in encoder.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [encoder.bundle] Error 1 ``` To fix this, we can explicitly list the symbols that will be dynamically looked up and use that in the `-U` linker option to specify that it is okay for that symbol to have no definition. Relates to ruby/ruby#6193
- Loading branch information