OpenSSLConfig.cmake 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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. set(_ossl_use_static_libs True)
  46. if(OPENSSL_USE_STATIC_LIBS)
  47. set(_ossl_use_static_libs True)
  48. elseif(DEFINED OPENSSL_USE_STATIC_LIBS)
  49. # We know OPENSSL_USE_STATIC_LIBS is defined and False
  50. if(_ossl_use_static_libs)
  51. # OPENSSL_USE_STATIC_LIBS is explicitly false, indicating that shared libraries are
  52. # required. However, _ossl_use_static_libs indicates that no shared libraries are
  53. # available. The best course of action is to simply return and leave it to CMake to
  54. # use another OpenSSL config.
  55. unset(_ossl_use_static_libs)
  56. unset(CMAKE_IMPORT_FILE_VERSION)
  57. return()
  58. endif()
  59. endif()
  60. # Version, copied from what find_package() gives, for compatibility with FindOpenSSL.cmake
  61. set(OPENSSL_VERSION "${OpenSSL_VERSION}")
  62. set(OPENSSL_VERSION_MAJOR "${OpenSSL_VERSION_MAJOR}")
  63. set(OPENSSL_VERSION_MINOR "${OpenSSL_VERSION_MINOR}")
  64. set(OPENSSL_VERSION_FIX "${OpenSSL_VERSION_PATCH}")
  65. set(OPENSSL_FOUND YES)
  66. # Directories and names
  67. set(OPENSSL_LIBRARY_DIR "${_ossl_prefix}/lib")
  68. set(OPENSSL_INCLUDE_DIR "${_ossl_prefix}/include")
  69. set(OPENSSL_ENGINES_DIR "${_ossl_prefix}/lib/engines-3")
  70. set(OPENSSL_MODULES_DIR "${_ossl_prefix}/lib/ossl-modules")
  71. set(OPENSSL_RUNTIME_DIR "${_ossl_prefix}/bin")
  72. set(OPENSSL_PROGRAM "${OPENSSL_RUNTIME_DIR}/openssl")
  73. # Set up the imported targets
  74. if(_ossl_use_static_libs)
  75. add_library(OpenSSL::Crypto STATIC IMPORTED)
  76. add_library(OpenSSL::SSL STATIC IMPORTED)
  77. set(OPENSSL_LIBCRYPTO_STATIC "${OPENSSL_LIBRARY_DIR}/libcrypto.a")
  78. set(OPENSSL_LIBCRYPTO_DEPENDENCIES -ldl -pthread)
  79. set_target_properties(OpenSSL::Crypto PROPERTIES
  80. IMPORTED_LINK_INTERFACE_LANGUAGES "C"
  81. IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_STATIC})
  82. set_property(TARGET OpenSSL::Crypto
  83. PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
  84. set(OPENSSL_LIBSSL_STATIC "${OPENSSL_LIBRARY_DIR}/libssl.a")
  85. set(OPENSSL_LIBSSL_DEPENDENCIES OpenSSL::Crypto)
  86. set_target_properties(OpenSSL::SSL PROPERTIES
  87. IMPORTED_LINK_INTERFACE_LANGUAGES "C"
  88. IMPORTED_LOCATION ${OPENSSL_LIBSSL_STATIC})
  89. set_property(TARGET OpenSSL::SSL
  90. PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBSSL_DEPENDENCIES})
  91. # Directories and names compatible with CMake's FindOpenSSL.cmake
  92. set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBCRYPTO_STATIC})
  93. set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
  94. set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBSSL_STATIC})
  95. set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES})
  96. set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES} ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
  97. else()
  98. # Shared libraries are UNSUPPORTED in this configuration
  99. endif()
  100. set_target_properties(OpenSSL::Crypto PROPERTIES
  101. INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
  102. set_target_properties(OpenSSL::SSL PROPERTIES
  103. INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
  104. unset(_ossl_prefix)
  105. unset(_ossl_use_static_libs)