X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fwscript;h=50d617290a311fcfa2f1f0e978491c0d15630028;hb=91c057494be9f97020211ee1855c2d1d190df95c;hp=9f0262f736e1075db492447f6ff037edc5207460;hpb=be1abb12ffcd8ded8638742e96ac60d754dac8f5;p=ardour.git diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 9f0262f736..50d617290a 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -1,11 +1,12 @@ #!/usr/bin/env python -import autowaf +from waflib.extras import autowaf as autowaf +from waflib import Options, TaskGen +import waflib.Logs as Logs, waflib.Utils as Utils import os -import glob -import Options import sys -import TaskGen import re +import time +from waflib.Task import Task # Version of this package (even if built as a child) MAJOR = '3' @@ -18,8 +19,8 @@ APPNAME = 'gtk2_ardour' VERSION = GTK2_ARDOUR_VERSION # Mandatory variables -srcdir = '.' -blddir = 'build' +top = '.' +out = 'build' path_prefix = 'gtk2_ardour/' @@ -30,6 +31,7 @@ gtk2_ardour_sources = [ 'add_route_dialog.cc', 'ambiguous_file_dialog.cc', 'analysis_window.cc', + 'ardour_button.cc', 'ardour_dialog.cc', 'ardour_ui.cc', 'ardour_ui2.cc', @@ -38,6 +40,7 @@ gtk2_ardour_sources = [ 'ardour_ui_ed.cc', 'ardour_ui_mixer.cc', 'ardour_ui_options.cc', + 'ardour_window.cc', 'audio_clock.cc', 'audio_region_editor.cc', 'audio_region_view.cc', @@ -120,6 +123,7 @@ gtk2_ardour_sources = [ 'gtk-custom-hruler.c', 'gtk-custom-ruler.c', 'gtk_pianokeyboard.c', + 'gui_object.cc', 'insert_time_dialog.cc', 'interthread_progress_window.cc', 'io_selector.cc', @@ -133,6 +137,7 @@ gtk2_ardour_sources = [ 'main.cc', 'marker.cc', 'midi_automation_line.cc', + 'midi_channel_dialog.cc', 'midi_channel_selector.cc', 'midi_cut_buffer.cc', 'midi_list_editor.cc', @@ -144,6 +149,7 @@ gtk2_ardour_sources = [ 'midi_tracer.cc', 'missing_file_dialog.cc', 'missing_plugin_dialog.cc', + 'mixer_actor.cc', 'mixer_group_tabs.cc', 'mixer_strip.cc', 'mixer_ui.cc', @@ -226,21 +232,23 @@ gtk2_ardour_sources = [ 'utils.cc', 'verbose_cursor.cc', 'version.cc', + 'visibility_group.cc', 'volume_controller.cc', 'waveview.cc', 'window_proxy.cc' ] -def set_options(opt): +def options(opt): autowaf.set_options(opt) def configure(conf): + conf.load('misc') + conf.load('compiler_cxx') 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') @@ -249,31 +257,74 @@ def configure(conf): autowaf.check_pkg(conf, 'flac', uselib_store='FLAC', atleast_version='1.2.1') - autowaf.check_pkg(conf, 'gthread', uselib_store='GTHREAD', + autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD', atleast_version='2.10.1') autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK', atleast_version='2.18') autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM', atleast_version='2.18') + autowaf.check_pkg(conf, 'libgnomecanvas-2.0', + uselib_store='GNOMECANVAS', atleast_version='2.30') autowaf.check_pkg(conf, 'libgnomecanvasmm-2.6', uselib_store='GNOMECANVASMM', atleast_version='2.16') autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2') + autowaf.check_pkg(conf, 'x11', uselib_store='X11', atleast_version='1.3', mandatory=False) - conf.check_tool('misc') # subst tool - - conf.write_config_header('gtk2ardour-config.h') + conf.write_config_header('gtk2ardour-config.h', remove=False) # Boost headers - autowaf.check_header(conf, 'boost/shared_ptr.hpp') - autowaf.check_header(conf, 'boost/weak_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp') + autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp') # Add a waf `feature' to allow compilation of things using winegcc -from TaskGen import feature +from waflib.TaskGen import feature @feature("wine") def set_winegcc(self): self.env.LINK_CXX = self.env.LINK_CC = 'wineg++' self.env.CC = 'winegcc' +def _doPyp(infileName, deps = False): + outStr = '' + out = [] + re_spaces = re.compile("\s+") + + if infileName == '-': + fd = sys.stdin + else: + fd = open(infileName) + inLines = fd.readlines() + if fd != sys.stdin: + fd.close() + + + for line in inLines: + bits = re_spaces.split(line) + if bits[0] == '##include': + incName = bits[1] + if (deps): + out += [ incName ] + else: + # assume included file comes from same place as source file + incName = os.path.join (os.path.dirname (infileName), incName); + outStr += _doPyp(incName) + else: + if not deps: + outStr += line + + # done + if deps: + return out + else: + return outStr + +def include_processor(task): + infileName = task.inputs[0].srcpath() + outfileName = os.path.join(out, task.outputs[0].bldpath()) + fdOut = open (outfileName, "w") + fdOut.write (_doPyp(infileName)) + fdOut.close () + + def build_color_scheme(path, prefix): f = open (path, 'r') color_scheme = '' @@ -291,36 +342,41 @@ def build_color_scheme(path, prefix): f.close() return color_scheme - def build(bld): # GTK front-end; if we're using VST we build this as a shared library, # otherwise it's a normal executabale - if bld.env['VST_SUPPORT']: - obj = bld.new_task_gen(features = 'cxx cc cshlib') + if bld.is_defined('VST_SUPPORT'): + obj = bld(features = 'cxx c cxxshlib') else: - obj = bld.new_task_gen(features = 'cxx cc cprogram') + obj = bld(features = 'cxx c cxxprogram') obj.includes = ['.'] obj.source = gtk2_ardour_sources obj.name = 'gtk2_ardour' - if bld.env['VST_SUPPORT']: + obj.linkflags = [] + if bld.is_defined('VST_SUPPORT'): obj.target = 'gtk2_ardour' obj.includes += ['../libs/fst'] else: obj.target = 'ardour-3.0' obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') obj.uselib = 'UUID FLAC GLIBMM GTHREAD GTK OGG ALSA CURL DL' - obj.uselib += ' GTKMM GNOMECANVASMM ' + obj.uselib += ' GTKMM GNOMECANVASMM GNOMECANVAS ' obj.uselib += ' AUDIOUNITS OSX GTKOSX ' - obj.uselib_local = '''libpbd libmidipp libtaglib libardour libardour_cp - libgtkmm2ext libtaglib libgnomecanvas-2''' + obj.use = [ 'libpbd', + 'libmidipp', + 'libtaglib', + 'libardour', + 'libardour_cp', + 'libgtkmm2ext', + 'libtaglib' ] if sys.platform == 'darwin': - obj.uselib_local + ' libappleutility' + obj.use += ' libappleutility' obj.defines = [ - 'PACKAGE="gtk2_ardour"', + 'PACKAGE="gtk2_ardour3"', 'VERSIONSTRING="' + bld.env['VERSION'] + '"', 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"', - 'CONFIG_DIR="' + os.path.normpath(bld.env['CONFIGDIR']) + '"', + 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"', 'MODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"', 'LOCALEDIR="' + os.path.join(os.path.normpath(bld.env['DATADIR']), 'locale') + '"', @@ -328,32 +384,36 @@ def build(bld): ] obj.includes += ['../libs'] - if bld.env['HAVE_SUIL']: + if bld.is_defined('HAVE_SUIL'): obj.source += [ 'lv2_plugin_ui.cc' ] obj.uselib += ' SUIL ' - elif bld.env['HAVE_SLV2']: - obj.source += [ 'lv2_plugin_ui.cc' ] - obj.uselib += ' SLV2 ' - if bld.env['FREESOUND']: + if bld.is_defined('FREESOUND'): obj.source += [ 'sfdb_freesound_mootcher.cc' ] + obj.defines += [ 'FREESOUND' ] - if bld.env['VST_SUPPORT']: + if bld.is_defined('VST_SUPPORT'): obj.source += [ 'vst_pluginui.cc' ] obj.defines += [ 'VST_SUPPORT' ] - - if bld.env['PHONE_HOME']: + obj.uselib += ' X11 ' + + if bld.is_defined('LXVST_SUPPORT'): + obj.source += [ 'vstfxwin.cc', 'lxvst_pluginui.cc' ] + obj.defines += [ 'LXVST_SUPPORT' ] + obj.uselib += ' X11 ' + + if bld.is_defined('PHONE_HOME'): obj.defines += [ 'PHONE_HOME' ] - if bld.env['COREAUDIO']: + if bld.is_defined('HAVE_COREAUDIO'): TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc'] obj.source += [ 'cocoacarbon.mm', 'au_pluginui.mm' ] - obj.uselib_local += ' libappleutility ' + obj.use += ' libappleutility ' - if bld.env['VST_SUPPORT']: + if bld.is_defined('VST_SUPPORT'): # If we require VST support we build a stub main() and the FST library # here using winegcc, and link it to the GTK front-end library - obj = bld.new_task_gen (features = 'cxx cc cprogram wine') + obj = bld(features = 'cxx c cxxprogram wine') obj.source = ''' ../libs/fst/fst.c ../libs/fst/fstinfofile.c @@ -363,10 +423,10 @@ def build(bld): ''' obj.includes = '../libs/fst' obj.target = 'ardour-3.0-vst' - obj.linkflags = ['-mwindows', '-Wl,--export-dynamic', '-lpthread'] + obj.linkflags += ['-mwindows', '-Wl,--export-dynamic', '-lpthread'] obj.defines = ['_POSIX_SOURCE', 'USE_WS_PREFIX'] obj.uselib = 'ALSA' - obj.uselib_local = ['libpbd','libmidipp','libtaglib','libardour', + obj.use = ['libpbd','libmidipp','libtaglib','libardour', 'libardour_cp','libgtkmm2ext','libtaglib', 'gtk2_ardour'] @@ -374,24 +434,30 @@ def build(bld): wrapper_subst_dict = { 'INSTALL_PREFIX' : bld.env['PREFIX'], - 'LIBDIR' : os.path.normpath(bld.env['LIBDIRNAME']), - 'LIBS' : 'build/default/libs', + 'LIBDIR' : os.path.normpath(bld.env['LIBDIR']), + 'LIBS' : 'build/libs', 'VERSION' : '3.0', - 'EXECUTABLE' : 'build/default/gtk2_ardour/ardour-3.0' + 'EXECUTABLE' : 'build/gtk2_ardour/ardour-3.0' } - obj = bld.new_task_gen('subst') + def set_subst_dict(obj, dict): + for i in dict: + setattr(obj, i, dict[i]) + + obj = bld(features = 'subst', rule= 'chmod 0755 ${TGT}') obj.source = 'ardev_common.sh.in' obj.target = 'ardev_common_waf.sh' - obj.chmod = 0755 + obj.chmod = Utils.O755 obj.dict = wrapper_subst_dict + set_subst_dict(obj, wrapper_subst_dict) - obj = bld.new_task_gen('subst') + obj = bld(features = 'subst') obj.source = 'ardour.sh.in' obj.target = 'ardour3' - obj.chmod = 0755 + obj.chmod = Utils.O755 obj.dict = wrapper_subst_dict obj.install_path = bld.env['BINDIR'] + set_subst_dict(obj, wrapper_subst_dict) # Font configuration @@ -401,7 +467,7 @@ def build(bld): base_font = "" # Set up font sizes - if bld.env['IS_OSX']: # OS X fonts + if bld.is_defined('GTKOSX'): # OS X fonts basefont = "Lucida Grande" font_sizes = { 'TINY' : '7', @@ -458,32 +524,75 @@ def build(bld): 'gtk2_ardour/ardour3_ui_light.rc.in', 'ARDOUR_LIGHT') light_rc_subst_dict['COLPREFIX'] = 'ARDOUR_LIGHT' - obj = bld.new_task_gen('subst') - obj.source = 'ardour3_ui_dark.rc.in' - obj.target = 'ardour3_ui_dark.rc' - obj.dict = dark_rc_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 = light_rc_subst_dict - obj.install_path = os.path.join(bld.env['CONFIGDIR'], 'ardour3') + obj = bld(features = 'subst') + obj.source = [ 'ardour3_ui_dark.rc.in' ] + obj.target = 'ardour3_ui_dark.rc.pre' + obj.install_path = None + set_subst_dict(obj, dark_rc_subst_dict) + + obj = bld(features = 'subst') + obj.source = [ 'ardour3_ui_light.rc.in' ] + obj.target = 'ardour3_ui_light.rc.pre' + obj.install_path = None + set_subst_dict(obj, light_rc_subst_dict) + + obj = bld(features = 'subst') + obj.source = [ 'ardour3_styles.rc.in' ] + obj.target = 'ardour3_dark_styles.rc' + obj.install_path = None + set_subst_dict(obj, dark_rc_subst_dict) + + obj = bld(features = 'subst') + obj.source = [ 'ardour3_styles.rc.in' ] + obj.target = 'ardour3_light_styles.rc' + obj.install_path = None + set_subst_dict(obj, light_rc_subst_dict) + + obj = bld(features = 'subst') + obj.source = [ 'ardour3_fonts.rc.in' ] + obj.target = 'ardour3_dark_fonts.rc' + obj.install_path = None + set_subst_dict(obj, dark_rc_subst_dict) + + obj = bld(features = 'subst') + obj.source = [ 'ardour3_fonts.rc.in' ] + obj.target = 'ardour3_light_fonts.rc' + obj.install_path = None + set_subst_dict(obj, light_rc_subst_dict) + + obj = bld(rule = 'cp ${SRC} ${TGT}') + obj.source = [ 'ardour3_widget_list.rc' ] + obj.target = 'ardour3_widgets.rc' + obj.install_path = None + + obj = bld (rule = include_processor) + obj.source = [ 'ardour3_ui_dark.rc.pre' ] + # find and add all ##include dependencies as sources + obj.source += _doPyp (bld.path.find_resource ('ardour3_ui_dark.rc.in').srcpath(), True) + obj.target = 'ardour3_ui_dark.rc' + obj.install_path = '${SYSCONFDIR}/ardour3' + + obj = bld (rule = include_processor) + obj.source = [ 'ardour3_ui_light.rc.pre' ] + # find and add all ##include dependencies as sources + obj.source += _doPyp (bld.path.find_resource ('ardour3_ui_light.rc.in').srcpath(), True) + obj.target = 'ardour3_ui_light.rc' + obj.install_path = '${SYSCONFDIR}/ardour3' # Menus menus_argv = [] - if bld.env['GTKOSX']: + if bld.is_defined('GTKOSX'): menus_argv = [ '-E', '-P', '-DGTKOSX' ] else: menus_argv = [ '-E', '-P' ] - obj = bld.new_task_gen('command-output') + obj = bld(features = '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'), + bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'), 'ardour.menus') # Keybindings @@ -492,36 +601,41 @@ def build(bld): # 'SAE-us-nokeypad', 'ergonomic-us' for b in [ 'mnemonic-us' ] : - obj = bld.new_task_gen ( + obj = bld( target = b + '.bindings', source = b + '.bindings.in', - rule = '../tools/fmt-bindings --winkey="%s" --accelmap <${SRC} >${TGT}' % bld.env['WINDOWS_KEY'] + rule = '../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap <${SRC} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] ) ) - obj.install_path = os.path.join(bld.env['CONFIGDIR'], 'ardour3') + obj.install_path = os.path.join(bld.env['SYSCONFDIR'], 'ardour3') # not modified at present - bld.install_files(os.path.join(bld.env['CONFIGDIR'], 'ardour3'), + bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'), 'step_editing.bindings') + bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'), + 'mixer.bindings') # Icons/Images - bld.install_files('${DATADIR}/ardour3/icons', 'icons/*.png') - bld.install_files('${DATADIR}/ardour3/pixmaps', 'pixmaps/*.xpm') + bld.install_files('${DATADIR}/ardour3/icons', bld.path.ant_glob('icons/*.png')) + bld.install_files('${DATADIR}/ardour3/pixmaps', bld.path.ant_glob('pixmaps/*.xpm')) bld.install_files('${DATADIR}/ardour3', 'splash.png') # Default UI configuration - bld.install_files('${CONFIGDIR}/ardour3', 'ardour3_ui_default.conf') + bld.install_files('${SYSCONFDIR}/ardour3', 'ardour3_ui_default.conf') + # Generic widget style mappings + bld.install_files('${SYSCONFDIR}/ardour3', 'ardour3_widgets.rc') # Default export stuff - bld.install_files('${CONFIGDIR}/ardour3/export', 'export/*.format') + bld.install_files('${SYSCONFDIR}/ardour3/export', bld.path.ant_glob('export/*.format')) # i18n - if bld.env['ENABLE_NLS']: - mo_files = glob.glob (os.path.join (bld.get_curdir(), 'po/*.mo')) + if bld.is_defined('ENABLE_NLS'): + mo_files = bld.path.ant_glob('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) + lang = os.path.basename(mo.srcpath()).replace('.mo', '') + bld.install_as(os.path.join(bld.env['PREFIX'], 'share', 'locale', + lang, 'LC_MESSAGES', APPNAME + '.mo'), + mo) def i18n(bld): - autowaf.build_i18n(bld, srcdir, 'gtk2_ardour', APPNAME, gtk2_ardour_sources) + autowaf.build_i18n(bld, top, 'gtk2_ardour', APPNAME, gtk2_ardour_sources, + 'Paul Davis')