Compiling C++ module for Ruby

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?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs