46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import subprocess
|
|
|
|
from build.project import Project
|
|
|
|
def configure(toolchain, src, build, args=()):
|
|
cross_args = []
|
|
|
|
if toolchain.is_windows:
|
|
cross_args.append('-DCMAKE_SYSTEM_NAME=Windows')
|
|
cross_args.append('-DCMAKE_RC_COMPILER=' + toolchain.windres)
|
|
|
|
configure = [
|
|
'cmake',
|
|
src,
|
|
|
|
'-DCMAKE_INSTALL_PREFIX=' + toolchain.install_prefix,
|
|
'-DCMAKE_BUILD_TYPE=release',
|
|
|
|
'-DCMAKE_C_COMPILER=' + toolchain.cc,
|
|
'-DCMAKE_CXX_COMPILER=' + toolchain.cxx,
|
|
|
|
'-DCMAKE_C_FLAGS=' + toolchain.cflags + ' ' + toolchain.cppflags,
|
|
'-DCMAKE_CXX_FLAGS=' + toolchain.cxxflags + ' ' + toolchain.cppflags,
|
|
|
|
'-GNinja',
|
|
] + cross_args + args
|
|
|
|
subprocess.check_call(configure, env=toolchain.env, cwd=build)
|
|
|
|
class CmakeProject(Project):
|
|
def __init__(self, url, md5, installed, configure_args=[],
|
|
**kwargs):
|
|
Project.__init__(self, url, md5, installed, **kwargs)
|
|
self.configure_args = configure_args
|
|
|
|
def configure(self, toolchain):
|
|
src = self.unpack(toolchain)
|
|
build = self.make_build_path(toolchain)
|
|
configure(toolchain, src, build, self.configure_args)
|
|
return build
|
|
|
|
def build(self, toolchain):
|
|
build = self.configure(toolchain)
|
|
subprocess.check_call(['ninja', 'install'],
|
|
cwd=build, env=toolchain.env)
|