OpenSSLConfig.cmake 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. # Generated by OpenSSL
  2. # Commands may need to know the format version.
  3. set(CMAKE_IMPORT_FILE_VERSION 1)
  4. # Avoid duplicate find_package()
  5. set(_ossl_expected_targets OpenSSL::Crypto OpenSSL::SSL
  6. )
  7. set(_ossl_defined_targets)
  8. set(_ossl_undefined_targets)
  9. foreach(t IN LISTS _ossl_expected_targets)
  10. if(TARGET "${t}")
  11. LIST(APPEND _ossl_defined_targets "${t}")
  12. else()
  13. LIST(APPEND _ossl_undefined_targets "${t}")
  14. endif()
  15. endforeach()
  16. message(DEBUG "_ossl_expected_targets = ${_ossl_expected_targets}")
  17. message(DEBUG "_ossl_defined_targets = ${_ossl_defined_targets}")
  18. message(DEBUG "_ossl_undefined_targets = ${_ossl_undefined_targets}")
  19. if(NOT _ossl_undefined_targets)
  20. # All targets are defined, we're good, just undo everything and return
  21. unset(_ossl_expected_targets)
  22. unset(_ossl_defined_targets)
  23. unset(_ossl_undefined_targets)
  24. unset(CMAKE_IMPORT_FILE_VERSION)
  25. return()
  26. endif()
  27. if(_ossl_defined_targets)
  28. # We have a mix of defined and undefined targets. This is hard to reconcile,
  29. # and probably the result of another config, or FindOpenSSL.cmake having been
  30. # called, or whatever. Therefore, the best course of action is to quit with a
  31. # hard error.
  32. message(FATAL_ERROR "Some targets defined, others not:\nNot defined: ${_ossl_undefined_targets}\nDefined: ${_ossl_defined_targets}")
  33. endif()
  34. unset(_ossl_expected_targets)
  35. unset(_ossl_defined_targets)
  36. unset(_ossl_undefined_targets)
  37. # Set up the import path, so all other import paths are made relative this file
  38. get_filename_component(_ossl_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH)
  39. get_filename_component(_ossl_prefix "${_ossl_prefix}" PATH)
  40. get_filename_component(_ossl_prefix "${_ossl_prefix}" PATH)
  41. get_filename_component(_ossl_prefix "${_ossl_prefix}" PATH)
  42. if(_ossl_prefix STREQUAL "/")
  43. set(_ossl_prefix "")
  44. endif()
  45. if(OPENSSL_USE_STATIC_LIBS)
  46. set(_ossl_use_static_libs True)
  47. elseif(DEFINED OPENSSL_USE_STATIC_LIBS)
  48. # We know OPENSSL_USE_STATIC_LIBS is defined and False
  49. if(_ossl_use_static_libs)
  50. # OPENSSL_USE_STATIC_LIBS is explicitly false, indicating that shared libraries are
  51. # required. However, _ossl_use_static_libs indicates that no shared libraries are
  52. # available. The best course of action is to simply return and leave it to CMake to
  53. # use another OpenSSL config.
  54. unset(_ossl_use_static_libs)
  55. unset(CMAKE_IMPORT_FILE_VERSION)
  56. return()
  57. endif()
  58. endif()
  59. # Version, copied from what find_package() gives, for compatibility with FindOpenSSL.cmake
  60. set(OPENSSL_VERSION "${OpenSSL_VERSION}")
  61. set(OPENSSL_VERSION_MAJOR "${OpenSSL_VERSION_MAJOR}")
  62. set(OPENSSL_VERSION_MINOR "${OpenSSL_VERSION_MINOR}")
  63. set(OPENSSL_VERSION_FIX "${OpenSSL_VERSION_PATCH}")
  64. set(OPENSSL_FOUND YES)
  65. # Directories and names
  66. set(OPENSSL_LIBRARY_DIR "${_ossl_prefix}/lib")
  67. set(OPENSSL_INCLUDE_DIR "${_ossl_prefix}/include")
  68. set(OPENSSL_ENGINES_DIR "${_ossl_prefix}/lib/engines-3")
  69. set(OPENSSL_MODULES_DIR "${_ossl_prefix}/lib/ossl-modules")
  70. set(OPENSSL_RUNTIME_DIR "${_ossl_prefix}/bin")
  71. set(OPENSSL_PROGRAM "${OPENSSL_RUNTIME_DIR}/openssl")
  72. # Set up the imported targets
  73. if(_ossl_use_static_libs)
  74. add_library(OpenSSL::Crypto STATIC IMPORTED)
  75. add_library(OpenSSL::SSL STATIC IMPORTED)
  76. set(OPENSSL_LIBCRYPTO_STATIC "${OPENSSL_LIBRARY_DIR}/libcrypto.a")
  77. set(OPENSSL_LIBCRYPTO_DEPENDENCIES -ldl -pthread)
  78. set_target_properties(OpenSSL::Crypto PROPERTIES
  79. IMPORTED_LINK_INTERFACE_LANGUAGES "C"
  80. IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_STATIC})
  81. set_property(TARGET OpenSSL::Crypto
  82. PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
  83. set(OPENSSL_LIBSSL_STATIC "${OPENSSL_LIBRARY_DIR}/libssl.a")
  84. set(OPENSSL_LIBSSL_DEPENDENCIES OpenSSL::Crypto)
  85. set_target_properties(OpenSSL::SSL PROPERTIES
  86. IMPORTED_LINK_INTERFACE_LANGUAGES "C"
  87. IMPORTED_LOCATION ${OPENSSL_LIBSSL_STATIC})
  88. set_property(TARGET OpenSSL::SSL
  89. PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBSSL_DEPENDENCIES})
  90. # Directories and names compatible with CMake's FindOpenSSL.cmake
  91. set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBCRYPTO_STATIC})
  92. set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
  93. set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBSSL_STATIC})
  94. set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES})
  95. set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES} ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
  96. else()
  97. add_library(OpenSSL::Crypto SHARED IMPORTED)
  98. add_library(OpenSSL::SSL SHARED IMPORTED)
  99. # Dependencies are assumed to be implied in the shared libraries
  100. set(OPENSSL_LIBCRYPTO_SHARED "${OPENSSL_LIBRARY_DIR}/libcrypto.so")
  101. set_target_properties(OpenSSL::Crypto PROPERTIES
  102. IMPORTED_LINK_INTERFACE_LANGUAGES "C"
  103. IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_SHARED})
  104. set(OPENSSL_LIBSSL_SHARED "${OPENSSL_LIBRARY_DIR}/libssl.so")
  105. set_target_properties(OpenSSL::SSL PROPERTIES
  106. IMPORTED_LINK_INTERFACE_LANGUAGES "C"
  107. IMPORTED_LOCATION ${OPENSSL_LIBSSL_SHARED})
  108. # Directories and names compatible with CMake's FindOpenSSL.cmake
  109. set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBCRYPTO_SHARED})
  110. set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
  111. set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBSSL_SHARED})
  112. set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
  113. set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARIES})
  114. endif()
  115. set_target_properties(OpenSSL::Crypto PROPERTIES
  116. INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
  117. set_target_properties(OpenSSL::SSL PROPERTIES
  118. INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
  119. unset(_ossl_prefix)
  120. unset(_ossl_use_static_libs)