|
| 1 | +# |
| 2 | +# Copyright (C) 2022 Autodesk, Inc. All Rights Reserved. |
| 3 | +# |
| 4 | +# SPDX-License-Identifier: Apache-2.0 |
| 5 | +# |
| 6 | + |
| 7 | +SET(RV_DEPS_WIN_PERL_ROOT |
| 8 | + "" |
| 9 | + CACHE STRING "Path to Windows perl root" |
| 10 | +) |
| 11 | + |
| 12 | +STRING(REPLACE "." "_" _version_underscored ${_version}) |
| 13 | + |
| 14 | +IF(RV_TARGET_WINDOWS |
| 15 | + AND (NOT RV_DEPS_WIN_PERL_ROOT |
| 16 | + OR RV_DEPS_WIN_PERL_ROOT STREQUAL "") |
| 17 | +) |
| 18 | + MESSAGE( |
| 19 | + FATAL_ERROR |
| 20 | + "Unable to build without a RV_DEPS_WIN_PERL_ROOT. OpenSSL requires a Windows native perl interpreter to build (it recommends https://strawberryperl.com/). Example -DRV_DEPS_WIN_PERL_ROOT=c:/Strawberry/perl/bin" |
| 21 | + ) |
| 22 | +ENDIF() |
| 23 | + |
| 24 | +SET(_make_command_script |
| 25 | + "${PROJECT_SOURCE_DIR}/src/build/make_openssl.py" |
| 26 | +) |
| 27 | +SET(_make_command |
| 28 | + python3 "${_make_command_script}" |
| 29 | +) |
| 30 | + |
| 31 | +LIST(APPEND _make_command "--source-dir") |
| 32 | +LIST(APPEND _make_command ${_source_dir}) |
| 33 | +LIST(APPEND _make_command "--output-dir") |
| 34 | +LIST(APPEND _make_command ${_install_dir}) |
| 35 | + |
| 36 | +LIST(APPEND _make_command "--vfx_platform") |
| 37 | +LIST(APPEND _make_command ${RV_VFX_CY_YEAR}) |
| 38 | + |
| 39 | +IF(RV_TARGET_WINDOWS) |
| 40 | + LIST(APPEND _make_command "--perlroot") |
| 41 | + LIST(APPEND _make_command ${RV_DEPS_WIN_PERL_ROOT}) |
| 42 | +ENDIF() |
| 43 | + |
| 44 | +IF(APPLE) |
| 45 | + IF(RV_TARGET_APPLE_X86_64) |
| 46 | + SET(__openssl_arch__ |
| 47 | + x86_64 |
| 48 | + ) |
| 49 | + ELSEIF(RV_TARGET_APPLE_ARM64) |
| 50 | + SET(__openssl_arch__ |
| 51 | + arm64 |
| 52 | + ) |
| 53 | + ENDIF() |
| 54 | + LIST(APPEND _make_command --arch=-${__openssl_arch__}) |
| 55 | +ENDIF() |
| 56 | + |
| 57 | +EXTERNALPROJECT_ADD( |
| 58 | + ${_target} |
| 59 | + DOWNLOAD_NAME ${_target}_${_version}.zip |
| 60 | + DOWNLOAD_DIR ${RV_DEPS_DOWNLOAD_DIR} |
| 61 | + DOWNLOAD_EXTRACT_TIMESTAMP TRUE |
| 62 | + SOURCE_DIR ${_source_dir} |
| 63 | + INSTALL_DIR ${_install_dir} |
| 64 | + URL ${_download_url} |
| 65 | + URL_MD5 ${_download_hash} |
| 66 | + CONFIGURE_COMMAND ${_make_command} --configure |
| 67 | + BUILD_COMMAND ${_make_command} --build |
| 68 | + INSTALL_COMMAND ${_make_command} --install |
| 69 | + BUILD_IN_SOURCE TRUE |
| 70 | + BUILD_ALWAYS FALSE |
| 71 | + BUILD_BYPRODUCTS ${_crypto_lib} ${_ssl_lib} |
| 72 | + USES_TERMINAL_BUILD TRUE |
| 73 | +) |
| 74 | + |
| 75 | +FILE(MAKE_DIRECTORY ${_include_dir}) |
| 76 | + |
| 77 | +IF(RV_TARGET_WINDOWS) |
| 78 | + ADD_CUSTOM_COMMAND( |
| 79 | + TARGET ${_target} |
| 80 | + POST_BUILD |
| 81 | + COMMENT "Renaming the openssl import libs to the name FFmpeg is expecting" |
| 82 | + COMMAND ${CMAKE_COMMAND} -E copy ${_install_dir}/lib/libssl.lib ${_lib_dir}/ssl.lib |
| 83 | + COMMAND ${CMAKE_COMMAND} -E copy ${_install_dir}/lib/libcrypto.lib ${_lib_dir}/crypto.lib |
| 84 | + ) |
| 85 | +ENDIF() |
| 86 | + |
| 87 | +ADD_LIBRARY(OpenSSL::Crypto SHARED IMPORTED GLOBAL) |
| 88 | +ADD_DEPENDENCIES(OpenSSL::Crypto ${_target}) |
| 89 | +SET_PROPERTY( |
| 90 | + TARGET OpenSSL::Crypto |
| 91 | + PROPERTY IMPORTED_LOCATION ${_crypto_lib} |
| 92 | +) |
| 93 | +SET_PROPERTY( |
| 94 | + TARGET OpenSSL::Crypto |
| 95 | + PROPERTY IMPORTED_SONAME ${_crypto_lib_name} |
| 96 | +) |
| 97 | +IF(RV_TARGET_WINDOWS) |
| 98 | + SET_PROPERTY( |
| 99 | + TARGET OpenSSL::Crypto |
| 100 | + PROPERTY IMPORTED_IMPLIB ${_implibpath_crypto} |
| 101 | + ) |
| 102 | +ENDIF() |
| 103 | +TARGET_INCLUDE_DIRECTORIES( |
| 104 | + OpenSSL::Crypto |
| 105 | + INTERFACE ${_include_dir} |
| 106 | +) |
| 107 | +LIST(APPEND RV_DEPS_LIST OpenSSL::Crypto) |
| 108 | + |
| 109 | +ADD_LIBRARY(OpenSSL::SSL SHARED IMPORTED GLOBAL) |
| 110 | +ADD_DEPENDENCIES(OpenSSL::SSL ${_target}) |
| 111 | +SET_PROPERTY( |
| 112 | + TARGET OpenSSL::SSL |
| 113 | + PROPERTY IMPORTED_LOCATION ${_ssl_lib} |
| 114 | +) |
| 115 | +SET_PROPERTY( |
| 116 | + TARGET OpenSSL::SSL |
| 117 | + PROPERTY IMPORTED_SONAME ${_ssl_lib_name} |
| 118 | +) |
| 119 | +IF(RV_TARGET_WINDOWS) |
| 120 | + SET_PROPERTY( |
| 121 | + TARGET OpenSSL::SSL |
| 122 | + PROPERTY IMPORTED_IMPLIB ${_implibpath_ssl} |
| 123 | + ) |
| 124 | +ENDIF() |
| 125 | +TARGET_INCLUDE_DIRECTORIES( |
| 126 | + OpenSSL::SSL |
| 127 | + INTERFACE ${_include_dir} |
| 128 | +) |
| 129 | +LIST(APPEND RV_DEPS_LIST OpenSSL::SSL) |
0 commit comments