OpenMiInk/third_party/krita-deps-management/ext_openssl/CMakeLists.txt
Hellings b8c8ff98e2 Hi
2026-10-16 09:05:56 -04:00

103 lines
5 KiB
CMake

cmake_minimum_required(VERSION 3.29)
# OpenSSL has an alternate install target called "install_sw" that skips installing the manual (which is fairly large).
# We use this on android and macos/linux.
project(ext_openssl)
include(${CMAKE_SOURCE_DIR}/../cmake/base-dep-options.cmake)
if (WIN32)
if (MSVC)
# Use the binaries from ConanCenter
ExternalProject_Add(ext_openssl
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL https://files.kde.org/krita/build/dependencies/openssl-1.1.1k-win64-msvc.tgz
URL_HASH SHA256=beae4c78e2f2b64cc3621402a34550ef1fffd08cd35b6a6802f22ed0460ff1d4
BUILD_COMMAND ${CMAKE_COMMAND} -E echo Deploying openssl 64-bit dependencies
CONFIGURE_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/include -DDST=${EXTPREFIX}/include -P ${KRITA_CI_INSTALL_DIRECTORY}
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/lib/libcrypto.lib -DDST=${EXTPREFIX}/lib -P ${KRITA_CI_INSTALL}
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/lib/libssl.lib -DDST=${EXTPREFIX}/lib -P ${KRITA_CI_INSTALL}
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/libcrypto-1_1-x64.dll -DDST=${EXTPREFIX}/bin -P ${KRITA_CI_INSTALL}
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/libssl-1_1-x64.dll -DDST=${EXTPREFIX}/bin -P ${KRITA_CI_INSTALL}
UPDATE_COMMAND ""
)
else(MSVC)
# Use the binaries from curl for Windows (https://github.com/curl/curl-for-win).
ExternalProject_Add(ext_openssl
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL https://files.kde.org/krita/build/dependencies/openssl-1.1.1l_4-win64-mingw.zip
URL_HASH SHA256=6582432d4f537323bfa032a1d91b4eee12efdf0c72e4fabdacc0ac5dd1685e9a
BUILD_COMMAND ${CMAKE_COMMAND} -E echo Deploying openssl 64-bit dependencies
CONFIGURE_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/include -DDST=${EXTPREFIX}/include -P ${KRITA_CI_INSTALL_DIRECTORY}
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/lib/libcrypto.dll.a -DDST=${EXTPREFIX}/lib -P ${KRITA_CI_INSTALL}
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/lib/libssl.dll.a -DDST=${EXTPREFIX}/lib -P ${KRITA_CI_INSTALL}
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/libcrypto-1_1-x64.dll -DDST=${EXTPREFIX}/bin -P ${KRITA_CI_INSTALL}
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/libssl-1_1-x64.dll -DDST=${EXTPREFIX}/bin -P ${KRITA_CI_INSTALL}
UPDATE_COMMAND ""
)
endif(MSVC)
elseif (ANDROID)
set(PAGE_ALIGNMENT_ENV_ARG)
if (PAGE_ALIGN_16K_LINKER_FLAGS)
message(STATUS "Enable 16K page alignment for OpenSSL")
set(PAGE_ALIGNMENT_ENV_ARG
LDFLAGS=${PAGE_ALIGN_16K_LINKER_FLAGS})
endif()
ExternalProject_Add( ext_openssl
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL https://www.openssl.org/source/openssl-1.1.1m.tar.gz
URL_HASH SHA256=f89199be8b23ca45fc7cb9f1d8d3ee67312318286ad030f5316aca6462db6c96
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env
${PAGE_ALIGNMENT_ENV_ARG}
ANDROID_NDK_HOME=${CMAKE_ANDROID_NDK}
ANDROID_NDK=${CMAKE_ANDROID_NDK}
PATH=${ANDROID_TOOLCHAIN_ROOT}/bin/:$ENV{PATH}
<SOURCE_DIR>/Configure android-${CMAKE_ANDROID_ARCH} -D__ANDROID_API__=${ANDROID_PLATFORM_LEVEL}
--prefix=${EXTPREFIX} --openssldir=ssl
BUILD_COMMAND ${CMAKE_COMMAND} -E env
PATH=${ANDROID_TOOLCHAIN_ROOT}/bin:$ENV{PATH}
CXXFLAGS=-D__ANDROID_API__=${ANDROID_PLATFORM_LEVEL}
make build_libs SHLIB_VERSION_NUMBER= SHLIB_EXT=_1_1.so
INSTALL_COMMAND ${CMAKE_COMMAND} -E env
PATH=${ANDROID_TOOLCHAIN_ROOT}/bin:$ENV{PATH}
CXXFLAGS=-D__ANDROID_API__=${ANDROID_PLATFORM_LEVEL}
# OpenSSL cannot handle DESTDIR as an environment variable. Instead,
# it expects it to be passed as an explicit make argument
${CMAKE_COMMAND} -P ${KRITA_CI_RUN_MAKE_WITH_DESTDIR} -- install_sw SHLIB_VERSION_NUMBER= SHLIB_EXT=_1_1.so
UPDATE_COMMAND ""
)
else (WIN32)
kis_ExternalProject_Add_with_separate_builds_apple(
ext_openssl
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL https://www.openssl.org/source/openssl-1.1.1m.tar.gz
URL_HASH SHA256=f89199be8b23ca45fc7cb9f1d8d3ee67312318286ad030f5316aca6462db6c96
WORKING_DIRECTORY <SOURCE_DIR>
CONFIGURE_COMMAND <SOURCE_DIR>/config --prefix=${EXTPREFIX} --openssldir=ssl
BUILD_COMMAND make clean COMMAND make -j${SUBMAKE_JOBS} depend COMMAND make -j${SUBMAKE_JOBS}
# OpenSSL cannot handle DESTDIR as an environment variable. Instead,
# it expects it to be passed as an explicit make argument
INSTALL_COMMAND ${CMAKE_COMMAND} -P ${KRITA_CI_RUN_MAKE_WITH_DESTDIR} -- install_sw
UPDATE_COMMAND ""
)
endif (WIN32)
krita_add_to_ci_targets(ext_openssl)