mirror of
https://github.com/Kitware/CMake.git
synced 2026-11-06 13:27:09 +00:00
UseSWIG: Revert "use $<SOURCE_PROPERTY> genex"
Revert commit 25798c15 (UseSWIG: use $<SOURCE_PROPERTY> genex,
2026-06-05).
Moving source file properties evaluation from configuration
to generation time prevents the possibility to have the same source file,
in one directory, in different targets with different settings.
Revert to the previous implementation not using $<SOURCE_PROPERTY>
generator expression.
Fixes: #28193
This commit is contained in:
1 parent
9ec2b9713a
commit
a29e31496f
1 file changed
+46
-24
+46
-24
@@ -589,23 +589,40 @@ function(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
|
||||
|
||||
set (swig_source_file_flags ${CMAKE_SWIG_FLAGS})
|
||||
# handle various swig compile flags properties
|
||||
### include directories
|
||||
list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},INCLUDE_DIRECTORIES>>,PREPEND,-I>")
|
||||
list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_INCLUDE_DIRECTORIES>>>,PREPEND,-I>")
|
||||
# use target INCLUDE_DIRECTORIES if source property USE_TARGET_INCLUDE_DIRECTORIES is "ON" or,
|
||||
# if undefined, if target property SWIG_USE_TARGET_INCLUDE_DIRECTORIES is "ON"
|
||||
list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<IF:$<BOOL:$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},USE_TARGET_INCLUDE_DIRECTORIES>>,$<TARGET_PROPERTY:${target_name},INCLUDE_DIRECTORIES>,$<$<AND:$<EQUAL:$<STRING:LENGTH,$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},USE_TARGET_INCLUDE_DIRECTORIES>>,0>,$<BOOL:$<TARGET_PROPERTY:${target_name},SWIG_USE_TARGET_INCLUDE_DIRECTORIES>>>:$<TARGET_PROPERTY:${target_name},INCLUDE_DIRECTORIES>>>>,PREPEND,-I>")
|
||||
get_source_file_property (include_directories "${infile}" INCLUDE_DIRECTORIES)
|
||||
if (include_directories)
|
||||
list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,${include_directories}>,PREPEND,-I>")
|
||||
endif()
|
||||
set (property "$<TARGET_PROPERTY:${target_name},SWIG_INCLUDE_DIRECTORIES>")
|
||||
list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,${property}>,PREPEND,-I>")
|
||||
set (property "$<LIST,REMOVE_DUPLICATES,$<TARGET_PROPERTY:${target_name},INCLUDE_DIRECTORIES>>")
|
||||
get_source_file_property(use_target_include_dirs "${infile}" USE_TARGET_INCLUDE_DIRECTORIES)
|
||||
set (property "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<TARGET_PROPERTY:${target_name},INCLUDE_DIRECTORIES>>,PREPEND,-I>")
|
||||
if (use_target_include_dirs)
|
||||
list (APPEND swig_source_file_flags "${property}")
|
||||
elseif(use_target_include_dirs STREQUAL "NOTFOUND")
|
||||
# not defined at source level, rely on target level
|
||||
list (APPEND swig_source_file_flags "$<$<BOOL:$<TARGET_PROPERTY:${target_name},SWIG_USE_TARGET_INCLUDE_DIRECTORIES>>:${property}>")
|
||||
endif()
|
||||
|
||||
### compile definitions
|
||||
list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_DEFINITIONS>>>,PREPEND,-D>")
|
||||
list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},COMPILE_DEFINITIONS>>,PREPEND,-D>")
|
||||
set (property "$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_DEFINITIONS>")
|
||||
list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,$<TARGET_GENEX_EVAL:${target_name},${property}>>,PREPEND,-D>")
|
||||
get_source_file_property (compile_definitions "${infile}" COMPILE_DEFINITIONS)
|
||||
if (compile_definitions)
|
||||
list (APPEND swig_source_file_flags "$<LIST:TRANSFORM,$<LIST:REMOVE_DUPLICATES,${compile_definitions}>,PREPEND,-D>")
|
||||
endif()
|
||||
|
||||
### compile options
|
||||
list (APPEND swig_source_file_flags "$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_COMPILE_OPTIONS>>")
|
||||
list (APPEND swig_source_file_flags "$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},COMPILE_OPTIONS>")
|
||||
get_source_file_property (compile_options "${infile}" COMPILE_OPTIONS)
|
||||
if (compile_options)
|
||||
list (APPEND swig_source_file_flags ${compile_options})
|
||||
endif()
|
||||
|
||||
# legacy support
|
||||
list (APPEND swig_source_file_flags "$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},SWIG_FLAGS>")
|
||||
get_source_file_property (swig_flags "${infile}" SWIG_FLAGS)
|
||||
if (swig_flags)
|
||||
list (APPEND swig_source_file_flags ${swig_flags})
|
||||
endif()
|
||||
|
||||
get_filename_component(swig_source_file_fullname "${infile}" ABSOLUTE)
|
||||
|
||||
@@ -640,11 +657,16 @@ function(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
|
||||
|
||||
set(swig_special_flags)
|
||||
# default is c, so add c++ flag if it is c++
|
||||
list (APPEND swig_special_flags "$<$<BOOL:$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},CPLUSPLUS>>:-c++>")
|
||||
if(swig_source_file_cplusplus)
|
||||
list (APPEND swig_special_flags "-c++")
|
||||
endif()
|
||||
|
||||
cmake_policy(GET CMP0086 module_name_policy)
|
||||
if (module_name_policy STREQUAL "NEW")
|
||||
list (APPEND swig_special_flags "$<$<BOOL:$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},SWIG_MODULE_NAME>>:-module$<SEMICOLON>$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},SWIG_MODULE_NAME>>")
|
||||
get_source_file_property(module_name "${infile}" SWIG_MODULE_NAME)
|
||||
if (module_name)
|
||||
list (APPEND swig_special_flags "-module" "${module_name}")
|
||||
endif()
|
||||
else()
|
||||
if (NOT module_name_policy)
|
||||
cmake_policy(ISSUE_WARNING CMP0086)
|
||||
@@ -671,7 +693,10 @@ function(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
|
||||
|
||||
# dependencies
|
||||
set (swig_dependencies DEPENDS ${SWIG_MODULE_${name}_EXTRA_DEPS} $<TARGET_PROPERTY:${target_name},SWIG_DEPENDS>)
|
||||
list (APPEND swig_dependencies "$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},DEPENDS>")
|
||||
get_source_file_property(file_depends "${infile}" DEPENDS)
|
||||
if (file_depends)
|
||||
list (APPEND swig_dependencies ${file_depends})
|
||||
endif()
|
||||
|
||||
if (UseSWIG_MODULE_VERSION VERSION_GREATER 1)
|
||||
# as part of custom command, start by removing old generated files
|
||||
@@ -737,17 +762,14 @@ function(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
|
||||
PROPERTIES GENERATED 1)
|
||||
|
||||
## add all properties for generated file to various properties
|
||||
set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY INCLUDE_DIRECTORIES
|
||||
"$<TARGET_GENEX_EVAL:${target_name},$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},GENERATED_INCLUDE_DIRECTORIES>>"
|
||||
"$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_INCLUDE_DIRECTORIES>>")
|
||||
get_property (include_directories SOURCE "${infile}" PROPERTY GENERATED_INCLUDE_DIRECTORIES)
|
||||
set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY INCLUDE_DIRECTORIES ${include_directories} $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_INCLUDE_DIRECTORIES>>)
|
||||
|
||||
set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_DEFINITIONS
|
||||
"$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_DEFINITIONS>>"
|
||||
"$<TARGET_GENEX_EVAL:${target_name},$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},GENERATED_COMPILE_DEFINITIONS>>")
|
||||
get_property (compile_definitions SOURCE "${infile}" PROPERTY GENERATED_COMPILE_DEFINITIONS)
|
||||
set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_DEFINITIONS $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_DEFINITIONS>> ${compile_definitions})
|
||||
|
||||
set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_OPTIONS
|
||||
"$<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_OPTIONS>>"
|
||||
"$<TARGET_GENEX_EVAL:${target_name},$<SOURCE_PROPERTY:${infile},TARGET_DIRECTORY:${target_name},GENERATED_COMPILE_OPTIONS>>")
|
||||
get_property (compile_options SOURCE "${infile}" PROPERTY GENERATED_COMPILE_OPTIONS)
|
||||
set_property (SOURCE "${swig_generated_file_fullname}" PROPERTY COMPILE_OPTIONS $<TARGET_GENEX_EVAL:${target_name},$<TARGET_PROPERTY:${target_name},SWIG_GENERATED_COMPILE_OPTIONS>> ${compile_options})
|
||||
|
||||
if (SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG MATCHES "php")
|
||||
set_property (SOURCE "${swig_generated_file_fullname}" APPEND PROPERTY INCLUDE_DIRECTORIES "${outdir}")
|
||||
|
||||
Reference in new issue
Block a user