BASIS  r3148
FindJythonInterp.cmake
Go to the documentation of this file.
00001 ##############################################################################
00002 # @file  FindJythonInterp.cmake
00003 # @brief Find Jython interpreter.
00004 #
00005 # @par Output variables:
00006 # <table border="0">
00007 #   <tr>
00008 #     @tp @b JythonInterp_FOUND @endtp
00009 #     <td>Whether the Jython executable was found.</td>
00010 #   </tr>
00011 #   <tr>
00012 #     @tp @b JYTHON_EXECUTABLE @endtp
00013 #     <td>Path to the Jython interpreter.</td>
00014 #   </tr>
00015 #   <tr>
00016 #     @tp @b JYTHON_VERSION_STRING @endtp
00017 #     <td>Jython version found, e.g. 2.5.2.</td>
00018 #   </tr>
00019 #   <tr>
00020 #     @tp @b JYTHON_VERSION_MAJOR @endtp
00021 #     <td>Jython major version found, e.g. 2.</td>
00022 #   </tr>
00023 #   <tr>
00024 #     @tp @b JYTHON_VERSION_MINOR @endtp
00025 #     <td>Jython minor version found, e.g. 5.</td>
00026 #   </tr>
00027 #   <tr>
00028 #     @tp @b JYTHON_VERSION_PATCH @endtp
00029 #     <td>Jython patch version found, e.g. 2.</td>
00030 #   </tr>
00031 # </table>
00032 #
00033 # @ingroup CMakeFindModules
00034 ##############################################################################
00035 
00036 # find jython executable
00037 find_program (JYTHON_EXECUTABLE NAMES jython)
00038 
00039 # determine jython version string
00040 if (JYTHON_EXECUTABLE)
00041   execute_process (COMMAND "${JYTHON_EXECUTABLE}" -c "import sys; sys.stdout.write(';'.join([str(x) for x in sys.version_info[:3]]))"
00042                    OUTPUT_VARIABLE _JYTHON_VERSION
00043                    RESULT_VARIABLE _JYTHON_VERSION_RESULT
00044                    ERROR_QUIET)
00045   if (_JYTHON_VERSION_RESULT EQUAL 0)
00046     string (REPLACE ";" "." JYTHON_VERSION_STRING "${_JYTHON_VERSION}")
00047     list (GET _JYTHON_VERSION 0 JYTHON_VERSION_MAJOR)
00048     list (GET _JYTHON_VERSION 1 JYTHON_VERSION_MINOR)
00049     list (GET _JYTHON_VERSION 2 JYTHON_VERSION_PATCH)
00050     if (JYTHON_VERSION_PATCH EQUAL 0)
00051       # it's called "Jython 2.5", not "2.5.0"
00052       string (REGEX REPLACE "\\.0$" "" JYTHON_VERSION_STRING "${JYTHON_VERSION_STRING}")
00053     endif()
00054   else ()
00055     # sys.version predates sys.version_info, so use that
00056     execute_process(COMMAND "${JYTHON_EXECUTABLE}" -c "import sys; sys.stdout.write(sys.version)"
00057                     OUTPUT_VARIABLE _JYTHON_VERSION
00058                     RESULT_VARIABLE _JYTHON_VERSION_RESULT
00059                     ERROR_QUIET)
00060     if (_JYTHON_VERSION_RESULT EQUAL 0)
00061       string (REGEX REPLACE " .*" "" JYTHON_VERSION_STRING "${_JYTHON_VERSION}")
00062       string (REGEX REPLACE "^([0-9]+)\\.[0-9]+.*" "\\1" JYTHON_VERSION_MAJOR "${JYTHON_VERSION_STRING}")
00063       string (REGEX REPLACE "^[0-9]+\\.([0-9])+.*" "\\1" JYTHON_VERSION_MINOR "${JYTHON_VERSION_STRING}")
00064       if (JYTHON_VERSION_STRING MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+.*")
00065           string (REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" JYTHON_VERSION_PATCH "${JYTHON_VERSION_STRING}")
00066       else ()
00067           set (JYTHON_VERSION_PATCH "0")
00068       endif()
00069     else ()
00070       set (JYTHON_VERSION_STRING)
00071       set (JYTHON_VERSION_MAJOR)
00072       set (JYTHON_VERSION_MINOR)
00073       set (JYTHON_VERSION_PATCH)
00074     endif ()
00075   endif ()
00076   unset (_JYTHON_VERSION)
00077   unset (_JYTHON_VERSION_RESULT)
00078 endif ()
00079 
00080 # handle the QUIETLY and REQUIRED arguments and set Jython_FOUND to TRUE if
00081 # all listed variables are TRUE
00082 include (FindPackageHandleStandardArgs)
00083 FIND_PACKAGE_HANDLE_STANDARD_ARGS (JythonInterp REQUIRED_VARS JYTHON_EXECUTABLE VERSION_VAR JYTHON_VERSION_STRING)
00084 
00085 if (DEFINED JYTHONINTERP_FOUND)
00086   set (JythonInterp_FOUND "${JYTHONINTERP_FOUND}")
00087 elseif (NOT DEFINED JythonInterp_FOUND)
00088   set (JythonInterp_FOUND FALSE)
00089 endif ()
00090 
00091 mark_as_advanced (JYTHON_EXECUTABLE)