~ubuntu-branches/ubuntu/lucid/cmake/lucid

« back to all changes in this revision

Viewing changes to Modules/FindRuby.cmake

  • Committer: Bazaar Package Importer
  • Author(s): Artur Rona
  • Date: 2009-12-16 11:11:54 UTC
  • mfrom: (3.1.9 sid)
  • Revision ID: james.westby@ubuntu.com-20091216111154-6accvv6yq86h2hkc
Tags: 2.8.0-5ubuntu1
* Merge from debian testing (LP: #497349). Remaining changes:
  - Keep the Replaces: on cmake-data to cover the Kubuntu version from
    Jaunty in case someone decides to do an (unsupported) Jaunty->Lucid
    upgrade.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# - Find Ruby
2
2
# This module finds if Ruby is installed and determines where the include files
3
 
# and libraries are. It also determines what the name of the library is. This
 
3
# and libraries are. Ruby 1.8 and 1.9 are supported. The minimum required version 
 
4
# specified in the find_package() command is honored.
 
5
# It also determines what the name of the library is. This
4
6
# code sets the following variables:
5
7
#
6
 
#  RUBY_INCLUDE_PATH = path to where ruby.h can be found
7
8
#  RUBY_EXECUTABLE   = full path to the ruby binary
 
9
#  RUBY_INCLUDE_DIRS = include dirs to be used when using the ruby library
8
10
#  RUBY_LIBRARY      = full path to the ruby library
9
 
 
10
 
# Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
11
 
# See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
12
 
 
 
11
#  RUBY_VERSION      = the version of ruby which was found, e.g. "1.8.7"
 
12
#  RUBY_FOUND        = set to true if ruby ws found successfully
 
13
#
 
14
#  RUBY_INCLUDE_PATH = same as RUBY_INCLUDE_DIRS, only provided for compatibility reasons, don't use it
 
15
 
 
16
#=============================================================================
 
17
# Copyright 2004-2009 Kitware, Inc.
 
18
# Copyright 2008-2009 Alexander Neundorf <neundorf@kde.org>
 
19
#
 
20
# Distributed under the OSI-approved BSD License (the "License");
 
21
# see accompanying file Copyright.txt for details.
 
22
#
 
23
# This software is distributed WITHOUT ANY WARRANTY; without even the
 
24
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
25
# See the License for more information.
 
26
#=============================================================================
 
27
# (To distributed this file outside of CMake, substitute the full
 
28
#  License text for the above reference.)
13
29
 
14
30
#   RUBY_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'`
15
31
#   RUBY_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'`
17
33
#   RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"libdir"@:>@)'`
18
34
#   RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'`
19
35
 
20
 
FIND_PROGRAM(RUBY_EXECUTABLE NAMES ruby ruby1.8 ruby18 ruby1.9 ruby19)
21
 
 
22
 
 
23
 
IF(RUBY_EXECUTABLE  AND NOT  RUBY_ARCH_DIR)
 
36
# uncomment the following line to get debug output for this file
 
37
# SET(_RUBY_DEBUG_OUTPUT TRUE)
 
38
 
 
39
# Determine the list of possible names of the ruby executable depending
 
40
# on which version of ruby is required
 
41
SET(_RUBY_POSSIBLE_EXECUTABLE_NAMES ruby)
 
42
 
 
43
# if 1.9 is required, don't look for ruby18 and ruby1.8, default to version 1.8
 
44
IF(Ruby_FIND_VERSION_MAJOR  AND  Ruby_FIND_VERSION_MINOR)
 
45
   SET(Ruby_FIND_VERSION_SHORT_NODOT "${Ruby_FIND_VERSION_MAJOR}${RUBY_FIND_VERSION_MINOR}")
 
46
ELSE(Ruby_FIND_VERSION_MAJOR  AND  Ruby_FIND_VERSION_MINOR)
 
47
   SET(Ruby_FIND_VERSION_SHORT_NODOT "18")
 
48
ENDIF(Ruby_FIND_VERSION_MAJOR  AND  Ruby_FIND_VERSION_MINOR)
 
49
 
 
50
SET(_RUBY_POSSIBLE_EXECUTABLE_NAMES ${_RUBY_POSSIBLE_EXECUTABLE_NAMES} ruby1.9 ruby19)
 
51
 
 
52
# if we want a version below 1.9, also look for ruby 1.8
 
53
IF("${Ruby_FIND_VERSION_SHORT_NODOT}" VERSION_LESS "19")
 
54
   SET(_RUBY_POSSIBLE_EXECUTABLE_NAMES ${_RUBY_POSSIBLE_EXECUTABLE_NAMES} ruby1.8 ruby18)
 
55
ENDIF("${Ruby_FIND_VERSION_SHORT_NODOT}" VERSION_LESS "19")
 
56
 
 
57
FIND_PROGRAM(RUBY_EXECUTABLE NAMES ${_RUBY_POSSIBLE_EXECUTABLE_NAMES})
 
58
 
 
59
 
 
60
IF(RUBY_EXECUTABLE  AND NOT  RUBY_MAJOR_VERSION)
 
61
  # query the ruby version
 
62
   EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['MAJOR']"
 
63
      OUTPUT_VARIABLE RUBY_VERSION_MAJOR)
 
