[cmake-commits] hoffman committed FindSWIG.cmake 1.9 1.10
cmake-commits at cmake.org
cmake-commits at cmake.org
Thu Jan 10 16:22:54 EST 2008
Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv4239
Modified Files:
FindSWIG.cmake
Log Message:
BUG: fix for bug 4145 much better findSwig
Index: FindSWIG.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindSWIG.cmake,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- FindSWIG.cmake 14 Dec 2005 18:51:08 -0000 1.9
+++ FindSWIG.cmake 10 Jan 2008 21:22:52 -0000 1.10
@@ -3,46 +3,54 @@
# SWIG_FOUND - set to true if SWIG is found
# SWIG_DIR - the directory where swig is installed
# SWIG_EXECUTABLE - the path to the swig executable
+# SWIG_VERSION - the version number of the swig executable
+#
+# All informations are collected from the SWIG_EXECUTABLE so the
+# version to be found can be changed from the command line by
+# means of setting SWIG_EXECUTABLE
+#
-SET(SWIG_FOUND FOOBAR)
-FIND_PATH(SWIG_DIR
- SWIGConfig.cmake
- /usr/share/swig1.3
- /usr/lib/swig1.3
- /usr/local/share/swig1.3)
-FIND_PATH(SWIG_DIR
- swig.swg
- /usr/share/swig1.3
- /usr/lib/swig1.3
- /usr/local/share/swig1.3)
-IF(EXISTS ${SWIG_DIR})
- IF("x${SWIG_DIR}x" STREQUAL "x${CMAKE_ROOT}/Modulesx")
- MESSAGE("SWIG_DIR should not be modules subdirectory of CMake")
- ENDIF("x${SWIG_DIR}x" STREQUAL "x${CMAKE_ROOT}/Modulesx")
+SET(SWIG_FOUND FALSE)
- IF(EXISTS ${SWIG_DIR}/SWIGConfig.cmake)
- INCLUDE(${SWIG_DIR}/SWIGConfig.cmake)
- SET(SWIG_FOUND 1)
- ELSE(EXISTS ${SWIG_DIR}/SWIGConfig.cmake)
- FIND_PROGRAM(SWIG_EXECUTABLE
- NAMES swig-1.3 swig
- PATHS ${SWIG_DIR} ${SWIG_DIR}/.. ${SWIG_DIR}/../../bin /usr/bin /usr/local/bin )
- SET(SWIG_USE_FILE ${CMAKE_ROOT}/Modules/UseSWIG.cmake)
- ENDIF(EXISTS ${SWIG_DIR}/SWIGConfig.cmake)
-ENDIF(EXISTS ${SWIG_DIR})
+FIND_PROGRAM(SWIG_EXECUTABLE swig)
-IF("x${SWIG_FOUND}x" STREQUAL "xFOOBARx")
- SET(SWIG_FOUND 0)
- IF(EXISTS ${SWIG_DIR})
- IF(EXISTS ${SWIG_USE_FILE})
- IF(EXISTS ${SWIG_EXECUTABLE})
- SET(SWIG_FOUND 1)
- ENDIF(EXISTS ${SWIG_EXECUTABLE})
- ENDIF(EXISTS ${SWIG_USE_FILE})
- ENDIF(EXISTS ${SWIG_DIR})
- IF(NOT ${SWIG_FOUND})
- IF(${SWIG_FIND_REQUIRED})
- MESSAGE(FATAL_ERROR "Swig was not found on the system. Please specify the location of Swig.")
- ENDIF(${SWIG_FIND_REQUIRED})
- ENDIF(NOT ${SWIG_FOUND})
-ENDIF("x${SWIG_FOUND}x" STREQUAL "xFOOBARx")
+IF(SWIG_EXECUTABLE)
+ EXECUTE_PROCESS(COMMAND ${SWIG_EXECUTABLE} -swiglib
+ OUTPUT_VARIABLE SWIG_swiglib_output
+ ERROR_VARIABLE SWIG_swiglib_error
+ RESULT_VARIABLE SWIG_swiglib_result)
+
+ IF(SWIG_swiglib_result)
+ MESSAGE(SEND_ERROR "Command \"${SWIG_EXECUTABLE} -swiglib\" failed with output:\n${SWIG_swiglib_error}")
+ ELSE(SWIG_swiglib_result)
+ STRING(REGEX REPLACE "[\n\r]+" ";" SWIG_swiglib_output ${SWIG_swiglib_output})
+ # force the path to be computed each time in case SWIG_EXECUTABLE has changed.
+ SET(SWIG_DIR SWIG_DIR-NOTFOUND)
+ FIND_PATH(SWIG_DIR swig.swg PATHS ${SWIG_swiglib_output})
+ IF(SWIG_DIR)
+ SET(SWIG_FOUND 1)
+ SET(SWIG_USE_FILE ${CMAKE_ROOT}/Modules/UseSWIG.cmake)
+ EXECUTE_PROCESS(COMMAND ${SWIG_EXECUTABLE} -version
+ OUTPUT_VARIABLE SWIG_version_output
+ ERROR_VARIABLE SWIG_version_output
+ RESULT_VARIABLE SWIG_version_result)
+ IF(SWIG_version_result)
+ MESSAGE(SEND_ERROR "Command \"${SWIG_EXECUTABLE} -version\" failed with output:\n${SWIG_version_output}")
+ ELSE(SWIG_version_result)
+ STRING(REGEX REPLACE ".*SWIG Version[^0-9.]*\([0-9.]+\).*" "\\1"
+ SWIG_version_output "${SWIG_version_output}")
+ SET(SWIG_VERSION ${SWIG_version_output} CACHE STRING "Swig version" FORCE)
+ ENDIF(SWIG_version_result)
+ ENDIF(SWIG_DIR)
+ ENDIF(SWIG_swiglib_result)
+ENDIF(SWIG_EXECUTABLE)
+
+IF(NOT SWIG_FOUND)
+ IF(NOT SWIG_FIND_QUIETLY)
+ IF(SWIG_FIND_REQUIRED)
+ MESSAGE(FATAL_ERROR "SWIG was not found. Please specify Swig executable location")
+ ELSE(SWIG_FIND_REQUIRED)
+ MESSAGE(STATUS "SWIG was not found. Please specify Swig executable location")
+ ENDIF(SWIG_FIND_REQUIRED)
+ ENDIF(NOT SWIG_FIND_QUIETLY)
+ENDIF(NOT SWIG_FOUND)
More information about the Cmake-commits
mailing list