File: build.py

package info (click to toggle)
ableton-link 3.1.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,092 kB
  • sloc: cpp: 10,837; ansic: 299; python: 258; makefile: 29; sh: 15
file content (72 lines) | stat: -rwxr-xr-x 1,887 bytes parent folder | download | duplicates (9)
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
#!/usr/bin/env python

import argparse
import logging
import os
import sys

from distutils.spawn import find_executable
from subprocess import call


def parse_args():
    arg_parser = argparse.ArgumentParser()

    arg_parser.add_argument(
        '--cmake',
        default=find_executable("cmake"),
        help='Path to CMake executable (default: %(default)s)')

    arg_parser.add_argument(
        '-c', '--configuration',
        help='Build configuration to use (not supported by IDE generators)')

    arg_parser.add_argument(
        '-a', '--arguments',
        help='Arguments to pass to builder')

    return arg_parser.parse_args(sys.argv[1:])


def build_cmake_args(args, build_dir):
    if args.cmake is None:
        logging.error('CMake not found, please use the --cmake option')
        return None

    cmake_args = []
    cmake_args.append(args.cmake)
    cmake_args.append('--build')
    cmake_args.append(build_dir)

    if args.configuration is not None:
        cmake_args.append('--config')
        cmake_args.append(args.configuration)

    if args.arguments is not None:
        cmake_args.append('--')
        for arg in args.arguments.split():
            cmake_args.append(arg)

    return cmake_args


def build(args):
    scripts_dir = os.path.dirname(os.path.realpath(__file__))
    root_dir = os.path.join(scripts_dir, os.pardir)
    build_dir = os.path.join(root_dir, 'build')
    if not os.path.exists(build_dir):
        logging.error(
            'Build directory not found, did you forget to run the configure.py script?')
        return 2

    cmake_args = build_cmake_args(args, build_dir)
    if cmake_args is None:
        return 1

    logging.info('Running CMake')
    return call(cmake_args)


if __name__ == '__main__':
    logging.basicConfig(format='%(message)s', level=logging.INFO, stream=sys.stdout)
    sys.exit(build(parse_args()))