64
 
 
65
   EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['MINOR']"
 
66
      OUTPUT_VARIABLE RUBY_VERSION_MINOR)
 
67
 
 
68
   EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['TEENY']"
 
69
      OUTPUT_VARIABLE RUBY_VERSION_PATCH)
 
70
 
 
71
   # query the different directories
24
72
   EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['archdir']"
25
73
      OUTPUT_VARIABLE RUBY_ARCH_DIR)
26
74
 
 
75
   EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['arch']"
 
76
      OUTPUT_VARIABLE RUBY_ARCH)
 
77
 
 
78
   EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['rubyhdrdir']"
 
79
      OUTPUT_VARIABLE RUBY_HDR_DIR)
 
80
 
27
81
   EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['libdir']"
28
82
      OUTPUT_VARIABLE RUBY_POSSIBLE_LIB_DIR)
29
83
 
50
104
   ENDIF(RUBY_HAS_VENDOR_RUBY)
51
105
 
52
106
   # save the results in the cache so we don't have to run ruby the next time again
53
 
   SET(RUBY_ARCH_DIR         ${RUBY_ARCH_DIR}         CACHE PATH "The Ruby arch dir")
54
 
   SET(RUBY_POSSIBLE_LIB_DIR ${RUBY_POSSIBLE_LIB_DIR} CACHE PATH "The Ruby lib dir")
55
 
   SET(RUBY_RUBY_LIB_DIR     ${RUBY_RUBY_LIB_DIR}     CACHE PATH "The Ruby ruby-lib dir")
56
 
   SET(RUBY_SITEARCH_DIR     ${RUBY_SITEARCH_DIR}     CACHE PATH "The Ruby site arch dir")
57
 
   SET(RUBY_SITELIB_DIR      ${RUBY_SITELIB_DIR}      CACHE PATH "The Ruby site lib dir")
58
 
   SET(RUBY_HAS_VENDOR_RUBY  ${RUBY_HAS_VENDOR_RUBY}  CACHE BOOL "Vendor Ruby is available")
59
 
   SET(RUBY_VENDORARCH_DIR   ${RUBY_VENDORARCH_DIR}   CACHE PATH "The Ruby vendor arch dir")
60
 
   SET(RUBY_VENDORLIB_DIR    ${RUBY_VENDORLIB_DIR}    CACHE PATH "The Ruby vendor lib dir")
61
 
 
62
 
ENDIF(RUBY_EXECUTABLE  AND NOT  RUBY_ARCH_DIR)
63
 
 
64
 
# for compatibility
65
 
SET(RUBY_POSSIBLE_LIB_PATH ${RUBY_POSSIBLE_LIB_DIR})
66
 
SET(RUBY_RUBY_LIB_PATH ${RUBY_RUBY_LIB_DIR})
67
 
 
68
 
 
69
 
