~ubuntu-branches/ubuntu/utopic/ardour3/utopic

« back to all changes in this revision

Viewing changes to gtk2_ardour/wscript

  • Committer: Package Import Robot
  • Author(s): Felipe Sateler
  • Date: 2013-09-21 19:05:02 UTC
  • Revision ID: package-import@ubuntu.com-20130921190502-8gsftrku6jnzhd7v
Tags: upstream-3.4~dfsg
ImportĀ upstreamĀ versionĀ 3.4~dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
from waflib.extras import autowaf as autowaf
 
3
from waflib import Options, TaskGen
 
4
import waflib.Logs as Logs, waflib.Utils as Utils
 
5
import os
 
6
import sys
 
7
import re
 
8
import time
 
9
from waflib.Task import Task
 
10
 
 
11
I18N_PACKAGE = 'gtk2_ardour3'
 
12
 
 
13
# Mandatory variables
 
14
top = '.'
 
15
out = 'build'
 
16
 
 
17
path_prefix = 'gtk2_ardour/'
 
18
 
 
19
gtk2_ardour_sources = [
 
20
        'about.cc',
 
21
        'actions.cc',
 
22
        'add_route_dialog.cc',
 
23
        'ambiguous_file_dialog.cc',
 
24
        'analysis_window.cc',
 
25
        'ardour_button.cc',
 
26
        'ardour_dialog.cc',
 
27
        'ardour_ui.cc',
 
28
        'ardour_ui2.cc',
 
29
        'ardour_ui_dependents.cc',
 
30
        'ardour_ui_dialogs.cc',
 
31
        'ardour_ui_ed.cc',
 
32
        'ardour_ui_mixer.cc',
 
33
        'ardour_ui_options.cc',
 
34
        'ardour_window.cc',
 
35
        'audio_clock.cc',
 
36
        'audio_region_editor.cc',
 
37
        'audio_region_view.cc',
 
38
        'audio_streamview.cc',
 
39
        'audio_time_axis.cc',
 
40
        'automation_controller.cc',
 
41
        'automation_line.cc',
 
42
        'automation_region_view.cc',
 
43
        'automation_streamview.cc',
 
44
        'automation_time_axis.cc',
 
45
        'axis_view.cc',
 
46
        'big_clock_window.cc',
 
47
        'bundle_manager.cc',
 
48
        'button_joiner.cc',
 
49
        'canvas-flag.cc',
 
50
        'canvas-hit.cc',
 
51
        'canvas-note-event.cc',
 
52
        'canvas-note.cc',
 
53
        'canvas_patch_change.cc',
 
54
        'canvas-simpleline.c',
 
55
        'canvas-simplerect.c',
 
56
        'canvas-sysex.cc',
 
57
        'canvas-waveview.c',
 
58
        'clock_group.cc',
 
59
        'configinfo.cc',
 
60
        'control_point.cc',
 
61
        'control_point_dialog.cc',
 
62
        'curvetest.cc',
 
63
        'debug.cc',
 
64
        'diamond.cc',
 
65
        'edit_note_dialog.cc',
 
66
        'editing.cc',
 
67
        'editor.cc',
 
68
        'editor_actions.cc',
 
69
        'editor_audio_import.cc',
 
70
        'editor_audiotrack.cc',
 
71
        'editor_canvas.cc',
 
72
        'editor_canvas_events.cc',
 
73
        'editor_component.cc',
 
74
        'editor_cursors.cc',
 
75
        'editor_drag.cc',
 
76
        'editor_route_groups.cc',
 
77
        'editor_export_audio.cc',
 
78
        'editor_group_tabs.cc',
 
79
        'editor_keys.cc',
 
80
        'editor_locations.cc',
 
81
        'editor_markers.cc',
 
82
        'editor_mixer.cc',
 
83
        'editor_mouse.cc',
 
84
        'editor_ops.cc',
 
85
        'editor_regions.cc',
 
86
        'editor_routes.cc',
 
87
        'editor_rulers.cc',
 
88
        'editor_selection.cc',
 
89
        'editor_snapshots.cc',
 
90
        'editor_summary.cc',
 
91
        'editor_tempodisplay.cc',
 
92
        'editor_timefx.cc',
 
93
        'engine_dialog.cc',
 
94
        'enums.cc',
 
95
        'export_channel_selector.cc',
 
96
        'export_dialog.cc',
 
97
        'export_file_notebook.cc',
 
98
        'export_filename_selector.cc',
 
99
        'export_format_dialog.cc',
 
100
        'export_format_selector.cc',
 
101
        'export_preset_selector.cc',
 
102
        'export_timespan_selector.cc',
 
103
        'fft.cc',
 
104
        'fft_graph.cc',
 
105
        'fft_result.cc',
 
106
        'sfdb_freesound_mootcher.cc',
 
107
        'gain_meter.cc',
 
108
        'generic_pluginui.cc',
 
109
        'ghostregion.cc',
 
110
        'global_port_matrix.cc',
 
111
        'group_tabs.cc',
 
112
        'gtk-custom-hruler.c',
 
113
        'gtk-custom-ruler.c',
 
114
        'gtk_pianokeyboard.c',
 
115
        'gui_object.cc',
 
116
        'insert_time_dialog.cc',
 
117
        'interthread_progress_window.cc',
 
118
        'io_selector.cc',
 
119
        'keyboard.cc',
 
120
        'keyeditor.cc',
 
121
        'latency_gui.cc',
 
122
        'led.cc',
 
123
        'level_meter.cc',
 
124
        'lineset.cc',
 
125
        'location_ui.cc',
 
126
        'main.cc',
 
127
        'main_clock.cc',
 
128
        'marker.cc',
 
129
        'midi_automation_line.cc',
 
130
        'midi_channel_dialog.cc',
 
131
        'midi_channel_selector.cc',
 
132
        'midi_cut_buffer.cc',
 
133
        'midi_export_dialog.cc',
 
134
        'midi_list_editor.cc',
 
135
        'midi_port_dialog.cc',
 
136
        'midi_region_view.cc',
 
137
        'midi_scroomer.cc',
 
138
        'midi_selection.cc',
 
139
        'midi_streamview.cc',
 
140
        'midi_time_axis.cc',
 
141
        'midi_tracer.cc',
 
142
        'midi_velocity_dialog.cc',
 
143
        'missing_file_dialog.cc',
 
144
        'missing_plugin_dialog.cc',
 
145
        'mixer_actor.cc',
 
146
        'mixer_group_tabs.cc',
 
147
        'mixer_strip.cc',
 
148
        'mixer_ui.cc',
 
149
        'meterbridge.cc',
 
150
        'meter_strip.cc',
 
151
        'meter_patterns.cc',
 
152
        'monitor_section.cc',
 
153
        'mono_panner.cc',
 
154
        'mono_panner_editor.cc',
 
155
        'mouse_cursors.cc',
 
156
        'nag.cc',
 
157
        'new_plugin_preset_dialog.cc',
 
158
        'normalize_dialog.cc',
 
159
        'note_player.cc',
 
160
        'nsm.cc',
 
161
        'nsmclient.cc',
 
162
        'option_editor.cc',
 
163
        'opts.cc',
 
164
        'panner2d.cc',
 
165
        'panner_editor.cc',
 
166
        'panner_interface.cc',
 
167
        'panner_ui.cc',
 
168
        'piano_roll_header.cc',
 
169
        'pingback.cc',
 
170
        'playlist_selector.cc',
 
171
        'plugin_eq_gui.cc',
 
172
        'plugin_selector.cc',
 
173
        'plugin_ui.cc',
 
174
        'port_group.cc',
 
175
        'port_insert_ui.cc',
 
176
        'port_matrix.cc',
 
177
        'port_matrix_body.cc',
 
178
        'port_matrix_column_labels.cc',
 
179
        'port_matrix_component.cc',
 
180
        'port_matrix_grid.cc',
 
181
        'port_matrix_labels.cc',
 
182
        'port_matrix_row_labels.cc',
 
183
        'processor_box.cc',
 
184
        'patch_change_dialog.cc',
 
185
        'progress_reporter.cc',
 
186
        'prompter.cc',
 
187
        'public_editor.cc',
 
188
        'quantize_dialog.cc',
 
189
        'rc_option_editor.cc',
 
190
        'region_editor.cc',
 
191
        'region_gain_line.cc',
 
192
        'region_layering_order_editor.cc',
 
193
        'region_selection.cc',
 
194
        'region_view.cc',
 
195
        'return_ui.cc',
 
196
        'rhythm_ferret.cc',
 
197
        'route_group_dialog.cc',
 
198
        'route_group_menu.cc',
 
199
        'route_params_ui.cc',
 
200
        'route_processor_selection.cc',
 
201
        'route_time_axis.cc',
 
202
        'route_ui.cc',
 
203
        'search_path_option.cc',
 
204
        'selection.cc',
 
205
        'send_ui.cc',
 
206
        'session_import_dialog.cc',
 
207
        'session_metadata_dialog.cc',
 
208
        'session_option_editor.cc',
 
209
        'sfdb_ui.cc',
 
210
        'shuttle_control.cc',
 
211
        'simpleline.cc',
 
212
        'simplerect.cc',
 
213
        'splash.cc',
 
214
        'speaker_dialog.cc',
 
215
        'startup.cc',
 
216
        'step_editor.cc',
 
217
        'step_entry.cc',
 
218
        'stereo_panner.cc',
 
219
        'stereo_panner_editor.cc',
 
220
        'streamview.cc',
 
221
        'strip_silence_dialog.cc',
 
222
        'tape_region_view.cc',
 
223
        'tempo_dialog.cc',
 
224
        'tempo_lines.cc',
 
225
        'theme_manager.cc',
 
226
        'time_axis_view.cc',
 
227
        'time_axis_view_item.cc',
 
228
        'time_fx_dialog.cc',
 
229
        'time_info_box.cc',
 
230
        'time_selection.cc',
 
231
        'track_selection.cc',
 
232
        'track_view_list.cc',
 
233
        'transpose_dialog.cc',
 
234
        'ui_config.cc',
 
235
        'utils.cc',
 
236
        'verbose_cursor.cc',
 
237
        'version.cc',
 
238
        'visibility_group.cc',
 
239
        'volume_controller.cc',
 
240
        'waveview.cc',
 
241
        'window_manager.cc',
 
242
# video-timeline related sources:
 
243
        'video_image_frame.cc',
 
244
        'add_video_dialog.cc',
 
245
        'editor_videotimeline.cc',
 
246
        'video_timeline.cc',
 
247
        'system_exec.cc',
 
248
        'video_monitor.cc',
 
249
        'transcode_ffmpeg.cc',
 
250
        'transcode_video_dialog.cc',
 
251
        'video_server_dialog.cc',
 
252
        'utils_videotl.cc',
 
253
        'export_video_dialog.cc',
 
254
        'export_video_infobox.cc'
 
255
]
 
