Browse Source

UseSWIG: Automatically scan dependencies of SWIG files for Makefiles

Issue: #4147
Alexey Sokolov 8 years ago
parent
commit
b8968b4b39
3 changed files with 5 additions and 2 deletions
  1. 2 0
      Copyright.txt
  2. 1 0
      Modules/UseSWIG.cmake
  3. 2 2
      Source/cmDependsC.cxx

+ 2 - 0
Copyright.txt

@@ -37,6 +37,7 @@ The following individuals and institutions are among the Contributors:
 * Aleksey Avdeev <[email protected]>
 * Alexander Neundorf <[email protected]>
 * Alexander Smorkalov <[email protected]>
+* Alexey Sokolov <[email protected]>
 * Alex Turbov <[email protected]>
 * Andreas Pakulat <[email protected]>
 * Andreas Schneider <[email protected]>
@@ -54,6 +55,7 @@ The following individuals and institutions are among the Contributors:
 * Eran Ifrah <[email protected]>
 * Esben Mose Hansen, Ange Optimization ApS
 * Geoffrey Viola <[email protected]>
+* Google Inc
 * Gregor Jasny
 * Helio Chissini de Castro <[email protected]>
 * Ilya Lavrenov <[email protected]>

+ 1 - 0
Modules/UseSWIG.cmake

@@ -212,6 +212,7 @@ macro(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
     "${swig_source_file_fullname}"
     MAIN_DEPENDENCY "${swig_source_file_fullname}"
     DEPENDS ${SWIG_MODULE_${name}_EXTRA_DEPS}
+    IMPLICIT_DEPENDS CXX "${swig_source_file_fullname}"
     COMMENT "Swig source")
   set_source_files_properties("${swig_generated_file_fullname}" ${swig_extra_generated_files}
     PROPERTIES GENERATED 1)

+ 2 - 2
Source/cmDependsC.cxx

@@ -12,7 +12,7 @@
 #include "cmSystemTools.h"
 
 #define INCLUDE_REGEX_LINE                                                    \
-  "^[ \t]*#[ \t]*(include|import)[ \t]*[<\"]([^\">]+)([\">])"
+  "^[ \t]*[#%][ \t]*(include|import)[ \t]*[<\"]([^\">]+)([\">])"
 
 #define INCLUDE_REGEX_LINE_MARKER "#IncludeRegexLine: "
 #define INCLUDE_REGEX_SCAN_MARKER "#IncludeRegexScan: "
@@ -420,7 +420,7 @@ void cmDependsC::SetupTransforms()
   if (!this->TransformRules.empty()) {
     // Construct the regular expression to match lines to be
     // transformed.
-    std::string xform = "^([ \t]*#[ \t]*(include|import)[ \t]*)(";
+    std::string xform = "^([ \t]*[#%][ \t]*(include|import)[ \t]*)(";
     const char* sep = "";
     for (TransformRulesType::const_iterator tri = this->TransformRules.begin();
          tri != this->TransformRules.end(); ++tri) {