subprojects: add openssl

This commit is contained in:
Max Kellermann 2023-12-11 10:58:10 +01:00
parent dcf3cf4216
commit 9723af3f35
6 changed files with 21 additions and 87 deletions

@ -37,7 +37,6 @@ thirdparty_libs = [
wildmidi, wildmidi,
gme, gme,
ffmpeg, ffmpeg,
openssl,
libnfs, libnfs,
boost, boost,
] ]

@ -21,6 +21,7 @@ project(
'libnpupnp:default_library=static', 'libnpupnp:default_library=static',
'liburing:default_library=static', 'liburing:default_library=static',
'ogg:default_library=static', 'ogg:default_library=static',
'openssl:default_library=static',
'opus:default_library=static', 'opus:default_library=static',
'sqlite3:default_library=static', 'sqlite3:default_library=static',
'vorbis:default_library=static', 'vorbis:default_library=static',
@ -40,6 +41,8 @@ project(
'sqlite3:warning_level=0', 'sqlite3:warning_level=0',
'oggiopus:werror=false', 'oggiopus:werror=false',
'ogg:warning_level=0', 'ogg:warning_level=0',
'openssl:werror=false',
'openssl:warning_level=0',
'opus:werror=false', 'opus:werror=false',
'opus:warning_level=0', 'opus:warning_level=0',
'vorbis:warning_level=0', 'vorbis:warning_level=0',
@ -72,6 +75,8 @@ project(
'curl:smtp=disabled', 'curl:smtp=disabled',
'curl:telnet=disabled', 'curl:telnet=disabled',
'curl:tftp=disabled', 'curl:tftp=disabled',
'openssl:build_cli=false',
'openssl:asm=disabled',
'opus:docs=disabled', 'opus:docs=disabled',
'opus:extra-programs=disabled', 'opus:extra-programs=disabled',
'opus:tests=disabled', 'opus:tests=disabled',

@ -7,7 +7,6 @@ from build.meson import MesonProject
from build.cmake import CmakeProject from build.cmake import CmakeProject
from build.autotools import AutotoolsProject from build.autotools import AutotoolsProject
from build.ffmpeg import FfmpegProject from build.ffmpeg import FfmpegProject
from build.openssl import OpenSSLProject
from build.boost import BoostProject from build.boost import BoostProject
from build.jack import JackProject 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( libnfs = AutotoolsProject(
'https://github.com/sahlberg/libnfs/archive/libnfs-5.0.3.tar.gz', 'https://github.com/sahlberg/libnfs/archive/libnfs-5.0.3.tar.gz',
'd945cb4f4c8f82ee1f3640893a168810f794a28e1010bb007ec5add345e9df3e', 'd945cb4f4c8f82ee1f3640893a168810f794a28e1010bb007ec5add345e9df3e',

@ -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)

@ -10,5 +10,6 @@
/libogg-*/ /libogg-*/
/liburing-*/ /liburing-*/
/libvorbis-*/ /libvorbis-*/
/openssl-*/
/opus-*/ /opus-*/
/sqlite-*/ /sqlite-*/

15
subprojects/openssl.wrap Normal file

@ -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