2 from waflib.extras import autowaf as autowaf
3 from waflib import Options, TaskGen
4 import waflib.Logs as Logs, waflib.Utils as Utils
10 from waflib.Task import Task
11 from waflib.Tools import winres
20 from waflib import TaskGen
21 @TaskGen.extension('.m')
22 def m_hook(self, node):
23 """Alias .m files to be compiled the same as .c files, gcc will do the right thing."""
24 return self.create_compiled_task('c', node)
26 path_prefix = 'gtk2_ardour/'
28 gtk2_ardour_sources = [
31 'add_route_dialog.cc',
32 'ambiguous_file_dialog.cc',
43 'ardour_ui_dependents.cc',
44 'ardour_ui_dialogs.cc',
47 'ardour_ui_options.cc',
50 'audio_region_editor.cc',
51 'audio_region_view.cc',
52 'audio_streamview.cc',
54 'automation_controller.cc',
56 'automation_region_view.cc',
57 'automation_streamview.cc',
58 'automation_time_axis.cc',
60 'big_clock_window.cc',
64 'color_theme_manager.cc',
67 'control_point_dialog.cc',
68 'control_slave_ui.cc',
72 'duplicate_routes_dialog.cc',
73 'edit_note_dialog.cc',
77 'editor_audio_import.cc',
78 'editor_pt_import.cc',
79 'editor_audiotrack.cc',
81 'editor_canvas_events.cc',
82 'editor_component.cc',
85 'editor_route_groups.cc',
86 'editor_export_audio.cc',
87 'editor_group_tabs.cc',
89 'editor_locations.cc',
97 'editor_selection.cc',
98 'editor_snapshots.cc',
100 'editor_tempodisplay.cc',
104 'export_channel_selector.cc',
106 'export_file_notebook.cc',
107 'export_filename_selector.cc',
108 'export_format_dialog.cc',
109 'export_format_selector.cc',
110 'export_preset_selector.cc',
112 'export_timespan_selector.cc',
116 'floating_text_entry.cc',
117 'sfdb_freesound_mootcher.cc',
119 'generic_pluginui.cc',
121 'global_port_matrix.cc',
123 'gtk_pianokeyboard.c',
125 'insert_remove_time_dialog.cc',
126 'instrument_selector.cc',
127 'interthread_progress_window.cc',
136 'lua_script_manager.cc',
142 'midi_automation_line.cc',
143 'midi_channel_dialog.cc',
144 'midi_channel_selector.cc',
145 'midi_cut_buffer.cc',
146 'midi_export_dialog.cc',
147 'midi_list_editor.cc',
148 'midi_port_dialog.cc',
149 'midi_region_view.cc',
152 'midi_streamview.cc',
155 'midi_velocity_dialog.cc',
156 'missing_file_dialog.cc',
157 'missing_plugin_dialog.cc',
158 'mixer_group_tabs.cc',
164 'monitor_section.cc',
165 'monitor_selector.cc',
167 'mono_panner_editor.cc',
170 'new_plugin_preset_dialog.cc',
171 'normalize_dialog.cc',
175 'note_select_dialog.cc',
182 'panner_interface.cc',
185 'piano_roll_header.cc',
187 'playlist_selector.cc',
189 'plugin_pin_dialog.cc',
190 'plugin_setup_dialog.cc',
191 'plugin_selector.cc',
196 'port_matrix_body.cc',
197 'port_matrix_column_labels.cc',
198 'port_matrix_component.cc',
199 'port_matrix_grid.cc',
200 'port_matrix_labels.cc',
201 'port_matrix_row_labels.cc',
203 'patch_change_dialog.cc',
204 'progress_reporter.cc',
207 'quantize_dialog.cc',
208 'rc_option_editor.cc',
210 'region_gain_line.cc',
211 'region_layering_order_editor.cc',
212 'region_selection.cc',
216 'route_group_dialog.cc',
217 'route_group_menu.cc',
218 'route_params_ui.cc',
219 'route_processor_selection.cc',
220 'route_time_axis.cc',
224 'search_path_option.cc',
225 'script_selector.cc',
227 'selection_memento.cc',
229 'session_archive_dialog.cc',
231 'session_import_dialog.cc',
232 'session_metadata_dialog.cc',
233 'session_option_editor.cc',
235 'shuttle_control.cc',
236 'soundcloud_export_selector.cc',
243 'stereo_panner_editor.cc',
245 'strip_silence_dialog.cc',
247 'tape_region_view.cc',
253 'time_axis_view_item.cc',
259 'track_selection.cc',
260 'track_view_list.cc',
261 'transform_dialog.cc',
262 'transpose_dialog.cc',
265 'vca_master_strip.cc',
267 'visibility_group.cc',
269 # video-timeline related sources:
270 'video_image_frame.cc',
271 'add_video_dialog.cc',
272 'editor_videotimeline.cc',
276 'transcode_ffmpeg.cc',
277 'transcode_video_dialog.cc',
278 'video_server_dialog.cc',
280 'export_video_dialog.cc',
281 'export_video_infobox.cc',
282 'video_tool_paths.cc'
285 def enoify (major, minor):
286 # Code names based on
287 # https://en.wikipedia.org/wiki/Brian_Eno_discography
289 # sort Studio albums + Collaborative albums + Compilation albums by Month/Year.
290 # (no Singles, no EPs, no Video Albums, no Production)
292 return "\\n\\\"E-No\\\""
295 return "\\n\\\"No Pussyfooting\\\""
297 return "\\n\\\"Here Come the Warm Jets\\\""
299 return "\\n\\\"Taking Tiger Mountain\\\""
301 return "\\n\\\"Lady June's Linguistic Leprosy\\\""
303 return "\\n\\\"Discreet Music\\\""
305 return "\\n\\\"Another Green World\\\""
307 return "\\n\\\"Evening Star\\\""
309 return "\\n\\\"Cluster and Eno\\\""
312 return "\\n\\\"Before and After Science\\\""
314 return "\\n\\\"After the Heat\\\""
316 return "\\n\\\"Music for Airports\\\""
318 return "\\n\\\"Music for Films\\\""
320 return "\\n\\\"In a Land of Clear Colours\\\""
324 autowaf.set_options(opt)
328 conf.load('compiler_cxx')
329 autowaf.configure(conf)
331 # TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
333 autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F',
335 autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW35F',
336 atleast_version='3.3.5', mandatory=False)
337 autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
338 atleast_version='1.2.1')
339 autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD',
340 atleast_version='2.10.1')
341 autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK',
342 atleast_version='2.18')
343 autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM',
344 atleast_version='2.18')
345 autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
346 autowaf.check_pkg(conf, 'x11', uselib_store='X11', atleast_version='1.1', mandatory=False)
347 autowaf.check_pkg(conf, 'fontconfig', uselib_store='FONTCONFIG')
350 if sys.platform == 'darwin':
351 retval = conf.run_c_code (code='#include <AppKit/NSWindow.h>\n\
352 int main(void) { (void) NSWindowWillStartLiveResizeNotification; return 0; }\n',
353 env = conf.env.derive (),
356 compile_filename='test.m',
361 autowaf.display_msg (conf, 'Checking for Cocoa live resizing constants', 'ok')
362 conf.define ('HAVE_COCOA_LIVE_RESIZING', 1)
364 autowaf.display_msg (conf, 'Checking for Cocoa live resizing constants', 'too old - AU plugin windows will be fixed size')
366 conf.write_config_header('gtk2ardour-config.h', remove=False)
368 bak = conf.env['define_key']
369 conf.define('VERSIONSTRING', str (conf.env['VERSION']))
370 conf.define('CODENAME', enoify(int(conf.env['MAJOR']), int(conf.env['MINOR'])))
371 conf.env['define_key'] = ['VERSIONSTRING', 'CODENAME' ]
372 conf.write_config_header('gtk2ardour-version.h')
373 conf.env['define_key'] = bak;
376 autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
377 autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
379 # Add a waf `feature' to allow compilation of things using winegcc
380 from waflib.TaskGen import feature
382 def set_winegcc(self):
383 self.env.LINK_CXX = self.env.LINK_CC = 'wineg++'
384 self.env.CC = 'winegcc'
386 def _doPyp(infileName, deps = False):
389 re_spaces = re.compile("\s+")
391 if infileName == '-':
394 fd = open(infileName)
395 inLines = fd.readlines()
401 bits = re_spaces.split(line)
402 if bits[0] == '##include':
407 # assume included file comes from same place as source file
408 incName = os.path.join (os.path.dirname (infileName), incName);
409 outStr += _doPyp(incName)
420 def include_processor(task):
421 infileName = task.inputs[0].srcpath()
422 outfileName = os.path.join(out, task.outputs[0].bldpath())
423 fdOut = open (outfileName, "w")
424 fdOut.write (_doPyp(infileName))
428 def build_color_scheme(path, prefix):
432 if re.search ('^#@color', line):
433 line.strip() # remove newline
435 if len(color_scheme):
437 color_scheme += prefix
439 color_scheme += words[1]
441 color_scheme += words[2]
447 VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR'])
448 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
450 # Tool to dump lua-bindings (of gtk2ardour + libs)
451 if re.search ("linux", sys.platform) != None and bld.env['LUABINDINGDOC']:
452 obj = bld (features = 'cxx c cxxprogram')
453 obj.install_path = None
454 obj.source = list(gtk2_ardour_sources)
455 obj.target = 'luadoc'
456 obj.includes = ['.', '../libs']
457 obj.ldflags = ['-no-undefined']
470 'PACKAGE="' + I18N_PACKAGE + '"',
471 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
472 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
473 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
476 obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL GTKMM CANVAS FFTW3F LO TAGLIB XML '
477 obj.source += [ 'luadoc.cc', 'bundle_env_linux.cc' ]
478 if bld.is_defined('HAVE_SUIL'):
479 obj.source += [ 'lv2_plugin_ui.cc' ]
480 obj.use += [ 'SUIL' ]
481 if bld.is_defined('LXVST_SUPPORT'):
482 obj.source += [ 'vst_plugin_ui.cc' ]
483 obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
484 obj.defines += [ 'LXVST_SUPPORT' ]
488 if bld.is_defined('WINDOWS_VST_SUPPORT') and bld.env['build_target'] != 'mingw':
489 # Windows VST support w/wine
490 # If we require VST support we build a stub main() and the FST library
491 # here using winegcc, and link it to the GTK front-end library
492 obj = bld (features = 'cxx c cxxprogram wine')
493 obj.source = ( '../libs/fst/vstwin.c', '../vst/winmain.c' )
495 # XXX do we really need to explicitly link to all of these for the wine executable?
497 obj.use = [ 'libpbd',
508 obj.target = 'ardour-' + str (bld.env['VERSION']) + '-vst.exe.so'
509 obj.includes = [ '../libs/fst', '.' ]
510 obj.linkflags = ['-mwindows', '-Wl,--export-dynamic']
511 obj.linkflags += bld.env['LDFLAGS']
512 obj.defines = ['_POSIX_SOURCE', 'USE_WS_PREFIX']
513 obj.install_path = bld.env['DLLDIR']
514 # end of the wine executable
516 # now the shared library containing the GTK GUI for ardour
517 obj = bld (features = 'cxx c cxxshlib')
518 # operate on copy to avoid adding sources twice
519 obj.source = list(gtk2_ardour_sources)
520 obj.includes = [ '../libs/fst', '.' ]
521 obj.name = 'libgtk2_ardour'
522 obj.target = 'gtk2_ardour'
523 obj.cflags = [ '-fPIC' ]
526 # just the normal executable version of the GTK GUI
527 if bld.env['build_target'] == 'mingw':
528 obj = bld (features = 'cxx c cxxprogram winres')
530 obj = bld (features = 'cxx c cxxprogram')
531 # operate on copy to avoid adding sources twice
532 obj.source = list(gtk2_ardour_sources)
533 obj.target = 'ardour-' + str (bld.env['VERSION'])
535 obj.ldflags = ['-no-undefined']
537 if bld.is_defined('WINDOWS_VST_SUPPORT'):
538 # Windows VST support mingw
539 obj.includes += [ '../libs/fst' ]
541 # at this point, "obj" refers to either the normal native executable
542 # OR the shared library built for use with wine on linux.
544 obj.use = [ 'libpbd',
555 'PACKAGE="' + I18N_PACKAGE + '"',
556 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
557 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
558 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
560 obj.install_path = bld.env['DLLDIR']
562 obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL GTKMM CANVAS FFTW3F LO TAGLIB XML '
564 if sys.platform == 'darwin':
565 obj.uselib += ' AUDIOUNITS OSX '
566 obj.use += ' libappleutility'
567 obj.source += [ 'cocoacarbon.mm', 'bundle_env_cocoa.cc' ]
568 elif bld.env['build_target'] == 'mingw':
569 obj.source += [ 'bundle_env_mingw.cc' ]
570 obj.source += [ 'windows_icon.rc' ]
572 obj.source += [ 'bundle_env_linux.cc' ]
574 obj.includes += ['../libs']
576 obj.use += 'libptformat'
578 if bld.env['build_target'] == 'mingw':
579 obj.linkflags += ' -mwindows'
581 if bld.is_defined('HAVE_SUIL'):
582 obj.source += [ 'lv2_plugin_ui.cc' ]
583 obj.use += [ 'SUIL' ]
585 if bld.is_defined('HAVE_FFTW35F') and bld.env['build_target'] != 'mingw':
586 bld.env['LIB_FFTW3F'] += ['fftw3f_threads']
588 if bld.is_defined('NEED_INTL'):
589 obj.linkflags += ' -lintl'
591 if bld.is_defined('WINDOWS_VST_SUPPORT'):
592 obj.source += [ 'windows_vst_plugin_ui.cc' ]
593 obj.defines += [ 'WINDOWS_VST_SUPPORT' ]
594 if bld.env['build_target'] != 'mingw':
597 if bld.is_defined('LXVST_SUPPORT'):
598 obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
599 obj.defines += [ 'LXVST_SUPPORT' ]
602 if bld.is_defined('WINDOWS_VST_SUPPORT') or bld.is_defined('LXVST_SUPPORT'):
603 obj.source += [ 'vst_plugin_ui.cc' ]
605 if bld.is_defined('PHONE_HOME'):
606 obj.defines += [ 'PHONE_HOME' ]
608 if bld.is_defined('HAVE_COREAUDIO'):
609 TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
610 obj.use += ' libappleutility '
612 if bld.is_defined('AUDIOUNIT_SUPPORT'):
613 obj.source += [ 'au_pluginui.mm' ]
617 wrapper_subst_dict = {
618 'INSTALL_PREFIX' : bld.env['PREFIX'],
619 'LIBDIR' : os.path.normpath(bld.env['DLLDIR']),
620 'DATADIR' : os.path.normpath(bld.env['DATADIR']),
621 'CONFDIR' : os.path.normpath(bld.env['CONFDIR']),
622 'LIBS' : 'build/libs',
623 'VERSION' : str (bld.env['VERSION']),
624 'EXECUTABLE' : 'build/gtk2_ardour/ardour-' + str (bld.env['VERSION'])
627 def set_subst_dict(obj, dict):
629 setattr(obj, i, dict[i])
631 obj = bld(features = 'subst')
632 obj.source = 'ardev_common.sh.in'
633 obj.target = 'ardev_common_waf.sh'
634 obj.chmod = Utils.O755
635 obj.dict = wrapper_subst_dict
636 set_subst_dict(obj, wrapper_subst_dict)
638 obj = bld(features = 'subst')
639 obj.source = 'ardour.sh.in'
640 obj.target = 'ardour' + str (bld.env['MAJOR'])
641 obj.chmod = Utils.O755
642 obj.dict = wrapper_subst_dict
643 obj.install_path = bld.env['BINDIR']
644 set_subst_dict(obj, wrapper_subst_dict)
646 if bld.is_defined('WINDOWS_VST_SUPPORT'):
647 obj = bld(features = 'subst')
648 obj.source = '../vst/ardourvst.in'
649 obj.target = 'ardourvst' + str (bld.env['MAJOR'])
650 obj.chmod = Utils.O755
651 obj.dict = wrapper_subst_dict
652 obj.install_path = bld.env['BINDIR']
653 set_subst_dict(obj, wrapper_subst_dict)
662 if sys.platform == 'darwin':
676 # There is no acceptable monospace font available on older versions of OS X
677 # and no API on those versions to load TTF files that will work with
678 # GTK/fontconfig/pango.
680 # In addition, the ArdourMono font gets clipped for some reason on OS X
682 # Moreover, Lucida Grande just seems to work even though it is not monospace
686 'MONOSPACE' : 'Monaco',
687 'CLOCKFONT' : 'Lucida Grande',
689 else: # Linux/X11 fonts
690 basefont = '' # unspecified - use system defaults
703 'MONOSPACE' : 'ArdourMono',
704 'CLOCKFONT' : 'ArdourMono',
707 # Set up font substitution dictionary
709 for style in ['', 'BOLD', 'ITALIC']:
710 for sizename,points in iter(font_sizes.items()):
712 key = "_".join (['FONT',style,sizename])
713 fontstyle = " ".join ([basefont,style.lower(),points])
715 key = "_".join (['FONT',sizename])
716 fontstyle = " ".join ([basefont,points])
718 font_subst_dict[key] = fontstyle
721 for sizename,points in iter(font_sizes.items()):
722 key = "_".join (['FONT_SIZE',sizename])
723 font_subst_dict[key] = points
725 # various font names, eg @BOLD_MONOSPACE@
726 for font_sym,text in iter(font_names.items()):
728 font_subst_dict[key] = text
732 obj = bld(features = 'subst')
733 obj.source = [ 'clearlooks.rc.in' ]
734 obj.target = 'clearlooks.rc'
735 obj.install_path = bld.env['CONFDIR']
736 set_subst_dict(obj, font_subst_dict)
738 obj = bld(features = 'subst')
739 obj.source = [ 'default_ui_config.in' ]
740 obj.target = 'default_ui_config'
741 obj.install_path = bld.env['CONFDIR']
742 set_subst_dict(obj, font_subst_dict)
746 if sys.platform == 'darwin':
747 menus_argv = [ '-E', '-P', '-D__APPLE__', '-' ]
749 menus_argv = [ '-E', '-P' ]
751 if bld.is_defined('PTFORMAT'):
752 menus_argv += [ '-DPTFORMAT' ]
754 # always build all versions of the menu definitions
755 # so that we can try them out with different program builds.
756 for program in [ 'ardour', 'trx' ]:
757 obj = bld(features = 'command-output')
759 obj.command_is_external = True
761 obj.argv = menus_argv
762 obj.dep_vars = ['PTFORMAT', 'GTKOSX', 'WINDOWS']
763 obj.stdin = program + '.menus.in'
764 obj.stdout = program + '.menus'
765 bld.install_files (bld.env['CONFDIR'], program + '.menus')
768 freedesktop_subst_dict = {
769 'ARDOUR_EXEC' : str (bld.env['lwrcase_dirname']),
770 'ARDOUR_ICON' : str (bld.env['lwrcase_dirname']),
771 'VERSION': str (bld.env['VERSION']),
774 if bld.env['FREEDESKTOP']:
775 obj = bld(features = 'subst')
776 obj.source = 'ardour.desktop.in'
777 obj.target = str (bld.env['lwrcase_dirname']) + '.desktop'
778 obj.chmod = Utils.O644
779 obj.dict = freedesktop_subst_dict
780 set_subst_dict(obj, freedesktop_subst_dict)
782 obj = bld(features = 'subst')
783 obj.source = 'ardour-mime-info.xml'
784 obj.target = 'ardour.xml'
785 obj.chmod = Utils.O644
787 # build appdata with translations
789 appdata_i18n_xmlin(bld)
790 obj = bld(features = 'subst')
791 obj.source = 'ardour.appdata.xml.in'
792 obj.target = str (bld.env['lwrcase_dirname']) + '.appdata.xml'
793 obj.chmod = Utils.O644
794 obj.dict = freedesktop_subst_dict
795 set_subst_dict(obj, freedesktop_subst_dict)
799 # NATIVE ARDOUR BINDING FILES
800 # explicitly state the use of perl here so that it works on windows too
802 a_rule = 'perl ../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap ${SRC[0].abspath()} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] )
803 for b in [ 'ardour' ] :
805 target = b + '.keys',
806 source = [ b + '.keys.in', 'mixer.bindings', 'processor_box.bindings', 'step_editing.bindings', 'monitor.bindings' ],
809 obj.install_path = bld.env['CONFDIR']
812 bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), bld.path.ant_glob('icons/*.png'))
813 bld.install_files(bld.env['DATADIR'], 'ArdourMono.ttf')
815 # Application/Product specific resources (icon, splash)
816 pgmname = Options.options.program_name;
817 bld.install_files(os.path.join(bld.env['DATADIR'], 'resources'), bld.path.ant_glob('resources/' + pgmname + '*'))
819 if bld.env['build_target'] == 'mingw':
820 # These icons need to overwrite the files already installed in the icons
821 # directory above. Do this in the external packaging scripts for now.
822 #bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), bld.path.ant_glob('icons/cursor_square/*.png'))
823 bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), 'icons/cursor_square/hotspots')
825 # Default UI configuration
826 bld.install_files(bld.env['CONFDIR'], 'default_ui_config')
827 # Color Themes. Find each color file for this program only
829 bld.install_files (os.path.join(bld.env['DATADIR'], 'themes'), bld.path.ant_glob ('themes/*-' + Options.options.program_name.lower() + '.colors'));
831 # Default export stuff
832 bld.install_files(os.path.join(bld.env['CONFDIR'], 'export'), bld.path.ant_glob('export/*.format'))
835 if bld.is_defined('ENABLE_NLS'):
836 mo_files = bld.path.ant_glob('po/*.mo')
838 lang = os.path.basename(mo.srcpath()).replace('.mo', '')
839 bld.install_as (os.path.join(os.path.normpath(bld.env['LOCALEDIR']), lang, 'LC_MESSAGES', I18N_PACKAGE + '.mo'),
843 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
844 autowaf.build_i18n(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
846 appdata_i18n_pot(bld)
850 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
851 autowaf.build_i18n_pot(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
853 appdata_i18n_pot(bld)
856 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
857 autowaf.build_i18n_po(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
862 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
863 autowaf.build_i18n_mo(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
866 def appdata_i18n_pot(bld):
867 potfile = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata',
868 'ardour.appdata.pot')
869 if bld.cmd == 'i18n_pot':
870 Logs.info('Generating pot file from Ardour appdata')
871 itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its')
872 adsource = os.path.join(bld.top_dir, 'gtk2_ardour',
873 'ardour.appdata.xml.in.in')
874 Logs.info('Updating ' + potfile)
876 subprocess.call(('itstool', '-i', itsfile, '-o', potfile, adsource))
878 print ('Error processing appdata pot file - ignored')
879 elif bld.cmd == 'clean' and os.path.exists(potfile):
880 Logs.info('Removing Ardour appdata pot file')
883 def appdata_i18n_po(bld):
884 autowaf.build_i18n_po(bld, bld.top_dir, os.path.join(
885 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy')
887 def appdata_i18n_mo(bld):
888 autowaf.build_i18n_mo(bld, bld.top_dir, os.path.join(
889 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy')
891 def appdata_i18n_xmlin(bld):
892 adxmlinfile = os.path.join(bld.top_dir, 'gtk2_ardour',
893 'ardour.appdata.xml.in')
894 if bld.cmd == 'build':
895 itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its')
896 adxmlininfile = os.path.join(bld.top_dir, 'gtk2_ardour',
897 'ardour.appdata.xml.in.in')
898 mo_glob = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata', 'po', '*.mo')
899 mo_files = glob.glob(mo_glob)
900 Logs.info('Generating ' + adxmlinfile)
901 subprocess.call(['itstool', '-i', itsfile, '-o', adxmlinfile,
902 '-j', adxmlininfile] + mo_files)
903 elif bld.cmd == 'clean' and os.path.exists(adxmlinfile):
904 Logs.info('Removing ' + adxmlinfile)
905 os.remove(adxmlinfile)