From 4e6bae47c833cd82942172712f30ac23ab06c9fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?= Date: Thu, 13 Feb 2020 13:59:41 +0900 Subject: [PATCH] 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. --- ext/-test-/cxxanyargs/extconf.rb | 13 +++++++++++-- 1 file 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)}