[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]