From 218d0e8adebcab01b2b728a7b1a45878b7f01f7b Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Thu, 19 Apr 2018 00:04:21 -0600 Subject: [PATCH] CMake: Build dtool metalibs as metalibs --- cmake/macros/BuildMetalib.cmake | 4 ++- cmake/macros/Interrogate.cmake | 2 +- dtool/metalibs/dtool/CMakeLists.txt | 3 +-- dtool/metalibs/dtoolconfig/CMakeLists.txt | 32 +++++++++++------------ dtool/src/cppparser/CMakeLists.txt | 2 +- dtool/src/dconfig/CMakeLists.txt | 4 +-- dtool/src/dtoolbase/CMakeLists.txt | 4 +-- dtool/src/dtoolutil/CMakeLists.txt | 5 ++-- dtool/src/interrogate/CMakeLists.txt | 6 ++--- dtool/src/interrogatedb/CMakeLists.txt | 3 ++- dtool/src/prc/CMakeLists.txt | 6 ++--- dtool/src/pystub/CMakeLists.txt | 2 +- panda/src/express/CMakeLists.txt | 2 +- panda/src/movies/CMakeLists.txt | 2 +- panda/src/pandabase/CMakeLists.txt | 2 +- 15 files changed, 40 insertions(+), 39 deletions(-) diff --git a/cmake/macros/BuildMetalib.cmake b/cmake/macros/BuildMetalib.cmake index e744834374..c63f6e2e52 100644 --- a/cmake/macros/BuildMetalib.cmake +++ b/cmake/macros/BuildMetalib.cmake @@ -20,7 +20,9 @@ function(target_link_libraries target) endif() foreach(library ${ARGN}) - if(library MATCHES "^[A-Za-z0-9]+$") + # This is a quick and dirty regex to tell targets apart from other stuff. + # It just checks if it's alphanumeric and starts with p3/panda. + if(library MATCHES "^(p3|panda)[A-Za-z0-9]*$") # We need to add "library"'s include directories to "target" # (and transitively to INTERFACE_INCLUDE_DIRECTORIES so further # dependencies will work) diff --git a/cmake/macros/Interrogate.cmake b/cmake/macros/Interrogate.cmake index 2b69aa3ce4..1082865f61 100644 --- a/cmake/macros/Interrogate.cmake +++ b/cmake/macros/Interrogate.cmake @@ -292,7 +292,7 @@ function(add_python_module module) add_library(${module} STATIC "${module}_module.cxx" ${sources}) endif() target_link_libraries(${module} - ${link_targets} ${PYTHON_LIBRARIES} p3interrogatedb) + ${link_targets} ${PYTHON_LIBRARIES} p3dtool) set_target_properties(${module} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d" diff --git a/dtool/metalibs/dtool/CMakeLists.txt b/dtool/metalibs/dtool/CMakeLists.txt index 1ace855669..16cd56f1c3 100644 --- a/dtool/metalibs/dtool/CMakeLists.txt +++ b/dtool/metalibs/dtool/CMakeLists.txt @@ -1,4 +1,3 @@ -add_library(p3dtool dtool.cxx) -target_link_libraries(p3dtool p3dtoolutil p3dtoolbase) +add_metalib(p3dtool dtool.cxx COMPONENTS p3dtoolutil p3dtoolbase) install(TARGETS p3dtool DESTINATION lib) diff --git a/dtool/metalibs/dtoolconfig/CMakeLists.txt b/dtool/metalibs/dtoolconfig/CMakeLists.txt index 658cb91cc7..7a22c6fbf4 100644 --- a/dtool/metalibs/dtoolconfig/CMakeLists.txt +++ b/dtool/metalibs/dtoolconfig/CMakeLists.txt @@ -1,4 +1,10 @@ -add_definitions(-DBUILDING_DTOOLCONFIG) +# First, dtoolconfig: + +set(DTOOLCONFIG_LINK_TARGETS p3prc p3dconfig p3interrogatedb) +add_metalib(p3dtoolconfig dtoolconfig.cxx COMPONENTS ${DTOOLCONFIG_LINK_TARGETS}) +install(TARGETS p3dtoolconfig DESTINATION lib) + +# Next, panda3d.interrogatedb: if(BUILD_SHARED_LIBS) set(libtype MODULE) @@ -7,21 +13,15 @@ else() endif() if(HAVE_PYTHON) - add_library(p3dtoolconfig ${libtype} dtoolconfig.cxx pydtool.cxx) -else() - add_library(p3dtoolconfig ${libtype} dtoolconfig.cxx) -endif() + add_library(interrogatedb ${libtype} pydtool.cxx) + target_use_packages(interrogatedb PYTHON) + target_link_libraries(interrogatedb p3dtoolconfig) -target_use_packages(p3dtoolconfig PYTHON) -target_link_libraries(p3dtoolconfig p3prc p3dconfig p3interrogatedb) -set_target_properties(p3dtoolconfig PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d" - PREFIX "" - OUTPUT_NAME "interrogatedb" -) + set_target_properties(interrogatedb PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/panda3d" + PREFIX "" + OUTPUT_NAME "interrogatedb" + ) -if(HAVE_PYTHON) - install(TARGETS p3dtoolconfig DESTINATION "${PYTHON_ARCH_INSTALL_DIR}/panda3d") -else() - install(TARGETS p3dtoolconfig DESTINATION lib) + install(TARGETS interrogatedb DESTINATION "${PYTHON_ARCH_INSTALL_DIR}/panda3d") endif() diff --git a/dtool/src/cppparser/CMakeLists.txt b/dtool/src/cppparser/CMakeLists.txt index 4384f756e9..da649eaed5 100644 --- a/dtool/src/cppparser/CMakeLists.txt +++ b/dtool/src/cppparser/CMakeLists.txt @@ -40,6 +40,6 @@ set(P3CPPPARSER_SOURCES composite_sources(p3cppParser P3CPPPARSER_SOURCES) add_library(p3cppParser STATIC ${P3CPPPARSER_HEADERS} ${P3CPPPARSER_SOURCES}) -target_link_libraries(p3cppParser p3dtoolutil) +target_link_libraries(p3cppParser p3dtool) install(TARGETS p3cppParser DESTINATION lib) diff --git a/dtool/src/dconfig/CMakeLists.txt b/dtool/src/dconfig/CMakeLists.txt index 642619c0b9..445692204f 100644 --- a/dtool/src/dconfig/CMakeLists.txt +++ b/dtool/src/dconfig/CMakeLists.txt @@ -6,8 +6,8 @@ set(P3DCONFIG_SOURCES composite_sources(p3dconfig P3DCONFIG_SOURCES) -add_library(p3dconfig ${P3DCONFIG_HEADERS} ${P3DCONFIG_SOURCES}) -set_target_properties(p3dconfig PROPERTIES DEFINE_SYMBOL BUILDING_DTOOL_DCONFIG) +add_component_library(p3dconfig SYMBOL BUILDING_DTOOL_DCONFIG + ${P3DCONFIG_HEADERS} ${P3DCONFIG_SOURCES}) target_link_libraries(p3dconfig p3prc) install(TARGETS p3dconfig DESTINATION lib) diff --git a/dtool/src/dtoolbase/CMakeLists.txt b/dtool/src/dtoolbase/CMakeLists.txt index 7e7f1fd3cd..3de0b9cae4 100644 --- a/dtool/src/dtoolbase/CMakeLists.txt +++ b/dtool/src/dtoolbase/CMakeLists.txt @@ -69,8 +69,8 @@ set(P3DTOOLBASE_IGATEEXT composite_sources(p3dtoolbase P3DTOOLBASE_SOURCES) -add_library(p3dtoolbase ${P3DTOOLBASE_HEADERS} ${P3DTOOLBASE_SOURCES}) -set_target_properties(p3dtoolbase PROPERTIES DEFINE_SYMBOL BUILDING_DTOOL_DTOOLBASE) +add_component_library(p3dtoolbase SYMBOL BUILDING_DTOOL_DTOOLBASE + ${P3DTOOLBASE_HEADERS} ${P3DTOOLBASE_SOURCES}) # The extensions need py_panda.h and extension.h from interrogatedb target_include_directories(p3dtoolbase PUBLIC $) diff --git a/dtool/src/dtoolutil/CMakeLists.txt b/dtool/src/dtoolutil/CMakeLists.txt index 6b0a72e248..e2e8cd5cd6 100644 --- a/dtool/src/dtoolutil/CMakeLists.txt +++ b/dtool/src/dtoolutil/CMakeLists.txt @@ -71,8 +71,9 @@ set(P3DTOOLUTIL_IGATEEXT composite_sources(p3dtoolutil P3DTOOLUTIL_SOURCES) -add_library(p3dtoolutil ${P3DTOOLUTIL_HEADERS} ${P3DTOOLUTIL_SOURCES}) -set_target_properties(p3dtoolutil PROPERTIES DEFINE_SYMBOL BUILDING_DTOOL_DTOOLUTIL) +add_component_library(p3dtoolutil SYMBOL BUILDING_DTOOL_DTOOLUTIL + ${P3DTOOLUTIL_HEADERS} ${P3DTOOLUTIL_SOURCES}) +target_include_directories(p3dtoolutil PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) # The extensions need py_panda.h and extension.h from interrogatedb target_include_directories(p3dtoolutil PUBLIC $) diff --git a/dtool/src/interrogate/CMakeLists.txt b/dtool/src/interrogate/CMakeLists.txt index 272b81e869..81c213dbdb 100644 --- a/dtool/src/interrogate/CMakeLists.txt +++ b/dtool/src/interrogate/CMakeLists.txt @@ -53,12 +53,10 @@ composite_sources(interrogate INTERROGATE_SOURCES) add_executable(interrogate ${INTERROGATE_HEADERS} ${INTERROGATE_SOURCES}) target_link_libraries(interrogate - p3cppParser p3interrogatedb p3dconfig p3prc p3dtoolutil p3dtoolbase - p3pystub ${_OPENSSL_LIBRARIES}) + p3cppParser p3dtoolconfig p3pystub ${_OPENSSL_LIBRARIES}) install(TARGETS interrogate DESTINATION bin) add_executable(interrogate_module interrogate_module.cxx) target_link_libraries(interrogate_module - p3cppParser p3interrogatedb p3dconfig p3prc p3dtoolutil p3dtoolbase - p3pystub ${_OPENSSL_LIBRARIES}) + p3cppParser p3dtoolconfig p3pystub ${_OPENSSL_LIBRARIES}) install(TARGETS interrogate_module DESTINATION bin) diff --git a/dtool/src/interrogatedb/CMakeLists.txt b/dtool/src/interrogatedb/CMakeLists.txt index 2e15dce1ea..ebad56ecab 100644 --- a/dtool/src/interrogatedb/CMakeLists.txt +++ b/dtool/src/interrogatedb/CMakeLists.txt @@ -40,7 +40,8 @@ set(P3INTERROGATEDB_IGATE_SOURCES interrogateType.cxx interrogate_datafile.cxx interrogate_interface.cxx interrogate_request.cxx) -add_library(p3interrogatedb ${P3INTERROGATEDB_HEADERS} ${P3INTERROGATEDB_SOURCES}) +add_component_library(p3interrogatedb SYMBOL SYMBOL BUILDING_INTERROGATEDB + ${P3INTERROGATEDB_HEADERS} ${P3INTERROGATEDB_SOURCES}) target_link_libraries(p3interrogatedb p3dconfig) target_use_packages(p3interrogatedb PYTHON) target_interrogate(p3interrogatedb ${P3INTERROGATEDB_IGATE_SOURCES}) diff --git a/dtool/src/prc/CMakeLists.txt b/dtool/src/prc/CMakeLists.txt index e295f1fa37..3d478ede3a 100644 --- a/dtool/src/prc/CMakeLists.txt +++ b/dtool/src/prc/CMakeLists.txt @@ -70,12 +70,12 @@ set(P3PRC_IGATEEXT composite_sources(p3prc P3PRC_SOURCES) -add_library(p3prc ${P3PRC_HEADERS} ${P3PRC_SOURCES}) -set_target_properties(p3prc PROPERTIES DEFINE_SYMBOL BUILDING_DTOOL_PRC) +add_component_library(p3prc SYMBOL BUILDING_DTOOL_PRC + ${P3PRC_HEADERS} ${P3PRC_SOURCES}) # The extensions need py_panda.h and extension.h from interrogatedb target_include_directories(p3prc PUBLIC $) -target_link_libraries(p3prc p3dtoolutil p3dtoolbase ${_OPENSSL_LIBRARIES}) +target_link_libraries(p3prc p3dtool ${_OPENSSL_LIBRARIES}) target_interrogate(p3prc ALL EXTENSIONS ${P3PRC_IGATEEXT}) install(TARGETS p3prc DESTINATION lib) diff --git a/dtool/src/pystub/CMakeLists.txt b/dtool/src/pystub/CMakeLists.txt index 09cc066b09..70d8a24a4a 100644 --- a/dtool/src/pystub/CMakeLists.txt +++ b/dtool/src/pystub/CMakeLists.txt @@ -2,5 +2,5 @@ set(P3PYSTUB_HEADERS pystub.h) set(P3PYSTUB_SOURCES pystub.cxx) add_library(p3pystub STATIC ${P3PYSTUB_HEADERS} ${P3PYSTUB_SOURCES}) -target_link_libraries(p3pystub p3dtoolbase) +target_link_libraries(p3pystub p3dtool) install(FILES ${P3PYSTUB_HEADERS} DESTINATION include/panda3d) diff --git a/panda/src/express/CMakeLists.txt b/panda/src/express/CMakeLists.txt index bd009eb923..0543f743c8 100644 --- a/panda/src/express/CMakeLists.txt +++ b/panda/src/express/CMakeLists.txt @@ -150,7 +150,7 @@ add_component_library(p3express SYMBOL BUILDING_PANDAEXPRESS # p3express needs to include from p3interrogatedb for py_panda.h and extension.h target_include_directories(p3express PUBLIC $) -target_link_libraries(p3express p3pandabase p3dtool p3prc p3dconfig) +target_link_libraries(p3express p3pandabase p3dtoolconfig p3dtool) target_use_packages(p3express TAR ZLIB) target_interrogate(p3express ALL EXTENSIONS ${P3EXPRESS_IGATEEXT}) diff --git a/panda/src/movies/CMakeLists.txt b/panda/src/movies/CMakeLists.txt index d1030f40f5..9369d9beaf 100644 --- a/panda/src/movies/CMakeLists.txt +++ b/panda/src/movies/CMakeLists.txt @@ -44,7 +44,7 @@ set(P3MOVIES_SOURCES composite_sources(p3movies P3MOVIES_SOURCES) add_component_library(p3movies SYMBOL BUILDING_PANDA_MOVIES ${P3MOVIES_HEADERS} ${P3MOVIES_SOURCES}) -target_link_libraries(p3movies p3pandabase p3express p3pstatclient p3gobj p3dconfig p3prc) +target_link_libraries(p3movies p3pstatclient p3gobj p3express p3pandabase) target_interrogate(p3movies ALL) install(TARGETS p3movies DESTINATION lib) diff --git a/panda/src/pandabase/CMakeLists.txt b/panda/src/pandabase/CMakeLists.txt index 97261c5f4f..4e9b89735c 100644 --- a/panda/src/pandabase/CMakeLists.txt +++ b/panda/src/pandabase/CMakeLists.txt @@ -7,7 +7,7 @@ set(P3PANDABASE_SOURCES ) add_component_library(p3pandabase ${P3PANDABASE_HEADERS} ${P3PANDABASE_SOURCES}) -target_link_libraries(p3pandabase p3dtoolbase) +target_link_libraries(p3pandabase p3dtool) install(TARGETS p3pandabase DESTINATION lib) install(FILES ${P3PANDABASE_HEADERS} DESTINATION include/panda3d)