mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 07:45:00 +01:00
* 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
416 lines
11 KiB
Python
416 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)
|
|
|