diff options
Diffstat (limited to 'NvBlast/sdk/compiler/cmake/modules/FindApexSDK.cmake')
| -rw-r--r-- | NvBlast/sdk/compiler/cmake/modules/FindApexSDK.cmake | 399 |
1 files changed, 399 insertions, 0 deletions
diff --git a/NvBlast/sdk/compiler/cmake/modules/FindApexSDK.cmake b/NvBlast/sdk/compiler/cmake/modules/FindApexSDK.cmake new file mode 100644 index 0000000..9910236 --- /dev/null +++ b/NvBlast/sdk/compiler/cmake/modules/FindApexSDK.cmake @@ -0,0 +1,399 @@ +# - Try to find Apex binary SDK +# - Sets APEXSDK_LIBS_DEBUG and APEXSDK_LIBS_RELEASE - lists of the libraries found +# - Sets APEXSDK_INCLUDE_DIRS +# - Sets APEXSDK_DLLS - List of the DLLs to copy to the bin directory of projects that depend on this + +include(FindPackageHandleStandardArgs) + +# Find the includes + +# TODO: Do the version stuff properly! +find_path(APEXSDK_PATH include/Apex.h + PATHS + ${GW_DEPS_ROOT}/$ENV{PM_Apex_NAME}/${ApexSDK_FIND_VERSION} + ${GW_DEPS_ROOT}/Apex/${ApexSDK_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(APEX_ARCH_FOLDER "win64") + SET(APEX_ARCH_FILE "_x64") + else() + SET(APEX_ARCH_FOLDER "win32") + SET(APEX_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 "vc12") + elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0) + SET(VS_STR "vc14") + else() + MESSAGE(FATAL_ERROR "Failed to find compatible PxSharedSDK - Only supporting VS2013 and VS2015") + endif() + + SET(LIB_PATH ${APEXSDK_PATH}/lib/${VS_STR}${APEX_ARCH_FOLDER}-cmake${PHYSX_CRT_SUFFIX}) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll") + +elseif(TARGET_BUILD_PLATFORM STREQUAL "PS4") + SET(LIB_PATH ${APEXSDK_PATH}/lib/vc14ps4-cmake) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + SET(CMAKE_FIND_LIBRARY_PREFIXES "lib") +elseif(TARGET_BUILD_PLATFORM STREQUAL "XboxOne") + SET(LIB_PATH ${APEXSDK_PATH}/lib/vc14xboxone-cmake) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + SET(CMAKE_FIND_LIBRARY_PREFIXES "lib") +elseif(TARGET_BUILD_PLATFORM STREQUAL "linux") + SET(LIB_PATH ${APEXSDK_PATH}/lib/linux64-cmake) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + SET(CMAKE_FIND_LIBRARY_PREFIXES "lib") +endif() + +find_library(APEXCLOTHING_LIB + NAMES APEX_Clothing${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXDESTRUCTIBLE_LIB + NAMES APEX_Destructible${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXLEGACY_LIB + NAMES APEX_Legacy${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXLOADER_LIB + NAMES APEX_Loader${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXCOMMON_LIB + NAMES APEXCommon${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXFRAMEWORK_LIB + NAMES APEXFramework${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXSHARED_LIB + NAMES APEXShared${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) + +find_library(APEXCLOTHING_LIB_DEBUG + NAMES APEX_ClothingDEBUG${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXDESTRUCTIBLE_LIB_DEBUG + NAMES APEX_DestructibleDEBUG${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXLEGACY_LIB_DEBUG + NAMES APEX_LegacyDEBUG${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXLOADER_LIB_DEBUG + NAMES APEX_LoaderDEBUG${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXCOMMON_LIB_DEBUG + NAMES APEXCommonDEBUG${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXFRAMEWORK_LIB_DEBUG + NAMES APEXFrameworkDEBUG${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXSHARED_LIB_DEBUG + NAMES APEXSharedDEBUG${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) + +find_library(APEXCLOTHING_LIB_CHECKED + NAMES APEX_ClothingCHECKED${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXDESTRUCTIBLE_LIB_CHECKED + NAMES APEX_DestructibleCHECKED${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXLEGACY_LIB_CHECKED + NAMES APEX_LegacyCHECKED${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXLOADER_LIB_CHECKED + NAMES APEX_LoaderCHECKED${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXCOMMON_LIB_CHECKED + NAMES APEXCommonCHECKED${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXFRAMEWORK_LIB_CHECKED + NAMES APEXFrameworkCHECKED${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXSHARED_LIB_CHECKED + NAMES APEXSharedCHECKED${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) + +find_library(APEXCLOTHING_LIB_PROFILE + NAMES APEX_ClothingPROFILE${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXDESTRUCTIBLE_LIB_PROFILE + NAMES APEX_DestructiblePROFILE${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXLEGACY_LIB_PROFILE + NAMES APEX_LegacyPROFILE${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXLOADER_LIB_PROFILE + NAMES APEX_LoaderPROFILE${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXCOMMON_LIB_PROFILE + NAMES APEXCommonPROFILE${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXFRAMEWORK_LIB_PROFILE + NAMES APEXFrameworkPROFILE${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) +find_library(APEXSHARED_LIB_PROFILE + NAMES APEXSharedPROFILE${APEX_ARCH_FILE} + PATHS ${LIB_PATH} +) + + +if (TARGET_BUILD_PLATFORM STREQUAL "Windows") + + SET(DLL_PATH ${APEXSDK_PATH}/bin/${VS_STR}${APEX_ARCH_FOLDER}-cmake${APEX_CRT_SUFFIX}) + + find_library(APEXCLOTHING_DLL + NAMES APEX_Clothing${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXDESTRUCTIBLE_DLL + NAMES APEX_Destructible${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXLEGACY_DLL + NAMES APEX_Legacy${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXLOADER_DLL + NAMES APEX_Loader${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXFRAMEWORK_DLL + NAMES APEXFramework${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + + find_library(APEXCLOTHING_DLL_DEBUG + NAMES APEX_ClothingDEBUG${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXDESTRUCTIBLE_DLL_DEBUG + NAMES APEX_DestructibleDEBUG${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXLEGACY_DLL_DEBUG + NAMES APEX_LegacyDEBUG${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXLOADER_DLL_DEBUG + NAMES APEX_LoaderDEBUG${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXFRAMEWORK_DLL_DEBUG + NAMES APEXFrameworkDEBUG${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + + find_library(APEXCLOTHING_DLL_CHECKED + NAMES APEX_ClothingCHECKED${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXDESTRUCTIBLE_DLL_CHECKED + NAMES APEX_DestructibleCHECKED${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXLEGACY_DLL_CHECKED + NAMES APEX_LegacyCHECKED${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXLOADER_DLL_CHECKED + NAMES APEX_LoaderCHECKED${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXFRAMEWORK_DLL_CHECKED + NAMES APEXFrameworkCHECKED${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + + find_library(APEXCLOTHING_DLL_PROFILE + NAMES APEX_ClothingPROFILE${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXDESTRUCTIBLE_DLL_PROFILE + NAMES APEX_DestructiblePROFILE${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXLEGACY_DLL_PROFILE + NAMES APEX_LegacyPROFILE${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXLOADER_DLL_PROFILE + NAMES APEX_LoaderPROFILE${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + find_library(APEXFRAMEWORK_DLL_PROFILE + NAMES APEXFrameworkPROFILE${APEX_ARCH_FILE} + PATHS ${DLL_PATH} + ) + + + SET(DLL_VAR_LIST + APEXCLOTHING_DLL + APEXDESTRUCTIBLE_DLL + APEXLEGACY_DLL + APEXLOADER_DLL + APEXFRAMEWORK_DLL + + APEXCLOTHING_DLL_DEBUG + APEXDESTRUCTIBLE_DLL_DEBUG + APEXLEGACY_DLL_DEBUG + APEXLOADER_DLL_DEBUG + APEXFRAMEWORK_DLL_DEBUG + + APEXCLOTHING_DLL_CHECKED + APEXDESTRUCTIBLE_DLL_CHECKED + APEXLEGACY_DLL_CHECKED + APEXLOADER_DLL_CHECKED + APEXFRAMEWORK_DLL_CHECKED + + APEXCLOTHING_DLL_PROFILE + APEXDESTRUCTIBLE_DLL_PROFILE + APEXLEGACY_DLL_PROFILE + APEXLOADER_DLL_PROFILE + APEXFRAMEWORK_DLL_PROFILE + + ) +endif() + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(APEXSDK + DEFAULT_MSG + APEXSDK_PATH + + APEXCLOTHING_LIB + APEXDESTRUCTIBLE_LIB + APEXLEGACY_LIB + APEXLOADER_LIB + APEXCOMMON_LIB + APEXFRAMEWORK_LIB + APEXSHARED_LIB + + APEXCLOTHING_LIB_DEBUG + APEXDESTRUCTIBLE_LIB_DEBUG + APEXLEGACY_LIB_DEBUG + APEXLOADER_LIB_DEBUG + APEXCOMMON_LIB_DEBUG + APEXFRAMEWORK_LIB_DEBUG + APEXSHARED_LIB_DEBUG + + APEXCLOTHING_LIB_CHECKED + APEXDESTRUCTIBLE_LIB_CHECKED + APEXLEGACY_LIB_CHECKED + APEXLOADER_LIB_CHECKED + APEXCOMMON_LIB_CHECKED + APEXFRAMEWORK_LIB_CHECKED + APEXSHARED_LIB_CHECKED + + APEXCLOTHING_LIB_PROFILE + APEXDESTRUCTIBLE_LIB_PROFILE + APEXLEGACY_LIB_PROFILE + APEXLOADER_LIB_PROFILE + APEXCOMMON_LIB_PROFILE + APEXFRAMEWORK_LIB_PROFILE + APEXSHARED_LIB_PROFILE + + ${DLL_VAR_LIST} +) + +if (APEXSDK_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(APEXSDK_INCLUDE_DIRS + ${APEXSDK_PATH}/public + ${APEXSDK_PATH}/include + ${APEXSDK_PATH}/common/include + ${APEXSDK_PATH}/common/include/autogen + ${APEXSDK_PATH}/NvParameterized/include + ${APEXSDK_PATH}/include/destructible + ${APEXSDK_PATH}/include/PhysX3 + ${APEXSDK_PATH}/shared/external/include + ${APEXSDK_PATH}/shared/internal/include + ${APEXSDK_PATH}/shared/general/shared + ${APEXSDK_PATH}/shared/general/RenderDebug/public + ) + + SET(APEXSDK_LIBS_RELEASE ${APEXCLOTHING_LIB} ${APEXDESTRUCTIBLE_LIB} ${APEXLEGACY_LIB} ${APEXLOADER_LIB} ${APEXCOMMON_LIB} ${APEXFRAMEWORK_LIB} ${APEXSHARED_LIB} + CACHE STRING "" + ) + SET(APEXSDK_LIBS_DEBUG ${APEXCLOTHING_LIB_DEBUG} ${APEXDESTRUCTIBLE_LIB_DEBUG} ${APEXLEGACY_LIB_DEBUG} ${APEXLOADER_LIB_DEBUG} ${APEXCOMMON_LIB_DEBUG} ${APEXFRAMEWORK_LIB_DEBUG} ${APEXSHARED_LIB_DEBUG} + CACHE STRING "" + ) + SET(APEXSDK_LIBS_CHECKED ${APEXCLOTHING_LIB_CHECKED} ${APEXDESTRUCTIBLE_LIB_CHECKED} ${APEXLEGACY_LIB_CHECKED} ${APEXLOADER_LIB_CHECKED} ${APEXCOMMON_LIB_CHECKED} ${APEXFRAMEWORK_LIB_CHECKED} ${APEXSHARED_LIB_CHECKED} + CACHE STRING "" + ) + SET(APEXSDK_LIBS_PROFILE ${APEXCLOTHING_LIB_PROFILE} ${APEXDESTRUCTIBLE_LIB_PROFILE} ${APEXLEGACY_LIB_PROFILE} ${APEXLOADER_LIB_PROFILE} ${APEXCOMMON_LIB_PROFILE} ${APEXFRAMEWORK_LIB_PROFILE} ${APEXSHARED_LIB_PROFILE} + CACHE STRING "" + ) + + + SET(APEXSDK_DLLS + ${APEXCLOTHING_DLL} + ${APEXDESTRUCTIBLE_DLL} + ${APEXLEGACY_DLL} + ${APEXLOADER_DLL} + ${APEXFRAMEWORK_DLL} + + ${APEXCLOTHING_DLL_DEBUG} + ${APEXDESTRUCTIBLE_DLL_DEBUG} + ${APEXLEGACY_DLL_DEBUG} + ${APEXLOADER_DLL_DEBUG} + ${APEXFRAMEWORK_DLL_DEBUG} + + ${APEXCLOTHING_DLL_CHECKED} + ${APEXDESTRUCTIBLE_DLL_CHECKED} + ${APEXLEGACY_DLL_CHECKED} + ${APEXLOADER_DLL_CHECKED} + ${APEXFRAMEWORK_DLL_CHECKED} + + ${APEXCLOTHING_DLL_PROFILE} + ${APEXDESTRUCTIBLE_DLL_PROFILE} + ${APEXLEGACY_DLL_PROFILE} + ${APEXLOADER_DLL_PROFILE} + ${APEXFRAMEWORK_DLL_PROFILE} + ) + + SET(APEXSDK_LIBRARIES "" CACHE STRING "") + + foreach(x ${APEXSDK_LIBS_RELEASE}) + list(APPEND APEXSDK_LIBRARIES optimized ${x}) + endforeach() + + foreach(x ${APEXSDK_LIBS_DEBUG}) + list(APPEND APEXSDK_LIBRARIES debug ${x}) + endforeach() +endif() |