From 4b70cb162e5b689dcd4b887a831e07b1d6068d74 Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Tue, 29 May 2018 22:21:31 -0600 Subject: [PATCH 1/5] CMake: Don't metalib p3distributed when not built --- direct/CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/direct/CMakeLists.txt b/direct/CMakeLists.txt index 5d4f4ed088..34f798bd00 100644 --- a/direct/CMakeLists.txt +++ b/direct/CMakeLists.txt @@ -17,7 +17,13 @@ add_subdirectory(src/interval) add_subdirectory(src/showbase) # TODO: p3direct needs a source file! -add_metalib(p3direct COMPONENTS p3dcparser p3deadrec p3distributed p3interval p3showbase) +set(P3DIRECT_COMPONENTS + p3dcparser p3deadrec + p3interval p3showbase) +if(HAVE_PYTHON) + list(APPEND P3DIRECT_COMPONENTS p3distributed) +endif() +add_metalib(p3direct COMPONENTS ${P3DIRECT_COMPONENTS}) set_property(TARGET p3direct PROPERTY LINKER_LANGUAGE "CXX") if(HAVE_PYTHON) From d0ced03ffdc4d867689ac7c94c6308b2ab823051 Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Tue, 29 May 2018 22:37:38 -0600 Subject: [PATCH 2/5] CMake: Build direct.motiontrail This covers pretty much all of direct, except for directd. --- direct/CMakeLists.txt | 12 ++++++------ direct/src/motiontrail/CMakeLists.txt | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 direct/src/motiontrail/CMakeLists.txt diff --git a/direct/CMakeLists.txt b/direct/CMakeLists.txt index 34f798bd00..2c45cf0941 100644 --- a/direct/CMakeLists.txt +++ b/direct/CMakeLists.txt @@ -10,16 +10,14 @@ add_subdirectory(src/deadrec) #add_subdirectory(src/directdServer) #add_subdirectory(src/directd) add_subdirectory(src/distributed) -#add_subdirectory(src/heapq) -#add_subdirectory(src/http) add_subdirectory(src/interval) -#add_subdirectory(src/motiontrail) +add_subdirectory(src/motiontrail) add_subdirectory(src/showbase) # TODO: p3direct needs a source file! set(P3DIRECT_COMPONENTS - p3dcparser p3deadrec - p3interval p3showbase) + p3dcparser p3deadrec p3interval + p3motiontrail p3showbase) if(HAVE_PYTHON) list(APPEND P3DIRECT_COMPONENTS p3distributed) endif() @@ -27,7 +25,9 @@ add_metalib(p3direct COMPONENTS ${P3DIRECT_COMPONENTS}) set_property(TARGET p3direct PROPERTY LINKER_LANGUAGE "CXX") if(HAVE_PYTHON) - add_python_module(direct p3dcparser p3deadrec p3distributed p3interval p3showbase LINK p3direct IMPORT panda3d.core) + add_python_module(direct + p3dcparser p3deadrec p3distributed p3interval + p3motiontrail p3showbase LINK p3direct IMPORT panda3d.core) # Make an __init__.py pointing at the source directory so users can run # Panda3D code straight from their build path: diff --git a/direct/src/motiontrail/CMakeLists.txt b/direct/src/motiontrail/CMakeLists.txt new file mode 100644 index 0000000000..6e70bc5a33 --- /dev/null +++ b/direct/src/motiontrail/CMakeLists.txt @@ -0,0 +1,15 @@ +set(P3MOTIONTRAIL_HEADERS + config_motiontrail.h + cMotionTrail.h) + +set(P3MOTIONTRAIL_SOURCES + config_motiontrail.cxx + cMotionTrail.cxx) + +add_component_library(p3motiontrail SYMBOL BUILDING_DIRECT_MOTIONTRAIL + ${P3MOTIONTRAIL_HEADERS} ${P3MOTIONTRAIL_SOURCES}) +target_link_libraries(p3motiontrail p3directbase panda) +target_interrogate(p3motiontrail ALL) + +install(TARGETS p3motiontrail DESTINATION lib) +install(FILES ${P3MOTIONTRAIL_HEADERS} DESTINATION include/panda3d) From 407589873ae9194f0f62657f00310104919b1236 Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Wed, 30 May 2018 00:30:15 -0600 Subject: [PATCH 3/5] CMake: Update some Windows-specific rules --- CMakeLists.txt | 7 +++++++ direct/src/dcparse/CMakeLists.txt | 6 ++++++ panda/metalibs/pandagl/CMakeLists.txt | 11 ++++++----- panda/src/wgldisplay/CMakeLists.txt | 2 +- panda/src/windisplay/CMakeLists.txt | 2 +- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bcb35b6fe..0f372b37d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,13 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") +# Runtime code assumes that dynamic modules have a "lib" prefix; Windows +# assumes that debug libraries have a _d suffix. +set(CMAKE_SHARED_MODULE_PREFIX "lib") +if(WIN32) + set(CMAKE_DEBUG_POSTFIX "_d") +endif() + # Include global modules needed for configure scripts include(PackageConfig) # Defines package_option AND target_use_packages diff --git a/direct/src/dcparse/CMakeLists.txt b/direct/src/dcparse/CMakeLists.txt index f6182aeca1..1c4a4b55a2 100644 --- a/direct/src/dcparse/CMakeLists.txt +++ b/direct/src/dcparse/CMakeLists.txt @@ -1,3 +1,9 @@ +if(WIN32) + # We can't build dcparse on Windows, because the dcparser symbols aren't + # properly exported from p3direct.dll. + return() +endif() + add_executable(dcparse dcparse.cxx) target_compile_definitions(dcparse PUBLIC WITHIN_PANDA) target_link_libraries(dcparse p3direct) diff --git a/panda/metalibs/pandagl/CMakeLists.txt b/panda/metalibs/pandagl/CMakeLists.txt index 150b969856..d65abc48f5 100644 --- a/panda/metalibs/pandagl/CMakeLists.txt +++ b/panda/metalibs/pandagl/CMakeLists.txt @@ -10,21 +10,22 @@ if(HAVE_GL) set(PANDAGL_LINK_TARGETS p3glgsg) if(HAVE_GLX) - list(APPEND PANDAGL_LINK_TARGETS p3glxdisplay) + list(APPEND PANDAGL_LINK_TARGETS p3glxdisplay p3x11display) endif() + if(HAVE_WGL) - list(APPEND PANDAGL_LINK_TARGETS p3wgldisplay) + list(APPEND PANDAGL_LINK_TARGETS p3wgldisplay p3windisplay) endif() if(HAVE_COCOA) - set(PANDAGL_LINK_TARGETS ${PANDAGL_LINK_TARGETS} p3cocoadisplay) + list(APPEND PANDAGL_LINK_TARGETS p3cocoadisplay) endif() if(HAVE_CARBON) - set(PANDAGL_LINK_TARGETS ${PANDAGL_LINK_TARGETS} p3osxdisplay) + list(APPEND PANDAGL_LINK_TARGETS p3osxdisplay) endif() - add_metalib(pandagl pandagl.cxx COMPONENTS ${PANDAGL_LINK_TARGETS}) + add_metalib(pandagl ${MODULE_TYPE} pandagl.cxx COMPONENTS ${PANDAGL_LINK_TARGETS}) set_target_properties(pandagl PROPERTIES DEFINE_SYMBOL BUILDING_PANDAGL) install(TARGETS pandagl DESTINATION lib) diff --git a/panda/src/wgldisplay/CMakeLists.txt b/panda/src/wgldisplay/CMakeLists.txt index a645b9ba9b..54c55f1579 100644 --- a/panda/src/wgldisplay/CMakeLists.txt +++ b/panda/src/wgldisplay/CMakeLists.txt @@ -21,4 +21,4 @@ set(P3WGLDISPLAY_SOURCES composite_sources(p3wgldisplay P3WGLDISPLAY_SOURCES) add_component_library(p3wgldisplay SYMBOL BUILDING_PANDAGL ${P3WGLDISPLAY_HEADERS} ${P3WGLDISPLAY_SOURCES}) -target_link_libraries(p3wgldisplay p3display p3putil p3windisplay p3glgsg) +target_link_libraries(p3wgldisplay p3glgsg p3windisplay) diff --git a/panda/src/windisplay/CMakeLists.txt b/panda/src/windisplay/CMakeLists.txt index 6234426986..a8fd62ee56 100644 --- a/panda/src/windisplay/CMakeLists.txt +++ b/panda/src/windisplay/CMakeLists.txt @@ -16,4 +16,4 @@ set(P3WINDISPLAY_SOURCES composite_sources(p3windisplay P3WINDISPLAY_SOURCES) add_component_library(p3windisplay SYMBOL BUILDING_PANDAWIN ${P3WINDISPLAY_HEADERS} ${P3WINDISPLAY_SOURCES}) -target_link_libraries(p3windisplay p3display p3putil Imm32.lib) +target_link_libraries(p3windisplay panda User32.lib Imm32.lib) From 7e4f9b4c8e745a5d4317afa3a6d27c13efedabba Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Wed, 30 May 2018 00:39:39 -0600 Subject: [PATCH 4/5] CMake: Make p3directbase a component library --- direct/CMakeLists.txt | 4 ++-- direct/src/directbase/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/direct/CMakeLists.txt b/direct/CMakeLists.txt index 2c45cf0941..b8276b9c6f 100644 --- a/direct/CMakeLists.txt +++ b/direct/CMakeLists.txt @@ -16,8 +16,8 @@ add_subdirectory(src/showbase) # TODO: p3direct needs a source file! set(P3DIRECT_COMPONENTS - p3dcparser p3deadrec p3interval - p3motiontrail p3showbase) + p3dcparser p3deadrec p3directbase + p3interval p3motiontrail p3showbase) if(HAVE_PYTHON) list(APPEND P3DIRECT_COMPONENTS p3distributed) endif() diff --git a/direct/src/directbase/CMakeLists.txt b/direct/src/directbase/CMakeLists.txt index 4abea24c3e..445abbe0f8 100644 --- a/direct/src/directbase/CMakeLists.txt +++ b/direct/src/directbase/CMakeLists.txt @@ -7,7 +7,7 @@ set(P3DIRECTBASE_HEADERS ) # Not worth compositing sources, there's really only one. -add_library(p3directbase ${P3DIRECTBASE_HEADERS} ${P3DIRECTBASE_SOURCES}) +add_component_library(p3directbase ${P3DIRECTBASE_HEADERS} ${P3DIRECTBASE_SOURCES}) target_link_libraries(p3directbase panda) install(TARGETS p3directbase DESTINATION lib) From f54b4b61dd20815d752667d3d57bce6880904e18 Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Thu, 31 May 2018 20:25:27 -0600 Subject: [PATCH 5/5] CMake: Don't use pzip when not built --- CMakeLists.txt | 4 ++-- cmake/macros/RunPzip.cmake | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f372b37d8..bef1ac8cbd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,7 +90,7 @@ if(BUILD_MODELS) DESTINATION "${PROJECT_BINARY_DIR}/models/maps" ) run_pzip(models - "${CMAKE_CURRENT_SOURCE_DIR}/models" + "${CMAKE_CURRENT_SOURCE_DIR}/models/" "${PROJECT_BINARY_DIR}/models" *.egg ) @@ -99,7 +99,7 @@ if(BUILD_MODELS) FILES_MATCHING PATTERN *.rgb PATTERN *.png PATTERN *.jpg PATTERN *.wav ) run_pzip(dmodels - "${CMAKE_CURRENT_SOURCE_DIR}/dmodels/src" + "${CMAKE_CURRENT_SOURCE_DIR}/dmodels/src/" "${PROJECT_BINARY_DIR}/models" *.egg ) diff --git a/cmake/macros/RunPzip.cmake b/cmake/macros/RunPzip.cmake index ef428b92d6..6cb30d6880 100644 --- a/cmake/macros/RunPzip.cmake +++ b/cmake/macros/RunPzip.cmake @@ -1,4 +1,12 @@ function(run_pzip target_name source destination glob) + if(NOT TARGET pzip) + # If pzip isn't built, we just copy instead. + file(COPY "${source}" + DESTINATION "${destination}" + FILES_MATCHING PATTERN "${glob}") + return() + endif() + file(GLOB_RECURSE files RELATIVE "${source}" "${source}/${glob}") set(dstfiles "")