aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/physx/omniverse-physx-sdk-config.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/physx/omniverse-physx-sdk-config.cmake')
-rw-r--r--vcpkg/ports/physx/omniverse-physx-sdk-config.cmake117
1 files changed, 117 insertions, 0 deletions
diff --git a/vcpkg/ports/physx/omniverse-physx-sdk-config.cmake b/vcpkg/ports/physx/omniverse-physx-sdk-config.cmake
new file mode 100644
index 0000000..763c7da
--- /dev/null
+++ b/vcpkg/ports/physx/omniverse-physx-sdk-config.cmake
@@ -0,0 +1,117 @@
+# omniverse-physx-sdk-config.cmake (from which unofficial-omniverse-physx-sdk-config.cmake is generated)
+# A user's CMakeLists.txt should:
+# find_package(unofficial-omniverse-physx-sdk CONFIG REQUIRED)
+# target_link_libraries(main PRIVATE unofficial::omniverse-physx-sdk::sdk)
+# the GPU acceleration .so/.dll libraries are in the port's tools/ directory (needed for late binding).
+# See the usage file for more info and more detailed explanation on how to use this.
+
+include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
+
+if(NOT TARGET unofficial::omniverse-physx-sdk)
+ # Find include and library directories (up one level multiple times)
+ get_filename_component(z_vcpkg_omniverse_physx_sdk_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH)
+ get_filename_component(z_vcpkg_omniverse_physx_sdk_prefix "${z_vcpkg_omniverse_physx_sdk_prefix}" PATH)
+ get_filename_component(z_vcpkg_omniverse_physx_sdk_prefix "${z_vcpkg_omniverse_physx_sdk_prefix}" PATH)
+
+ get_filename_component(OMNIVERSE-PHYSX-SDK_INCLUDE_DIRS "${z_vcpkg_omniverse_physx_sdk_prefix}/include/physx" ABSOLUTE)
+ get_filename_component(OMNIVERSE-PHYSX-SDK_RELEASE_LIBS_DIR "${z_vcpkg_omniverse_physx_sdk_prefix}/lib" ABSOLUTE)
+ get_filename_component(OMNIVERSE-PHYSX-SDK_DEBUG_LIBS_DIR "${z_vcpkg_omniverse_physx_sdk_prefix}/debug/lib" ABSOLUTE)
+ get_filename_component(OMNIVERSE-PHYSX-SDK_RELEASE_BIN_DIR "${z_vcpkg_omniverse_physx_sdk_prefix}/bin" ABSOLUTE)
+ get_filename_component(OMNIVERSE-PHYSX-SDK_DEBUG_BIN_DIR "${z_vcpkg_omniverse_physx_sdk_prefix}/debug/bin" ABSOLUTE)
+ get_filename_component(OMNIVERSE-PHYSX-SDK_RELEASE_TOOLS_DIR "${z_vcpkg_omniverse_physx_sdk_prefix}/tools" ABSOLUTE)
+
+ # Find main library files
+ find_library(OMNIVERSE-PHYSX-SDK_LIBRARY_RELEASE NAMES PhysX_static_64 PhysX_64 PATHS "${OMNIVERSE-PHYSX-SDK_RELEASE_LIBS_DIR}" NO_DEFAULT_PATH)
+ find_library(OMNIVERSE-PHYSX-SDK_LIBRARY_DEBUG NAMES PhysX_static_64 PhysX_64 PATHS "${OMNIVERSE-PHYSX-SDK_DEBUG_LIBS_DIR}" NO_DEFAULT_PATH)
+
+ # Finally create the imported target that users will link against
+ set(OMNIVERSE-PHYSX-SDK_LIBRARIES "")
+ add_library(unofficial::omniverse-physx-sdk::sdk UNKNOWN IMPORTED)
+
+ # Set IMPORTED_IMPLIB for the main target in case of dynamic libraries
+ if (WIN32 AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ set_target_properties(unofficial::omniverse-physx-sdk::sdk PROPERTIES
+ IMPORTED_IMPLIB_RELEASE "${OMNIVERSE-PHYSX-SDK_LIBRARY_RELEASE}"
+ IMPORTED_IMPLIB_DEBUG "${OMNIVERSE-PHYSX-SDK_LIBRARY_DEBUG}"
+ )
+ endif()
+
+ set_target_properties(unofficial::omniverse-physx-sdk::sdk PROPERTIES
+ IMPORTED_CONFIGURATIONS "DEBUG;RELEASE"
+ IMPORTED_LOCATION_RELEASE "${OMNIVERSE-PHYSX-SDK_LIBRARY_RELEASE}"
+ IMPORTED_LOCATION_DEBUG "${OMNIVERSE-PHYSX-SDK_LIBRARY_DEBUG}"
+ INTERFACE_INCLUDE_DIRECTORIES "${OMNIVERSE-PHYSX-SDK_INCLUDE_DIRS}"
+ )
+
+ # Add compile definitions to the target for debug/release builds
+ target_compile_definitions(unofficial::omniverse-physx-sdk::sdk INTERFACE $<$<CONFIG:Debug>:_DEBUG>)
+
+ set(lib_names
+ PhysXExtensions
+ PhysXPvdSDK
+ PhysXCharacterKinematic
+ PhysXCooking
+ PhysXCommon
+ PhysXFoundation
+ PhysXVehicle
+ )
+ if(WIN32)
+ list(APPEND lib_names PhysXVehicle2)
+ endif()
+
+ foreach(name IN LISTS lib_names)
+ find_library(OMNIVERSE_${name}_LIBRARY_RELEASE
+ NAMES ${name}_static_64 ${name}_64 # ... all candidates, only one should be installed for a given triplet
+ PATHS "${OMNIVERSE-PHYSX-SDK_RELEASE_LIBS_DIR}"
+ NO_DEFAULT_PATH
+ REQUIRED
+ )
+ find_library(OMNIVERSE_${name}_LIBRARY_DEBUG
+ NAMES ${name}_static_64 ${name}_64 # ... all candidates, only one should be installed for a given triplet
+ PATHS "${OMNIVERSE-PHYSX-SDK_DEBUG_LIBS_DIR}"
+ NO_DEFAULT_PATH
+ # not REQUIRED, due to release-only builds
+ )
+ add_library(unofficial::omniverse-physx-sdk::${name} UNKNOWN IMPORTED)
+ set_target_properties(unofficial::omniverse-physx-sdk::${name}
+ PROPERTIES
+ IMPORTED_CONFIGURATIONS "RELEASE"
+ IMPORTED_LOCATION_RELEASE "${OMNIVERSE_${name}_LIBRARY_RELEASE}"
+ )
+ if(OMNIVERSE_${name}_LIBRARY_DEBUG)
+ set_target_properties(unofficial::omniverse-physx-sdk::${name}
+ PROPERTIES
+ IMPORTED_CONFIGURATIONS "DEBUG;RELEASE"
+ IMPORTED_LOCATION_DEBUG "${OMNIVERSE_${name}_LIBRARY_DEBUG}"
+ )
+ endif()
+ set_property(TARGET unofficial::omniverse-physx-sdk::sdk APPEND PROPERTY
+ INTERFACE_LINK_LIBRARIES unofficial::omniverse-physx-sdk::${name}
+ )
+ select_library_configurations(OMNIVERSE_${name})
+ endforeach()
+
+ # Lastly also provide a target for clients to link with the GPU library (optional, provided by NVIDIA and downloaded through packman)
+
+ # Find GPU library files (these are used at late-binding to enable GPU acceleration)
+ if(WIN32)
+ find_file(OMNIVERSE-PHYSX-SDK-GPU_LIBRARY_RELEASE NAMES PhysXGpu_64.dll PATHS "${OMNIVERSE-PHYSX-SDK_RELEASE_TOOLS_DIR}" NO_DEFAULT_PATH)
+ find_file(OMNIVERSE-PHYSX-SDK-GPU_DEVICE_LIBRARY_RELEASE NAMES PhysXDevice64.dll PATHS "${OMNIVERSE-PHYSX-SDK_RELEASE_TOOLS_DIR}" NO_DEFAULT_PATH)
+ elseif(UNIX)
+ find_file(OMNIVERSE-PHYSX-SDK-GPU_LIBRARY_RELEASE NAMES libPhysXGpu_64.so PATHS "${OMNIVERSE-PHYSX-SDK_RELEASE_TOOLS_DIR}" NO_DEFAULT_PATH)
+ endif()
+
+ # Create imported targets for GPU library (only release is used)
+ add_library(unofficial::omniverse-physx-sdk::gpu-library SHARED IMPORTED)
+ set_target_properties(unofficial::omniverse-physx-sdk::gpu-library PROPERTIES
+ IMPORTED_CONFIGURATIONS "DEBUG;RELEASE"
+ IMPORTED_LOCATION "${OMNIVERSE-PHYSX-SDK-GPU_LIBRARY_RELEASE}"
+ )
+ if(WIN32)
+ add_library(unofficial::omniverse-physx-sdk::gpu-device-library SHARED IMPORTED)
+ set_target_properties(unofficial::omniverse-physx-sdk::gpu-device-library PROPERTIES
+ IMPORTED_CONFIGURATIONS "DEBUG;RELEASE"
+ IMPORTED_LOCATION "${OMNIVERSE-PHYSX-SDK-GPU_DEVICE_LIBRARY_RELEASE}"
+ )
+ endif()
+endif()