256
 
 
257
def options(opt):
 
258
    autowaf.set_options(opt)
 
259
 
 
260
def configure(conf):
 
261
    conf.load('misc')
 
262
    conf.load('compiler_cxx')
 
263
    # we don't use hard-coded micro versions with ardour, so hard code it to zero
 
264
    autowaf.build_version_files(
 
265
        path_prefix + 'version.h',
 
266
        path_prefix + 'version.cc',
 
267
        'gtk2_ardour', conf.env['MAJOR'], conf.env['MINOR'], 0)
 
268
    autowaf.configure(conf)
 
269
 
 
270
    if re.search ("linux", sys.platform) != None:
 
271
        autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
 
272
 
 
273
    # TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
 
274
 
 
275
    autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
 
276
                      atleast_version='1.2.1')
 
277
    autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD',
 
278
                      atleast_version='2.10.1')
 
279
    autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK',
 
280
                      atleast_version='2.18')
 
281
    autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM',
 
282
                      atleast_version='2.18')
 
283
    autowaf.check_pkg(conf, 'libgnomecanvas-2.0',
 
284
                      uselib_store='GNOMECANVAS', atleast_version='2.30')
 
285
    autowaf.check_pkg(conf, 'libgnomecanvasmm-2.6',
 
286
                      uselib_store='GNOMECANVASMM', atleast_version='2.16')
 
