summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2020-02-13 13:59:41 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2020-02-20 11:46:54 +0900
commit4e6bae47c833cd82942172712f30ac23ab06c9fe (patch)
treebe0f4d058d21f58306a18ce9f9140fbb9aa12bb2
parent7aa3f1fe697f03fc38989d72d2decd5037b8882c (diff)
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.
-rw-r--r--ext/-test-/cxxanyargs/extconf.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/ext/-test-/cxxanyargs/extconf.rb b/ext/-test-/cxxanyargs/extconf.rb
index 08d8c83010..f128984522 100644
--- a/ext/-test-/cxxanyargs/extconf.rb
+++ b/ext/-test-/cxxanyargs/extconf.rb
@@ -2,12 +2,19 @@
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|
#include "ruby/config.h"
namespace {
- typedef int conftest[SIZEOF_LONG == sizeof(long) ? 1 : -1];
- typedef int conftest[SIZEOF_VOIDP == sizeof(void*) ? 1 : -1];
+ typedef int conftest1[SIZEOF_LONG == sizeof(long) ? 1 : -1];
+ typedef int conftest2[SIZEOF_VOIDP == sizeof(void*) ? 1 : -1];
}
int
@@ -21,6 +28,8 @@ begin
x.sub! %<#include "ruby.h">, ''
end
+cxx.instance_variable_set(:'@have_devel', ok)
+
if ok
$srcs = %w[cxxanyargs.cpp]
failures = Dir.glob($srcdir + "/failure*.cpp").map {|n| File.basename(n)}