mirror of
https://github.com/ruby/ruby.git
synced 2025-09-16 09:04:05 +02:00
![]() 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.
|
||
---|---|---|
.. | ||
-test- | ||
bigdecimal | ||
cgi/escape | ||
continuation | ||
coverage | ||
date | ||
digest | ||
erb/escape | ||
etc | ||
fcntl | ||
fiddle | ||
io | ||
json | ||
monitor | ||
nkf | ||
objspace | ||
openssl | ||
pathname | ||
psych | ||
pty | ||
rbconfig/sizeof | ||
ripper | ||
rubyvm | ||
socket | ||
stringio | ||
strscan | ||
syslog | ||
win32 | ||
win32ole | ||
zlib | ||
.document | ||
extmk.rb | ||
Setup | ||
Setup.atheos | ||
Setup.nt |