summaryrefslogtreecommitdiff
path: root/Modules/UseSWIG.cmake
diff options
context:
space:
mode:
authorMarc Chevrier <marc.chevrier@sap.com>2018-02-01 14:49:05 +0100
committerBrad King <brad.king@kitware.com>2018-02-02 07:41:44 -0500
commitbc3697fa51e087953ec0e40a0a865e87c896e3a8 (patch)
tree285757c5131c772310c72ed120ee17989a1aefe7 /Modules/UseSWIG.cmake
parenta53697acc76c8fa452cf083ca9f02b3f1cfd7711 (diff)
downloadcmake-bc3697fa51e087953ec0e40a0a865e87c896e3a8.tar.gz
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
Diffstat (limited to 'Modules/UseSWIG.cmake')
-rw-r--r--Modules/UseSWIG.cmake6
1 files changed, 4 insertions, 2 deletions
diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake
index b38e2b7cc9..959893fe52 100644
--- a/Modules/UseSWIG.cmake
+++ b/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)