ruby/ext/zlib
KJ Tsanaktsidis e74ea904ad [ruby/zlib] Check for z_size_t along with {crc,adler}32_z in
extconf.rb
(https://github.com/ruby/zlib/pull/69)

The android NDK (android-ndk-r21e) does not have crc32_z, adler32_z, nor
z_size_t in its zlib.h header file. However, it _does_ have the crc32_z
and adler32_z symbols in the libz.a static library!

mkmf performs two tests for have_func:
* It sees if a program that includes the header and takes the address of
  the symbol can compile
* It sees if a program that defines the symbol as `extern void sym_name()`
  and calls it can be linked

If either test works, it considers the function present. The
android-ndk-r21e is passing the second test but not the first for
crc32_z/adler32_z. So, we define HAVE_ZLIB_SIZE_T_FUNCS, but then can't
actually compile the extension (since the prototypes aren't in the
header file).

We can keep this working how it was working before by _also_ checking
for `have_type("z_size_t", "zlib.h")`. The have_type check _only_ looks
in the header file for the type; if a program including the header file
and using the type can't compile, the type is considered absent
regardless of what might be in libz.a.

https://github.com/ruby/zlib/commit/3b9fe962d8
2023-10-26 09:56:21 +00:00
..
.gitignore ignore external library sources [ci skip] 2018-01-26 03:13:33 +00:00
depend Update the depend files 2023-02-28 09:09:00 -08:00
extconf.rb [ruby/zlib] Check for z_size_t along with {crc,adler}32_z in 2023-10-26 09:56:21 +00:00
zlib.c [ruby/zlib] Fix misdetection of {crc32,alder32}_z in cloudflare zlib fork 2023-10-26 02:17:54 +00:00
zlib.gemspec [ruby/zlib] gemspec: Remove unused files 2021-04-20 21:19:41 +09:00