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',
42 'ardour_ui_dependents.cc',
43 'ardour_ui_dialogs.cc',
46 'ardour_ui_options.cc',
49 'audio_region_editor.cc',
50 'audio_region_view.cc',
51 'audio_streamview.cc',
53 'automation_controller.cc',
55 'automation_region_view.cc',
56 'automation_streamview.cc',
57 'automation_time_axis.cc',
59 'big_clock_window.cc',
63 'color_theme_manager.cc',
66 'control_point_dialog.cc',
67 'control_slave_ui.cc',
71 'duplicate_routes_dialog.cc',
72 'edit_note_dialog.cc',
76 'editor_audio_import.cc',
77 'editor_pt_import.cc',
78 'editor_audiotrack.cc',
80 'editor_canvas_events.cc',
81 'editor_component.cc',
84 'editor_route_groups.cc',
85 'editor_export_audio.cc',
86 'editor_group_tabs.cc',
88 'editor_locations.cc',
96 'editor_selection.cc',
97 'editor_snapshots.cc',
99 'editor_tempodisplay.cc',
103 'export_channel_selector.cc',
105 'export_file_notebook.cc',
106 'export_filename_selector.cc',
107 'export_format_dialog.cc',
108 'export_format_selector.cc',
109 'export_preset_selector.cc',
111 'export_timespan_selector.cc',
115 'floating_text_entry.cc',
116 'sfdb_freesound_mootcher.cc',
118 'generic_pluginui.cc',
120 'global_port_matrix.cc',
122 'gtk_pianokeyboard.c',
124 'insert_remove_time_dialog.cc',
125 'instrument_selector.cc',
126 'interthread_progress_window.cc',
135 'lua_script_manager.cc',
141 'midi_automation_line.cc',
142 'midi_channel_dialog.cc',
143 'midi_channel_selector.cc',
144 'midi_cut_buffer.cc',
145 'midi_export_dialog.cc',
146 'midi_list_editor.cc',
147 'midi_port_dialog.cc',
148 'midi_region_view.cc',
151 'midi_streamview.cc',
154 'midi_velocity_dialog.cc',
155 'missing_file_dialog.cc',
156 'missing_plugin_dialog.cc',
157 'mixer_group_tabs.cc',
163 'monitor_section.cc',
164 'monitor_selector.cc',
166 'mono_panner_editor.cc',
169 'new_plugin_preset_dialog.cc',
170 'normalize_dialog.cc',
174 'note_select_dialog.cc',
181 'panner_interface.cc',
184 'piano_roll_header.cc',
186 'playlist_selector.cc',
188 'plugin_pin_dialog.cc',
189 'plugin_setup_dialog.cc',
190 'plugin_selector.cc',
195 'port_matrix_body.cc',
196 'port_matrix_column_labels.cc',
197 'port_matrix_component.cc',
198 'port_matrix_grid.cc',
199 'port_matrix_labels.cc',
200 'port_matrix_row_labels.cc',
202 'patch_change_dialog.cc',
203 'progress_reporter.cc',
206 'quantize_dialog.cc',
207 'rc_option_editor.cc',
209 'region_gain_line.cc',
210 'region_layering_order_editor.cc',
211 'region_selection.cc',
215 'route_group_dialog.cc',
216 'route_group_menu.cc',
217 'route_params_ui.cc',
218 'route_processor_selection.cc',
219 'route_time_axis.cc',
223 'search_path_option.cc',
224 'script_selector.cc',
226 'selection_memento.cc',
229 'session_import_dialog.cc',
230 'session_metadata_dialog.cc',
231 'session_option_editor.cc',
233 'shuttle_control.cc',
234 'soundcloud_export_selector.cc',
241 'stereo_panner_editor.cc',
243 'strip_silence_dialog.cc',
245 'tape_region_view.cc',
251 'time_axis_view_item.cc',
257 'track_selection.cc',
258 'track_view_list.cc',
259 'transform_dialog.cc',
260 'transpose_dialog.cc',
263 'vca_master_strip.cc',
265 'visibility_group.cc',
267 # video-timeline related sources:
268 'video_image_frame.cc',
269 'add_video_dialog.cc',
270 'editor_videotimeline.cc',
274 'transcode_ffmpeg.cc',
275 'transcode_video_dialog.cc',
276 'video_server_dialog.cc',
278 'export_video_dialog.cc',
279 'export_video_infobox.cc',
280 'video_tool_paths.cc'
283 def enoify (major, minor):
284 # Code names based on
285 # https://en.wikipedia.org/wiki/Brian_Eno_discography
287 # sort Studio albums + Collaborative albums + Compilation albums by Month/Year.
288 # (no Singles, no EPs, no Video Albums, no Production)
290 return "\\n\\\"E-No\\\""
293 return "\\n\\\"No Pussyfooting\\\""
295 return "\\n\\\"Here Come the Warm Jets\\\""
297 return "\\n\\\"Taking Tiger Mountain\\\""
299 return "\\n\\\"Lady June's Linguistic Leprosy\\\""
301 return "\\n\\\"Discreet Music\\\""
303 return "\\n\\\"Another Green World\\\""
305 return "\\n\\\"Evening Star\\\""
307 return "\\n\\\"Cluster and Eno\\\""
310 return "\\n\\\"Before and After Science\\\""
312 return "\\n\\\"After the Heat\\\""
316 autowaf.set_options(opt)
320 conf.load('compiler_cxx')
321 autowaf.configure(conf)
323 # TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
325 autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F',
327 autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW35F',
328 atleast_version='3.3.5', mandatory=False)
329 autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
330 atleast_version='1.2.1')
331 autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD',
332 atleast_version='2.10.1')
333 autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK',
334 atleast_version='2.18')
335 autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM',
336 atleast_version='2.18')
337 autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
338 autowaf.check_pkg(conf, 'x11', uselib_store='X11', atleast_version='1.1', mandatory=False)
339 autowaf.check_pkg(conf, 'fontconfig', uselib_store='FONTCONFIG')
342 if sys.platform == 'darwin':
343 retval = conf.run_c_code (code='#include <AppKit/NSWindow.h>\n\
344 int main(void) { (void) NSWindowWillStartLiveResizeNotification; return 0; }\n',
345 env = conf.env.derive (),
348 compile_filename='test.m',
353 autowaf.display_msg (conf, 'Checking for Cocoa live resizing constants', 'ok')
354 conf.define ('HAVE_COCOA_LIVE_RESIZING', 1)
356 autowaf.display_msg (conf, 'Checking for Cocoa live resizing constants', 'too old - AU plugin windows will be fixed size')
358 conf.write_config_header('gtk2ardour-config.h', remove=False)
360 bak = conf.env['define_key']
361 conf.define('VERSIONSTRING', str (conf.env['VERSION']))
362 conf.define('CODENAME', enoify(int(conf.env['MAJOR']), int(conf.env['MINOR'])))
363 conf.env['define_key'] = ['VERSIONSTRING', 'CODENAME' ]
364 conf.write_config_header('gtk2ardour-version.h')
365 conf.env['define_key'] = bak;
368 autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
369 autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
371 # Add a waf `feature' to allow compilation of things using winegcc
372 from waflib.TaskGen import feature
374 def set_winegcc(self):
375 self.env.LINK_CXX = self.env.LINK_CC = 'wineg++'
376 self.env.CC = 'winegcc'
378 def _doPyp(infileName, deps = False):
381 re_spaces = re.compile("\s+")
383 if infileName == '-':
386 fd = open(infileName)
387 inLines = fd.readlines()
393 bits = re_spaces.split(line)
394 if bits[0] == '##include':
399 # assume included file comes from same place as source file
400 incName = os.path.join (os.path.dirname (infileName), incName);
401 outStr += _doPyp(incName)
412 def include_processor(task):
413 infileName = task.inputs[0].srcpath()
414 outfileName = os.path.join(out, task.outputs[0].bldpath())
415 fdOut = open (outfileName, "w")
416 fdOut.write (_doPyp(infileName))
420 def build_color_scheme(path, prefix):
424 if re.search ('^#@color', line):
425 line.strip() # remove newline
427 if len(color_scheme):
429 color_scheme += prefix
431 color_scheme += words[1]
433 color_scheme += words[2]
439 VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR'])
440 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
442 # Tool to dump lua-bindings (of gtk2ardour + libs)
443 if re.search ("linux", sys.platform) != None and bld.env['LUABINDINGDOC']:
444 obj = bld (features = 'cxx c cxxprogram')
445 obj.install_path = None
446 obj.source = list(gtk2_ardour_sources)
447 obj.target = 'luadoc'
448 obj.includes = ['.', '../libs']
449 obj.ldflags = ['-no-undefined']
462 'PACKAGE="' + I18N_PACKAGE + '"',
463 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
464 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
465 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
468 obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL GTKMM CANVAS FFTW3F LO TAGLIB XML '
469 obj.source += [ 'luadoc.cc', 'bundle_env_linux.cc' ]
470 if bld.is_defined('HAVE_SUIL'):
471 obj.source += [ 'lv2_plugin_ui.cc' ]
472 obj.use += [ 'SUIL' ]
473 if bld.is_defined('LXVST_SUPPORT'):
474 obj.source += [ 'vst_plugin_ui.cc' ]
475 obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
476 obj.defines += [ 'LXVST_SUPPORT' ]
480 if bld.is_defined('WINDOWS_VST_SUPPORT') and bld.env['build_target'] != 'mingw':
481 # Windows VST support w/wine
482 # If we require VST support we build a stub main() and the FST library
483 # here using winegcc, and link it to the GTK front-end library
484 obj = bld (features = 'cxx c cxxprogram wine')
485 obj.source = ( '../libs/fst/vstwin.c', '../vst/winmain.c' )
487 # XXX do we really need to explicitly link to all of these for the wine executable?
489 obj.use = [ 'libpbd',
500 obj.target = 'ardour-' + str (bld.env['VERSION']) + '-vst.exe.so'
501 obj.includes = [ '../libs/fst', '.' ]
502 obj.linkflags = ['-mwindows', '-Wl,--export-dynamic']
503 obj.linkflags += bld.env['LDFLAGS']
504 obj.defines = ['_POSIX_SOURCE', 'USE_WS_PREFIX']
505 obj.install_path = bld.env['DLLDIR']
506 # end of the wine executable
508 # now the shared library containing the GTK GUI for ardour
509 obj = bld (features = 'cxx c cxxshlib')
510 # operate on copy to avoid adding sources twice
511 obj.source = list(gtk2_ardour_sources)
512 obj.includes = [ '../libs/fst', '.' ]
513 obj.name = 'libgtk2_ardour'
514 obj.target = 'gtk2_ardour'
515 obj.cflags = [ '-fPIC' ]
518 # just the normal executable version of the GTK GUI
519 if bld.env['build_target'] == 'mingw':
520 obj = bld (features = 'cxx c cxxprogram winres')
522 obj = bld (features = 'cxx c cxxprogram')
523 # operate on copy to avoid adding sources twice
524 obj.source = list(gtk2_ardour_sources)
525 obj.target = 'ardour-' + str (bld.env['VERSION'])
527 obj.ldflags = ['-no-undefined']
529 if bld.is_defined('WINDOWS_VST_SUPPORT'):
530 # Windows VST support mingw
531 obj.includes += [ '../libs/fst' ]
533 # at this point, "obj" refers to either the normal native executable
534 # OR the shared library built for use with wine on linux.
536 obj.use = [ 'libpbd',
547 'PACKAGE="' + I18N_PACKAGE + '"',
548 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
549 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
550 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
552 obj.install_path = bld.env['DLLDIR']
554 obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL GTKMM CANVAS FFTW3F LO TAGLIB XML '
556 if sys.platform == 'darwin':
557 obj.uselib += ' AUDIOUNITS OSX '
558 obj.use += ' libappleutility'
559 obj.source += [ 'cocoacarbon.mm', 'bundle_env_cocoa.cc' ]
560 elif bld.env['build_target'] == 'mingw':
561 obj.source += [ 'bundle_env_mingw.cc' ]
562 obj.source += [ 'windows_icon.rc' ]
564 obj.source += [ 'bundle_env_linux.cc' ]
566 obj.includes += ['../libs']
568 obj.use += 'libptformat'
570 if bld.env['build_target'] == 'mingw':
571 obj.linkflags += ' -mwindows'
573 if bld.is_defined('HAVE_SUIL'):
574 obj.source += [ 'lv2_plugin_ui.cc' ]
575 obj.use += [ 'SUIL' ]
577 if bld.is_defined('HAVE_FFTW35F') and bld.env['build_target'] != 'mingw':
578 bld.env['LIB_FFTW3F'] += ['fftw3f_threads']
580 if bld.is_defined('NEED_INTL'):
581 obj.linkflags += ' -lintl'
583 if bld.is_defined('WINDOWS_VST_SUPPORT'):
584 obj.source += [ 'windows_vst_plugin_ui.cc' ]
585 obj.defines += [ 'WINDOWS_VST_SUPPORT' ]
586 if bld.env['build_target'] != 'mingw':
589 if bld.is_defined('LXVST_SUPPORT'):
590 obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
591 obj.defines += [ 'LXVST_SUPPORT' ]
594 if bld.is_defined('WINDOWS_VST_SUPPORT') or bld.is_defined('LXVST_SUPPORT'):
595 obj.source += [ 'vst_plugin_ui.cc' ]
597 if bld.is_defined('PHONE_HOME'):
598 obj.defines += [ 'PHONE_HOME' ]
600 if bld.is_defined('HAVE_COREAUDIO'):
601 TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
602 obj.use += ' libappleutility '
604 if bld.is_defined('AUDIOUNIT_SUPPORT'):
605 obj.source += [ 'au_pluginui.mm' ]
609 wrapper_subst_dict = {
610 'INSTALL_PREFIX' : bld.env['PREFIX'],
611 'LIBDIR' : os.path.normpath(bld.env['DLLDIR']),
612 'DATADIR' : os.path.normpath(bld.env['DATADIR']),
613 'CONFDIR' : os.path.normpath(bld.env['CONFDIR']),
614 'LIBS' : 'build/libs',
615 'VERSION' : str (bld.env['VERSION']),
616 'EXECUTABLE' : 'build/gtk2_ardour/ardour-' + str (bld.env['VERSION'])
619 def set_subst_dict(obj, dict):
621 setattr(obj, i, dict[i])
623 obj = bld(features = 'subst')
624 obj.source = 'ardev_common.sh.in'
625 obj.target = 'ardev_common_waf.sh'
626 obj.chmod = Utils.O755
627 obj.dict = wrapper_subst_dict
628 set_subst_dict(obj, wrapper_subst_dict)
630 obj = bld(features = 'subst')
631 obj.source = 'ardour.sh.in'
632 obj.target = 'ardour' + str (bld.env['MAJOR'])
633 obj.chmod = Utils.O755
634 obj.dict = wrapper_subst_dict
635 obj.install_path = bld.env['BINDIR']
636 set_subst_dict(obj, wrapper_subst_dict)
638 if bld.is_defined('WINDOWS_VST_SUPPORT'):
639 obj = bld(features = 'subst')
640 obj.source = '../vst/ardourvst.in'
641 obj.target = 'ardourvst' + str (bld.env['MAJOR'])
642 obj.chmod = Utils.O755
643 obj.dict = wrapper_subst_dict
644 obj.install_path = bld.env['BINDIR']
645 set_subst_dict(obj, wrapper_subst_dict)
654 if sys.platform == 'darwin':
668 # There is no acceptable monospace font available on older versions of OS X
669 # and no API on those versions to load TTF files that will work with
670 # GTK/fontconfig/pango.
672 # In addition, the ArdourMono font gets clipped for some reason on OS X
674 # Moreover, Lucida Grande just seems to work even though it is not monospace
678 'MONOSPACE' : 'Monaco',
679 'CLOCKFONT' : 'Lucida Grande',
681 else: # Linux/X11 fonts
682 basefont = '' # unspecified - use system defaults
695 'MONOSPACE' : 'ArdourMono',
696 'CLOCKFONT' : 'ArdourMono',
699 # Set up font substitution dictionary
701 for style in ['', 'BOLD', 'ITALIC']:
702 for sizename,points in iter(font_sizes.items()):
704 key = "_".join (['FONT',style,sizename])
705 fontstyle = " ".join ([basefont,style.lower(),points])
707 key = "_".join (['FONT',sizename])
708 fontstyle = " ".join ([basefont,points])
710 font_subst_dict[key] = fontstyle
713 for sizename,points in iter(font_sizes.items()):
714 key = "_".join (['FONT_SIZE',sizename])
715 font_subst_dict[key] = points
717 # various font names, eg @BOLD_MONOSPACE@
718 for font_sym,text in iter(font_names.items()):
720 font_subst_dict[key] = text
724 obj = bld(features = 'subst')
725 obj.source = [ 'clearlooks.rc.in' ]
726 obj.target = 'clearlooks.rc'
727 obj.install_path = bld.env['CONFDIR']
728 set_subst_dict(obj, font_subst_dict)
730 obj = bld(features = 'subst')
731 obj.source = [ 'default_ui_config.in' ]
732 obj.target = 'default_ui_config'
733 obj.install_path = bld.env['CONFDIR']
734 set_subst_dict(obj, font_subst_dict)
738 if sys.platform == 'darwin':
739 menus_argv = [ '-E', '-P', '-D__APPLE__', '-' ]
741 menus_argv = [ '-E', '-P' ]
743 if bld.is_defined('PTFORMAT'):
744 menus_argv += [ '-DPTFORMAT' ]
746 # always build all versions of the menu definitions
747 # so that we can try them out with different program builds.
748 for program in [ 'ardour', 'trx' ]:
749 obj = bld(features = 'command-output')
751 obj.command_is_external = True
753 obj.argv = menus_argv
754 obj.dep_vars = ['PTFORMAT', 'GTKOSX', 'WINDOWS']
755 obj.stdin = program + '.menus.in'
756 obj.stdout = program + '.menus'
757 bld.install_files (bld.env['CONFDIR'], program + '.menus')
760 freedesktop_subst_dict = {
761 'ARDOUR_EXEC' : str (bld.env['lwrcase_dirname']),
762 'ARDOUR_ICON' : str (bld.env['lwrcase_dirname']),
763 'VERSION': str (bld.env['VERSION']),
766 if bld.env['FREEDESKTOP']:
767 obj = bld(features = 'subst')
768 obj.source = 'ardour.desktop.in'
769 obj.target = str (bld.env['lwrcase_dirname']) + '.desktop'
770 obj.chmod = Utils.O644
771 obj.dict = freedesktop_subst_dict
772 set_subst_dict(obj, freedesktop_subst_dict)
774 obj = bld(features = 'subst')
775 obj.source = 'ardour-mime-info.xml'
776 obj.target = 'ardour.xml'
777 obj.chmod = Utils.O644
779 # build appdata with translations
781 appdata_i18n_xmlin(bld)
782 obj = bld(features = 'subst')
783 obj.source = 'ardour.appdata.xml.in'
784 obj.target = str (bld.env['lwrcase_dirname']) + '.appdata.xml'
785 obj.chmod = Utils.O644
786 obj.dict = freedesktop_subst_dict
787 set_subst_dict(obj, freedesktop_subst_dict)
791 # NATIVE ARDOUR BINDING FILES
792 # explicitly state the use of perl here so that it works on windows too
794 a_rule = 'perl ../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap ${SRC[0].abspath()} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] )
795 for b in [ 'ardour' ] :
797 target = b + '.keys',
798 source = [ b + '.keys.in', 'mixer.bindings', 'processor_box.bindings', 'step_editing.bindings', 'monitor.bindings' ],
801 obj.install_path = bld.env['CONFDIR']
804 bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), bld.path.ant_glob('icons/*.png'))
805 bld.install_files(bld.env['DATADIR'], 'ArdourMono.ttf')
807 # Application/Product specific resources (icon, splash)
808 pgmname = Options.options.program_name;
809 bld.install_files(os.path.join(bld.env['DATADIR'], 'resources'), bld.path.ant_glob('resources/' + pgmname + '*'))
811 if bld.env['build_target'] == 'mingw':
812 # These icons need to overwrite the files already installed in the icons
813 # directory above. Do this in the external packaging scripts for now.
814 #bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), bld.path.ant_glob('icons/cursor_square/*.png'))
815 bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), 'icons/cursor_square/hotspots')
817 # Default UI configuration
818 bld.install_files(bld.env['CONFDIR'], 'default_ui_config')
819 # Color Themes. Find each color file for this program, strip the program name
821 bld.install_files (os.path.join(bld.env['DATADIR'], 'themes'), bld.path.ant_glob ('themes/*-' + Options.options.program_name.lower() + '.colors'));
823 # Default export stuff
824 bld.install_files(os.path.join(bld.env['CONFDIR'], 'export'), bld.path.ant_glob('export/*.format'))
827 if bld.is_defined('ENABLE_NLS'):
828 mo_files = bld.path.ant_glob('po/*.mo')
830 lang = os.path.basename(mo.srcpath()).replace('.mo', '')
831 bld.install_as (os.path.join(os.path.normpath(bld.env['LOCALEDIR']), lang, 'LC_MESSAGES', I18N_PACKAGE + '.mo'),
835 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
836 autowaf.build_i18n(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
838 appdata_i18n_pot(bld)
842 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
843 autowaf.build_i18n_pot(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
845 appdata_i18n_pot(bld)
848 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
849 autowaf.build_i18n_po(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
854 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
855 autowaf.build_i18n_mo(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
858 def appdata_i18n_pot(bld):
859 potfile = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata',
860 'ardour.appdata.pot')
861 if bld.cmd == 'i18n_pot':
862 Logs.info('Generating pot file from Ardour appdata')
863 itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its')
864 adsource = os.path.join(bld.top_dir, 'gtk2_ardour',
865 'ardour.appdata.xml.in.in')
866 Logs.info('Updating ' + potfile)
867 subprocess.call(('itstool', '-i', itsfile, '-o', potfile, adsource))
868 elif bld.cmd == 'clean' and os.path.exists(potfile):
869 Logs.info('Removing Ardour appdata pot file')
872 def appdata_i18n_po(bld):
873 autowaf.build_i18n_po(bld, bld.top_dir, os.path.join(
874 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy')
876 def appdata_i18n_mo(bld):
877 autowaf.build_i18n_mo(bld, bld.top_dir, os.path.join(
878 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy')
880 def appdata_i18n_xmlin(bld):
881 adxmlinfile = os.path.join(bld.top_dir, 'gtk2_ardour',
882 'ardour.appdata.xml.in')
883 if bld.cmd == 'build':
884 itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its')
885 adxmlininfile = os.path.join(bld.top_dir, 'gtk2_ardour',
886 'ardour.appdata.xml.in.in')
887 mo_glob = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata', 'po', '*.mo')
888 mo_files = glob.glob(mo_glob)
889 Logs.info('Generating ' + adxmlinfile)
890 subprocess.call(['itstool', '-i', itsfile, '-o', adxmlinfile,
891 '-j', adxmlininfile] + mo_files)
892 elif bld.cmd == 'clean' and os.path.exists(adxmlinfile):
893 Logs.info('Removing ' + adxmlinfile)
894 os.remove(adxmlinfile)