ruby-changes:60131
From: =E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3 <ko1@a...>
Date: Thu, 20 Feb 2020 11:49:30 +0900 (JST)
Subject: [ruby-changes:60131] 4e6bae47c8 (master): ext/-test-/cxxanyargs: prevent have_devel check
https://git.ruby-lang.org/ruby.git/commit/?id=4e6bae47c8 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?= <shyouhei@r...> Date: Thu, 13 Feb 2020 13:59:41 +0900 Subject: 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. diff --git a/ext/-test-/cxxanyargs/extconf.rb b/ext/-test-/cxxanyargs/extconf.rb index 08d8c83..f128984 100644 --- a/ext/-test-/cxxanyargs/extconf.rb +++ b/ext/-test-/cxxanyargs/extconf.rb @@ -2,12 +2,19 @@ https://github.com/ruby/ruby/blob/trunk/ext/-test-/cxxanyargs/extconf.rb#L2 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 https://github.com/ruby/ruby/blob/trunk/ext/-test-/cxxanyargs/extconf.rb#L28 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)} -- cgit v0.10.2 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/