Browse Source
[externals] allow OpenSSL to be built
[externals] allow OpenSSL to be built
Signed-off-by: lizzie <lizzie@eden-emu.dev>lizzie/openssl-external-builds
6 changed files with 125 additions and 19 deletions
-
22CMakeLists.txt
-
8cpmfile.json
-
102externals/openssl/CMakeLists.txt
-
8src/common/CMakeLists.txt
-
2src/video_core/CMakeLists.txt
-
2src/web_service/CMakeLists.txt
@ -0,0 +1,102 @@ |
|||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project |
|||
# SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
if (YUZU_USE_BUNDLED_OPENSSL) |
|||
set(BUILD_SHARED_LIBS OFF) |
|||
AddJsonPackage(openssl-ci) |
|||
if (OpenSSL_ADDED) |
|||
add_compile_definitions(YUZU_BUNDLED_OPENSSL) |
|||
endif() |
|||
# openssl funniness |
|||
find_package(OpenSSL 3 COMPONENTS SSL Crypto REQUIRED) |
|||
else() |
|||
message(STATUS "Using OpenSSL from externals") |
|||
AddJsonPackage(openssl) |
|||
set(OpenSSL_PREFIX ${OpenSSL_SOURCE_DIR}) |
|||
set(OpenSSL_BUILD_DIR ${OpenSSL_BINARY_DIR}) |
|||
set(OpenSSL_MAKEFILE ${OpenSSL_BUILD_DIR}/Makefile) |
|||
set(OpenSSL_BUILD_LIBRARIES "") |
|||
list(APPEND OpenSSL_BUILD_LIBRARIES |
|||
"${OpenSSL_BUILD_DIR}/libssl.a" |
|||
"${OpenSSL_BUILD_DIR}/libcrypto.a") |
|||
|
|||
make_directory(${OpenSSL_BUILD_DIR}) |
|||
|
|||
# The ABSOLUTE best language, hands down, better than bash by a MILE |
|||
find_program(PERL_PROGRAM perl) |
|||
add_custom_command( |
|||
OUTPUT |
|||
${OpenSSL_MAKEFILE} |
|||
COMMAND |
|||
${PERL_PROGRAM} ${OpenSSL_PREFIX}/Configure |
|||
shared |
|||
no-makedepend |
|||
--release |
|||
threads |
|||
no-tests |
|||
no-docs |
|||
enable-camellia |
|||
enable-ec |
|||
enable-ec2m |
|||
enable-sm2 |
|||
enable-srp |
|||
enable-idea |
|||
enable-mdc2 |
|||
enable-rc5 |
|||
enable-rfc3779 |
|||
enable-asm |
|||
enable-quic |
|||
enable-fips |
|||
WORKING_DIRECTORY |
|||
${OpenSSL_BUILD_DIR} |
|||
) |
|||
|
|||
# Workaround for Ubuntu 18.04's older version of make not being able to call make as a child |
|||
# with context of the jobserver. Also helps ninja users. |
|||
execute_process(COMMAND nproc OUTPUT_VARIABLE SYSTEM_THREADS) |
|||
# BSD make or Solaris make don't support ffmpeg make-j8 |
|||
set(OpenSSL_MAKE_ARGS "") |
|||
if (PLATFORM_LINUX OR ANDROID OR APPLE OR WIN32 OR PLATFORM_FREEBSD) |
|||
set(OpenSSL_MAKE_ARGS -j${SYSTEM_THREADS}) |
|||
endif() |
|||
|
|||
add_custom_command( |
|||
OUTPUT |
|||
${OpenSSL_BUILD_LIBRARIES} |
|||
COMMAND |
|||
gmake ${OpenSSL_MAKE_ARGS} |
|||
WORKING_DIRECTORY |
|||
${OpenSSL_BUILD_DIR} |
|||
) |
|||
add_custom_target(openssl-configure ALL DEPENDS ${OpenSSL_MAKEFILE}) |
|||
add_custom_target(openssl-build ALL DEPENDS ${OpenSSL_BUILD_LIBRARIES} openssl-configure) |
|||
|
|||
add_library(SSL INTERFACE) |
|||
target_include_directories(SSL INTERFACE ${OpenSSL_SOURCE_DIR}/include) |
|||
target_link_libraries(SSL INTERFACE openssl-build) |
|||
|
|||
add_library(Crypto INTERFACE) |
|||
target_include_directories(Crypto INTERFACE ${OpenSSL_SOURCE_DIR}/include) |
|||
target_link_libraries(Crypto INTERFACE openssl-build) |
|||
|
|||
add_library(OpenSSL::SSL ALIAS SSL) |
|||
add_library(OpenSSL::Crypto ALIAS Crypto) |
|||
|
|||
# evil haxx for httplib https://cmake.org/cmake/help/latest/module/FindOpenSSL.html |
|||
# fuck httplib |
|||
set(OpenSSL_FOUND TRUE PARENT_SCOPE) |
|||
set(OpenSSL_VERSION "4.0.0" PARENT_SCOPE) |
|||
# Deprecated but some people run older cmake |
|||
set(OPENSSL_FOUND TRUE PARENT_SCOPE) |
|||
set(OPENSSL_VERSION "4.0.0" PARENT_SCOPE) |
|||
|
|||
set(OPENSSL_INCLUDE_DIR ${OpenSSL_SOURCE_DIR}/include PARENT_SCOPE) |
|||
set(OPENSSL_CRYPTO_LIBRARY ${OpenSSL_BUILD_DIR}/libcrypto.a PARENT_SCOPE) |
|||
set(OPENSSL_CRYPTO_LIBRARIES ${OpenSSL_BUILD_DIR}/libcrypto.a PARENT_SCOPE) |
|||
set(OPENSSL_SSL_LIBRARY ${OpenSSL_BUILD_DIR}/libssl.a PARENT_SCOPE) |
|||
set(OPENSSL_SSL_LIBRARIES ${OpenSSL_BUILD_DIR}/libssl.a PARENT_SCOPE) |
|||
set(OPENSSL_LIBRARIES "${OpenSSL_BUILD_DIR}/libssl.a;${OpenSSL_BUILD_DIR}/libcrypto.a" PARENT_SCOPE) |
|||
|
|||
set(OPENSSL_ROOT_DIR ${OpenSSL_BUILD_DIR} PARENT_SCOPE) |
|||
set(OPENSSL_USE_STATIC_LIBS TRUE PARENT_SCOPE) |
|||
endif() |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue