Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check for z_size_t along with {crc,adler}32_z in extconf.rb #69

Merged

Commits on Oct 26, 2023

  1. Check for z_size_t along with {crc,adler}32_z in extconf.rb

    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.
    KJTsanaktsidis committed Oct 26, 2023
    Configuration menu
    Copy the full SHA
    8520234 View commit details
    Browse the repository at this point in the history