FIND_PATH(RUBY_INCLUDE_PATH
 
107
   SET(RUBY_VERSION_MAJOR    ${RUBY_VERSION_MAJOR}    CACHE PATH "The Ruby major version" FORCE)
 
108
   SET(RUBY_VERSION_MINOR    ${RUBY_VERSION_MINOR}    CACHE PATH "The Ruby minor version" FORCE)
 
109
   SET(RUBY_VERSION_PATCH    ${RUBY_VERSION_PATCH}    CACHE PATH "The Ruby patch version" FORCE)
 
110
   SET(RUBY_ARCH_DIR         ${RUBY_ARCH_DIR}         CACHE PATH "The Ruby arch dir" FORCE)
 
111
   SET(RUBY_HDR_DIR          ${RUBY_HDR_DIR}          CACHE PATH "The Ruby header dir (1.9)" FORCE)
 
112
   SET(RUBY_POSSIBLE_LIB_DIR ${RUBY_POSSIBLE_LIB_DIR} CACHE PATH "The Ruby lib dir" FORCE)
 
113
   SET(RUBY_RUBY_LIB_DIR     ${RUBY_RUBY_LIB_DIR}     CACHE PATH "The Ruby ruby-lib dir" FORCE)
 
114
   SET(RUBY_SITEARCH_DIR     ${RUBY_SITEARCH_DIR}     CACHE PATH "The Ruby site arch dir" FORCE)
 
115
   SET(RUBY_SITELIB_DIR      ${RUBY_SITELIB_DIR}      CACHE PATH "The Ruby site lib dir" FORCE)
 
116
   SET(RUBY_HAS_VENDOR_RUBY  ${RUBY_HAS_VENDOR_RUBY}  CACHE BOOL "Vendor Ruby is available" FORCE)
 
117
   SET(RUBY_VENDORARCH_DIR   ${RUBY_VENDORARCH_DIR}   CACHE PATH "The Ruby vendor arch dir" FORCE)
 
118
   SET(RUBY_VENDORLIB_DIR    ${RUBY_VENDORLIB_DIR}    CACHE PATH "The Ruby vendor lib dir" FORCE)
 
119
 
 
120
   MARK_AS_ADVANCED(
 
121
     RUBY_ARCH_DIR
 
122
     RUBY_ARCH
 
123
     RUBY_HDR_DIR
 
124
     RUBY_POSSIBLE_LIB_DIR
 
125
     RUBY_RUBY_LIB_DIR
 
126
     RUBY_SITEARCH_DIR
 
127
     RUBY_SITELIB_DIR
 
128
     RUBY_HAS_VENDOR_RUBY
 
129
     RUBY_VENDORARCH_DIR
 
130
     RUBY_VENDORLIB_DIR
 
131
     RUBY_VERSION_MAJOR
 
132
     RUBY_VERSION_MINOR
 
133
     RUBY_VERSION_PATCH
 
134
     )
 
135
ENDIF(RUBY_EXECUTABLE  AND NOT  RUBY_MAJOR_VERSION)
 
136
 
 
137
# In case RUBY_EXECUTABLE could not be executed (e.g. cross compiling) 
 
138
# try to detect which version we found. This is not too good.
 
139
IF(NOT RUBY_VERSION_MAJOR)
 
140
   # by default assume 1.8.0
 
141
   SET(RUBY_VERSION_MAJOR 1)
 
142
   SET(RUBY_VERSION_MINOR 8)
 
143
   SET(RUBY_VERSION_PATCH 0)
 
144
   # check whether we found 1.9.x
 
145
   IF(${RUBY_EXECUTABLE} MATCHES "ruby1.?9"  OR  RUBY_HDR_DIR)
 
146
      SET(RUBY_VERSION_MAJOR 1)
 
147
      SET(RUBY_VERSION_MINOR 9)
 
148
   ENDIF(${RUBY_EXECUTABLE} MATCHES "ruby1.?9"  OR  RUBY_HDR_DIR)
 
149
ENDIF(NOT RUBY_VERSION_MAJOR)
 
150
 
 
151
 
 
152
SET(RUBY_VERSION "${RUBY_VERSION_MAJOR}.${RUBY_VERSION_MINOR}.${RUBY_VERSION_PATCH}")
 
153
SET(_RUBY_VERSION_SHORT "${RUBY_VERSION_MAJOR}.${RUBY_VERSION_MINOR}")
 
154
SET(_RUBY_VERSION_SHORT_NODOT "${RUBY_VERSION_MAJOR}${RUBY_VERSION_MINOR}")
 
155
 
 
156
# Now we know which version we found
 
157
IF(Ruby_FIND_VERSION)
 
158
   IF(${RUBY_VERSION}  VERSION_LESS  ${Ruby_FIND_VERSION})
 
159
      # force running ruby the next time again
 
160
      SET(RUBY_VERSION_MAJOR    ""    CACHE PATH "The Ruby major version" FORCE)
 
161
      IF(Ruby_FIND_REQUIRED)
 
162
         MESSAGE(FATAL_ERROR "Ruby version ${Ruby_FIND_VERSION} required, but only version ${RUBY_VERSION} found.")
 
163
      ELSE(Ruby_FIND_REQUIRED)
 
164
         IF(NOT Ruby_FIND_QUIETLY)
 
165
            MESSAGE(STATUS "Ruby version ${Ruby_FIND_VERSION} required, but only version ${RUBY_VERSION} found.")
 
166
         ENDIF(NOT Ruby_FIND_QUIETLY)
 
167
         RETURN()
 
168
      ENDIF(Ruby_FIND_REQUIRED)
 
169
   ENDIF(${RUBY_VERSION}  VERSION_LESS  ${Ruby_FIND_VERSION})
 
170
ENDIF(Ruby_FIND_VERSION)
 
171
 
 
172
FIND_PATH(RUBY_INCLUDE_DIR
70
173
   NAMES ruby.h
71
 
   PATHS
 
174
   HINTS
 
175
   ${RUBY_HDR_DIR}
72
176
   ${RUBY_ARCH_DIR}
73
 
  /usr/lib/ruby/1.8/i586-linux-gnu/ )
74
 
 
75
 
# search the ruby library, the version for MSVC can have the "msvc" prefix and the "static" suffix
76
 
FIND_LIBRARY(RUBY_LIBRARY
77
 
  NAMES ruby ruby1.8 ruby1.9
78
 
        msvcrt-ruby18 msvcrt-ruby19 msvcrt-ruby18-static msvcrt-ruby19-static
79
 
  PATHS ${RUBY_POSSIBLE_LIB_DIR}
80
 
  )
 
177
   /usr/lib/ruby/${_RUBY_VERSION_SHORT}/i586-linux-gnu/ )
 
