What needs to change in extconf.rb to link against a C++ compiler? If
I set CONFTEST_C=“conftest.cxx”, then gcc is smart enough to build it
with g++. However, that is not the case for C compilers from Sun, HP,
IBM, etc. If Ruby was built with the vendor C compiler, what changes
need to be made to extconf.rb so C++ tests use the corresponding
vendor C++ compiler?
On Oct 31, 2006, at 9:05 AM, Albert Chin wrote:
What needs to change in extconf.rb to link against a C++ compiler? If
I set CONFTEST_C=“conftest.cxx”, then gcc is smart enough to build it
with g++. However, that is not the case for C compilers from Sun, HP,
IBM, etc. If Ruby was built with the vendor C compiler, what changes
need to be made to extconf.rb so C++ tests use the corresponding
vendor C++ compiler?
It is indeed a huge problem. I’ve found other way: I set CONFIG
[“CPP”], then everything
goes ok. But this hack breaks portability of extconf.rb
On Tue, Oct 31, 2006 at 03:05:05PM +0900, Albert Chin wrote:
What needs to change in extconf.rb to link against a C++ compiler? If
I set CONFTEST_C=“conftest.cxx”, then gcc is smart enough to build it
with g++. However, that is not the case for C compilers from Sun, HP,
IBM, etc. If Ruby was built with the vendor C compiler, what changes
need to be made to extconf.rb so C++ tests use the corresponding
vendor C++ compiler?
There is a rule in the generated makefile for building .cxx files using
$(CXX). Ruby 1.9 sets this variable; earlier versions seem to rely on
it getting set by make.
If CONFIG[‘CXX’] is unset, you could use find_executable to find a
binary with the same name as a common C++ compiler (autoconf seems to
search $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC). Then
open the Makefile for writing and add the line:
CXX=#{your_cxx_binary}
Paul
On Fri, Nov 03, 2006 at 12:15:13AM +0900, Albert Chin wrote:
But that wouldn’t help run the C++ compiler during extconf.rb. How
would you run HP’s aCC C++ compiler to test for a symbol during
extconf.rb, for example?
You could redefine try_link (or TRY_LINK) and try_compile, but that will
use the C++ compiler for everything, which may not be what you want.
Paul
Paul B. [email protected] wrote:
it getting set by make.
If CONFIG[‘CXX’] is unset, you could use find_executable to find a
binary with the same name as a common C++ compiler (autoconf seems to
search $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC). Then
open the Makefile for writing and add the line:CXX=#{your_cxx_binary}
But that wouldn’t help run the C++ compiler during extconf.rb. How
would you run HP’s aCC C++ compiler to test for a symbol during
extconf.rb, for example?