[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