178
 
 
179
SET(RUBY_INCLUDE_DIRS ${RUBY_INCLUDE_DIR} )
 
180
 
 
181
# if ruby > 1.8 is required or if ruby > 1.8 was found, search for the config.h dir
 
182
IF( ${Ruby_FIND_VERSION_SHORT_NODOT} GREATER 18  OR  ${_RUBY_VERSION_SHORT_NODOT} GREATER 18  OR  RUBY_HDR_DIR)
 
183
   message(STATUS "lookign for config.h")
 
184
   FIND_PATH(RUBY_CONFIG_INCLUDE_DIR
 
185
     NAMES ruby/config.h  config.h
 
186
     HINTS 
 
187
     ${RUBY_HDR_DIR}/${RUBY_ARCH}
 
188
     ${RUBY_ARCH_DIR} 
 
189
     )
 
190
 
 
191
   SET(RUBY_INCLUDE_DIRS ${RUBY_INCLUDE_DIRS} ${RUBY_CONFIG_INCLUDE_DIR} )
 
192
ENDIF( ${Ruby_FIND_VERSION_SHORT_NODOT} GREATER 18  OR  ${_RUBY_VERSION_SHORT_NODOT} GREATER 18  OR  RUBY_HDR_DIR)
 
193
 
 
194
 
 
195
# Determine the list of possible names for the ruby library
 
196
SET(_RUBY_POSSIBLE_LIB_NAMES ruby ruby-static ruby${_RUBY_VERSION_SHORT})
 
197
 
 
198
IF(WIN32)
 
199
   SET( _RUBY_MSVC_RUNTIME "" )
 
200
   IF( MSVC60 )
 
201
     SET( _RUBY_MSVC_RUNTIME "60" )
 
202
   ENDIF( MSVC60 )
 
203
   IF( MSVC70 )
 
204
     SET( _RUBY_MSVC_RUNTIME "70" )
 
205
   ENDIF( MSVC70 )
 
206
   IF( MSVC71 )
 
207
     SET( _RUBY_MSVC_RUNTIME "71" )
 
208
   ENDIF( MSVC71 )
 
209
   IF( MSVC80 )
 
210
     SET( _RUBY_MSVC_RUNTIME "80" )
 
211
   ENDIF( MSVC80 )
 
212
   IF( MSVC90 )
 
