# - Try to find PxShared binary SDK # - Sets PXSHAREDSDK_LIBS_DEBUG and PXSHAREDSDK_LIBS_RELEASE - lists of the libraries found # - Sets PXSHAREDSDK_INCLUDE_DIRS # - Sets PXSHAREDSDK_DLLS - List of the DLLs to copy to the bin directory of projects that depend on this include(FindPackageHandleStandardArgs) # Find the includes # Always try explicit PATH variable first find_path(PXSHAREDSDK_PATH include/foundation/Px.h PATHS $ENV{PM_PxShared_PATH} $ENV{PM_PhysX_PATH}/PxShared # multipack ${GW_DEPS_ROOT}/$ENV{PM_PxShared_NAME}/${PxSharedSDK_FIND_VERSION} ${GW_DEPS_ROOT}/PxShared/${PxSharedSDK_FIND_VERSION} ) if (TARGET_BUILD_PLATFORM STREQUAL "Windows") # If the project pulling in this dependency needs the static crt, then append that to the path. if (STATIC_WINCRT) SET(PXSHARED_CRT_SUFFIX "-staticcrt") else() SET(PXSHARED_CRT_SUFFIX "") endif() if (CMAKE_CL_64) SET(PXSHARED_ARCH_FOLDER "win64") SET(PXSHARED_ARCH_FILE "_x64") else() SET(PXSHARED_ARCH_FOLDER "win32") SET(PXSHARED_ARCH_FILE "_x86") endif() # What compiler version do we want? if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 18.0.0.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0.0) SET(VS_STR "VS2013") elseif (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10.0.0) SET(VS_STR "VS2015") elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.10.0.0) SET(VS_STR "VS2017") else() MESSAGE(FATAL_ERROR "Failed to find compatible PxSharedSDK - Only supporting VS2013 and VS2015") endif() SET(LIB_PATH ${PXSHAREDSDK_PATH}/lib/${VS_STR}${PXSHARED_ARCH_FOLDER}-cmake${PXSHARED_CRT_SUFFIX} ${PXSHAREDSDK_PATH}/lib/${VS_STR}${PXSHARED_ARCH_FOLDER} ${PXSHAREDSDK_PATH}/../lib/${PXSHARED_ARCH_FOLDER}/${VS_STR} ${PXSHAREDSDK_PATH}/../lib) SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll") elseif(TARGET_BUILD_PLATFORM STREQUAL "PS4") SET(LIB_PATH ${PXSHAREDSDK_PATH}/lib/vc14ps4-cmake ${PXSHAREDSDK_PATH}/../lib) SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") SET(CMAKE_FIND_LIBRARY_PREFIXES "lib") elseif(TARGET_BUILD_PLATFORM STREQUAL "XboxOne") SET(LIB_PATH ${PXSHAREDSDK_PATH}/lib/vc14xboxone-cmake ${PXSHAREDSDK_PATH}/../Lib) SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".lib") SET(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") elseif(TARGET_BUILD_PLATFORM STREQUAL "linux") SET(LIB_PATH ${PXSHAREDSDK_PATH}/lib/linux64-cmake ${PXSHAREDSDK_PATH}/../Lib) SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") SET(CMAKE_FIND_LIBRARY_PREFIXES "lib") SET(PXSHARED_ARCH_FILE "_x64") endif() # Now find all of the PxShared libs in the lib directory find_library(PSFASTXML_LIB NAMES PsFastXml PsFastXml${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXFOUNDATION_LIB NAMES PxFoundation${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXPVDSDK_LIB NAMES PxPvdSDK${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXTASK_LIB NAMES PxTask PxTask${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PSFASTXML_LIB_DEBUG NAMES PsFastXmlDEBUG PsFastXmlDEBUG${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXFOUNDATION_LIB_DEBUG NAMES PxFoundationDEBUG${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXPVDSDK_LIB_DEBUG NAMES PxPvdSDKDEBUG${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXTASK_LIB_DEBUG NAMES PxTaskDEBUG PxTaskDEBUG${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PSFASTXML_LIB_CHECKED NAMES PsFastXmlCHECKED PsFastXmlCHECKED${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXFOUNDATION_LIB_CHECKED NAMES PxFoundationCHECKED${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXPVDSDK_LIB_CHECKED NAMES PxPvdSDKCHECKED${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXTASK_LIB_CHECKED NAMES PxTaskCHECKED PxTaskCHECKED${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PSFASTXML_LIB_PROFILE NAMES PsFastXmlPROFILE PsFastXmlPROFILE${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXFOUNDATION_LIB_PROFILE NAMES PxFoundationPROFILE${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXPVDSDK_LIB_PROFILE NAMES PxPvdSDKPROFILE${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXTASK_LIB_PROFILE NAMES PxTaskPROFILE PxTaskPROFILE${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) if (TARGET_BUILD_PLATFORM STREQUAL "Windows") SET(DLL_PATH ${PXSHAREDSDK_PATH}/bin/${VS_STR}${PXSHARED_ARCH_FOLDER}-cmake${PXSHARED_CRT_SUFFIX} ${PXSHAREDSDK_PATH}/bin/${VS_STR}${PXSHARED_ARCH_FOLDER} ${PXSHAREDSDK_PATH}/../bin/${PXSHARED_ARCH_FOLDER}/${VS_STR} ${PXSHAREDSDK_PATH}/../bin) find_library(PXFOUNDATION_DLL NAMES PxFoundation${PXSHARED_ARCH_FILE} PATHS ${DLL_PATH} ) find_library(PXPVDSDK_DLL NAMES PxPvdSDK${PXSHARED_ARCH_FILE} PATHS ${DLL_PATH} ) find_library(PXFOUNDATION_DLL_DEBUG NAMES PxFoundationDEBUG${PXSHARED_ARCH_FILE} PATHS ${DLL_PATH} ) find_library(PXPVDSDK_DLL_DEBUG NAMES PxPvdSDKDEBUG${PXSHARED_ARCH_FILE} PATHS ${DLL_PATH} ) find_library(PXFOUNDATION_DLL_CHECKED NAMES PxFoundationCHECKED${PXSHARED_ARCH_FILE} PATHS ${DLL_PATH} ) find_library(PXPVDSDK_DLL_CHECKED NAMES PxPvdSDKCHECKED${PXSHARED_ARCH_FILE} PATHS ${DLL_PATH} ) find_library(PXFOUNDATION_DLL_PROFILE NAMES PxFoundationPROFILE${PXSHARED_ARCH_FILE} PATHS ${DLL_PATH} ) find_library(PXPVDSDK_DLL_PROFILE NAMES PxPvdSDKPROFILE${PXSHARED_ARCH_FILE} PATHS ${DLL_PATH} ) #Put the found dll variables in a list if we actually looked for them (windows) SET(DLL_VAR_LIST PXFOUNDATION_DLL PXPVDSDK_DLL PXFOUNDATION_DLL_DEBUG PXPVDSDK_DLL_DEBUG PXFOUNDATION_DLL_CHECKED PXPVDSDK_DLL_CHECKED PXFOUNDATION_DLL_PROFILE PXPVDSDK_DLL_PROFILE ) endif() if (TARGET_BUILD_PLATFORM STREQUAL "linux") SET(BIN_PATH ${PXSHAREDSDK_PATH}/bin/linux64-cmake ${PXSHAREDSDK_PATH}/../Bin) SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so") find_library(PXFOUNDATION_LIB NAMES PxFoundation${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} ) find_library(PXPVDSDK_LIB NAMES PxPvdSDK${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} ) find_library(PXFOUNDATION_LIB_CHECKED NAMES PxFoundationCHECKED${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} ) find_library(PXPVDSDK_LIB_CHECKED NAMES PxPvdSDKCHECKED${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} ) find_library(PXFOUNDATION_LIB_DEBUG NAMES PxFoundationDEBUG${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} ) find_library(PXPVDSDK_LIB_DEBUG NAMES PxPvdSDKDEBUG${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} ) find_library(PXFOUNDATION_LIB_PROFILE NAMES PxFoundationPROFILE${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} ) find_library(PXPVDSDK_LIB_PROFILE NAMES PxPvdSDKPROFILE${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} ) endif() FIND_PACKAGE_HANDLE_STANDARD_ARGS(PXSHAREDSDK DEFAULT_MSG PXSHAREDSDK_PATH PSFASTXML_LIB PXFOUNDATION_LIB PXPVDSDK_LIB PXTASK_LIB PSFASTXML_LIB_DEBUG PXFOUNDATION_LIB_DEBUG PXPVDSDK_LIB_DEBUG PXTASK_LIB_DEBUG PSFASTXML_LIB_CHECKED PXFOUNDATION_LIB_CHECKED PXPVDSDK_LIB_CHECKED PXTASK_LIB_CHECKED PSFASTXML_LIB_PROFILE PXFOUNDATION_LIB_PROFILE PXPVDSDK_LIB_PROFILE PXTASK_LIB_PROFILE ${DLL_VAR_LIST} ) if (PXSHAREDSDK_FOUND) # NOTE: This include list is way too long and reaches into too many internals. # Also may not be good enough for all users. SET(PXSHAREDSDK_INCLUDE_DIRS ${PXSHAREDSDK_PATH}/include ${PXSHAREDSDK_PATH}/include/pvd ${PXSHAREDSDK_PATH}/include/task ${PXSHAREDSDK_PATH}/include/filebuf ${PXSHAREDSDK_PATH}/include/foundation ${PXSHAREDSDK_PATH}/src/foundation/include ${PXSHAREDSDK_PATH}/src/filebuf/include ${PXSHAREDSDK_PATH}/src/fastxml/include ) SET(PXSHAREDSDK_LIBS_RELEASE ${PSFASTXML_LIB} ${PXFOUNDATION_LIB} ${PXPVDSDK_LIB} ${PXTASK_LIB} CACHE STRING "" ) SET(PXSHAREDSDK_LIBS_DEBUG ${PSFASTXML_LIB_DEBUG} ${PXFOUNDATION_LIB_DEBUG} ${PXPVDSDK_LIB_DEBUG} ${PXTASK_LIB_DEBUG} CACHE STRING "" ) SET(PXSHAREDSDK_LIBS_CHECKED ${PSFASTXML_LIB_CHECKED} ${PXFOUNDATION_LIB_CHECKED} ${PXPVDSDK_LIB_CHECKED} ${PXTASK_LIB_CHECKED} CACHE STRING "" ) SET(PXSHAREDSDK_LIBS_PROFILE ${PSFASTXML_LIB_PROFILE} ${PXFOUNDATION_LIB_PROFILE} ${PXPVDSDK_LIB_PROFILE} ${PXTASK_LIB_PROFILE} CACHE STRING "" ) SET(PXSHAREDSDK_DLLS ${PXFOUNDATION_DLL} ${PXPVDSDK_DLL} ${PXFOUNDATION_DLL_DEBUG} ${PXPVDSDK_DLL_DEBUG} ${PXFOUNDATION_DLL_CHECKED} ${PXPVDSDK_DLL_CHECKED} ${PXFOUNDATION_DLL_PROFILE} ${PXPVDSDK_DLL_PROFILE} ) SET(PXSHAREDSDK_LIBRARIES "" CACHE STRING "") foreach(x ${PXSHAREDSDK_LIBS_RELEASE}) list(APPEND PXSHAREDSDK_LIBRARIES optimized ${x}) endforeach() foreach(x ${PXSHAREDSDK_LIBS_DEBUG}) list(APPEND PXSHAREDSDK_LIBRARIES debug ${x}) endforeach() endif()