62 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import subprocess
 | 
						|
 | 
						|
from build.makeproject import MakeProject
 | 
						|
 | 
						|
class OpenSSLProject(MakeProject):
 | 
						|
    def __init__(self, url, md5, installed,
 | 
						|
                 **kwargs):
 | 
						|
        MakeProject.__init__(self, url, md5, installed, install_target='install_dev', **kwargs)
 | 
						|
 | 
						|
    def get_make_args(self, toolchain):
 | 
						|
        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):
 | 
						|
        # OpenSSL's Makefile runs "ranlib" during installation
 | 
						|
        return MakeProject.get_make_install_args(self, toolchain) + [
 | 
						|
            'RANLIB=' + toolchain.ranlib,
 | 
						|
        ]
 | 
						|
 | 
						|
    def _build(self, toolchain):
 | 
						|
        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
 | 
						|
        # "toolchain_arch" (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
 | 
						|
            'arm-linux-androideabi': 'linux-generic32',
 | 
						|
            'aarch64-linux-android': 'linux-aarch64',
 | 
						|
            'i686-linux-android': 'linux-x86-clang',
 | 
						|
            'x86_64-linux-android': 'linux-x86_64-clang',
 | 
						|
 | 
						|
            # Kobo
 | 
						|
            'arm-linux-gnueabihf': 'linux-generic32',
 | 
						|
 | 
						|
            # Windows
 | 
						|
            'i686-w64-mingw32': 'mingw',
 | 
						|
            'x86_64-w64-mingw32': 'mingw64',
 | 
						|
        }
 | 
						|
 | 
						|
        openssl_arch = openssl_archs[toolchain.arch]
 | 
						|
 | 
						|
        subprocess.check_call(['./Configure',
 | 
						|
                               'no-shared',
 | 
						|
                               'no-module', 'no-engine', 'no-static-engine',
 | 
						|
                               'no-async',
 | 
						|
                               'no-tests',
 | 
						|
                               'no-asm', # "asm" causes build failures on Windows
 | 
						|
                               openssl_arch,
 | 
						|
                               '--prefix=' + toolchain.install_prefix],
 | 
						|
                              cwd=src, env=toolchain.env)
 | 
						|
        self.build_make(toolchain, src)
 |