1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

ext/-test-/cxxanyargs: prevent have_devel check

The `cxx.try_compile` command in this file kicks `cxx.have_devel?`
internally, which recursively calls `cxx.try_link` with a different
source code.  We don't want that happen (the source code compiled in
this file must be the first one).  We need to fake the system.
This commit is contained in:
卜部昌平 2020-02-13 13:59:41 +09:00
parent 7aa3f1fe69
commit 4e6bae47c8

View file

@ -2,12 +2,19 @@
cxx = MakeMakefile["C++"] cxx = MakeMakefile["C++"]
# #### have_devel hack ####
# cxx.try_compile tries to detect compilers, but the try_compile below is
# trying to detect a compiler in a different way. We need to prevent the
# default detection routine.
cxx.instance_variable_set(:'@have_devel', true)
ok = cxx.try_compile(<<~'begin', "") do |x| ok = cxx.try_compile(<<~'begin', "") do |x|
#include "ruby/config.h" #include "ruby/config.h"
namespace { namespace {
typedef int conftest[SIZEOF_LONG == sizeof(long) ? 1 : -1]; typedef int conftest1[SIZEOF_LONG == sizeof(long) ? 1 : -1];
typedef int conftest[SIZEOF_VOIDP == sizeof(void*) ? 1 : -1]; typedef int conftest2[SIZEOF_VOIDP == sizeof(void*) ? 1 : -1];
} }
int int
@ -21,6 +28,8 @@ begin
x.sub! %<#include "ruby.h">, '' x.sub! %<#include "ruby.h">, ''
end end
cxx.instance_variable_set(:'@have_devel', ok)
if ok if ok
$srcs = %w[cxxanyargs.cpp] $srcs = %w[cxxanyargs.cpp]
failures = Dir.glob($srcdir + "/failure*.cpp").map {|n| File.basename(n)} failures = Dir.glob($srcdir + "/failure*.cpp").map {|n| File.basename(n)}