Bug #7856
closedThe usage of try_run in extconf.rb is broken when crosscompiling
Description
Hello,
Every "try_run" inside extconf.rb (found in some ext/*/extconf.rb) tries to compile and run the generated binary. However,
when crosscompiling, this simply can't work.
Please, make try_run be ignored (or just test the compilation) when crosscompiling is detected. I tested this only at 1.9.2
but this might affect all versions that uses try_run to test dependencies.
Taking socket as an example, this can be solved individually, from the original:
getaddr_info_ok = (enable_config("wide-getaddrinfo") && :wide) ||
(checking_for("wide getaddrinfo") {try_run(<<EOF)} && :os)
to:
getaddr_info_ok = (enable_config("wide-getaddrinfo") && :wide) ||
(CROSS_COMPILING && :cross) ||
(checking_for("wide getaddrinfo") {try_run(<<EOF)} && :os)
or just allow the check for every try_run to be manually defined in ./configure script
like:
getaddr_info_ok = (enable_config("wide-getaddrinfo") && :wide) ||
(enable_config("ignore-getaddr_info-check") && :manual ) ||
(CROSS_COMPILING && <warn the user to use --ignore-getaddr_info-check> && false) ||
(checking_for("wide getaddrinfo") {try_run(<<EOF)} && :os)
Regards,