Browse Source

ENH: apply patch so that the config values from ruby are used to determine
the additional locations (see #3297)

Alex

Alexander Neundorf 19 years ago
parent
commit
d54a7bfecf
1 changed files with 40 additions and 20 deletions
  1. 40 20
      Modules/FindRuby.cmake

+ 40 - 20
Modules/FindRuby.cmake

@@ -1,35 +1,55 @@
-# - Find ruby
-# This module finds if RUBY is installed and determines where the include files
+# - Find Ruby
+# This module finds if Ruby is installed and determines where the include files
 # and libraries are. It also determines what the name of the library is. This
 # code sets the following variables:
 #
 #  RUBY_INCLUDE_PATH = path to where ruby.h can be found
 #  RUBY_EXECUTABLE   = full path to the ruby binary
-#
 
-SET(RUBY_POSSIBLE_INCLUDE_PATHS
-  /usr/lib/ruby/1.8/i386-linux
-  )
+# Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
+# See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
 
-SET(RUBY_POSSIBLE_LIB_PATHS
-  /usr/lib
-  )
 
-FIND_PATH(RUBY_INCLUDE_PATH ruby.h
-  ${RUBY_POSSIBLE_INCLUDE_PATHS})
+if(RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
+   # Already in cache, be silent
+   set(RUBY_FIND_QUIETLY TRUE)
+endif (RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
+
+#   RUBY_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'`
+#   RUBY_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'`
+#   RUBY_SITEDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitelibdir"@:>@)'`
+#   RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"libdir"@:>@)'`
+#   RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
+
+FIND_PROGRAM(RUBY_EXECUTABLE NAMES ruby ruby1.8 ruby18 )
+
+EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['archdir']"
+   OUTPUT_VARIABLE RUBY_ARCH_DIR)
+
+
+EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['libdir']"
+   OUTPUT_VARIABLE RUBY_POSSIBLE_LIB_PATH)
+
+EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['rubylibdir']"
+   OUTPUT_VARIABLE RUBY_RUBY_LIB_PATH)
+
+# remove the new lines from the output by replacing them with empty strings
+STRING(REPLACE "\n" "" RUBY_ARCH_DIR "${RUBY_ARCH_DIR}")
+STRING(REPLACE "\n" "" RUBY_POSSIBLE_LIB_PATH "${RUBY_POSSIBLE_LIB_PATH}")
+STRING(REPLACE "\n" "" RUBY_RUBY_LIB_PATH "${RUBY_RUBY_LIB_PATH}")
+
+
+FIND_PATH(RUBY_INCLUDE_PATH
+   NAMES ruby.h
+   PATHS
+   ${RUBY_ARCH_DIR}
+  /usr/lib/ruby/1.8/i586-linux-gnu/ )
 
 FIND_LIBRARY(RUBY_LIBRARY
-  NAMES ruby1.8
-  PATHS ${RUBY_POSSIBLE_LIB_PATHS}
+  NAMES ruby
+  PATHS ${RUBY_POSSIBLE_LIB_PATH}
   )
 
-FIND_PROGRAM(RUBY_EXECUTABLE
-  NAMES ruby1.8
-  PATHS
-  /usr/bin
-  /usr/local/bin
-)
-
 MARK_AS_ADVANCED(
   RUBY_EXECUTABLE
   RUBY_LIBRARY