48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
from toolchain import Recipe, shprint
|
|
from os.path import join
|
|
import sh
|
|
|
|
|
|
arch_mapper = {'i386': 'darwin-i386-cc',
|
|
'x86_64': 'darwin64-x86_64-cc',
|
|
'armv7': 'iphoneos-cross',
|
|
'arm64': 'iphoneos-cross'}
|
|
|
|
|
|
class OpensslRecipe(Recipe):
|
|
version = "1.0.2k"
|
|
url = "http://www.openssl.org/source/openssl-{version}.tar.gz"
|
|
libraries = ["libssl.a", "libcrypto.a"]
|
|
include_dir = "include"
|
|
include_per_arch = True
|
|
|
|
def build_arch(self, arch):
|
|
options_iphoneos = (
|
|
"-isysroot {}".format(arch.sysroot),
|
|
"-DOPENSSL_THREADS",
|
|
"-D_REENTRANT",
|
|
"-DDSO_DLFCN",
|
|
"-DHAVE_DLFCN_H",
|
|
"-fomit-frame-pointer",
|
|
"-fno-common",
|
|
"-O3"
|
|
)
|
|
build_env = arch.get_env()
|
|
target = arch_mapper[arch.arch]
|
|
shprint(sh.env, _env=build_env)
|
|
sh.perl(join(self.build_dir, "Configure"),
|
|
target,
|
|
_env=build_env)
|
|
if target == 'iphoneos-cross':
|
|
sh.sed("-ie", "s!^CFLAG=.*!CFLAG={} {}!".format(build_env['CFLAGS'],
|
|
" ".join(options_iphoneos)),
|
|
"Makefile")
|
|
sh.sed("-ie", "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;! ",
|
|
"crypto/ui/ui_openssl.c")
|
|
else:
|
|
sh.sed("-ie", "s!^CFLAG=!CFLAG={} !".format(build_env['CFLAGS']),
|
|
"Makefile")
|
|
shprint(sh.make, "clean")
|
|
shprint(sh.make, self.ctx.concurrent_make, "build_libs")
|
|
|
|
recipe = OpensslRecipe()
|