mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
CMake: Simplify Interrogate's compiler definition discovery
This uses generator expressions to make sure the definitions are discovered transitively. The output _igate.cxx file also has its definitions applied to it via a source file property rather than via add_definitions(), which prevents them from leaking to other targets.
This commit is contained in:
parent
32a6552af4
commit
8610b2fceb
@ -196,15 +196,8 @@ function(interrogate_sources target output database language_flags)
|
||||
# Get the compiler definition flags. These must be passed to Interrogate
|
||||
# in the same way that they are passed to the compiler so that Interrogate
|
||||
# will preprocess each file in the same way.
|
||||
set(define_flags)
|
||||
get_target_property(target_defines "${target}" INTERFACE_COMPILE_DEFINITIONS)
|
||||
if(target_defines)
|
||||
foreach(target_define ${target_defines})
|
||||
list(APPEND define_flags "-D${target_define}")
|
||||
# And add the same definition when we compile the _igate.cxx file:
|
||||
add_definitions("-D${target_define}")
|
||||
endforeach(target_define)
|
||||
endif()
|
||||
set(define_flags "$<JOIN:\t$<SEMICOLON>$<TARGET_PROPERTY:${target},COMPILE_DEFINITIONS>,\t-D>")
|
||||
|
||||
# If this is a release build that has NDEBUG defined, we need that too:
|
||||
string(TOUPPER "${CMAKE_BUILD_TYPE}" build_type)
|
||||
if("${CMAKE_CXX_FLAGS_${build_type}}" MATCHES ".*NDEBUG.*")
|
||||
@ -230,6 +223,11 @@ function(interrogate_sources target output database language_flags)
|
||||
DEPENDS host_interrogate ${sources} ${extensions} ${nfiles}
|
||||
COMMENT "Interrogating ${target}"
|
||||
)
|
||||
|
||||
# Propagate the target's compile definitions to the output file
|
||||
set_source_files_properties("${output}" PROPERTIES
|
||||
COMPILE_DEFINITIONS "$<TARGET_PROPERTY:${target},INTERFACE_COMPILE_DEFINITIONS>")
|
||||
|
||||
endfunction(interrogate_sources)
|
||||
|
||||
#
|
||||
@ -296,6 +294,22 @@ function(add_python_module module)
|
||||
add_python_target(panda3d.${module} "${module}_module.cxx" ${sources})
|
||||
target_link_libraries(panda3d.${module} ${link_targets} p3igateruntime)
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS "3.11")
|
||||
# CMake <3.11 doesn't allow generator expressions on source files, so we
|
||||
# need to copy them to our target, which does allow them.
|
||||
|
||||
foreach(target ${targets})
|
||||
set(igate_file "${target}_igate.cxx")
|
||||
get_source_file_property(compile_definitions "${igate_file}" COMPILE_DEFINITIONS)
|
||||
if(compile_definitions)
|
||||
set_property(TARGET panda3d.${module} APPEND PROPERTY
|
||||
COMPILE_DEFINITIONS ${compile_definitions})
|
||||
|
||||
set_source_files_properties("${igate_file}" PROPERTIES COMPILE_DEFINITIONS "")
|
||||
endif()
|
||||
endforeach(target)
|
||||
endif()
|
||||
|
||||
list(APPEND ALL_INTERROGATE_MODULES "${module}")
|
||||
set(ALL_INTERROGATE_MODULES "${ALL_INTERROGATE_MODULES}" CACHE INTERNAL "Internal variable")
|
||||
endfunction(add_python_module)
|
||||
|
Loading…
x
Reference in New Issue
Block a user