213
     SET( _RUBY_MSVC_RUNTIME "90" )
 
214
   ENDIF( MSVC90 )
 
215
 
 
216
   LIST(APPEND _RUBY_POSSIBLE_LIB_NAMES
 
217
               "msvcr${_RUBY_MSVC_RUNTIME}-ruby${RUBY_NODOT_VERSION}"
 
218
               "msvcr${_RUBY_MSVC_RUNTIME}-ruby${RUBY_NODOT_VERSION}-static" 
 
219
               "msvcrt-ruby${RUBY_NODOT_VERSION}"
 
220
               "msvcrt-ruby${RUBY_NODOT_VERSION}-static" )
 
221
ENDIF(WIN32)
 
222
 
 
223
FIND_LIBRARY(RUBY_LIBRARY NAMES ${_RUBY_POSSIBLE_LIB_NAMES} HINTS ${RUBY_POSSIBLE_LIB_DIR} )
 
224
 
 
225
INCLUDE(FindPackageHandleStandardArgs)
 
226
SET(_RUBY_REQUIRED_VARS RUBY_EXECUTABLE RUBY_INCLUDE_DIR RUBY_LIBRARY)
 
227
IF(_RUBY_VERSION_SHORT_NODOT GREATER 18)
 
228
   LIST(APPEND _RUBY_REQUIRED_VARS RUBY_CONFIG_INCLUDE_DIR)
 
229
ENDIF(_RUBY_VERSION_SHORT_NODOT GREATER 18)
 
230
 
 
231
IF(_RUBY_DEBUG_OUTPUT)
 
232
   MESSAGE(STATUS "--------FindRuby.cmake debug------------")
 
233
   MESSAGE(STATUS "_RUBY_POSSIBLE_EXECUTABLE_NAMES: ${_RUBY_POSSIBLE_EXECUTABLE_NAMES}")
 
234
   MESSAGE(STATUS "_RUBY_POSSIBLE_LIB_NAMES: ${_RUBY_POSSIBLE_LIB_NAMES}")
 
235
   MESSAGE(STATUS "RUBY_ARCH_DIR: ${RUBY_ARCH_DIR}")
 
236
   MESSAGE(STATUS "RUBY_HDR_DIR: ${RUBY_HDR_DIR}")
 
237
   MESSAGE(STATUS "RUBY_POSSIBLE_LIB_DIR: ${RUBY_POSSIBLE_LIB_DIR}")
 
238
   MESSAGE(STATUS "Found RUBY_VERSION: \"${RUBY_VERSION}\" , short: \"${_RUBY_VERSION_SHORT}\", nodot: \"${_RUBY_VERSION_SHORT_NODOT}\"")
 
239
   MESSAGE(STATUS "_RUBY_REQUIRED_VARS: ${_RUBY_REQUIRED_VARS}")
 
240
   MESSAGE(STATUS "--------------------")
 
241
ENDIF(_RUBY_DEBUG_OUTPUT)
 
242
 
 
243
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ruby  DEFAULT_MSG  ${_RUBY_REQUIRED_VARS})
81
244
 
82
245
MARK_AS_ADVANCED(
83
246
  RUBY_EXECUTABLE
84
247
  RUBY_LIBRARY
85
 
  RUBY_INCLUDE_PATH
86
 
  RUBY_ARCH_DIR
87
 
  RUBY_POSSIBLE_LIB_DIR
88
 
  RUBY_RUBY_LIB_DIR
89
 
  RUBY_SITEARCH_DIR
90
 
  RUBY_SITELIB_DIR
91
 
  RUBY_HAS_VENDOR_RUBY
92
 
  RUBY_VENDORARCH_DIR
93
 
  RUBY_VENDORLIB_DIR
 
248
  RUBY_INCLUDE_DIR
 
249
  RUBY_CONFIG_INCLUDE_DIR
94
250
  )
 
251
 
 
252
# Set some variables for compatibility with previous version of this file
 
253
SET(RUBY_POSSIBLE_LIB_PATH ${RUBY_POSSIBLE_LIB_DIR})
 
254
SET(RUBY_RUBY_LIB_PATH ${RUBY_RUBY_LIB_DIR})
 
255
SET(RUBY_INCLUDE_PATH ${RUBY_INCLUDE_DIRS})