.github
android
build
doc
python
build
autotools.py
boost.py
dirs.py
download.py
ffmpeg.py
libs.py
makeproject.py
meson.py
project.py
quilt.py
tar.py
verify.py
zlib.py
src
systemd
test
win32
.gitignore
.travis.yml
AUTHORS
COPYING
NEWS
README.md
meson.build
meson_options.txt
mpd.svg
valgrind.suppressions
65 lines
2.4 KiB
Python
65 lines
2.4 KiB
Python
import os.path, subprocess, sys
|
|
|
|
from build.makeproject import MakeProject
|
|
|
|
class AutotoolsProject(MakeProject):
|
|
def __init__(self, url, md5, installed, configure_args=[],
|
|
autogen=False,
|
|
autoreconf=False,
|
|
cppflags='',
|
|
ldflags='',
|
|
libs='',
|
|
subdirs=None,
|
|
**kwargs):
|
|
MakeProject.__init__(self, url, md5, installed, **kwargs)
|
|
self.configure_args = configure_args
|
|
self.autogen = autogen
|
|
self.autoreconf = autoreconf
|
|
self.cppflags = cppflags
|
|
self.ldflags = ldflags
|
|
self.libs = libs
|
|
self.subdirs = subdirs
|
|
|
|
def configure(self, toolchain):
|
|
src = self.unpack(toolchain)
|
|
if self.autogen:
|
|
if sys.platform == 'darwin':
|
|
subprocess.check_call(['glibtoolize', '--force'], cwd=src)
|
|
else:
|
|
subprocess.check_call(['libtoolize', '--force'], cwd=src)
|
|
subprocess.check_call(['aclocal'], cwd=src)
|
|
subprocess.check_call(['automake', '--add-missing', '--force-missing', '--foreign'], cwd=src)
|
|
subprocess.check_call(['autoconf'], cwd=src)
|
|
if self.autoreconf:
|
|
subprocess.check_call(['autoreconf', '-vif'], cwd=src)
|
|
|
|
build = self.make_build_path(toolchain)
|
|
|
|
configure = [
|
|
os.path.join(src, 'configure'),
|
|
'CC=' + toolchain.cc,
|
|
'CXX=' + toolchain.cxx,
|
|
'CFLAGS=' + toolchain.cflags,
|
|
'CXXFLAGS=' + toolchain.cxxflags,
|
|
'CPPFLAGS=' + toolchain.cppflags + ' ' + self.cppflags,
|
|
'LDFLAGS=' + toolchain.ldflags + ' ' + self.ldflags,
|
|
'LIBS=' + toolchain.libs + ' ' + self.libs,
|
|
'AR=' + toolchain.ar,
|
|
'RANLIB=' + toolchain.ranlib,
|
|
'STRIP=' + toolchain.strip,
|
|
'--host=' + toolchain.arch,
|
|
'--prefix=' + toolchain.install_prefix,
|
|
'--enable-silent-rules',
|
|
] + self.configure_args
|
|
|
|
subprocess.check_call(configure, cwd=build, env=toolchain.env)
|
|
return build
|
|
|
|
def build(self, toolchain):
|
|
build = self.configure(toolchain)
|
|
if self.subdirs is not None:
|
|
for subdir in self.subdirs:
|
|
MakeProject.build(self, toolchain, os.path.join(build, subdir))
|
|
else:
|
|
MakeProject.build(self, toolchain, build)
|