FindBlast.cmake 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # Copyright (c) Contributors to the Open 3D Engine Project.
  2. # For complete copyright and license terms please see the LICENSE at the root
  3. # of this distribution.
  4. #
  5. # SPDX-License-Identifier: Apache-2.0 OR MIT
  6. #
  7. #
  8. set(MY_NAME "Blast")
  9. set(TARGET_WITH_NAMESPACE "3rdParty::${MY_NAME}")
  10. if (TARGET ${TARGET_WITH_NAMESPACE})
  11. return()
  12. endif()
  13. set(_PACKAGE_DIR ${CMAKE_CURRENT_LIST_DIR}/Blast)
  14. set(${MY_NAME}_INCLUDE_DIR ${_PACKAGE_DIR}/sdk/common
  15. ${_PACKAGE_DIR}/sdk/extensions/assetutils/include
  16. ${_PACKAGE_DIR}/sdk/extensions/authoring/include
  17. ${_PACKAGE_DIR}/sdk/extensions/exporter/include
  18. ${_PACKAGE_DIR}/sdk/extensions/physx/include
  19. ${_PACKAGE_DIR}/sdk/extensions/serialization/include
  20. ${_PACKAGE_DIR}/sdk/extensions/shaders/include
  21. ${_PACKAGE_DIR}/sdk/extensions/stress/include
  22. ${_PACKAGE_DIR}/sdk/globals/include
  23. ${_PACKAGE_DIR}/sdk/lowlevel/include
  24. ${_PACKAGE_DIR}/sdk/toolkit/include)
  25. set(_LIBS_DIR ${_PACKAGE_DIR}/lib)
  26. set(_DLLS_DIR ${_PACKAGE_DIR}/bin)
  27. if(${PAL_PLATFORM_NAME} STREQUAL "Windows")
  28. set(${MY_NAME}_LIBRARIES
  29. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlast_x64.lib
  30. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtAssetUtils_x64.lib
  31. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtAuthoring_x64.lib
  32. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtExporter_x64.lib
  33. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtImport_x64.lib
  34. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtPhysX_x64.lib
  35. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtPxSerialization_x64.lib
  36. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtSerialization_x64.lib
  37. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtShaders_x64.lib
  38. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtStress_x64.lib
  39. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtTkSerialization_x64.lib
  40. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastGlobals_x64.lib
  41. ${_LIBS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastTk_x64.lib)
  42. set(${MY_NAME}_RUNTIME_DEPENDENCIES
  43. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlast_x64.dll
  44. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtAssetUtils_x64.dll
  45. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtAuthoring_x64.dll
  46. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtExporter_x64.dll
  47. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtPhysX_x64.dll
  48. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtPxSerialization_x64.dll
  49. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtSerialization_x64.dll
  50. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtShaders_x64.dll
  51. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtStress_x64.dll
  52. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastExtTkSerialization_x64.dll
  53. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastGlobals_x64.dll
  54. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/NvBlastTk_x64.dll
  55. )
  56. # When building O3DE monolithicaly the library PhysXFoundation_64.dll won't be present since
  57. # PhysX SDK uses a static version of it. Because of this Blast will provide the dll in this case, which
  58. # is needed by its extended tools libraries NvBlastExtPhysX_x64.dll and NvBlastExtPxSerialization_x64.dll.
  59. if(LY_MONOLITHIC_GAME)
  60. list(APPEND ${MY_NAME}_RUNTIME_DEPENDENCIES
  61. ${_DLLS_DIR}/vc15win64-cmake/$<LOWER_CASE:$<CONFIG>>/PhysXFoundation_64.dll
  62. )
  63. endif()
  64. endif()
  65. add_library(${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
  66. ly_target_include_system_directories(TARGET ${TARGET_WITH_NAMESPACE} INTERFACE ${${MY_NAME}_INCLUDE_DIR})
  67. target_link_libraries(${TARGET_WITH_NAMESPACE} INTERFACE ${${MY_NAME}_LIBRARIES})
  68. target_compile_definitions(${TARGET_WITH_NAMESPACE} INTERFACE ${${MY_NAME}_COMPILE_DEFINITIONS})
  69. if(DEFINED ${MY_NAME}_RUNTIME_DEPENDENCIES)
  70. ly_add_target_files(TARGETS ${TARGET_WITH_NAMESPACE} FILES ${${MY_NAME}_RUNTIME_DEPENDENCIES})
  71. endif()
  72. set(${MY_NAME}_FOUND True)