[Cmake-commits] CMake branch, next, updated. v2.8.4-1379-gb021138

Mathieu Malaterre mathieu.malaterre at gmail.com
Fri Apr 8 09:10:22 EDT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  b021138057b0f8e6247230e9c3764cc32d2eb4a4 (commit)
       via  1088b0278e74526298d0821589973918da33c44b (commit)
      from  31e8b472452cf37d6410a7459da3f34eb1737ce0 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b021138057b0f8e6247230e9c3764cc32d2eb4a4
commit b021138057b0f8e6247230e9c3764cc32d2eb4a4
Merge: 31e8b47 1088b02
Author:     Mathieu Malaterre <mathieu.malaterre at gmail.com>
AuthorDate: Fri Apr 8 09:10:19 2011 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Apr 8 09:10:19 2011 -0400

    Merge topic 'fixbug_0004147' into next
    
    1088b02 Add a new function SWIG_GET_WRAPPER_DEPENDENCIES to UseSWIG.cmake


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1088b0278e74526298d0821589973918da33c44b
commit 1088b0278e74526298d0821589973918da33c44b
Author:     Mathieu Malaterre <mathieu.malaterre at gmail.com>
AuthorDate: Mon Mar 28 18:14:23 2011 +0200
Commit:     Mathieu Malaterre <mathieu.malaterre at gmail.com>
CommitDate: Fri Apr 8 15:07:40 2011 +0200

    Add a new function SWIG_GET_WRAPPER_DEPENDENCIES to UseSWIG.cmake
    
    This commit fixes BUG: 0004147 it directly uses swig executable
    to compute a list of dependencies directly from the .i files
    to make sure to rebuild the swig module any of its direct dep.
    is touched

diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake
index b547dc7..f9808c5 100644
--- a/Modules/UseSWIG.cmake
+++ b/Modules/UseSWIG.cmake
@@ -4,6 +4,9 @@
 #     - Define swig module with given name and specified language
 #   SWIG_LINK_LIBRARIES(name [ libraries ])
 #     - Link libraries to swig module
+#   SWIG_GET_WRAPPER_DEPENDENCIES(swigFile genWrapper language DEST_VARIABLE)
+#     - Put dependencies of the wrapper genWrapper generated by swig from
+#     swigFile in DEST_VARIABLE
 # All other macros are for internal use only.
 # To get the actual name of the swig module,
 # use: ${SWIG_MODULE_${name}_REAL_NAME}.
@@ -39,6 +42,58 @@ SET(SWIG_EXTRA_LIBRARIES "")
 SET(SWIG_PYTHON_EXTRA_FILE_EXTENSION "py")
 
 #
+# Get dependencies of the generated wrapper.
+#
+MACRO(SWIG_GET_WRAPPER_DEPENDENCIES swigFile genWrapper language DEST_VARIABLE)
+  GET_FILENAME_COMPONENT(swig_getdeps_basename ${swigFile} NAME_WE)
+  GET_FILENAME_COMPONENT(swig_getdeps_outdir ${genWrapper} PATH)
+  GET_SOURCE_FILE_PROPERTY(swig_getdeps_extra_flags "${swigFile}" SWIG_FLAGS)
+  IF("${swig_getdeps_extra_flags}" STREQUAL "NOTFOUND")
+    SET(swig_getdeps_extra_flags "")
+  ENDIF("${swig_getdeps_extra_flags}" STREQUAL "NOTFOUND")
+
+  IF(NOT swig_getdeps_outdir)
+    SET(swig_getdeps_outdir ${CMAKE_CURRENT_BINARY_DIR})
+  ENDIF(NOT swig_getdeps_outdir)
+  SET(swig_getdeps_depsfile
+    ${swig_getdeps_outdir}/swig_${swig_getdeps_basename}_deps.txt)
+  GET_DIRECTORY_PROPERTY(swig_getdeps_include_directories INCLUDE_DIRECTORIES)
+  SET(swig_getdeps_include_dirs)
+  FOREACH(it ${swig_getdeps_include_directories})
+    SET(swig_getdeps_include_dirs ${swig_getdeps_include_dirs} "-I${it}")
+  ENDFOREACH(it)
+  EXECUTE_PROCESS(
+    COMMAND ${SWIG_EXECUTABLE}
+    -MM -MF ${swig_getdeps_depsfile} ${swig_getdeps_extra_flags}
+    ${CMAKE_SWIG_FLAGS} -${language}
+    -o ${genWrapper} ${swig_getdeps_include_dirs} ${swigFile}
+    RESULT_VARIABLE swig_getdeps_result
+    ERROR_VARIABLE swig_getdeps_error
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+  IF(NOT ${swig_getdeps_error} EQUAL 0)
+    MESSAGE(SEND_ERROR "Command \"${SWIG_EXECUTABLE} -MM -MF ${swig_getdeps_depsfile} ${swig_getdeps_extra_flags} ${CMAKE_SWIG_FLAGS} -${language} -o ${genWrapper} ${swig_getdeps_include_dirs} ${swigFile}\" failed with output:\n${swig_getdeps_error}")
+    SET(swig_getdeps_dependencies "")
+  ELSE(NOT ${swig_getdeps_error} EQUAL 0)
+    FILE(READ ${swig_getdeps_depsfile} ${DEST_VARIABLE})
+    # Remove the first line
+    STRING(REGEX REPLACE "^.+: +\\\\\n +" ""
+      ${DEST_VARIABLE} "${${DEST_VARIABLE}}")
+    # Clean the end of each line
+    STRING(REGEX REPLACE " +(\\\\)?\n" "\n" ${DEST_VARIABLE}
+      "${${DEST_VARIABLE}}")
+    # Clean beginning of each line
+    STRING(REGEX REPLACE "\n +" "\n"
+      ${DEST_VARIABLE} "${${DEST_VARIABLE}}")
+    # clean paths
+    STRING(REGEX REPLACE "\\\\\\\\" "/" ${DEST_VARIABLE}
+      "${${DEST_VARIABLE}}")
+    STRING(REGEX REPLACE "\n" ";"
+      ${DEST_VARIABLE} "${${DEST_VARIABLE}}")
+  ENDIF(NOT ${swig_getdeps_error} EQUAL 0)
+ENDMACRO(SWIG_GET_WRAPPER_DEPENDENCIES)
+
+
+#
 # For given swig module initialize variables associated with it
 #
 MACRO(SWIG_MODULE_INITIALIZE name language)
@@ -166,6 +221,10 @@ MACRO(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
   IF(SWIG_MODULE_${name}_EXTRA_FLAGS)
     SET(swig_extra_flags ${swig_extra_flags} ${SWIG_MODULE_${name}_EXTRA_FLAGS})
   ENDIF(SWIG_MODULE_${name}_EXTRA_FLAGS)
+  SWIG_GET_WRAPPER_DEPENDENCIES("${swig_source_file_fullname}"
+    "${swig_generated_file_fullname}" ${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}
+    swig_extra_dependencies)
+  LIST(APPEND SWIG_MODULE_${name}_EXTRA_DEPS ${swig_extra_dependencies})
   ADD_CUSTOM_COMMAND(
     OUTPUT "${swig_generated_file_fullname}" ${swig_extra_generated_files}
     COMMAND "${SWIG_EXECUTABLE}"

-----------------------------------------------------------------------

Summary of changes:
 Modules/UseSWIG.cmake |   59 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 59 insertions(+), 0 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list