287
    autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
 
288
    autowaf.check_pkg(conf, 'x11', uselib_store='X11', atleast_version='1.1', mandatory=False)
 
289
    autowaf.check_pkg(conf, 'fontconfig', uselib_store='FONTCONFIG')
 
290
 
 
291
    conf.write_config_header('gtk2ardour-config.h', remove=False)
 
292
 
 
293
    # Boost headers
 
294
    autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
 
295
    autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
 
296
 
 
297
# Add a waf `feature' to allow compilation of things using winegcc
 
298
from waflib.TaskGen import feature
 
299
@feature("wine")
 
300
def set_winegcc(self):
 
301
    self.env.LINK_CXX = self.env.LINK_CC = 'wineg++'
 
302
    self.env.CC = 'winegcc'
 
303
 
 
304
def _doPyp(infileName, deps = False):
 
305
    outStr = ''
 
306
    out = []
 
307
    re_spaces = re.compile("\s+")
 
308
 
 
309
    if infileName == '-':
 
310
        fd = sys.stdin
 
311
    else:
 
312
        fd = open(infileName)
 
313
    inLines = fd.readlines()
 
314
    if fd != sys.stdin:
 
315
        fd.close()
 
316
        
 
317
 
 
318
    for line in inLines:
 
319
        bits = re_spaces.split(line)
 
320
        if bits[0] == '##include':
 
321
            incName = bits[1]
 
322
            if (deps):
 
323
                out += [ incName ]
 
324
            else:
 
325
                # assume included file comes from same place as source file
 
326
                incName = os.path.join (os.path.dirname (infileName), incName);
 
327
                outStr += _doPyp(incName)
 
328
        else:
 
329
            if not deps:
 
330
                outStr += line
 
331
 
 
332
    # done
 
333
    if deps:
 
334
        return out
 
335
    else:
 
336
        return outStr
 
337
 
 
338
def include_processor(task):
 
339
    infileName = task.inputs[0].srcpath()
 
340
    outfileName = os.path.join(out, task.outputs[0].bldpath())
 
341
    fdOut = open (outfileName, "w")
 
342
    fdOut.write (_doPyp(infileName))
 
343
    fdOut.close ()
 
344
 
 
345
 
 
346
def build_color_scheme(path, prefix):
 
347
    f = open (path, 'r')
 
348
    color_scheme = ''
 
349
    for line in f:
 
350
        if re.search ('^#@color', line):
 
351
            line.strip() # remove newline
 
352
            words = line.split()
 
353
            if len(color_scheme):
 
354
                color_scheme += ';'
 
355
            color_scheme += prefix
 
356
            color_scheme += '_'
 
357
            color_scheme += words[1]
 
358
            color_scheme += ':'
 
359
            color_scheme += words[2]
 
360
    f.close()
 
361
    return color_scheme
 
362
 
 
363
def build(bld):
 
364
 
 
365
    VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR'])
 
366
 
 
367
    if bld.is_defined('WINDOWS_VST_SUPPORT'):
 
368
        # If we require VST support we build a stub main() and the FST library
 
369
        # here using winegcc, and link it to the GTK front-end library
 
370
        obj = bld(features = 'cxx c cxxprogram wine')
 
371
        obj.source = '''
 
372
                ../libs/fst/fst.c
 
373
                ../libs/fst/fstinfofile.c
 
374
                ../libs/fst/vsti.c
 
375
                ../libs/fst/vstwin.c
 
376
                ../vst/winmain.c
 
377
        '''
 
378
        obj.uselib = 'ALSA'
 
379
        obj.use          = [ 'libpbd',
 
380
                             'libmidipp',
 
381
                             'libtaglib',
 
382
                             'libardour',
 
383
                             'libardour_cp',
 
384
                             'libgtk2_ardour',
 
385
                             'libgtkmm2ext',
 
386
                             'libtaglib']
 
387
        obj.target = 'ardour-' + bld.env['VERSION'] + '-vst.exe.so'
 
388
        obj.includes  = [ '../libs/fst', '.' ]
 
389
        obj.linkflags = ['-mwindows', '-Wl,--export-dynamic']
 
390
        obj.defines = ['_POSIX_SOURCE', 'USE_WS_PREFIX']
 
391
        obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
 
392
        # end of the wine executable
 
393
 
 
394
        # now the shared library containing the GTK GUI for ardour
 
395
        obj = bld (features = 'cxx c cxxshlib')
 
396
        obj.source    = gtk2_ardour_sources
 
397
        obj.includes  = [ '../libs/fst', '.' ]
 
398
        obj.name      = 'libgtk2_ardour'
 
399
        obj.target    = 'gtk2_ardour'
 
400
    else:
 
401
        # just the normal executable version of the GTK GUI
 
402
        obj = bld(features = 'cxx c cxxprogram')
 
403
        obj.source    = gtk2_ardour_sources
 
404
        obj.target = 'ardour-' + bld.env['VERSION']
 
405
        obj.includes = ['.']
 
406
 
 
407
    # continue with setup of obj, which could be a shared library
 
408
    # or an executable.
 
409
 
 
410
    obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
 
411
 
 
412
    obj.uselib       = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG ALSA CURL DL'
 
413
    obj.uselib       += ' GTKMM GNOMECANVASMM GNOMECANVAS '
 
414
    obj.uselib       += ' AUDIOUNITS OSX GTKOSX LO '
 
415
    obj.use          = [ 'libpbd',
 
416
                         'libmidipp',
 
417
                         'libtaglib',
 
418
                         'ardour',
 
419
                         'libardour_cp',
 
420
                         'libgtkmm2ext',
 
421
                         'libtaglib' ]
 
422
    if sys.platform == 'darwin':
 
423
        obj.use += ' libappleutility'
 
424
    obj.defines     = [
 
425
        'PACKAGE="' + I18N_PACKAGE + '"',
 
426
        'VERSIONSTRING="' + bld.env['VERSION'] + '"',
 
427
        'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
 
428
        'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
 
429
        'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
 
430
        'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"'
 
431
        ]
 
432
    obj.includes += ['../libs']
 
433
 
 
434
    if bld.is_defined('HAVE_SUIL'):
 
435
        obj.source += [ 'lv2_plugin_ui.cc' ]
 
436
        obj.use += [ 'SUIL' ]
 
437
 
 
438
    if bld.is_defined('NEED_INTL'):
 
439
        obj.linkflags = ' -lintl'
 
440
 
 
441
    if bld.is_defined('WINDOWS_VST_SUPPORT'):
 
442
        obj.source += [ 'windows_vst_plugin_ui.cc' ]
 
443
        obj.defines += [ 'WINDOWS_VST_SUPPORT' ]
 
444
        obj.use += [ 'X11' ]
 
445
        
 
446
    if bld.is_defined('LXVST_SUPPORT'):
 
447
        obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
 
448
        obj.defines += [ 'LXVST_SUPPORT' ]
 
449
        obj.use += [ 'X11' ]
 
450
 
 
451
    if bld.is_defined('WINDOWS_VST_SUPPORT') or bld.is_defined('LXVST_SUPPORT'):
 
452
        obj.source += [ 'vst_plugin_ui.cc' ]
 
453
        
 
454
    if bld.is_defined('PHONE_HOME'):
 
455
        obj.defines += [ 'PHONE_HOME' ]
 
456
 
 
457
    if bld.is_defined('HAVE_COREAUDIO'):
 
458
        TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
 
459
        obj.source += [ 'cocoacarbon.mm' ]
 
460
        obj.use += ' libappleutility '
 
461
 
 
462
    if bld.is_defined('AUDIOUNIT_SUPPORT'):
 
463
        obj.source += [ 'au_pluginui.mm' ]
 
464
 
 
465
    # Wrappers
 
466
 
 
467
    wrapper_subst_dict = {
 
468
            'INSTALL_PREFIX' : bld.env['PREFIX'],
 
469
            'LIBDIR'         : os.path.normpath(bld.env['LIBDIR']),
 
470
            'DATADIR'        : os.path.normpath(bld.env['DATADIR']),
 
471
            'SYSCONFDIR'     : os.path.normpath(bld.env['SYSCONFDIR']),
 
472
            'LIBS'           : 'build/libs',
 
473
            'VERSION'        : bld.env['VERSION'],
 
474
            'EXECUTABLE'     : 'build/gtk2_ardour/ardour-' + bld.env['VERSION']
 
475
    }
 
