diff --git a/recipes/openssl/__init__.py b/recipes/openssl/__init__.py new file mode 100644 index 0000000..752ef13 --- /dev/null +++ b/recipes/openssl/__init__.py @@ -0,0 +1,49 @@ +from toolchain import Recipe, shprint +from os.path import join, exists +import sh +import os + + +arch_mapper = {'i386': 'darwin-i386-cc', + 'x86_64': 'darwin64-x86_64-cc', + 'armv7': 'iphoneos-cross', + 'arm64': 'iphoneos-cross'} + + +class OpensslRecipe(Recipe): + version = "1.0.2c" + 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, "-j4", "build_libs") + +recipe = OpensslRecipe() diff --git a/recipes/python/ModulesSetup b/recipes/python/ModulesSetup index 567de4b..02db3c5 100644 --- a/recipes/python/ModulesSetup +++ b/recipes/python/ModulesSetup @@ -50,3 +50,5 @@ pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Mo # Future (used by numpy) future_builtins future_builtins.c + +_ssl _ssl.c -DUSE_SSL -lssl -lcrypto