aboutsummaryrefslogtreecommitdiff
path: root/configure
blob: a619ff6fd70eaae0bbd558fab50b9f4f78993313 (plain)
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
#!/usr/bin/env python3
import shutil
import os
import subprocess
from colorama import Fore
from colorama import Style

def concat_options(default, options=[]):
    if not options:
        return default
    r = ''
    for option in options:
        if option is default:
            r += '*' + option + '* '
        else:
            r += option + ' '
    return r.strip()

def prompt(prompt, default, options=[]):
    v = input("{} ({}): ".format(prompt, concat_options(default, options)))
    if v is not '':
        return v
    return default

if __name__ is "__main__":
    # build options
    build_dir = prompt('build folder', 'build')
    build_type = prompt('build type', 'release', ['plain', 'debug', 'debugoptimized', 'release'])
    build_prefix = prompt('prefix', '/usr/local')

    build_pie = prompt('position-independent executable', 'true', ['true', 'false'])
    build_lto = prompt('link-time optimization', 'true', ['true', 'false'])

    # feature selection
    auto_features = prompt('Feature auto state', 'disabled', ['auto', 'enabled', 'disabled'])
    f_breakpad = prompt('Use breakpad', 'disabled', ['enabled', 'disabled'])
    f_plasma = prompt('Use plasma', 'disabled', ['enabled', 'disabled'])
    f_manpage = prompt('make manpage', 'enabled', ['enabled', 'disabled'])

    # compilers
    cc = prompt('C compiler', 'gcc')
    cpp = prompt('CPP compiler', 'g++')
    ld = prompt('Linker', 'gold')

    # clean build folder
    if os.path.isdir(build_dir):
        shutil.rmtree(build_dir)
    os.mkdir(build_dir, 0o700)

    env = {
        **os.environ,
        'CC' : cc,
        'CXX' : cpp
    }
    # configure build dir
    subprocess.run(['meson', '--buildtype={}'.format(build_type), '--prefix={}'.format(build_prefix), '--auto-features={}'.format(auto_features),
        '-Db_pie={}'.format(build_pie), '-Db_lto={}'.format(build_lto), '-Dcpp_link_args="-fuse-ld={}"'.format(ld),
        '-DBreakpad={}'.format(f_breakpad), '-DPlasma={}'.format(f_plasma), '-Dmanpage={}'.format(f_manpage),
        build_dir], env=env, check=True)

    print(f"{Style.BRIGHT}Configure step complete{Style.RESET_ALL}")
    print("For more configuration options run 'meson configure' in the configured build directory.")
    print("You can now build with 'ninja -C {}'.".format(build_dir))