mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-05 03:15:07 -04:00
CMake: Add new "EXTENSIONS" syntax to target_interrogate(...) macro.
This commit is contained in:
parent
31d420515a
commit
b300848589
@ -50,10 +50,16 @@ set(ALL_INTERROGATE_MODULES CACHE INTERNAL "Internal variable")
|
|||||||
function(target_interrogate target)
|
function(target_interrogate target)
|
||||||
if(HAVE_PYTHON AND HAVE_INTERROGATE)
|
if(HAVE_PYTHON AND HAVE_INTERROGATE)
|
||||||
set(sources)
|
set(sources)
|
||||||
|
set(extensions)
|
||||||
set(want_all OFF)
|
set(want_all OFF)
|
||||||
|
set(extensions_keyword OFF)
|
||||||
foreach(arg ${ARGN})
|
foreach(arg ${ARGN})
|
||||||
if(arg STREQUAL "ALL")
|
if(arg STREQUAL "ALL")
|
||||||
set(want_all ON)
|
set(want_all ON)
|
||||||
|
elseif(arg STREQUAL "EXTENSIONS")
|
||||||
|
set(extensions_keyword ON)
|
||||||
|
elseif(extensions_keyword)
|
||||||
|
list(APPEND extensions "${arg}")
|
||||||
else()
|
else()
|
||||||
list(APPEND sources "${arg}")
|
list(APPEND sources "${arg}")
|
||||||
endif()
|
endif()
|
||||||
@ -70,13 +76,20 @@ function(target_interrogate target)
|
|||||||
# Now let's get everything's absolute path, so that it can be passed
|
# Now let's get everything's absolute path, so that it can be passed
|
||||||
# through a property while still preserving the reference.
|
# through a property while still preserving the reference.
|
||||||
set(absolute_sources)
|
set(absolute_sources)
|
||||||
|
set(absolute_extensions)
|
||||||
foreach(source ${sources})
|
foreach(source ${sources})
|
||||||
get_source_file_property(location "${source}" LOCATION)
|
get_source_file_property(location "${source}" LOCATION)
|
||||||
set(absolute_sources ${absolute_sources} ${location})
|
list(APPEND absolute_sources ${location})
|
||||||
endforeach(source)
|
endforeach(source)
|
||||||
|
foreach(extension ${extensions})
|
||||||
|
get_source_file_property(location "${extension}" LOCATION)
|
||||||
|
list(APPEND absolute_extensions ${location})
|
||||||
|
endforeach(extension)
|
||||||
|
|
||||||
set_target_properties("${target}" PROPERTIES IGATE_SOURCES
|
set_target_properties("${target}" PROPERTIES IGATE_SOURCES
|
||||||
"${absolute_sources}")
|
"${absolute_sources}")
|
||||||
|
set_target_properties("${target}" PROPERTIES IGATE_EXTENSIONS
|
||||||
|
"${absolute_extensions}")
|
||||||
|
|
||||||
# CMake has no property for determining the source directory where the
|
# CMake has no property for determining the source directory where the
|
||||||
# target was originally added. interrogate_sources makes use of this
|
# target was originally added. interrogate_sources makes use of this
|
||||||
@ -86,9 +99,6 @@ function(target_interrogate target)
|
|||||||
# an IGATE_ prefix.
|
# an IGATE_ prefix.
|
||||||
set_target_properties("${target}" PROPERTIES TARGET_SRCDIR
|
set_target_properties("${target}" PROPERTIES TARGET_SRCDIR
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}")
|
"${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
|
|
||||||
# HACK HACK HACK -- this is part of the below hack.
|
|
||||||
target_link_libraries(${target} ${target}_igate)
|
|
||||||
endif()
|
endif()
|
||||||
endfunction(target_interrogate)
|
endfunction(target_interrogate)
|
||||||
|
|
||||||
@ -106,6 +116,7 @@ endfunction(target_interrogate)
|
|||||||
function(interrogate_sources target output database module)
|
function(interrogate_sources target output database module)
|
||||||
if(HAVE_PYTHON AND HAVE_INTERROGATE)
|
if(HAVE_PYTHON AND HAVE_INTERROGATE)
|
||||||
get_target_property(sources "${target}" IGATE_SOURCES)
|
get_target_property(sources "${target}" IGATE_SOURCES)
|
||||||
|
get_target_property(extensions "${target}" IGATE_EXTENSIONS)
|
||||||
|
|
||||||
if(NOT sources)
|
if(NOT sources)
|
||||||
message(FATAL_ERROR
|
message(FATAL_ERROR
|
||||||
@ -189,14 +200,6 @@ function(interrogate_sources target output database module)
|
|||||||
list(APPEND define_flags "-DNDEBUG")
|
list(APPEND define_flags "-DNDEBUG")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# CMake offers no way to directly depend on the composite files from here,
|
|
||||||
# because the composite files are created in a different directory from
|
|
||||||
# where CMake itself is run. Therefore, we need to depend on the
|
|
||||||
# TARGET_composite target, if it exists.
|
|
||||||
if(TARGET ${target}_composite)
|
|
||||||
set(sources ${target}_composite ${sources})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT "${output}" "${database}"
|
OUTPUT "${output}" "${database}"
|
||||||
COMMAND interrogate
|
COMMAND interrogate
|
||||||
@ -212,7 +215,8 @@ function(interrogate_sources target output database module)
|
|||||||
-S "${PROJECT_BINARY_DIR}/include/parser-inc"
|
-S "${PROJECT_BINARY_DIR}/include/parser-inc"
|
||||||
${include_flags}
|
${include_flags}
|
||||||
${scan_sources}
|
${scan_sources}
|
||||||
DEPENDS interrogate ${sources} ${nfiles}
|
${extensions}
|
||||||
|
DEPENDS interrogate ${sources} ${extensions} ${nfiles}
|
||||||
COMMENT "Interrogating ${target}"
|
COMMENT "Interrogating ${target}"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
@ -230,7 +234,6 @@ function(add_python_module module)
|
|||||||
set(link_targets)
|
set(link_targets)
|
||||||
set(infiles)
|
set(infiles)
|
||||||
set(sources)
|
set(sources)
|
||||||
set(HACKlinklibs)
|
|
||||||
|
|
||||||
set(link_keyword OFF)
|
set(link_keyword OFF)
|
||||||
foreach(arg ${ARGN})
|
foreach(arg ${ARGN})
|
||||||
@ -249,22 +252,12 @@ function(add_python_module module)
|
|||||||
|
|
||||||
foreach(target ${targets})
|
foreach(target ${targets})
|
||||||
interrogate_sources(${target} "${target}_igate.cxx" "${target}.in" "${module}")
|
interrogate_sources(${target} "${target}_igate.cxx" "${target}.in" "${module}")
|
||||||
|
get_target_property(target_extensions "${target}" IGATE_EXTENSIONS)
|
||||||
list(APPEND infiles "${target}.in")
|
list(APPEND infiles "${target}.in")
|
||||||
#list(APPEND sources "${target}_igate.cxx")
|
list(APPEND sources "${target}_igate.cxx" ${target_extensions})
|
||||||
|
|
||||||
# HACK HACK HACK:
|
#get_target_property(target_links "${target}" LINK_LIBRARIES)
|
||||||
# Currently, the codebase has dependencies on the Interrogate-generated
|
#target_link_libraries(${target}_igate ${target_links})
|
||||||
# code when HAVE_PYTHON is enabled. rdb is working to remove this, but
|
|
||||||
# until then, the generated code must somehow be made available to the
|
|
||||||
# modules themselves. The workaround here is to put the _igate.cxx into
|
|
||||||
# its own micro-library, which is linked both here on the module and
|
|
||||||
# against the component library in question.
|
|
||||||
add_library(${target}_igate ${target}_igate.cxx)
|
|
||||||
list(APPEND HACKlinklibs "${target}_igate")
|
|
||||||
install(TARGETS ${target}_igate DESTINATION lib)
|
|
||||||
|
|
||||||
get_target_property(target_links "${target}" LINK_LIBRARIES)
|
|
||||||
target_link_libraries(${target}_igate ${target_links})
|
|
||||||
endforeach(target)
|
endforeach(target)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
@ -278,10 +271,9 @@ function(add_python_module module)
|
|||||||
COMMENT "Generating module ${module}"
|
COMMENT "Generating module ${module}"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(${module} MODULE "${module}_module.cxx" ${sources})
|
add_library(${module} "${module}_module.cxx" ${sources})
|
||||||
target_link_libraries(${module}
|
target_link_libraries(${module}
|
||||||
${link_targets} ${PYTHON_LIBRARIES} p3interrogatedb)
|
${link_targets} ${PYTHON_LIBRARIES} p3interrogatedb)
|
||||||
target_link_libraries(${module} ${HACKlinklibs})
|
|
||||||
|
|
||||||
set_target_properties(${module} PROPERTIES
|
set_target_properties(${module} PROPERTIES
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d"
|
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d"
|
||||||
|
@ -99,7 +99,7 @@ endif()
|
|||||||
composite_sources(p3display P3DISPLAY_SOURCES)
|
composite_sources(p3display P3DISPLAY_SOURCES)
|
||||||
add_library(p3display ${P3DISPLAY_HEADERS} ${P3DISPLAY_SOURCES})
|
add_library(p3display ${P3DISPLAY_HEADERS} ${P3DISPLAY_SOURCES})
|
||||||
target_link_libraries(p3display p3cull p3pgraphnodes)
|
target_link_libraries(p3display p3cull p3pgraphnodes)
|
||||||
target_interrogate(p3display ALL ${P3DISPLAY_IGATEEXT})
|
target_interrogate(p3display ALL EXTENSIONS ${P3DISPLAY_IGATEEXT})
|
||||||
|
|
||||||
install(TARGETS p3display DESTINATION lib)
|
install(TARGETS p3display DESTINATION lib)
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ if(HAVE_EGG)
|
|||||||
composite_sources(p3egg P3EGG_SOURCES)
|
composite_sources(p3egg P3EGG_SOURCES)
|
||||||
add_library(p3egg ${P3EGG_HEADERS} ${P3EGG_SOURCES} ${P3EGG_PARSER_SOURCES})
|
add_library(p3egg ${P3EGG_HEADERS} ${P3EGG_SOURCES} ${P3EGG_PARSER_SOURCES})
|
||||||
target_link_libraries(p3egg p3prc p3pandabase p3express p3linmath p3mathutil)
|
target_link_libraries(p3egg p3prc p3pandabase p3express p3linmath p3mathutil)
|
||||||
target_interrogate(p3egg ${P3EGG_HEADERS} ${P3EGG_SOURCES} ${P3EGG_IGATEEXT})
|
target_interrogate(p3egg ${P3EGG_HEADERS} ${P3EGG_SOURCES} EXTENSIONS ${P3EGG_IGATEEXT})
|
||||||
|
|
||||||
install(TARGETS p3egg DESTINATION lib)
|
install(TARGETS p3egg DESTINATION lib)
|
||||||
endif()
|
endif()
|
||||||
|
@ -136,7 +136,7 @@ composite_sources(p3express P3EXPRESS_SOURCES)
|
|||||||
add_library(p3express ${P3EXPRESS_SOURCES} ${P3EXPRESS_HEADERS})
|
add_library(p3express ${P3EXPRESS_SOURCES} ${P3EXPRESS_HEADERS})
|
||||||
target_link_libraries(p3express p3pandabase p3dtool p3dtoolconfig
|
target_link_libraries(p3express p3pandabase p3dtool p3dtoolconfig
|
||||||
${_TAR_LIBRARY} ${_ZLIB_LIBRARY})
|
${_TAR_LIBRARY} ${_ZLIB_LIBRARY})
|
||||||
target_interrogate(p3express ALL ${P3EXPRESS_IGATEEXT})
|
target_interrogate(p3express ALL EXTENSIONS ${P3EXPRESS_IGATEEXT})
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
target_link_libraries(p3express advapi32.lib ws2_32.lib)
|
target_link_libraries(p3express advapi32.lib ws2_32.lib)
|
||||||
|
@ -84,7 +84,7 @@ if(HAVE_ODE)
|
|||||||
add_library(p3ode ${P3ODE_SOURCES} ${P3ODE_HEADERS})
|
add_library(p3ode ${P3ODE_SOURCES} ${P3ODE_HEADERS})
|
||||||
set_target_properties(p3ode PROPERTIES COMPILE_DEFINITIONS dSINGLE)
|
set_target_properties(p3ode PROPERTIES COMPILE_DEFINITIONS dSINGLE)
|
||||||
target_link_libraries(p3ode p3pgraph p3physics ${ODE_LIBRARY})
|
target_link_libraries(p3ode p3pgraph p3physics ${ODE_LIBRARY})
|
||||||
target_interrogate(p3ode ${P3ODE_IGATE_SOURCES} ${P3ODE_IGATEEXT})
|
target_interrogate(p3ode ${P3ODE_IGATE_SOURCES} EXTENSIONS ${P3ODE_IGATEEXT})
|
||||||
|
|
||||||
install(TARGETS p3ode DESTINATION lib)
|
install(TARGETS p3ode DESTINATION lib)
|
||||||
endif()
|
endif()
|
||||||
|
@ -208,7 +208,7 @@ set(P3PGRAPH_IGATEEXT
|
|||||||
composite_sources(p3pgraph P3PGRAPH_SOURCES)
|
composite_sources(p3pgraph P3PGRAPH_SOURCES)
|
||||||
add_library(p3pgraph ${P3PGRAPH_HEADERS} ${P3PGRAPH_SOURCES})
|
add_library(p3pgraph ${P3PGRAPH_HEADERS} ${P3PGRAPH_SOURCES})
|
||||||
target_link_libraries(p3pgraph p3gobj p3event p3gsgbase p3putil p3linmath p3downloader)
|
target_link_libraries(p3pgraph p3gobj p3event p3gsgbase p3putil p3linmath p3downloader)
|
||||||
target_interrogate(p3pgraph ALL ${P3PGRAPH_IGATEEXT})
|
target_interrogate(p3pgraph ALL EXTENSIONS ${P3PGRAPH_IGATEEXT})
|
||||||
|
|
||||||
install(TARGETS p3pgraph DESTINATION lib)
|
install(TARGETS p3pgraph DESTINATION lib)
|
||||||
|
|
||||||
|
@ -32,6 +32,6 @@ set(P3PNMIMAGE_IGATEEXT
|
|||||||
composite_sources(p3pnmimage P3PNMIMAGE_SOURCES)
|
composite_sources(p3pnmimage P3PNMIMAGE_SOURCES)
|
||||||
add_library(p3pnmimage ${P3PNMIMAGE_HEADERS} ${P3PNMIMAGE_SOURCES})
|
add_library(p3pnmimage ${P3PNMIMAGE_HEADERS} ${P3PNMIMAGE_SOURCES})
|
||||||
target_link_libraries(p3pnmimage p3mathutil)
|
target_link_libraries(p3pnmimage p3mathutil)
|
||||||
target_interrogate(p3pnmimage ALL ${P3PNMIMAGE_IGATEEXT})
|
target_interrogate(p3pnmimage ALL EXTENSIONS ${P3PNMIMAGE_IGATEEXT})
|
||||||
|
|
||||||
install(TARGETS p3pnmimage DESTINATION lib)
|
install(TARGETS p3pnmimage DESTINATION lib)
|
||||||
|
@ -119,7 +119,7 @@ set(P3PUTIL_IGATEEXT
|
|||||||
composite_sources(p3putil P3PUTIL_SOURCES)
|
composite_sources(p3putil P3PUTIL_SOURCES)
|
||||||
add_library(p3putil ${P3PUTIL_HEADERS} ${P3PUTIL_SOURCES})
|
add_library(p3putil ${P3PUTIL_HEADERS} ${P3PUTIL_SOURCES})
|
||||||
target_link_libraries(p3putil p3pipeline)
|
target_link_libraries(p3putil p3pipeline)
|
||||||
target_interrogate(p3putil ALL ${P3PUTIL_IGATEEXT})
|
target_interrogate(p3putil ALL EXTENSIONS ${P3PUTIL_IGATEEXT})
|
||||||
|
|
||||||
install(TARGETS p3putil DESTINATION lib)
|
install(TARGETS p3putil DESTINATION lib)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user