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,
gme,
ffmpeg,
openssl,
libnfs,
boost,
]

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

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

@ -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-*/
/liburing-*/
/libvorbis-*/
/openssl-*/
/opus-*/
/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