mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
4e6bae47c8
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.
42 lines
1.1 KiB
Ruby
42 lines
1.1 KiB
Ruby
# frozen_string_literal: false
|
|
|
|
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 conftest1[SIZEOF_LONG == sizeof(long) ? 1 : -1];
|
|
typedef int conftest2[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
|
|
|
|
cxx.instance_variable_set(:'@have_devel', ok)
|
|
|
|
if ok
|
|
$srcs = %w[cxxanyargs.cpp]
|
|
failures = Dir.glob($srcdir + "/failure*.cpp").map {|n| File.basename(n)}
|
|
$cleanfiles << "$(FAILURES:.cpp=.failed)"
|
|
create_makefile("-test-/cxxanyargs") do |mk|
|
|
mk << "FAILURES #{['=', failures].join(' ')}\n"
|
|
mk << ".IGNORE: $(FAILURES:.cpp=.o)\n" unless $mswin
|
|
mk
|
|
end
|
|
end
|