Forum: Ruby Finding ruby.h

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
John Ky (Guest)
on 2009-01-14 07:21
(Received via mailing list)
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
Jeremy H. (Guest)
on 2009-01-14 07:46
(Received via mailing list)
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
LaP (Guest)
on 2009-01-14 19:02
(Received via mailing list)
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
Dave Harrison (Guest)
on 2009-01-14 19:40
(Received via mailing list)
John Ky wrote:
>
> 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.
John Ky (Guest)
on 2009-01-15 06:54
(Received via mailing list)
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 H.
This topic is locked and can not be replied to.