|
|
@@ -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}.
|
|
|
@@ -38,6 +41,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
|
|
|
#
|
|
|
@@ -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}"
|