From: cfis@... Date: 2021-01-26T08:45:39+00:00 Subject: [ruby-core:102248] [Ruby master Bug#17578] mkmf experimental C++ Support Issue #17578 has been updated by cfis (Charlie Savage). Thanks for the quick response. I think that is different. try_cpp calls cpp_command: ``` ruby def try_cpp(src, opt="", *opts, &b) try_do(src, cpp_command(CPPOUTFILE, opt), *opts, &b) ... end ``` And cpp_command is the function that needs to be overridden. ---------------------------------------- Bug #17578: mkmf experimental C++ Support https://bugs.ruby-lang.org/issues/17578#change-90100 * Author: cfis (Charlie Savage) * Status: Assigned * Priority: Normal * Assignee: nobu (Nobuyoshi Nakada) * ruby -v: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x64-mingw32] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- I've been working on the Rice gem (https://github.com/jasonroelofs/rice) that wraps C++ code for use in Ruby. I noticed that some c++ support was added to mkmf for Ruby 2.7. However, if I try to use it find a header it fails to work. For example: ```ruby find_header('rice.hpp') ``` The reason is the conftest uses gcc -E instead of g++ -E. To fix that requires overlading the cpp_command to support C++. This the fix I have put in that works: ```ruby MakeMakefile['C++'].module_eval do def cpp_command(outfile, opt="") conf = cc_config(opt) if $universal and (arch_flag = conf['ARCH_FLAG']) and !arch_flag.empty? conf['ARCH_FLAG'] = arch_flag.gsub(/(?:\G|\s)-arch\s+\S+/, '') end RbConfig::expand("$(CXX) -E #$INCFLAGS #$CPPFLAGS #$CFLAGS #{opt} #{CONFTEST_CXX} #{outfile}", conf) end end ``` The two changes over the default method are: $(CC) -> $(CXX) -E #{CONFTEST_c} -> #{CONFTEST_cxx} Could this change be merged in? I can provide a patch file if you would like. Last, it wasn't obvious to me how to activate the C++ support in mkfm. I ended up doing this: ``` ruby include MakeMakefile['C++'] ``` Is that correct? -- https://bugs.ruby-lang.org/ Unsubscribe: