ext/openssl fails to build in certain scenarios due to misordered pkg-config check
If mkmf via ext/openssl/extconf.rb is allowed to search for both headers and libs before consulting pkg-config, multiple installations of openssl will cause trouble during build time.
This is evident on my OS X 10.6 system with macports, gcc 4.2.1 from macports, openssl 1.0.0a from macports, and openssl 0.9.x provided by OS X. The problem appears at a glance is that it will locate the 1.0 headers first, the 0.9 libs first, and then prepare the conftest programs with improper ldflags based on its findings.
It's entirely probable there's a deeper autoconf, rbconfig, mkmf, or compiler issue that I am missing, but the solution I found is in the attached patch, which is to run pkg_config first, and in the event it fails, fall back to the default header / lib search that was previously in place. I think this will work for situations where pkg-config isn't available for openssl, but I was unable to test that case.
Updated by luislavena (Luis Lavena) over 11 years ago
RubyInstaller do not bundle pkg-config, so that part will fail and will check for crypto libeay32 and ssl ssleay32 as usual.
I just checked and compiles fine, following are the snip of mkmf.log that matters:
package configuration for openssl is not found
have_header: checking for openssl/ssl.h... -------------------- yes
"gcc -E -I../../.ext/include/i386-mingw32 -I../../../../../../ruby/include -I../../../../../../ruby/ext/openssl -O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long conftest.c -o conftest.i"
checked program was:
/* begin /
1: #include "ruby.h"
3: #include <winsock2.h>
4: #include <windows.h>
5: #include <openssl/ssl.h>
/ end */