1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

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.
This commit is contained in:
卜部昌平 2019-09-09 13:19:33 +09:00
parent 150f514e19
commit 89c5d5a64e
Notes: git 2019-09-09 21:28:05 +09:00

View file

@ -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