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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
#!/usr/bin/env python3
import os, sys, shutil, subprocess
global_options = ['--werror']
flavors = {
'debug': {
'options': [
'-Ddocumentation=enabled',
'-Dcurses=ncursesw',
'-Dmouse=enabled',
'-Dlirc=enabled',
'-Dlyrics_screen=true',
'-Dchat_screen=true',
],
},
'clang': {
'options': [
'-Dcurses=ncursesw',
'-Dmouse=enabled',
'-Dlirc=enabled',
'-Dlyrics_screen=true',
'-Dchat_screen=true',
'-Ddocumentation=disabled',
],
'env': {
'CC': 'clang',
'CXX': 'clang++',
'LDFLAGS': '-fuse-ld=lld',
},
},
'release': {
'options': [
'--buildtype', 'debugoptimized',
'-Db_ndebug=true',
'-Db_lto=true',
'-Dcurses=ncursesw',
'-Dmouse=enabled',
'-Ddocumentation=disabled',
],
'env': {
'LDFLAGS': '-fuse-ld=gold -Wl,--gc-sections,--icf=all',
},
},
'llvm': {
'options': [
'--buildtype', 'debugoptimized',
'-Db_ndebug=true',
'-Db_lto=true',
'-Dcurses=ncursesw',
'-Dmouse=enabled',
'-Ddocumentation=disabled',
],
'env': {
'CC': 'clang',
'CXX': 'clang++',
'LDFLAGS': '-fuse-ld=lld',
},
},
'mini': {
'options': [
'--buildtype', 'minsize',
'-Db_ndebug=true',
'-Db_lto=true',
'-Dlirc=disabled',
'-Dcurses=ncurses',
'-Dcolors=false',
'-Dmouse=disabled',
'-Dmultibyte=false',
'-Dlocale=disabled',
'-Dnls=disabled',
'-Dtcp=false',
'-Dasync_connect=false',
'-Dmini=true',
'-Ddocumentation=disabled',
],
'env': {
'LDFLAGS': '-fuse-ld=gold -Wl,--gc-sections,--icf=all',
},
},
}
project_name = 'ncmpc'
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)
|