13
0
livetrax/gtk2_ardour/wscript
David Robillard 214a31bb98 Fix various MIDI control and installation issues:
* Install ardour3_ui_default.conf to system config dir

 * Set -DDATA_DIR etc. defines to proper absolute paths

 * Set default MIDI control port name to "control"
   (it was "control" some places, "default" other, so the generic MIDI
   control surface didn't work.  The real problem here is probably that
   the name is hardcoded in the surface code, ick)

 * Install surfaces to correct system directory

 * Generate and install ardour_system.rc

User POV:

 * Installed versions not run from the source directory discover configuration
   files and surfaces, and generally work

 * Building and/or starting a fresh copy of ardour3 with no pre-existing
   configuration will run an ardour with a single MIDI "control" port, which
   you can plug a surface into and control MMC and controllers and such
   (after turning on the generic MIDI surface, which IMO should be loaded
    by default anyway, especially since it's no longer in a menu)


git-svn-id: svn://localhost/ardour2/branches/3.0@5833 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-20 23:43:19 +00:00

417 lines
11 KiB
Python

#!/usr/bin/env python
import autowaf
import os
import glob
import Options
import sys
import TaskGen
import re
from w18n import build_i18n
# Version of this package (even if built as a child)
MAJOR = '1'
MINOR = '0'
MICRO = '2'
GTK2_ARDOUR_VERSION = "%s.%s.%s" % (MAJOR, MINOR, MICRO)
# Variables for 'waf dist'
APPNAME = 'gtk2_ardour'
VERSION = GTK2_ARDOUR_VERSION
# Mandatory variables
srcdir = '.'
blddir = 'build'
path_prefix = 'gtk2_ardour/'
gtk2_ardour_sources = [
'about.cc',
'actions.cc',
'add_midi_cc_track_dialog.cc',
'add_route_dialog.cc',
'analysis_window.cc',
'ardour_dialog.cc',
'ardour_ui.cc',
'ardour_ui2.cc',
'ardour_ui_dependents.cc',
'ardour_ui_dialogs.cc',
'ardour_ui_ed.cc',
'ardour_ui_mixer.cc',
'ardour_ui_options.cc',
'audio_clock.cc',
'audio_region_editor.cc',
'audio_region_view.cc',
'audio_streamview.cc',
'audio_time_axis.cc',
'automation_controller.cc',
'automation_line.cc',
'automation_region_view.cc',
'automation_streamview.cc',
'automation_time_axis.cc',
'axis_view.cc',
'bundle_manager.cc',
'cairo_widget.cc',
'canvas-flag.cc',
'canvas-hit.cc',
'canvas-note-event.cc',
'canvas-note.cc',
'canvas-program-change.cc',
'canvas-simpleline.c',
'canvas-simplerect.c',
'canvas-sysex.cc',
'canvas-waveview.c',
'control_point.cc',
'control_point_dialog.cc',
'crossfade_edit.cc',
'crossfade_view.cc',
'curvetest.cc',
'diamond.cc',
'editing.cc',
'editor.cc',
'editor_actions.cc',
'editor_audio_import.cc',
'editor_audiotrack.cc',
'editor_canvas.cc',
'editor_canvas_events.cc',
'editor_component.cc',
'editor_cursors.cc',
'editor_drag.cc',
'editor_route_groups.cc',
'editor_export_audio.cc',
'editor_group_tabs.cc',
'editor_hscroller.cc',
'editor_keyboard.cc',
'editor_keys.cc',
'editor_markers.cc',
'editor_mixer.cc',
'editor_mouse.cc',
'editor_nudge.cc',
'editor_ops.cc',
'editor_regions.cc',
'editor_routes.cc',
'editor_rulers.cc',
'editor_scrub.cc',
'editor_selection.cc',
'editor_selection_list.cc',
'editor_snapshots.cc',
'editor_summary.cc',
'editor_tempodisplay.cc',
'editor_timefx.cc',
'engine_dialog.cc',
'enums.cc',
'export_channel_selector.cc',
'export_dialog.cc',
'export_file_notebook.cc',
'export_filename_selector.cc',
'export_format_dialog.cc',
'export_format_selector.cc',
'export_preset_selector.cc',
'export_timespan_selector.cc',
'fft.cc',
'fft_graph.cc',
'fft_result.cc',
'gain_meter.cc',
'generic_pluginui.cc',
'ghostregion.cc',
'global_port_matrix.cc',
'group_tabs.cc',
'gtk-custom-hruler.c',
'gtk-custom-ruler.c',
'io_selector.cc',
'keyboard.cc',
'keyeditor.cc',
'latency_gui.cc',
'level_meter.cc',
'lineset.cc',
'location_ui.cc',
'main.cc',
'marker.cc',
'midi_channel_selector.cc',
'midi_cut_buffer.cc',
'midi_list_editor.cc',
'midi_port_dialog.cc',
'midi_region_view.cc',
'midi_scroomer.cc',
'midi_streamview.cc',
'midi_time_axis.cc',
'mixer_group_tabs.cc',
'mixer_strip.cc',
'mixer_ui.cc',
'nag.cc',
'option_editor.cc',
'opts.cc',
'panner.cc',
'panner2d.cc',
'panner_ui.cc',
'piano_roll_header.cc',
'playlist_selector.cc',
'plugin_eq_gui.cc',
'plugin_selector.cc',
'plugin_ui.cc',
'port_group.cc',
'port_matrix.cc',
'port_matrix_body.cc',
'port_matrix_column_labels.cc',
'port_matrix_component.cc',
'port_matrix_grid.cc',
'port_matrix_labels.cc',
'port_matrix_row_labels.cc',
'processor_box.cc',
'prompter.cc',
'public_editor.cc',
'quantize_dialog.cc',
'rc_option_editor.cc',
'region_gain_line.cc',
'region_selection.cc',
'region_view.cc',
'return_ui.cc',
'rhythm_ferret.cc',
'route_group_dialog.cc',
'route_group_menu.cc',
'route_params_ui.cc',
'route_processor_selection.cc',
'route_time_axis.cc',
'route_ui.cc',
'selection.cc',
'send_ui.cc',
'session_import_dialog.cc',
'session_metadata_dialog.cc',
'session_option_editor.cc',
'sfdb_ui.cc',
'simpleline.cc',
'simplerect.cc',
'splash.cc',
'startup.cc',
'streamview.cc',
'strip_silence_dialog.cc',
'tape_region_view.cc',
'tempo_dialog.cc',
'tempo_lines.cc',
'theme_manager.cc',
'time_axis_view.cc',
'time_axis_view_item.cc',
'time_fx_dialog.cc',
'time_selection.cc',
'track_selection.cc',
'ui_config.cc',
'utils.cc',
'version.cc',
'waveview.cc',
]
def set_options(opt):
autowaf.set_options(opt)
def configure(conf):
autowaf.build_version_files(path_prefix+'version.h', path_prefix+'version.cc',
'gtk2_ardour', MAJOR, MINOR, MICRO)
autowaf.configure(conf)
conf.check_tool('compiler_cxx')
if re.search ("linux", sys.platform) != None:
autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
#
# TODO: Insert a sanity check for on OS X
# to ensure that CoreAudio is present....
# Really shouldn't these checks be in AutoWaf?
#
autowaf.check_pkg(conf, 'flac', uselib_store='FLAC', atleast_version='1.2.1')
autowaf.check_pkg(conf, 'gthread', uselib_store='GTHREAD', atleast_version='2.10.1')
autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK', atleast_version='2.12.1')
autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM', atleast_version='2.8')
autowaf.check_pkg(conf, 'libgnomecanvas-2.0', uselib_store='GNOMECANVAS', atleast_version='2.0')
autowaf.check_pkg(conf, 'libgnomecanvasmm-2.6', uselib_store='GNOMECANVASMM', atleast_version='2.12.0')
autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
conf.check_tool('misc') # subst tool
conf.write_config_header('gtk2ardour-config.h')
# Boost headers
autowaf.check_header(conf, 'boost/shared_ptr.hpp')
autowaf.check_header(conf, 'boost/weak_ptr.hpp')
def build(bld):
# Program
obj = bld.new_task_gen(features = 'cxx cc cprogram')
obj.includes = ['.']
obj.source = gtk2_ardour_sources
obj.name = 'gtk2_ardour'
obj.target = 'ardour-3.0'
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
obj.uselib = 'UUID FLAC GLIBMM GTHREAD GTK GNOMECANVAS OGG ALSA'
obj.uselib += ' GTKMM GNOMECANVASMM OSX GTKOSX COREAUDIO'
obj.uselib_local = '''libpbd libmidipp libtaglib libardour libardour_cp
libgtkmm2ext libtaglib'''
obj.cflags = ['-DPACKAGE="gtk2_ardour"']
obj.cxxflags = ['-DPACKAGE="gtk2_ardour"']
obj.cxxflags += ['-DVERSIONSTRING="' + GTK2_ARDOUR_VERSION + '"']
obj.cxxflags += ['-DDATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"']
obj.cxxflags += ['-DCONFIG_DIR="' + os.path.normpath(bld.env['CONFIGDIR']) + '"']
obj.cxxflags += ['-DMODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"']
obj.cxxflags += ['-DLOCALEDIR="' + os.path.join(
os.path.normpath(bld.env['DATADIR']), 'locale') + '"']
if bld.env['HAVE_SLV2']:
obj.source += [ 'lv2_plugin_ui.cc' ]
obj.uselib += ' SLV2 '
if bld.env['FREESOUND']:
obj.source += [ 'sfdb_freesound_mootcher.cc' ]
if bld.env['VST']:
obj.source += [ 'vst_pluginui.cc' ]
obj.cxxflags += [ '-DVST_SUPPORT' ]
if bld.env['GTKOSX']:
TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
obj.source += [ 'cocoacarbon.mm' ]
if bld.env['AUDIOUNITS']:
obj.source += [ 'au_pluginui.mm' ]
obj.uselib_local += ' libappleutility '
else:
obj.source += [ 'x11.cc' ]
# Wrappers
wrapper_subst_dict = {
'INSTALL_PREFIX' : bld.env['PREFIX'],
'LIBDIR' : os.path.normpath(bld.env['LIBDIRNAME']),
'LIBS' : 'build/default/libs',
'VERSION' : '3.0',
'EXECUTABLE' : 'build/default/gtk2_ardour/ardour-3.0'
}
obj = bld.new_task_gen('subst')
obj.source = 'ardev_common.sh.in'
obj.target = 'ardev_common_waf.sh'
obj.chmod = 0755
obj.dict = wrapper_subst_dict
obj = bld.new_task_gen('subst')
obj.source = 'ardour.sh.in'
obj.target = 'ardour3'
obj.chmod = 0755
obj.dict = wrapper_subst_dict
obj.install_path = bld.env['BINDIR']
# Font configuration
font_subst_dict = {}
font_sizes = {}
base_font = ""
# Set up font sizes
if bld.env['IS_OSX']: # OS X fonts
basefont = "Lucida Grande"
font_sizes = {
'TINY' : '7',
'SMALLER' : '9',
'SMALL' : '10',
'NORMAL' : '11',
'BIG' : '12',
'BIGGER' : '14',
'LARGE' : '18',
'LARGER' : '28',
'HUGER' : '36',
'MASSIVE' : '60'
}
else: # Linux/X11 fonts
basefont = "sans"
font_sizes = {
'TINY' : '6',
'SMALLER' : '8',
'SMALL' : '9',
'NORMAL' : '10',
'BIG' : '14',
'BIGGER' : '16',
'LARGE' : '18',
'LARGER' : '24',
'HUGER' : '34',
'MASSIVE' : '60'
}
# Set up font substitution dictionary
for style in ['', 'BOLD', 'ITALIC']:
for sizename,points in font_sizes.iteritems():
if (len (style)):
key = "_".join (['FONT',style,sizename])
fontstyle = " ".join ([basefont,style.lower(),points])
else:
key = "_".join (['FONT',sizename])
fontstyle = " ".join ([basefont,points])
font_subst_dict[key] = fontstyle
# RC files
obj = bld.new_task_gen('subst')
obj.source = 'ardour3_ui_dark.rc.in'
obj.target = 'ardour3_ui_dark.rc'
obj.dict = font_subst_dict
obj.install_path = os.path.join(bld.env['CONFIGDIR'], 'ardour3')
obj = bld.new_task_gen('subst')
obj.source = 'ardour3_ui_light.rc.in'
obj.target = 'ardour3_ui_light.rc'
obj.dict = font_subst_dict
obj.install_path = os.path.join(bld.env['CONFIGDIR'], 'ardour3')
obj = bld.new_task_gen('subst')
obj.source = 'ardour3_ui_dark_sae.rc.in'
obj.target = 'ardour3_ui_dark_sae.rc'
obj.dict = font_subst_dict
obj.install_path = os.path.join(bld.env['CONFIGDIR'], 'ardour3')
obj = bld.new_task_gen('subst')
obj.source = 'ardour3_ui_light_sae.rc.in'
obj.target = 'ardour3_ui_light_sae.rc'
obj.dict = font_subst_dict
obj.install_path = os.path.join(bld.env['CONFIGDIR'], 'ardour3')
# Menus
menus_argv = []
if bld.env['GTKOSX']:
menus_argv = [ '-E', '-P', '-DGTKOSX', '-DTOP_MENUBAR' ]
else:
menus_argv = [ '-E', '-P' ]
obj = bld.new_task_gen('command-output')
obj.command = 'cpp'
obj.command_is_external = True
obj.no_inputs = True
obj.argv = menus_argv
obj.stdin = 'ardour.menus.in'
obj.stdout = 'ardour.menus'
bld.install_files(os.path.join(bld.env['CONFIGDIR'], 'ardour3'), 'ardour.menus')
# Keybindings
# 'SAE-de-keypad', 'SAE-de-nokeypad', 'SAE-us-keypad', 'SAE-us-nokeypad', 'ergonomic-us'
for b in [ 'mnemonic-us' ] :
obj = bld.new_task_gen (
target = b + '.bindings',
source = b + '.bindings.in',
rule = '../tools/fmt-bindings --winkey=%s --accelmap <${SRC} >${TGT}' % bld.env['windows_key']
)
obj.install_path = os.path.join(bld.env['CONFIGDIR'], 'ardour3')
# Icons/Images
bld.install_files('${DATADIR}/ardour3/icons', 'icons/*.png')
bld.install_files('${DATADIR}/ardour3/pixmaps', 'pixmaps/*.xpm')
bld.install_files('${DATADIR}/ardour3', 'splash.png')
# Default UI configuration
bld.install_files('${CONFIGDIR}/ardour3', 'ardour3_ui_default.conf')
# i18n
if bld.env['ENABLE_NLS']:
mo_files = glob.glob (os.path.join (bld.get_curdir(), 'po/*.mo'))
for mo in mo_files:
lang = os.path.basename (mo).replace ('.mo', '')
bld.install_as (os.path.join (bld.env['PREFIX'], 'share', 'locale', lang, 'LC_MESSAGES', APPNAME + '.mo'), mo)
def i18n(bld):
build_i18n (bld, 'gtk2_ardour', APPNAME, gtk2_ardour_sources)