Project

General

Profile

Bug #17578

Updated by shyouhei (Shyouhei Urabe) over 1 year ago

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 ``` cpp 
 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 ``` cpp 
 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? 

Back