476
 
 
477
    def set_subst_dict(obj, dict):
 
478
        for i in dict:
 
479
            setattr(obj, i, dict[i])
 
480
 
 
481
    obj              = bld(features = 'subst', rule= 'chmod 0755 ${TGT}')
 
482
    obj.source       = 'ardev_common.sh.in'
 
483
    obj.target       = 'ardev_common_waf.sh'
 
484
    obj.chmod        = Utils.O755
 
485
    obj.dict         = wrapper_subst_dict
 
486
    set_subst_dict(obj, wrapper_subst_dict)
 
487
 
 
488
    obj              = bld(features = 'subst')
 
489
    obj.source       = 'ardour.sh.in'
 
490
    obj.target       = 'ardour3'
 
491
    obj.chmod        = Utils.O755
 
492
    obj.dict         = wrapper_subst_dict
 
493
    obj.install_path = bld.env['BINDIR']
 
494
    set_subst_dict(obj, wrapper_subst_dict)
 
495
 
 
496
    if bld.is_defined('WINDOWS_VST_SUPPORT'):
 
497
        obj              = bld(features = 'subst')
 
498
        obj.source       = '../vst/ardourvst.in'
 
499
        obj.target       = 'ardourvst3'
 
500
        obj.chmod        = Utils.O755
 
501
        obj.dict         = wrapper_subst_dict
 
502
        obj.install_path = bld.env['BINDIR']
 
503
        set_subst_dict(obj, wrapper_subst_dict)
 
504
 
 
505
    # Font configuration
 
506
 
 
507
    dark_rc_subst_dict = {}
 
508
    light_rc_subst_dict = {}
 
509
    font_sizes      = {}
 
510
    base_font       = ""
 
511
 
 
512
    # Set up font sizes
 
513
    if bld.is_defined('GTKOSX'): # OS X fonts
 
514
        basefont = ""
 
515
        font_sizes = {
 
516
                'SMALLER' : '9',
 
517
                'SMALL' : '10',
 
518
                'NORMAL' : '11',
 
519
                'BIGGER' : '17',
 
520
                'LARGE' : '18',
 
521
                'LARGER' : '28',
 
522
                'HUGER' : '36',
 
523
                'MASSIVE' : '60',
 
524
        }
 
525
        
 
526
        # There is no acceptable monospace font available on older versions of OS X
 
527
        # and no API on those versions to load TTF files that will work with 
 
528
        # GTK/fontconfig/pango.
 
529
        #
 
530
        # In addition, the ArdourMono font gets clipped for some reason on OS X
 
531
        #
 
532
        # Moreover, Lucida Grande just seems to work even though it is not monospace
 
533
        # so just use it.
 
534
        #
 
535
        font_names = {
 
536
            'MONOSPACE' : 'Lucida Grande',
 
537
        }
 
538
    else: # Linux/X11 fonts
 
539
        basefont = '' # unspecified - use system defaults
 
540
        font_sizes = {
 
541
                'SMALLER' : '8',
 
542
                'SMALL' : '9',
 
543
                'NORMAL' : '10',
 
544
                'BIGGER' : '17',
 
545
                'LARGE' : '18',
 
546
                'LARGER' : '24',
 
547
                'HUGER' : '34',
 
548
                'MASSIVE' : '60',
 
549
        }
 
550
        font_names = {
 
551
                'MONOSPACE' : 'ArdourMono',
 
552
        }
 
553
 
 
554
    # Set up font substitution dictionary
 
555
    # @FONT_XXXX@
 
556
    for style in ['', 'BOLD', 'ITALIC']:
 
557
        for sizename,points in iter(font_sizes.items()):
 
558
            if (len (style)):
 
559
                key = "_".join (['FONT',style,sizename])
 
560
                fontstyle = " ".join ([basefont,style.lower(),points])
 
561
            else:
 
562
                key = "_".join (['FONT',sizename])
 
563
                fontstyle = " ".join ([basefont,points])
 
564
 
 
565
            dark_rc_subst_dict[key] = fontstyle
 
566
            light_rc_subst_dict[key] = fontstyle
 
567
 
 
568
    # @FONT_SIZE_XXXX@
 
569
    for sizename,points in iter(font_sizes.items()):
 
570
            key = "_".join (['FONT_SIZE',sizename])
 
571
            dark_rc_subst_dict[key] = points
 
572
            light_rc_subst_dict[key] = points
 
573
 
 
574
    # various font names, eg @BOLD_MONOSPACE@
 
575
    for font_sym,text in iter(font_names.items()):
 
576
        key = font_sym
 
577
        dark_rc_subst_dict[key] = text
 
578
        light_rc_subst_dict[key] = text
 
579
 
 
580
    # RC files
 
581
    dark_rc_subst_dict['COLOR_SCHEME'] = build_color_scheme(
 
582
        'gtk2_ardour/ardour3_ui_dark.rc.in', 'ARDOUR_DARK')
 
583
    dark_rc_subst_dict['COLPREFIX'] = 'ARDOUR_DARK'
 
584
    light_rc_subst_dict['COLOR_SCHEME'] = build_color_scheme(
 
585
        'gtk2_ardour/ardour3_ui_light.rc.in', 'ARDOUR_LIGHT')
 
586
    light_rc_subst_dict['COLPREFIX'] = 'ARDOUR_LIGHT'
 
587
 
 
588
    obj              = bld(features = 'subst')
 
589
    obj.source       = [ 'ardour3_ui_dark.rc.in' ]
 
590
    obj.target       = 'ardour3_ui_dark.rc.pre'
 
591
    obj.install_path = None
 
592
    set_subst_dict(obj, dark_rc_subst_dict)
 
593
 
 
594
    obj              = bld(features = 'subst')
 
595
    obj.source       = [ 'ardour3_ui_light.rc.in' ]
 
596
    obj.target       = 'ardour3_ui_light.rc.pre'
 
597
    obj.install_path = None
 
598
    set_subst_dict(obj, light_rc_subst_dict)
 
599
 
 
600
    obj              = bld(features = 'subst')
 
601
    obj.source       = [ 'ardour3_styles.rc.in' ]
 
602
    obj.target       = 'ardour3_dark_styles.rc'
 
603
    obj.install_path = None
 
604
    set_subst_dict(obj, dark_rc_subst_dict)
 
605
 
 
606
    obj              = bld(features = 'subst')
 
607
    obj.source       = [ 'ardour3_styles.rc.in' ]
 
608
    obj.target       = 'ardour3_light_styles.rc'
 
609
    obj.install_path = None
 
610
    set_subst_dict(obj, light_rc_subst_dict)
 
611
 
 
612
    obj              = bld(features = 'subst')
 
613
    obj.source       = [ 'ardour3_fonts.rc.in' ]
 
614
    obj.target       = 'ardour3_dark_fonts.rc'
 
615
    obj.install_path = None
 
616
    set_subst_dict(obj, dark_rc_subst_dict)
 
617
 
 
618
    obj              = bld(features = 'subst')
 
619
    obj.source       = [ 'ardour3_fonts.rc.in' ]
 
620
    obj.target       = 'ardour3_light_fonts.rc'
 
621
    obj.install_path = None
 
622
    set_subst_dict(obj, light_rc_subst_dict)
 
623
 
 
624
    obj              = bld(rule = 'cp ${SRC} ${TGT}')
 
625
    obj.source       = [ 'ardour3_widget_list.rc' ]
 
626
    obj.target       = 'ardour3_widgets.rc'
 
627
    obj.install_path = None
 
628
 
 
629
    obj = bld (rule = include_processor)
 
630
    obj.source = [ 'ardour3_ui_dark.rc.pre' ]
 
631
    # find and add all ##include dependencies as sources
 
632
    obj.source += _doPyp (bld.path.find_resource ('ardour3_ui_dark.rc.in').srcpath(), True)
 
633
    obj.target = 'ardour3_ui_dark.rc'
 
634
    obj.install_path = '${SYSCONFDIR}/ardour3'
 
635
 
 
636
    obj = bld (rule = include_processor)
 
637
    obj.source = [ 'ardour3_ui_light.rc.pre' ]
 
638
    # find and add all ##include dependencies as sources
 
639
    obj.source += _doPyp (bld.path.find_resource ('ardour3_ui_light.rc.in').srcpath(), True)
 
640
    obj.target = 'ardour3_ui_light.rc'
 
641
    obj.install_path = '${SYSCONFDIR}/ardour3'
 
642
 
 
643
    # Menus
 
644
    menus_argv = []
 
645
    if bld.is_defined('GTKOSX'):
 
646
        menus_argv = [ '-E', '-P', '-DGTKOSX', '-DNOVIDEOTIMELINE' ]
 
647
    else:
 
648
        menus_argv = [ '-E', '-P' ]
 
649
 
 
650
    obj = bld(features = 'command-output')
 
651
    obj.command = 'cpp'
 
652
    obj.command_is_external = True
 
653
    obj.no_inputs = True
 
654
    obj.argv = menus_argv
 
655
    obj.stdin = 'ardour.menus.in'
 
656
    obj.stdout = 'ardour.menus'
 
657
    obj.dep_vars = ['GTKOSX']
 
658
    bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'),
 
659
                      'ardour.menus')
 
660
 
 
661
    # Keybindings
 
662
 
 
663
    # 'SAE-de-keypad', 'SAE-de-nokeypad', 'SAE-us-keypad',
 
664
    # 'SAE-us-nokeypad', 'ergonomic-us'
 
665
 
 
666
    for b in [ 'mnemonic-us' ] :
 
667
        obj = bld(
 
668
            target = b + '.bindings',
 
669
            source = b + '.bindings.in',
 
670
            rule = '../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap <${SRC} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] )
 
671
            )
 
672
        obj.install_path = os.path.join(bld.env['SYSCONFDIR'], 'ardour3')
 
673
 
 
674
    # not modified at present
 
675
    bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'),
 
676
                      'step_editing.bindings')
 
677
    bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'),
 
678
                      'mixer.bindings')
 
679
 
 
680
    # Icons/Images
 
681
    bld.install_files('${DATADIR}/ardour3/icons', bld.path.ant_glob('icons/*.png'))
 
682
    bld.install_files('${DATADIR}/ardour3/pixmaps', bld.path.ant_glob('pixmaps/*.xpm'))
 
683
    bld.install_files('${DATADIR}/ardour3', 'splash.png')
 
684
    bld.install_files('${DATADIR}/ardour3', 'ArdourMono.ttf')
 
685
 
 
686
    # Default UI configuration
 
687
    bld.install_files('${SYSCONFDIR}/ardour3', 'ardour3_ui_default.conf')
 
688
 
 
689
    # Default export stuff
 
690
    bld.install_files('${SYSCONFDIR}/ardour3/export', bld.path.ant_glob('export/*.format'))
 
691
 
 
692
    # i18n
 
693
    if bld.is_defined('ENABLE_NLS'):
 
694
        mo_files = bld.path.ant_glob('po/*.mo')
 
695
        for mo in mo_files:
 
696
            lang = os.path.basename(mo.srcpath()).replace('.mo', '')
 
697
            bld.install_as(os.path.join(bld.env['PREFIX'], 'share', 'locale',
 
698
                                        lang, 'LC_MESSAGES', I18N_PACKAGE + '.mo'),
 
699
                           mo)
 
700
 
 
701
def i18n(bld):
 
702
    autowaf.build_i18n(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
 
703
                       'Paul Davis')
 
704
 
 
705
def i18n_pot(bld):
 
706
    autowaf.build_i18n_pot(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
 
707
                       'Paul Davis')
 
708
 
 
709
def i18n_po(bld):
 
710
    autowaf.build_i18n_po(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
 
711
                       'Paul Davis')
 
712
 
 
713
def i18n_mo(bld):
 
714
    autowaf.build_i18n_mo(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
 
715
                       'Paul Davis')