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',
230 'session_import_dialog.cc',
231 'session_metadata_dialog.cc',
232 'session_option_editor.cc',
234 'shuttle_control.cc',
235 'soundcloud_export_selector.cc',
242 'stereo_panner_editor.cc',
244 'strip_silence_dialog.cc',
246 'tape_region_view.cc',
252 'time_axis_view_item.cc',
258 'track_selection.cc',
259 'track_view_list.cc',
260 'transform_dialog.cc',
261 'transpose_dialog.cc',
264 'vca_master_strip.cc',
266 'visibility_group.cc',
268 # video-timeline related sources:
269 'video_image_frame.cc',
270 'add_video_dialog.cc',
271 'editor_videotimeline.cc',
275 'transcode_ffmpeg.cc',
276 'transcode_video_dialog.cc',
277 'video_server_dialog.cc',
279 'export_video_dialog.cc',
280 'export_video_infobox.cc',
281 'video_tool_paths.cc'
284 def enoify (major, minor):
285 # Code names based on
286 # https://en.wikipedia.org/wiki/Brian_Eno_discography
288 # sort Studio albums + Collaborative albums + Compilation albums by Month/Year.
289 # (no Singles, no EPs, no Video Albums, no Production)
291 return "\\n\\\"E-No\\\""
294 return "\\n\\\"No Pussyfooting\\\""
296 return "\\n\\\"Here Come the Warm Jets\\\""
298 return "\\n\\\"Taking Tiger Mountain\\\""
300 return "\\n\\\"Lady June's Linguistic Leprosy\\\""
302 return "\\n\\\"Discreet Music\\\""
304 return "\\n\\\"Another Green World\\\""
306 return "\\n\\\"Evening Star\\\""
308 return "\\n\\\"Cluster and Eno\\\""
311 return "\\n\\\"Before and After Science\\\""
313 return "\\n\\\"After the Heat\\\""
315 return "\\n\\\"Music for Airports\\\""
317 return "\\n\\\"Music for Films\\\""
319 return "\\n\\\"In a Land of Clear Colours\\\""
323 autowaf.set_options(opt)
327 conf.load('compiler_cxx')
328 autowaf.configure(conf)
330 # TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
332 autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F',
334 autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW35F',
335 atleast_version='3.3.5', mandatory=False)
336 autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
337 atleast_version='1.2.1')
338 autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD',
339 atleast_version='2.10.1')
340 autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK',
341 atleast_version='2.18')
342 autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM',
343 atleast_version='2.18')
344 autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
345 autowaf.check_pkg(conf, 'x11', uselib_store='X11', atleast_version='1.1', mandatory=False)
346 autowaf.check_pkg(conf, 'fontconfig', uselib_store='FONTCONFIG')
349 if sys.platform == 'darwin':
350 retval = conf.run_c_code (code='#include <AppKit/NSWindow.h>\n\
351 int main(void) { (void) NSWindowWillStartLiveResizeNotification; return 0; }\n',
352 env = conf.env.derive (),
355 compile_filename='test.m',
360 autowaf.display_msg (conf, 'Checking for Cocoa live resizing constants', 'ok')
361 conf.define ('HAVE_COCOA_LIVE_RESIZING', 1)
363 autowaf.display_msg (conf, 'Checking for Cocoa live resizing constants', 'too old - AU plugin windows will be fixed size')
365 conf.write_config_header('gtk2ardour-config.h', remove=False)
367 bak = conf.env['define_key']
368 conf.define('VERSIONSTRING', str (conf.env['VERSION']))
369 conf.define('CODENAME', enoify(int(conf.env['MAJOR']), int(conf.env['MINOR'])))
370 conf.env['define_key'] = ['VERSIONSTRING', 'CODENAME' ]
371 conf.write_config_header('gtk2ardour-version.h')
372 conf.env['define_key'] = bak;
375 autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
376 autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
378 # Add a waf `feature' to allow compilation of things using winegcc
379 from waflib.TaskGen import feature
381 def set_winegcc(self):
382 self.env.LINK_CXX = self.env.LINK_CC = 'wineg++'
383 self.env.CC = 'winegcc'
385 def _doPyp(infileName, deps = False):
388 re_spaces = re.compile("\s+")
390 if infileName == '-':
393 fd = open(infileName)
394 inLines = fd.readlines()
400 bits = re_spaces.split(line)
401 if bits[0] == '##include':
406 # assume included file comes from same place as source file
407 incName = os.path.join (os.path.dirname (infileName), incName);
408 outStr += _doPyp(incName)
419 def include_processor(task):
420 infileName = task.inputs[0].srcpath()
421 outfileName = os.path.join(out, task.outputs[0].bldpath())
422 fdOut = open (outfileName, "w")
423 fdOut.write (_doPyp(infileName))
427 def build_color_scheme(path, prefix):
431 if re.search ('^#@color', line):
432 line.strip() # remove newline
434 if len(color_scheme):
436 color_scheme += prefix
438 color_scheme += words[1]
440 color_scheme += words[2]
446 VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR'])
447 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
449 # Tool to dump lua-bindings (of gtk2ardour + libs)
450 if re.search ("linux", sys.platform) != None and bld.env['LUABINDINGDOC']:
451 obj = bld (features = 'cxx c cxxprogram')
452 obj.install_path = None
453 obj.source = list(gtk2_ardour_sources)
454 obj.target = 'luadoc'
455 obj.includes = ['.', '../libs']
456 obj.ldflags = ['-no-undefined']
469 'PACKAGE="' + I18N_PACKAGE + '"',
470 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
471 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
472 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
475 obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL GTKMM CANVAS FFTW3F LO TAGLIB XML '
476 obj.source += [ 'luadoc.cc', 'bundle_env_linux.cc' ]
477 if bld.is_defined('HAVE_SUIL'):
478 obj.source += [ 'lv2_plugin_ui.cc' ]
479 obj.use += [ 'SUIL' ]
480 if bld.is_defined('LXVST_SUPPORT'):
481 obj.source += [ 'vst_plugin_ui.cc' ]
482 obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
483 obj.defines += [ 'LXVST_SUPPORT' ]
487 if bld.is_defined('WINDOWS_VST_SUPPORT') and bld.env['build_target'] != 'mingw':
488 # Windows VST support w/wine
489 # If we require VST support we build a stub main() and the FST library
490 # here using winegcc, and link it to the GTK front-end library
491 obj = bld (features = 'cxx c cxxprogram wine')
492 obj.source = ( '../libs/fst/vstwin.c', '../vst/winmain.c' )
494 # XXX do we really need to explicitly link to all of these for the wine executable?
496 obj.use = [ 'libpbd',
507 obj.target = 'ardour-' + str (bld.env['VERSION']) + '-vst.exe.so'
508 obj.includes = [ '../libs/fst', '.' ]
509 obj.linkflags = ['-mwindows', '-Wl,--export-dynamic']
510 obj.linkflags += bld.env['LDFLAGS']
511 obj.defines = ['_POSIX_SOURCE', 'USE_WS_PREFIX']
512 obj.install_path = bld.env['DLLDIR']
513 # end of the wine executable
515 # now the shared library containing the GTK GUI for ardour
516 obj = bld (features = 'cxx c cxxshlib')
517 # operate on copy to avoid adding sources twice
518 obj.source = list(gtk2_ardour_sources)
519 obj.includes = [ '../libs/fst', '.' ]
520 obj.name = 'libgtk2_ardour'
521 obj.target = 'gtk2_ardour'
522 obj.cflags = [ '-fPIC' ]
525 # just the normal executable version of the GTK GUI
526 if bld.env['build_target'] == 'mingw':
527 obj = bld (features = 'cxx c cxxprogram winres')
529 obj = bld (features = 'cxx c cxxprogram')
530 # operate on copy to avoid adding sources twice
531 obj.source = list(gtk2_ardour_sources)
532 obj.target = 'ardour-' + str (bld.env['VERSION'])
534 obj.ldflags = ['-no-undefined']
536 if bld.is_defined('WINDOWS_VST_SUPPORT'):
537 # Windows VST support mingw
538 obj.includes += [ '../libs/fst' ]
540 # at this point, "obj" refers to either the normal native executable
541 # OR the shared library built for use with wine on linux.
543 obj.use = [ 'libpbd',
554 'PACKAGE="' + I18N_PACKAGE + '"',
555 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
556 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
557 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
559 obj.install_path = bld.env['DLLDIR']
561 obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL GTKMM CANVAS FFTW3F LO TAGLIB XML '
563 if sys.platform == 'darwin':
564 obj.uselib += ' AUDIOUNITS OSX '
565 obj.use += ' libappleutility'
566 obj.source += [ 'cocoacarbon.mm', 'bundle_env_cocoa.cc' ]
567 elif bld.env['build_target'] == 'mingw':
568 obj.source += [ 'bundle_env_mingw.cc' ]
569 obj.source += [ 'windows_icon.rc' ]
571 obj.source += [ 'bundle_env_linux.cc' ]
573 obj.includes += ['../libs']
575 obj.use += 'libptformat'
577 if bld.env['build_target'] == 'mingw':
578 obj.linkflags += ' -mwindows'
580 if bld.is_defined('HAVE_SUIL'):
581 obj.source += [ 'lv2_plugin_ui.cc' ]
582 obj.use += [ 'SUIL' ]
584 if bld.is_defined('HAVE_FFTW35F') and bld.env['build_target'] != 'mingw':
585 bld.env['LIB_FFTW3F'] += ['fftw3f_threads']
587 if bld.is_defined('NEED_INTL'):
588 obj.linkflags += ' -lintl'
590 if bld.is_defined('WINDOWS_VST_SUPPORT'):
591 obj.source += [ 'windows_vst_plugin_ui.cc' ]
592 obj.defines += [ 'WINDOWS_VST_SUPPORT' ]
593 if bld.env['build_target'] != 'mingw':
596 if bld.is_defined('LXVST_SUPPORT'):
597 obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
598 obj.defines += [ 'LXVST_SUPPORT' ]
601 if bld.is_defined('WINDOWS_VST_SUPPORT') or bld.is_defined('LXVST_SUPPORT'):
602 obj.source += [ 'vst_plugin_ui.cc' ]
604 if bld.is_defined('PHONE_HOME'):
605 obj.defines += [ 'PHONE_HOME' ]
607 if bld.is_defined('HAVE_COREAUDIO'):
608 TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
609 obj.use += ' libappleutility '
611 if bld.is_defined('AUDIOUNIT_SUPPORT'):
612 obj.source += [ 'au_pluginui.mm' ]
616 wrapper_subst_dict = {
617 'INSTALL_PREFIX' : bld.env['PREFIX'],
618 'LIBDIR' : os.path.normpath(bld.env['DLLDIR']),
619 'DATADIR' : os.path.normpath(bld.env['DATADIR']),
620 'CONFDIR' : os.path.normpath(bld.env['CONFDIR']),
621 'LIBS' : 'build/libs',
622 'VERSION' : str (bld.env['VERSION']),
623 'EXECUTABLE' : 'build/gtk2_ardour/ardour-' + str (bld.env['VERSION'])
626 def set_subst_dict(obj, dict):
628 setattr(obj, i, dict[i])
630 obj = bld(features = 'subst')
631 obj.source = 'ardev_common.sh.in'
632 obj.target = 'ardev_common_waf.sh'
633 obj.chmod = Utils.O755
634 obj.dict = wrapper_subst_dict
635 set_subst_dict(obj, wrapper_subst_dict)
637 obj = bld(features = 'subst')
638 obj.source = 'ardour.sh.in'
639 obj.target = 'ardour' + str (bld.env['MAJOR'])
640 obj.chmod = Utils.O755
641 obj.dict = wrapper_subst_dict
642 obj.install_path = bld.env['BINDIR']
643 set_subst_dict(obj, wrapper_subst_dict)
645 if bld.is_defined('WINDOWS_VST_SUPPORT'):
646 obj = bld(features = 'subst')
647 obj.source = '../vst/ardourvst.in'
648 obj.target = 'ardourvst' + str (bld.env['MAJOR'])
649 obj.chmod = Utils.O755
650 obj.dict = wrapper_subst_dict
651 obj.install_path = bld.env['BINDIR']
652 set_subst_dict(obj, wrapper_subst_dict)
661 if sys.platform == 'darwin':
675 # There is no acceptable monospace font available on older versions of OS X
676 # and no API on those versions to load TTF files that will work with
677 # GTK/fontconfig/pango.
679 # In addition, the ArdourMono font gets clipped for some reason on OS X
681 # Moreover, Lucida Grande just seems to work even though it is not monospace
685 'MONOSPACE' : 'Monaco',
686 'CLOCKFONT' : 'Lucida Grande',
688 else: # Linux/X11 fonts
689 basefont = '' # unspecified - use system defaults
702 'MONOSPACE' : 'ArdourMono',
703 'CLOCKFONT' : 'ArdourMono',
706 # Set up font substitution dictionary
708 for style in ['', 'BOLD', 'ITALIC']:
709 for sizename,points in iter(font_sizes.items()):
711 key = "_".join (['FONT',style,sizename])
712 fontstyle = " ".join ([basefont,style.lower(),points])
714 key = "_".join (['FONT',sizename])
715 fontstyle = " ".join ([basefont,points])
717 font_subst_dict[key] = fontstyle
720 for sizename,points in iter(font_sizes.items()):
721 key = "_".join (['FONT_SIZE',sizename])
722 font_subst_dict[key] = points
724 # various font names, eg @BOLD_MONOSPACE@
725 for font_sym,text in iter(font_names.items()):
727 font_subst_dict[key] = text
731 obj = bld(features = 'subst')
732 obj.source = [ 'clearlooks.rc.in' ]
733 obj.target = 'clearlooks.rc'
734 obj.install_path = bld.env['CONFDIR']
735 set_subst_dict(obj, font_subst_dict)
737 obj = bld(features = 'subst')
738 obj.source = [ 'default_ui_config.in' ]
739 obj.target = 'default_ui_config'
740 obj.install_path = bld.env['CONFDIR']
741 set_subst_dict(obj, font_subst_dict)
745 if sys.platform == 'darwin':
746 menus_argv = [ '-E', '-P', '-D__APPLE__', '-' ]
748 menus_argv = [ '-E', '-P' ]
750 if bld.is_defined('PTFORMAT'):
751 menus_argv += [ '-DPTFORMAT' ]
753 # always build all versions of the menu definitions
754 # so that we can try them out with different program builds.
755 for program in [ 'ardour', 'trx' ]:
756 obj = bld(features = 'command-output')
758 obj.command_is_external = True
760 obj.argv = menus_argv
761 obj.dep_vars = ['PTFORMAT', 'GTKOSX', 'WINDOWS']
762 obj.stdin = program + '.menus.in'
763 obj.stdout = program + '.menus'
764 bld.install_files (bld.env['CONFDIR'], program + '.menus')
767 freedesktop_subst_dict = {
768 'ARDOUR_EXEC' : str (bld.env['lwrcase_dirname']),
769 'ARDOUR_ICON' : str (bld.env['lwrcase_dirname']),
770 'VERSION': str (bld.env['VERSION']),
773 if bld.env['FREEDESKTOP']:
774 obj = bld(features = 'subst')
775 obj.source = 'ardour.desktop.in'
776 obj.target = str (bld.env['lwrcase_dirname']) + '.desktop'
777 obj.chmod = Utils.O644
778 obj.dict = freedesktop_subst_dict
779 set_subst_dict(obj, freedesktop_subst_dict)
781 obj = bld(features = 'subst')
782 obj.source = 'ardour-mime-info.xml'
783 obj.target = 'ardour.xml'
784 obj.chmod = Utils.O644
786 # build appdata with translations
788 appdata_i18n_xmlin(bld)
789 obj = bld(features = 'subst')
790 obj.source = 'ardour.appdata.xml.in'
791 obj.target = str (bld.env['lwrcase_dirname']) + '.appdata.xml'
792 obj.chmod = Utils.O644
793 obj.dict = freedesktop_subst_dict
794 set_subst_dict(obj, freedesktop_subst_dict)
798 # NATIVE ARDOUR BINDING FILES
799 # explicitly state the use of perl here so that it works on windows too
801 a_rule = 'perl ../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap ${SRC[0].abspath()} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] )
802 for b in [ 'ardour' ] :
804 target = b + '.keys',
805 source = [ b + '.keys.in', 'mixer.bindings', 'processor_box.bindings', 'step_editing.bindings', 'monitor.bindings' ],
808 obj.install_path = bld.env['CONFDIR']
811 bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), bld.path.ant_glob('icons/*.png'))
812 bld.install_files(bld.env['DATADIR'], 'ArdourMono.ttf')
814 # Application/Product specific resources (icon, splash)
815 pgmname = Options.options.program_name;
816 bld.install_files(os.path.join(bld.env['DATADIR'], 'resources'), bld.path.ant_glob('resources/' + pgmname + '*'))
818 if bld.env['build_target'] == 'mingw':
819 # These icons need to overwrite the files already installed in the icons
820 # directory above. Do this in the external packaging scripts for now.
821 #bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), bld.path.ant_glob('icons/cursor_square/*.png'))
822 bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), 'icons/cursor_square/hotspots')
824 # Default UI configuration
825 bld.install_files(bld.env['CONFDIR'], 'default_ui_config')
826 # Color Themes. Find each color file for this program only
828 bld.install_files (os.path.join(bld.env['DATADIR'], 'themes'), bld.path.ant_glob ('themes/*-' + Options.options.program_name.lower() + '.colors'));
830 # Default export stuff
831 bld.install_files(os.path.join(bld.env['CONFDIR'], 'export'), bld.path.ant_glob('export/*.format'))
834 if bld.is_defined('ENABLE_NLS'):
835 mo_files = bld.path.ant_glob('po/*.mo')
837 lang = os.path.basename(mo.srcpath()).replace('.mo', '')
838 bld.install_as (os.path.join(os.path.normpath(bld.env['LOCALEDIR']), lang, 'LC_MESSAGES', I18N_PACKAGE + '.mo'),
842 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
843 autowaf.build_i18n(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
845 appdata_i18n_pot(bld)
849 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
850 autowaf.build_i18n_pot(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
852 appdata_i18n_pot(bld)
855 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
856 autowaf.build_i18n_po(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
861 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
862 autowaf.build_i18n_mo(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
865 def appdata_i18n_pot(bld):
866 potfile = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata',
867 'ardour.appdata.pot')
868 if bld.cmd == 'i18n_pot':
869 Logs.info('Generating pot file from Ardour appdata')
870 itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its')
871 adsource = os.path.join(bld.top_dir, 'gtk2_ardour',
872 'ardour.appdata.xml.in.in')
873 Logs.info('Updating ' + potfile)
875 subprocess.call(('itstool', '-i', itsfile, '-o', potfile, adsource))
877 print ('Error processing appdata pot file - ignored')
878 elif bld.cmd == 'clean' and os.path.exists(potfile):
879 Logs.info('Removing Ardour appdata pot file')
882 def appdata_i18n_po(bld):
883 autowaf.build_i18n_po(bld, bld.top_dir, os.path.join(
884 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy')
886 def appdata_i18n_mo(bld):
887 autowaf.build_i18n_mo(bld, bld.top_dir, os.path.join(
888 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy')
890 def appdata_i18n_xmlin(bld):
891 adxmlinfile = os.path.join(bld.top_dir, 'gtk2_ardour',
892 'ardour.appdata.xml.in')
893 if bld.cmd == 'build':
894 itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its')
895 adxmlininfile = os.path.join(bld.top_dir, 'gtk2_ardour',
896 'ardour.appdata.xml.in.in')
897 mo_glob = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata', 'po', '*.mo')
898 mo_files = glob.glob(mo_glob)
899 Logs.info('Generating ' + adxmlinfile)
900 subprocess.call(['itstool', '-i', itsfile, '-o', adxmlinfile,
901 '-j', adxmlininfile] + mo_files)
902 elif bld.cmd == 'clean' and os.path.exists(adxmlinfile):
903 Logs.info('Removing ' + adxmlinfile)
904 os.remove(adxmlinfile)