FindCrashpad_windows.cmake.template 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. ADDITIONAL_INCLUDE_DIRS
  66. "$${CRASHPAD_INCLUDE_DIR}/getopt"
  67. LIBS
  68. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}compat$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  69. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}context$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  70. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}format$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  71. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}minidump$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  72. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}getopt$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  73. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}handler$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  74. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}vcpkg_crashpad_handler_common$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  75. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}snapshot$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  76. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}tool_support$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  77. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}zlib$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  78. "$${CRASHPAD_LIBS_DIR}/$${CMAKE_STATIC_LIBRARY_PREFIX}net$${CMAKE_STATIC_LIBRARY_SUFFIX}"
  79. BUILD_DEPENDENCIES
  80. "3rdParty::$${CRASHPAD_PACKAGE_NAME}"
  81. # Built-in Windows libraries
  82. winhttp
  83. version
  84. powrprof
  85. )