1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
#!/usr/bin/env python3
import os, sys, shutil, subprocess
global_options = ['--werror']
flavors = {
'debug': {
'options': [
'-Dtest=true',
'-Ddocumentation=enabled',
],
},
'release': {
'options': [
'--buildtype', 'release',
'-Db_ndebug=true',
'-Db_lto=true',
'-Dtest=true',
'-Ddocumentation=disabled',
],
},
'mini': {
'options': [
'--buildtype', 'release',
'-Db_ndebug=true',
'-Db_lto=true',
'-Diconv=disabled',
'-Ddocumentation=disabled',
],
},
'musl': {
'options': [
'--buildtype', 'minsize',
'--default-library', 'static',
'-Db_ndebug=true',
'-Db_lto=true',
'-Ddocumentation=disabled',
],
'env': {
'CC': 'musl-gcc',
},
},
'win32': {
'arch': 'i686-w64-mingw32',
'options': [
'-Ddocumentation=disabled',
]
},
'win64': {
'arch': 'x86_64-w64-mingw32',
'options': [
'-Ddocumentation=disabled',
]
},
}
project_name = 'mpc'
source_root = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]) or '.', '..'))
output_path = os.path.join(source_root, 'output')
prefix_root = '/usr/local/stow'
for name, data in flavors.items():
print(name)
build_root = os.path.join(output_path, name)
env = os.environ.copy()
if 'env' in data:
env.update(data['env'])
cmdline = [
'meson', source_root, build_root,
] + global_options
if 'options' in data:
cmdline.extend(data['options'])
prefix = os.path.join(prefix_root, project_name + '-' + name)
if 'arch' in data:
prefix = os.path.join(prefix, data['arch'])
cmdline += ('--cross-file', os.path.join(source_root, 'build', name, 'cross-file.txt'))
cmdline += ('--prefix', prefix)
try:
shutil.rmtree(build_root)
except:
pass
subprocess.check_call(cmdline, env=env)
|