Finding ruby.h

Hi,

I'm building ruby extensions across many different OSes and architectures.

Does anyone know an easy way to find ruby.h on any given system?

I'm told that perl has a "perl -V" or @ENV variable which gives some paths I
can look through for perl.h.

Does Ruby have an equivalent? Is there a better way to find ruby.h?

Thanks,

-John

This works on a couple of my systems:

    require 'rbconfig'
    loc = File.join( Config::CONFIG['archdir'], 'ruby.h')
    if File.exist?( loc ) then
      puts loc
    else
      puts "Unable to find ruby.h in #{loc}"
    end

enjoy,

-jeremy

···

On Wed, Jan 14, 2009 at 02:20:00PM +0900, John Ky wrote:

Hi,

I'm building ruby extensions across many different OSes and architectures.

Does anyone know an easy way to find ruby.h on any given system?

I'm told that perl has a "perl -V" or @ENV variable which gives some paths I
can look through for perl.h.

Does Ruby have an equivalent? Is there a better way to find ruby.h?

--

Jeremy Hinegardner jeremy@hinegardner.org

John Ky a écrit :

I'm building ruby extensions across many different OSes and architectures.

Does anyone know an easy way to find ruby.h on any given system?

I'm told that perl has a "perl -V" or @ENV variable which gives some paths I
can look through for perl.h.

Does Ruby have an equivalent? Is there a better way to find ruby.h?

My first idea for this kind of problem would be to check GNU autoconf / configure.sh

LaP

John Ky wrote:

[Note: parts of this message were removed to make it a legal post.]

Hi,

I'm building ruby extensions across many different OSes and architectures.

Does anyone know an easy way to find ruby.h on any given system?

I'm told that perl has a "perl -V" or @ENV variable which gives some paths I
can look through for perl.h.

Does Ruby have an equivalent? Is there a better way to find ruby.h?

Thanks,

-John

I have used CMake to make a SWIG wrapper with success on Windows and
Linux. The FindRuby.cmake script does all of the hard work at locating
Ruby.h. CMake-2.6.2 (and possibly others) includes FindRuby.cmake and
can be used like so:

(Note: FindRuby.cmake doesn't export RUBY_FOUND, so I create that var
myself)

Main CMakeLists.txt:
...
SET(RUBY_FOUND FALSE)
FIND_PACKAGE( Ruby)
if(RUBY_INCLUDE_PATH AND RUBY_LIBRARY)
SET(RUBY_FOUND TRUE)
endif(RUBY_INCLUDE_PATH AND RUBY_LIBRARY)
...
if(RUBY_FOUND)
INCLUDE_DIRECTORIES( ${RUBY_INCLUDE_PATH})
endif(RUBY_FOUND)
...

CMakeLists.txt for each library in app:
...
if(RUBY_FOUND)
SET_SOURCE_FILES_PROPERTIES(RbDynamic.i PROPERTIES SWIG_FLAGS "-autorename")
SET_SOURCE_FILES_PROPERTIES(RbDynamic.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(RbDynamic.i PROPERTIES SWIG_FLAGS "-includeall")
SWIG_ADD_MODULE( rbdynamic ruby RbDynamic.i )
SWIG_LINK_LIBRARIES( rbdynamic ${RUBY_LIBRARY}
${MIIND_LIBRARY_PREFIX}dynamic
)
endif(RUBY_FOUND)
...

CMake is a doddle to use if you don't already know it, and is cross
platform (I've only used Windows and Linux). Check it out at www.cmake.org

Dave H.

Hi all,

Thanks everyone for your help. I've settled with this solution as I've
already got it working. Very much appreciated!

-John

···

On Wed, Jan 14, 2009 at 4:44 PM, Jeremy Hinegardner <jeremy@hinegardner.org>wrote:

On Wed, Jan 14, 2009 at 02:20:00PM +0900, John Ky wrote:
> Hi,
>
> I'm building ruby extensions across many different OSes and
architectures.
>
> Does anyone know an easy way to find ruby.h on any given system?
>
> I'm told that perl has a "perl -V" or @ENV variable which gives some
paths I
> can look through for perl.h.
>
> Does Ruby have an equivalent? Is there a better way to find ruby.h?

This works on a couple of my systems:

   require 'rbconfig'
   loc = File.join( Config::CONFIG['archdir'], 'ruby.h')
   if File.exist?( loc ) then
     puts loc
   else
     puts "Unable to find ruby.h in #{loc}"
   end

enjoy,

-jeremy

--

Jeremy Hinegardner jeremy@hinegardner.org