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