From 9723af3f3583801ab63545270efe0efc24e8d00c Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 11 Dec 2023 10:58:10 +0100 Subject: [PATCH] subprojects: add openssl --- android/build.py | 1 - meson.build | 5 +++ python/build/libs.py | 8 ----- python/build/openssl.py | 78 ---------------------------------------- subprojects/.gitignore | 1 + subprojects/openssl.wrap | 15 ++++++++ 6 files changed, 21 insertions(+), 87 deletions(-) delete mode 100644 python/build/openssl.py create mode 100644 subprojects/openssl.wrap diff --git a/android/build.py b/android/build.py index b584647f9..f17c0ee84 100755 --- a/android/build.py +++ b/android/build.py @@ -37,7 +37,6 @@ thirdparty_libs = [ wildmidi, gme, ffmpeg, - openssl, libnfs, boost, ] diff --git a/meson.build b/meson.build index d6ebd77cf..8f6c45f59 100644 --- a/meson.build +++ b/meson.build @@ -21,6 +21,7 @@ project( 'libnpupnp:default_library=static', 'liburing:default_library=static', 'ogg:default_library=static', + 'openssl:default_library=static', 'opus:default_library=static', 'sqlite3:default_library=static', 'vorbis:default_library=static', @@ -40,6 +41,8 @@ project( 'sqlite3:warning_level=0', 'oggiopus:werror=false', 'ogg:warning_level=0', + 'openssl:werror=false', + 'openssl:warning_level=0', 'opus:werror=false', 'opus:warning_level=0', 'vorbis:warning_level=0', @@ -72,6 +75,8 @@ project( 'curl:smtp=disabled', 'curl:telnet=disabled', 'curl:tftp=disabled', + 'openssl:build_cli=false', + 'openssl:asm=disabled', 'opus:docs=disabled', 'opus:extra-programs=disabled', 'opus:tests=disabled', diff --git a/python/build/libs.py b/python/build/libs.py index f840ef1d8..9952eda74 100644 --- a/python/build/libs.py +++ b/python/build/libs.py @@ -7,7 +7,6 @@ from build.meson import MesonProject from build.cmake import CmakeProject from build.autotools import AutotoolsProject from build.ffmpeg import FfmpegProject -from build.openssl import OpenSSLProject from build.boost import BoostProject from build.jack import JackProject @@ -574,13 +573,6 @@ ffmpeg = FfmpegProject( ], ) -openssl = OpenSSLProject( - ('https://www.openssl.org/source/openssl-3.1.4.tar.gz', - 'https://artfiles.org/openssl.org/source/openssl-3.1.4.tar.gz'), - '840af5366ab9b522bde525826be3ef0fb0af81c6a9ebd84caa600fea1731eee3', - 'include/openssl/ossl_typ.h', -) - libnfs = AutotoolsProject( 'https://github.com/sahlberg/libnfs/archive/libnfs-5.0.3.tar.gz', 'd945cb4f4c8f82ee1f3640893a168810f794a28e1010bb007ec5add345e9df3e', diff --git a/python/build/openssl.py b/python/build/openssl.py deleted file mode 100644 index 8b0224598..000000000 --- a/python/build/openssl.py +++ /dev/null @@ -1,78 +0,0 @@ -import subprocess -from typing import Optional, Sequence, Union - -from build.makeproject import MakeProject -from .toolchain import AnyToolchain - -class OpenSSLProject(MakeProject): - def __init__(self, url: Union[str, Sequence[str]], md5: str, installed: str, - **kwargs): - MakeProject.__init__(self, url, md5, installed, install_target='install_dev', **kwargs) - - def get_make_args(self, toolchain: AnyToolchain) -> list[str]: - return MakeProject.get_make_args(self, toolchain) + [ - 'CC=' + toolchain.cc, - 'CFLAGS=' + toolchain.cflags, - 'CPPFLAGS=' + toolchain.cppflags, - 'AR=' + toolchain.ar, - 'RANLIB=' + toolchain.ranlib, - 'build_libs', - ] - - def get_make_install_args(self, toolchain: AnyToolchain) -> list[str]: - # OpenSSL's Makefile runs "ranlib" during installation - return MakeProject.get_make_install_args(self, toolchain) + [ - 'RANLIB=' + toolchain.ranlib, - ] - - def _build(self, toolchain: AnyToolchain) -> None: - src = self.unpack(toolchain, out_of_tree=False) - - # OpenSSL has a weird target architecture scheme with lots of - # hard-coded architectures; this table translates between our - # host triplet and the OpenSSL target - openssl_archs = { - # not using "android-*" because those OpenSSL targets want - # to know where the SDK is, but our own build scripts - # prepared everything already to look like a regular Linux - # build - 'armv7a-linux-androideabi': 'linux-generic32', - 'aarch64-linux-android': 'linux-aarch64', - 'i686-linux-android': 'linux-x86-clang', - 'x86_64-linux-android': 'linux-x86_64-clang', - - # generic Linux - 'arm-linux-gnueabihf': 'linux-generic32', - - # Windows - 'i686-w64-mingw32': 'mingw', - 'x86_64-w64-mingw32': 'mingw64', - - # Apple - 'x86_64-apple-darwin': 'darwin64-x86_64-cc', - 'aarch64-apple-darwin': 'darwin64-arm64-cc', - } - - configure = [ - './Configure', - 'no-shared', - 'no-module', - 'no-engine', - 'no-static-engine', - 'no-async', - 'no-tests', - 'no-makedepend', - '--libdir=lib', # no "lib64" on amd64, please - '--prefix=' + toolchain.install_prefix, - ] - - if toolchain.is_windows: - # workaround for build failures - configure.append('no-asm') - - if toolchain.host_triplet is not None: - configure.append(openssl_archs[toolchain.host_triplet]) - configure.append(f'--cross-compile-prefix={toolchain.host_triplet}-') - - subprocess.check_call(configure, cwd=src, env=toolchain.env) - self.build_make(toolchain, src) diff --git a/subprojects/.gitignore b/subprojects/.gitignore index 9f9db2a85..416503efb 100644 --- a/subprojects/.gitignore +++ b/subprojects/.gitignore @@ -10,5 +10,6 @@ /libogg-*/ /liburing-*/ /libvorbis-*/ +/openssl-*/ /opus-*/ /sqlite-*/ diff --git a/subprojects/openssl.wrap b/subprojects/openssl.wrap new file mode 100644 index 000000000..873d55106 --- /dev/null +++ b/subprojects/openssl.wrap @@ -0,0 +1,15 @@ +[wrap-file] +directory = openssl-3.0.8 +source_url = https://www.openssl.org/source/openssl-3.0.8.tar.gz +source_filename = openssl-3.0.8.tar.gz +source_hash = 6c13d2bf38fdf31eac3ce2a347073673f5d63263398f1f69d0df4a41253e4b3e +patch_filename = openssl_3.0.8-3_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/openssl_3.0.8-3/get_patch +patch_hash = 300da189e106942347d61a4a4295aa2edbcf06184f8d13b4cee0bed9fb936963 +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/openssl_3.0.8-3/openssl-3.0.8.tar.gz +wrapdb_version = 3.0.8-3 + +[provide] +libcrypto = libcrypto_dep +libssl = libssl_dep +openssl = openssl_dep