FindCrashpad_linux.cmake.template 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. include(CMakeParseArguments)
  9. set(CRASHPAD_PACKAGE_NAME Crashpad)
  10. set(CRASHPAD_LIBS_DIR $${CMAKE_CURRENT_LIST_DIR}/Crashpad/$$<$$<CONFIG:debug>:debug/>lib)
  11. set(CRASHPAD_INCLUDE_DIR $${CMAKE_CURRENT_LIST_DIR}/Crashpad/include/crashpad)
  12. # Helper function to define crashpad libraries
  13. function(ly_declare_crashpad_library)
  14. set(options HANDLER)
  15. set(oneValueArgs NAME)
  16. set(multiValueArgs ADDITIONAL_INCLUDE_DIRS LIBS BUILD_DEPENDENCIES)
  17. cmake_parse_arguments(ly_declare_crashpad_library "$${options}" "$${oneValueArgs}" "$${multiValueArgs}" $${ARGN})
  18. if (ly_declare_crashpad_library_HANDLER)
  19. set(TARGET_WITH_NAMESPACE "3rdParty::$${CRASHPAD_PACKAGE_NAME}::Handler")
  20. else()
  21. set(TARGET_WITH_NAMESPACE "3rdParty::$${CRASHPAD_PACKAGE_NAME}")
  22. endif()
  23. if (TARGET $${TARGET_WITH_NAMESPACE})
  24. return()
  25. endif()
  26. add_library($${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
  27. if (ly_declare_crashpad_library_ADDITIONAL_INCLUDE_DIRS)
  28. ly_target_include_system_directories(TARGET $${TARGET_WITH_NAMESPACE}
  29. INTERFACE
  30. "$${CRASHPAD_INCLUDE_DIR}"
  31. "$${CRASHPAD_INCLUDE_DIR}/mini_chromium"
  32. $${ly_declare_crashpad_library_ADDITIONAL_INCLUDE_DIRS}
  33. )
  34. else()
  35. ly_target_include_system_directories(TARGET $${TARGET_WITH_NAMESPACE}
  36. INTERFACE
  37. "$${CRASHPAD_INCLUDE_DIR}"
  38. "$${CRASHPAD_INCLUDE_DIR}/mini_chromium"
  39. )
  40. endif()
  41. if (ly_declare_crashpad_library_BUILD_DEPENDENCIES)
  42. target_link_libraries($${TARGET_WITH_NAMESPACE}
  43. INTERFACE
  44. $${ly_declare_crashpad_library_LIBS}
  45. $${ly_declare_crashpad_library_BUILD_DEPENDENCIES}
  46. )
  47. else()
  48. target_link_libraries($${TARGET_WITH_NAMESPACE}
  49. INTERFACE
  50. $${ly_declare_crashpad_library_LIBS}
  51. )
  52. endif()
  53. endfunction()
  54. #### Crashpad ####
  55. ly_declare_crashpad_library(
  56. LIBS
  57. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}vcpkg_crashpad_base$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  58. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}vcpkg_crashpad_client$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  59. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}vcpkg_crashpad_client_common$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  60. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}vcpkg_crashpad_util$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  61. )
  62. #### Crashpad Handler ####
  63. ly_declare_crashpad_library(
  64. HANDLER
  65. LIBS
  66. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}compat$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  67. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}context$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  68. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}format$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  69. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}minidump$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  70. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}handler$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  71. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}vcpkg_crashpad_handler_common$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  72. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}snapshot$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  73. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}tool_support$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  74. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}net$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  75. BUILD_DEPENDENCIES
  76. "3rdParty::$${CRASHPAD_PACKAGE_NAME}"
  77. )