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

ruby-changes:57683

From: =E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3 <ko1@a...>
Date: Mon, 9 Sep 2019 21:28:02 +0900 (JST)
Subject: [ruby-changes:57683] 89c5d5a64e (master): add minimaist C++ check

https://git.ruby-lang.org/ruby.git/commit/?id=89c5d5a64e

From 89c5d5a64e12cea23b230913b79c3d499bf30b12 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: Mon, 9 Sep 2019 13:19:33 +0900
Subject: add minimaist C++ check

This is a test extension so we basically want test failures rather
than a configure breakage but if there is no C++ compiler, we need
no test at all because there will be no chance for the tested
header file to be used later.

This makes it possible to build the ruby binary without any C++
compiler installed in a build environment.

diff --git a/ext/-test-/cxxanyargs/extconf.rb b/ext/-test-/cxxanyargs/extconf.rb
index 6241e83..0c5344a 100644
--- a/ext/-test-/cxxanyargs/extconf.rb
+++ b/ext/-test-/cxxanyargs/extconf.rb
@@ -1,2 +1,41 @@ https://github.com/ruby/ruby/blob/trunk/ext/-test-/cxxanyargs/extconf.rb#L1
-# frozen_string_literal: true
-create_makefile("-test-/cxxanyargs")
+# frozen_string_literal: false
+
+cfg = RbConfig::CONFIG.merge(
+  'hdrdir'      => $hdrdir.quote,
+  'src'         => "#{CONFTEST_C}",
+  'arch_hdrdir' => $arch_hdrdir.quote,
+  'top_srcdir'  => $top_srcdir.quote,
+  'CC'          => RbConfig::CONFIG['CXX'],
+  'CFLAGS'      => RbConfig::CONFIG['CXXFLAGS'],
+  'INCFLAGS'    => "#$INCFLAGS",
+  'CPPFLAGS'    => "#$CPPFLAGS",
+  'ARCH_FLAG'   => "#$ARCH_FLAG",
+  'LDFLAGS'     => "#$LDFLAGS",
+  'LOCAL_LIBS'  => "#$LOCAL_LIBS",
+  'LIBS'        => "#$LIBS"
+)
+cxx = RbConfig::expand(TRY_LINK.dup, cfg)
+src = create_tmpsrc(<<~'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];
+  }
+
+  int
+  main(int argc, const char** argv)
+  {
+      return !!argv[argc];
+  }
+begin
+  # We are wiping ruby.h from the source because that header file is the
+  # subject we are going to test in this extension library.
+  x.sub! %<#include "ruby.h">, ''
+end
+
+begin
+  create_makefile("-test-/cxxanyargs") if xsystem(cxx)
+ensure
+  log_src src
+end
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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