summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/-test-/cxxanyargs/extconf.rb43
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