From f8a1edb0c97d8b4d9e022d6de4fd22bc8a46ff87 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com> Date: Sat, 18 Dec 2021 00:35:35 -0500 Subject: [PATCH] COMP: Simplify and fix handling of PHYSX_CONFIGURATION option This commit sets the cache variable prior configuring the outer build (SUPERBUILD=ON) and it makes sure it is also propagated down to the inner project. --- CMake/External/CMakeLists.txt | 7 +++++-- CMakeLists.txt | 24 ++++++++++++++---------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/CMake/External/CMakeLists.txt b/CMake/External/CMakeLists.txt index 72c51131f..05a584dcf 100644 --- a/CMake/External/CMakeLists.txt +++ b/CMake/External/CMakeLists.txt @@ -87,6 +87,11 @@ if(WIN32) -D${PROJECT_NAME}_ENABLE_AUDIO:BOOL=${${PROJECT_NAME}_AUDIO_ENABLED} ) endif() +if(iMSTK_USE_PHYSX) + list(APPEND EXTERNAL_PROJECT_OPTIONAL_CMAKE_CACHE_ARGS + -DPHYSX_CONFIGURATION:STRING=${PHYSX_CONFIGURATION} + ) +endif() #----------------------------------------------------------------------------- # Inner build of the main project @@ -113,8 +118,6 @@ ExternalProject_Add( ${PROJECT_NAME} -DGTest_DIR:PATH=${GTest_DIR} -DVegaFEM_DIR:PATH=${VegaFEM_DIR} -DVTK_DIR:PATH=${VTK_DIR} - # I don't think this is needed by the inner build - # -DPHYSX_CONFIGURATION:STRING=${${PROJECT_NAME}_PHYSX_CONFIGURATION} ${EXTERNAL_PROJECT_OPTIONAL_CMAKE_CACHE_ARGS} DEPENDS ${${PROJECT_NAME}_DEPENDENCIES} PATCH_COMMAND diff --git a/CMakeLists.txt b/CMakeLists.txt index c93afc3a0..19040cc93 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,6 +135,16 @@ if (UNIX) endif() option(${PROJECT_NAME}_USE_VRPN "Build with VRPN support" OFF) option(${PROJECT_NAME}_USE_PHYSX "Build with Physx support" OFF) +if(iMSTK_USE_PHYSX) + set(PHYSX_CONFIGURATION "RELEASE" CACHE STRING "PhysX release library type") + + # Set the possible values for cmake-gui + set_property(CACHE PHYSX_CONFIGURATION PROPERTY STRINGS + "RELEASE" + "CHECKED" + "PROFILE" + ) +endif() #----------------------------------------------------------------------------- # CTest/Dashboards @@ -152,11 +162,6 @@ option(${PROJECT_NAME}_SUPERBUILD "Build ${PROJECT_NAME} and the projects it dep if(${PROJECT_NAME}_SUPERBUILD) - # Select the release version of PhysX to use - set(${PROJECT_NAME}_PHYSX_CONFIGURATION "RELEASE" CACHE STRING "Select PhysX Library Type for Release and RelWithDebInfo builds") - set(PHYSX_RELEASE_TYPES "RELEASE;CHECKED;PROFILE" CACHE INTERNAL "List of available PhysX release library types") - set_property(CACHE ${PROJECT_NAME}_PHYSX_CONFIGURATION PROPERTY STRINGS ${PHYSX_RELEASE_TYPES}) - #----------------------------------------------------------------------------- # Define External dependencies #----------------------------------------------------------------------------- @@ -268,12 +273,11 @@ find_package( Libusb REQUIRED) # OpenVR find_package( OpenVR REQUIRED ) -# Select the release version of PhysX to use -if (${PROJECT_NAME}_USE_PHYSX) +# PhysX +if (iMSTK_USE_PHYSX) add_compile_definitions(IMSTK_USE_PHYSX) - set(PHYSX_CONFIGURATION "${PHYSX_CONFIGURATION}" CACHE STRING "Select PhysX Library Type for Release and RelWithDebInfo builds") - set(PHYSX_RELEASE_TYPES "RELEASE;CHECKED;PROFILE" CACHE INTERNAL "List of available PhysX release library types") - set_property(CACHE PHYSX_CONFIGURATION PROPERTY STRINGS ${PHYSX_RELEASE_TYPES}) + # Variable PHYSX_CONFIGURATION used in FindPhysX.cmake is set above where + # iMSTK_USE_PHYSX CMake option is defined. find_package(PhysX REQUIRED) endif() -- GitLab