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)