소스 검색

UseSWIG: Restore support for like-named .i files in different modules

Fix logic added by commit 2ee10119ea (swig: fix incremental build in
case of removed interface files, 2017-11-06).  Name the extra targets
added for Makefile generators using both the module name and .i base
name to avoid collisions across modules.  Also make sure the extra
targets added for all .i files in a module are added as dependencies
instead of just the last one.

Fixes: #17704
Marc Chevrier 7 년 전
부모
커밋
bc3697fa51
1개의 변경된 파일4개의 추가작업 그리고 2개의 파일을 삭제
  1. 4 2
      Modules/UseSWIG.cmake

+ 4 - 2
Modules/UseSWIG.cmake

@@ -219,7 +219,7 @@ macro(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
   if(CMAKE_GENERATOR MATCHES "Make")
     get_filename_component(swig_generated_timestamp
       "${swig_generated_file_fullname}" NAME_WE)
-    set(swig_gen_target gen_${swig_generated_timestamp})
+    set(swig_gen_target gen_${name}_${swig_generated_timestamp})
     set(swig_generated_timestamp
       "${swig_outdir}/${swig_generated_timestamp}.stamp")
     set(swig_custom_output ${swig_generated_timestamp})
@@ -311,9 +311,11 @@ macro(SWIG_ADD_LIBRARY name)
   endforeach()
 
   set(swig_generated_sources)
+  set(swig_generated_targets)
   foreach(it ${swig_dot_i_sources})
     SWIG_ADD_SOURCE_TO_MODULE(${name} swig_generated_source ${it})
     set(swig_generated_sources ${swig_generated_sources} "${swig_generated_source}")
+    list(APPEND swig_generated_targets "${swig_gen_target}")
   endforeach()
   get_directory_property(swig_extra_clean_files ADDITIONAL_MAKE_CLEAN_FILES)
   set_directory_properties(PROPERTIES
@@ -324,7 +326,7 @@ macro(SWIG_ADD_LIBRARY name)
     ${swig_other_sources})
   if(CMAKE_GENERATOR MATCHES "Make")
     # see IMPLICIT_DEPENDS above
-    add_dependencies(${SWIG_MODULE_${name}_REAL_NAME} ${swig_gen_target})
+    add_dependencies(${SWIG_MODULE_${name}_REAL_NAME} ${swig_generated_targets})
   endif()
   if("${_SAM_TYPE}" STREQUAL "MODULE")
     set_target_properties(${SWIG_MODULE_${name}_REAL_NAME} PROPERTIES NO_SONAME ON)