diff options
author | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-09-09 13:19:33 +0900 |
---|---|---|
committer | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-09-09 21:27:40 +0900 |
commit | 89c5d5a64e12cea23b230913b79c3d499bf30b12 (patch) | |
tree | 6acdf6b1137c19565ca03d1a23a5bc3925fb0d1c | |
parent | 150f514e19125ce8239602dc9266c7f68166d671 (diff) | |
download | ruby-89c5d5a64e12cea23b230913b79c3d499bf30b12.tar.gz |
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.
-rw-r--r-- | ext/-test-/cxxanyargs/extconf.rb | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/ext/-test-/cxxanyargs/extconf.rb b/ext/-test-/cxxanyargs/extconf.rb index 6241e836aa..0c5344a1e5 100644 --- a/ext/-test-/cxxanyargs/extconf.rb +++ b/ext/-test-/cxxanyargs/extconf.rb @@ -1,2 +1,41 @@ -# 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 |