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',
126 'insert_remove_time_dialog.cc',
127 'instrument_selector.cc',
128 'interthread_progress_window.cc',
137 'lua_script_manager.cc',
143 'midi_automation_line.cc',
144 'midi_channel_dialog.cc',
145 'midi_channel_selector.cc',
146 'midi_cut_buffer.cc',
147 'midi_export_dialog.cc',
148 'midi_list_editor.cc',
149 'midi_region_view.cc',
152 'midi_streamview.cc',
155 'midi_velocity_dialog.cc',
157 'missing_file_dialog.cc',
158 'missing_plugin_dialog.cc',
159 'mixer_group_tabs.cc',
165 'monitor_section.cc',
166 'monitor_selector.cc',
168 'mono_panner_editor.cc',
171 'new_plugin_preset_dialog.cc',
172 'normalize_dialog.cc',
176 'note_select_dialog.cc',
183 'panner_interface.cc',
186 'piano_roll_header.cc',
188 'playlist_selector.cc',
190 'plugin_pin_dialog.cc',
191 'plugin_setup_dialog.cc',
192 'plugin_selector.cc',
197 'port_matrix_body.cc',
198 'port_matrix_column_labels.cc',
199 'port_matrix_component.cc',
200 'port_matrix_grid.cc',
201 'port_matrix_labels.cc',
202 'port_matrix_row_labels.cc',
204 'patch_change_dialog.cc',
205 'progress_reporter.cc',
208 'quantize_dialog.cc',
209 'rc_option_editor.cc',
211 'region_gain_line.cc',
212 'region_layering_order_editor.cc',
213 'region_selection.cc',
217 'route_group_dialog.cc',
218 'route_group_menu.cc',
219 'route_params_ui.cc',
220 'route_processor_selection.cc',
221 'route_time_axis.cc',
225 'search_path_option.cc',
226 'script_selector.cc',
228 'selection_memento.cc',
230 'session_archive_dialog.cc',
232 'session_import_dialog.cc',
233 'session_metadata_dialog.cc',
234 'session_option_editor.cc',
236 'shuttle_control.cc',
237 'soundcloud_export_selector.cc',
244 'stereo_panner_editor.cc',
246 'strip_silence_dialog.cc',
247 'stripable_colorpicker.cc',
249 'tape_region_view.cc',
254 'time_axis_view_item.cc',
260 'track_selection.cc',
261 'track_view_list.cc',
262 'transform_dialog.cc',
263 'transpose_dialog.cc',
266 'vca_master_strip.cc',
268 'visibility_group.cc',
270 # video-timeline related sources:
271 'video_image_frame.cc',
272 'add_video_dialog.cc',
273 'editor_videotimeline.cc',
277 'transcode_ffmpeg.cc',
278 'transcode_video_dialog.cc',
279 'video_server_dialog.cc',
281 'export_video_dialog.cc',
282 'export_video_infobox.cc',
283 'video_tool_paths.cc'
286 def enoify (major, minor):
287 # Code names based on
288 # https://en.wikipedia.org/wiki/Brian_Eno_discography
290 # sort Studio albums + Collaborative albums + Compilation albums by Month/Year.
291 # (no Singles, no EPs, no Video Albums, no Production)
293 return "\\n\\\"E-No\\\""
296 return "\\n\\\"No Pussyfooting\\\""
298 return "\\n\\\"Here Come the Warm Jets\\\""
300 return "\\n\\\"Taking Tiger Mountain\\\""
302 return "\\n\\\"Lady June's Linguistic Leprosy\\\""
304 return "\\n\\\"Discreet Music\\\""
306 return "\\n\\\"Another Green World\\\""
308 return "\\n\\\"Evening Star\\\""
310 return "\\n\\\"Cluster and Eno\\\""
313 return "\\n\\\"Before and After Science\\\""
315 return "\\n\\\"After the Heat\\\""
317 return "\\n\\\"Music for Airports\\\""
319 return "\\n\\\"Music for Films\\\""
321 return "\\n\\\"In a Land of Clear Colours\\\""
323 return "\\n\\\"The Plateaux of Mirror\\\""
325 return "\\n\\\"Possible Musics\\\"" # 1980 Collaborative
327 return "\\n\\\"My Life in the Bush of Ghosts\\\"" # 1981
329 return "\\n\\\"Music for Airplay\\\"" # 1981 Compilation
331 return "\\n\\\"On Land\\\"" # 1982
332 elif minor == 10: # 6.0 ??
333 return "\\n\\\"Atmospheres and Soundtracks\\\"" # 1983
335 return "\\n\\\"More Music for Films\\\"" # 1983
337 return "\\n\\\"Working Backwards\\\"" # 1984 Compilation
339 return "\\n\\\"The Pearl\\\"" # 1984 Collaborative
341 return "\\n\\\"Begegnungen\\\"" # 1984 Compilation
345 autowaf.set_options(opt)
349 conf.load('compiler_cxx')
350 autowaf.configure(conf)
352 # TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
354 autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F',
356 autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW35F',
357 atleast_version='3.3.5', mandatory=False)
358 autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
359 atleast_version='1.2.1')
360 autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD',
361 atleast_version='2.10.1')
362 autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK',
363 atleast_version='2.18')
364 autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM',
365 atleast_version='2.18')
366 autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
367 autowaf.check_pkg(conf, 'x11', uselib_store='X11', atleast_version='1.1', mandatory=False)
368 autowaf.check_pkg(conf, 'pangoft2', uselib_store='PANGOFT2', atleast_version='1.36.8', mandatory=False)
369 autowaf.check_pkg(conf, 'fontconfig', uselib_store='FONTCONFIG')
372 if sys.platform == 'darwin':
373 retval = conf.run_c_code (code='#include <AppKit/NSWindow.h>\n\
374 int main(void) { (void) NSWindowWillStartLiveResizeNotification; return 0; }\n',
375 env = conf.env.derive (),
378 compile_filename='test.m',
383 autowaf.display_msg (conf, 'Checking for Cocoa live resizing constants', 'ok')
384 conf.define ('HAVE_COCOA_LIVE_RESIZING', 1)
386 autowaf.display_msg (conf, 'Checking for Cocoa live resizing constants', 'too old - AU plugin windows will be fixed size')
388 conf.write_config_header('gtk2ardour-config.h', remove=False)
390 bak = conf.env['define_key']
391 conf.define('VERSIONSTRING', str (conf.env['VERSION']))
392 conf.define('CODENAME', enoify(int(conf.env['MAJOR']), int(conf.env['MINOR'])))
393 conf.env['define_key'] = ['VERSIONSTRING', 'CODENAME' ]
394 conf.write_config_header('gtk2ardour-version.h')
395 conf.env['define_key'] = bak;
398 autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
399 autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
401 # Add a waf `feature' to allow compilation of things using winegcc
402 from waflib.TaskGen import feature
404 def set_winegcc(self):
405 self.env.LINK_CXX = self.env.LINK_CC = 'wineg++'
406 self.env.CC = 'winegcc'
408 def _doPyp(infileName, deps = False):
411 re_spaces = re.compile("\s+")
413 if infileName == '-':
416 fd = open(infileName)
417 inLines = fd.readlines()
423 bits = re_spaces.split(line)
424 if bits[0] == '##include':
429 # assume included file comes from same place as source file
430 incName = os.path.join (os.path.dirname (infileName), incName);
431 outStr += _doPyp(incName)
442 def include_processor(task):
443 infileName = task.inputs[0].srcpath()
444 outfileName = os.path.join(out, task.outputs[0].bldpath())
445 fdOut = open (outfileName, "w")
446 fdOut.write (_doPyp(infileName))
450 def build_color_scheme(path, prefix):
454 if re.search ('^#@color', line):
455 line.strip() # remove newline
457 if len(color_scheme):
459 color_scheme += prefix
461 color_scheme += words[1]
463 color_scheme += words[2]
469 VERSION = "%s.%s" % (bld.env['MAJOR'], bld.env['MINOR'])
470 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
472 # Tool to dump lua-bindings (of gtk2ardour + libs)
473 if re.search ("linux", sys.platform) != None and bld.env['LUABINDINGDOC']:
474 obj = bld (features = 'cxx c cxxprogram')
475 obj.install_path = None
476 obj.source = list(gtk2_ardour_sources)
477 obj.target = 'luadoc'
478 obj.includes = ['.', '../libs']
479 obj.ldflags = ['-no-undefined']
492 'PACKAGE="' + I18N_PACKAGE + '"',
493 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
494 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
495 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
498 obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL GTKMM CANVAS FFTW3F LO TAGLIB XML '
499 obj.source += [ 'luadoc.cc', 'bundle_env_linux.cc' ]
500 if bld.is_defined('HAVE_SUIL'):
501 obj.source += [ 'lv2_plugin_ui.cc' ]
502 obj.use += [ 'SUIL' ]
503 if bld.is_defined('LXVST_SUPPORT'):
504 obj.source += [ 'vst_plugin_ui.cc' ]
505 obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
506 obj.defines += [ 'LXVST_SUPPORT' ]
509 # Tool to test libcanvas
510 if re.search ("linux", sys.platform) != None and bld.env['CANVASTESTUI']:
511 obj = bld (features = 'cxx c cxxprogram')
512 obj.install_path = None
513 obj.source = list(gtk2_ardour_sources)
514 obj.source = [ 'ardour_button.cc', 'ui_config.cc', 'tooltips.cc' ]
515 obj.target = 'canvas_test'
516 obj.includes = ['.', '../libs']
517 obj.ldflags = ['-no-undefined']
530 'PACKAGE="' + I18N_PACKAGE + '"',
531 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
532 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
533 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
536 obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL GTKMM CANVAS FFTW3F LO TAGLIB XML '
537 # obj.source += [ 'canvas_test.cc', ]
538 obj.source += [ 'toolbar_test.cc', 'enums.cc']
541 if bld.is_defined('WINDOWS_VST_SUPPORT') and bld.env['build_target'] != 'mingw':
542 # Windows VST support w/wine
543 # If we require VST support we build a stub main() and the FST library
544 # here using winegcc, and link it to the GTK front-end library
545 obj = bld (features = 'cxx c cxxprogram wine')
546 obj.source = ( '../libs/fst/vstwin.c', '../vst/winmain.c' )
548 # XXX do we really need to explicitly link to all of these for the wine executable?
550 obj.use = [ 'libpbd',
561 obj.target = 'ardour-' + str (bld.env['VERSION']) + '-vst.exe.so'
562 obj.includes = [ '../libs/fst', '.' ]
563 obj.linkflags = ['-mwindows', '-Wl,--export-dynamic']
564 obj.linkflags += bld.env['LDFLAGS']
565 obj.defines = ['_POSIX_SOURCE', 'USE_WS_PREFIX']
566 obj.install_path = bld.env['DLLDIR']
567 # end of the wine executable
569 # now the shared library containing the GTK GUI for ardour
570 obj = bld (features = 'cxx c cxxshlib')
571 # operate on copy to avoid adding sources twice
572 obj.source = list(gtk2_ardour_sources)
573 obj.includes = [ '../libs/fst', '.' ]
574 obj.name = 'libgtk2_ardour'
575 obj.target = 'gtk2_ardour'
576 obj.cflags = [ '-fPIC' ]
579 # just the normal executable version of the GTK GUI
580 if bld.env['build_target'] == 'mingw':
581 obj = bld (features = 'cxx c cxxprogram winres')
583 obj = bld (features = 'cxx c cxxprogram')
584 # operate on copy to avoid adding sources twice
585 obj.source = list(gtk2_ardour_sources)
586 obj.target = 'ardour-' + str (bld.env['VERSION'])
588 obj.ldflags = ['-no-undefined']
590 if bld.is_defined('WINDOWS_VST_SUPPORT'):
591 # Windows VST support mingw
592 obj.includes += [ '../libs/fst' ]
594 # at this point, "obj" refers to either the normal native executable
595 # OR the shared library built for use with wine on linux.
597 obj.use = [ 'libpbd',
608 'PACKAGE="' + I18N_PACKAGE + '"',
609 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
610 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
611 'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
613 obj.install_path = bld.env['DLLDIR']
615 obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL GTKMM CANVAS FFTW3F LO TAGLIB XML '
617 if sys.platform == 'darwin':
618 obj.uselib += ' AUDIOUNITS OSX '
619 obj.use += ' libappleutility'
620 obj.source += [ 'cocoacarbon.mm', 'bundle_env_cocoa.cc' ]
621 elif bld.env['build_target'] == 'mingw':
622 obj.source += [ 'bundle_env_mingw.cc' ]
623 obj.source += [ 'windows_icon.rc' ]
625 obj.source += [ 'bundle_env_linux.cc' ]
627 obj.includes += ['../libs']
629 obj.use += 'libptformat'
631 if bld.env['build_target'] == 'mingw':
632 obj.linkflags += ' -mwindows'
633 obj.use += [ 'PANGOFT2' ]
635 if bld.is_defined('HAVE_SUIL'):
636 obj.source += [ 'lv2_plugin_ui.cc' ]
637 obj.use += [ 'SUIL' ]
639 if bld.is_defined('HAVE_FFTW35F') and bld.env['build_target'] != 'mingw':
640 bld.env['LIB_FFTW3F'] += ['fftw3f_threads']
642 if bld.is_defined('NEED_INTL'):
643 obj.linkflags += ' -lintl'
645 if bld.is_defined('WINDOWS_VST_SUPPORT'):
646 obj.source += [ 'windows_vst_plugin_ui.cc' ]
647 obj.defines += [ 'WINDOWS_VST_SUPPORT' ]
648 if bld.env['build_target'] != 'mingw':
651 if bld.is_defined('LXVST_SUPPORT'):
652 obj.source += [ 'linux_vst_gui_support.cc', 'lxvst_plugin_ui.cc' ]
653 obj.defines += [ 'LXVST_SUPPORT' ]
656 if bld.is_defined('MACVST_SUPPORT'):
657 obj.source += [ 'mac_vst_plugin_ui.mm' ]
658 obj.defines += [ 'MACVST_SUPPORT' ]
660 if bld.is_defined('WINDOWS_VST_SUPPORT') or bld.is_defined('LXVST_SUPPORT') or bld.is_defined ('MACVST_SUPPORT'):
661 obj.source += [ 'vst_plugin_ui.cc' ]
663 if bld.is_defined('PHONE_HOME'):
664 obj.defines += [ 'PHONE_HOME' ]
666 if bld.is_defined('HAVE_COREAUDIO'):
667 TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc']
668 obj.use += ' libappleutility '
670 if bld.is_defined('AUDIOUNIT_SUPPORT'):
671 obj.source += [ 'au_pluginui.mm' ]
675 wrapper_subst_dict = {
676 'INSTALL_PREFIX' : bld.env['PREFIX'],
677 'LIBDIR' : os.path.normpath(bld.env['DLLDIR']),
678 'DATADIR' : os.path.normpath(bld.env['DATADIR']),
679 'CONFDIR' : os.path.normpath(bld.env['CONFDIR']),
680 'LIBS' : 'build/libs',
681 'VERSION' : str (bld.env['VERSION']),
682 'EXECUTABLE' : 'build/gtk2_ardour/ardour-' + str (bld.env['VERSION'])
685 def set_subst_dict(obj, dict):
687 setattr(obj, i, dict[i])
689 obj = bld(features = 'subst')
690 obj.source = 'ardev_common.sh.in'
691 obj.target = 'ardev_common_waf.sh'
692 obj.chmod = Utils.O755
693 obj.dict = wrapper_subst_dict
694 set_subst_dict(obj, wrapper_subst_dict)
696 obj = bld(features = 'subst')
697 obj.source = 'ardour.sh.in'
698 obj.target = 'ardour' + str (bld.env['MAJOR'])
699 obj.chmod = Utils.O755
700 obj.dict = wrapper_subst_dict
701 obj.install_path = bld.env['BINDIR']
702 set_subst_dict(obj, wrapper_subst_dict)
704 if bld.is_defined('WINDOWS_VST_SUPPORT'):
705 obj = bld(features = 'subst')
706 obj.source = '../vst/ardourvst.in'
707 obj.target = 'ardourvst' + str (bld.env['MAJOR'])
708 obj.chmod = Utils.O755
709 obj.dict = wrapper_subst_dict
710 obj.install_path = bld.env['BINDIR']
711 set_subst_dict(obj, wrapper_subst_dict)
720 if sys.platform == 'darwin':
734 # There is no acceptable monospace font available on older versions of OS X
735 # and no API on those versions to load TTF files that will work with
736 # GTK/fontconfig/pango.
738 # In addition, the ArdourMono font gets clipped for some reason on OS X
740 # Moreover, Lucida Grande just seems to work even though it is not monospace
744 'MONOSPACE' : 'Monaco',
745 'CLOCKFONT' : 'Lucida Grande',
747 else: # Linux/X11 fonts
748 basefont = '' # unspecified - use system defaults
761 'MONOSPACE' : 'ArdourMono',
762 'CLOCKFONT' : 'ArdourMono',
765 # Set up font substitution dictionary
767 for style in ['', 'BOLD', 'ITALIC']:
768 for sizename,points in iter(font_sizes.items()):
770 key = "_".join (['FONT',style,sizename])
771 fontstyle = " ".join ([basefont,style.lower(),points])
773 key = "_".join (['FONT',sizename])
774 fontstyle = " ".join ([basefont,points])
776 font_subst_dict[key] = fontstyle
779 for sizename,points in iter(font_sizes.items()):
780 key = "_".join (['FONT_SIZE',sizename])
781 font_subst_dict[key] = points
783 # various font names, eg @BOLD_MONOSPACE@
784 for font_sym,text in iter(font_names.items()):
786 font_subst_dict[key] = text
790 obj = bld(features = 'subst')
791 obj.source = [ 'clearlooks.rc.in' ]
792 obj.target = 'clearlooks.rc'
793 obj.install_path = bld.env['CONFDIR']
794 set_subst_dict(obj, font_subst_dict)
796 obj = bld(features = 'subst')
797 obj.source = [ 'default_ui_config.in' ]
798 obj.target = 'default_ui_config'
799 obj.install_path = bld.env['CONFDIR']
800 set_subst_dict(obj, font_subst_dict)
804 if sys.platform == 'darwin':
805 menus_argv = [ '-E', '-P', '-D__APPLE__', '-' ]
807 menus_argv = [ '-E', '-P' ]
809 if bld.is_defined('PTFORMAT'):
810 menus_argv += [ '-DPTFORMAT' ]
812 # always build all versions of the menu definitions
813 # so that we can try them out with different program builds.
814 for program in [ 'ardour', 'trx' ]:
815 obj = bld(features = 'command-output')
817 obj.command_is_external = True
819 obj.argv = menus_argv
820 obj.dep_vars = ['PTFORMAT', 'GTKOSX', 'WINDOWS']
821 obj.stdin = program + '.menus.in'
822 obj.stdout = program + '.menus'
823 bld.install_files (bld.env['CONFDIR'], program + '.menus')
826 freedesktop_subst_dict = {
827 'ARDOUR_EXEC' : str (bld.env['lwrcase_dirname']),
828 'ARDOUR_ICON' : str (bld.env['lwrcase_dirname']),
829 'VERSION': str (bld.env['VERSION']),
832 if bld.env['FREEDESKTOP']:
833 obj = bld(features = 'subst')
834 obj.source = 'ardour.desktop.in'
835 obj.target = str (bld.env['lwrcase_dirname']) + '.desktop'
836 obj.chmod = Utils.O644
837 obj.dict = freedesktop_subst_dict
838 set_subst_dict(obj, freedesktop_subst_dict)
840 obj = bld(features = 'subst')
841 obj.source = 'ardour-mime-info.xml'
842 obj.target = 'ardour.xml'
843 obj.chmod = Utils.O644
845 # build appdata with translations
847 appdata_i18n_xmlin(bld)
848 obj = bld(features = 'subst')
849 obj.source = 'ardour.appdata.xml.in'
850 obj.target = str (bld.env['lwrcase_dirname']) + '.appdata.xml'
851 obj.chmod = Utils.O644
852 obj.dict = freedesktop_subst_dict
853 set_subst_dict(obj, freedesktop_subst_dict)
857 # NATIVE ARDOUR BINDING FILES
858 # explicitly state the use of perl here so that it works on windows too
860 a_rule = 'perl ../tools/fmt-bindings --platform="%s" --winkey="%s" --accelmap ${SRC[0].abspath()} >${TGT}' % (sys.platform, bld.env['WINDOWS_KEY'] )
861 for b in [ 'ardour' ] :
863 target = b + '.keys',
864 source = [ b + '.keys.in', 'mixer.bindings', 'processor_box.bindings', 'step_editing.bindings', 'monitor.bindings' ],
867 obj.install_path = bld.env['CONFDIR']
870 bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), bld.path.ant_glob('icons/*.png'))
871 bld.install_files(bld.env['DATADIR'], 'ArdourMono.ttf')
873 # Application/Product specific resources (icon, splash)
874 pgmname = bld.env['PROGRAM_NAME']
875 bld.install_files(os.path.join(bld.env['DATADIR'], 'resources'), bld.path.ant_glob('resources/' + pgmname + '*'))
877 if bld.env['build_target'] == 'mingw':
878 # These icons need to overwrite the files already installed in the icons
879 # directory above. Do this in the external packaging scripts for now.
880 #bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), bld.path.ant_glob('icons/cursor_square/*.png'))
881 bld.install_files(os.path.join (bld.env['DATADIR'], 'icons'), 'icons/cursor_square/hotspots')
883 # Default UI configuration
884 bld.install_files(bld.env['CONFDIR'], 'default_ui_config')
885 # Color Themes. Find each color file for this program only
887 bld.install_files (os.path.join(bld.env['DATADIR'], 'themes'), bld.path.ant_glob ('themes/*-' + pgmname.lower() + '.colors'));
889 # Default export stuff
890 bld.install_files(os.path.join(bld.env['CONFDIR'], 'export'), bld.path.ant_glob('export/*.format'))
893 if bld.is_defined('ENABLE_NLS'):
894 mo_files = bld.path.ant_glob('po/*.mo')
896 lang = os.path.basename(mo.srcpath()).replace('.mo', '')
897 bld.install_as (os.path.join(os.path.normpath(bld.env['LOCALEDIR']), lang, 'LC_MESSAGES', I18N_PACKAGE + '.mo'),
901 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
902 autowaf.build_i18n(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
904 appdata_i18n_pot(bld)
908 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
909 autowaf.build_i18n_pot(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
911 appdata_i18n_pot(bld)
914 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
915 autowaf.build_i18n_po(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
920 I18N_PACKAGE = 'gtk2_ardour' + bld.env['MAJOR']
921 autowaf.build_i18n_mo(bld, top, 'gtk2_ardour', I18N_PACKAGE, gtk2_ardour_sources,
924 def appdata_i18n_pot(bld):
925 potfile = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata',
926 'ardour.appdata.pot')
927 if bld.cmd == 'i18n_pot':
928 Logs.info('Generating pot file from Ardour appdata')
929 itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its')
930 adsource = os.path.join(bld.top_dir, 'gtk2_ardour',
931 'ardour.appdata.xml.in.in')
932 Logs.info('Updating ' + potfile)
934 subprocess.call(('itstool', '-i', itsfile, '-o', potfile, adsource))
936 print ('Error processing appdata pot file - ignored')
937 elif bld.cmd == 'clean' and os.path.exists(potfile):
938 Logs.info('Removing Ardour appdata pot file')
941 def appdata_i18n_po(bld):
942 autowaf.build_i18n_po(bld, bld.top_dir, os.path.join(
943 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy')
945 def appdata_i18n_mo(bld):
946 autowaf.build_i18n_mo(bld, bld.top_dir, os.path.join(
947 'gtk2_ardour', 'appdata'), 'ardour.appdata', 'dummy', 'dummy')
949 def appdata_i18n_xmlin(bld):
950 adxmlinfile = os.path.join(bld.top_dir, 'gtk2_ardour',
951 'ardour.appdata.xml.in')
952 if bld.cmd == 'build':
953 itsfile = os.path.join(bld.top_dir, 'tools', 'as-metainfo.its')
954 adxmlininfile = os.path.join(bld.top_dir, 'gtk2_ardour',
955 'ardour.appdata.xml.in.in')
956 mo_glob = os.path.join(bld.top_dir, 'gtk2_ardour', 'appdata', 'po', '*.mo')
957 mo_files = glob.glob(mo_glob)
958 Logs.info('Generating ' + adxmlinfile)
959 subprocess.call(['itstool', '-i', itsfile, '-o', adxmlinfile,
960 '-j', adxmlininfile] + mo_files)
961 elif bld.cmd == 'clean' and os.path.exists(adxmlinfile):
962 Logs.info('Removing ' + adxmlinfile)
963 os.remove(adxmlinfile)