File: SConstruct

package info (click to toggle)
klick 0.12.2-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze, wheezy
  • size: 440 kB
  • ctags: 564
  • sloc: cpp: 3,456; makefile: 12
file content (103 lines) | stat: -rw-r--r-- 2,642 bytes parent folder | download | duplicates (5)
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
# -*- python -*-

import os

version = '0.12.2'

env = Environment(
    CPPDEFINES = [
        ('VERSION', '\\"%s\\"' % version),
    ],
    ENV = os.environ,
)

# build options
opts = Options('scache.conf')
opts.AddOptions(
    PathOption('PREFIX', 'install prefix', '/usr/local'),
    PathOption('DESTDIR', 'intermediate install prefix', '', PathOption.PathAccept),
    BoolOption('DEBUG', 'debug mode', False),
    BoolOption('OSC', 'OSC support', True),
    BoolOption('TERMINAL', 'terminal control support', True),
    BoolOption('RUBBERBAND', 'use Rubber Band for pitch shifting', False),
)
opts.Update(env)
opts.Save('scache.conf', env)
Help(opts.GenerateHelpText(env))

if env['DEBUG']:
    env.Append(CCFLAGS = ['-g', '-W', '-Wall'])
else:
    env.Append(CCFLAGS = ['-O2', '-W', '-Wall'])
    env.Prepend(CPPDEFINES = 'NDEBUG')

# install paths
prefix_bin = os.path.join(env['PREFIX'], 'bin')
prefix_share = os.path.join(env['PREFIX'], 'share/klick')

env.Append(CPPDEFINES = ('DATA_DIR', '\\"%s\\"' % prefix_share))

# required libraries
env.ParseConfig(
    'pkg-config --cflags --libs jack samplerate sndfile'
)
if os.system('pkg-config --atleast-version=1.0.18 sndfile') == 0:
    env.Append(CPPDEFINES = ['HAVE_SNDFILE_OGG'])

# source files
sources = [
    'src/main.cc',
    'src/klick.cc',
    'src/options.cc',
    'src/audio_interface.cc',
    'src/audio_interface_jack.cc',
    'src/audio_interface_sndfile.cc',
    'src/audio_chunk.cc',
    'src/tempomap.cc',
    'src/metronome.cc',
    'src/metronome_simple.cc',
    'src/metronome_map.cc',
    'src/metronome_jack.cc',
    'src/position.cc',
    'src/util/util.cc'
]

# audio samples
samples = [
    'samples/square_emphasis.wav',
    'samples/square_normal.wav',
    'samples/sine_emphasis.wav',
    'samples/sine_normal.wav',
    'samples/noise_emphasis.wav',
    'samples/noise_normal.wav',
    'samples/click_emphasis.wav',
    'samples/click_normal.wav',
]

# build options
if env['OSC']:
    env.ParseConfig('pkg-config --cflags --libs liblo')
    env.Append(CPPDEFINES = ['ENABLE_OSC'])
    sources += [
        'src/osc_interface.cc',
        'src/osc_handler.cc',
    ]

if env['TERMINAL']:
    env.Append(CPPDEFINES = ['ENABLE_TERMINAL'])
    sources += [
        'src/terminal_handler.cc',
    ]

if env['RUBBERBAND']:
    env.ParseConfig('pkg-config --cflags --libs rubberband')
    env.Append(CPPDEFINES = ['ENABLE_RUBBERBAND'])

env.Program('klick', sources)
Default('klick')

# installation
env.Alias('install', [
    env.Install(env['DESTDIR'] + prefix_bin, 'klick'),
    env.Install(env['DESTDIR'] + os.path.join(prefix_share, 'samples'), samples)
])