#
-# Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
+# Copyright (C) 2012-2022 Carl Hetherington <cth@carlh.net>
#
# This file is part of DCP-o-matic.
#
audio_mapping_view.cc
audio_panel.cc
audio_plot.cc
+ auto_crop_dialog.cc
barco_alchemy_certificate_panel.cc
batch_job_view.cc
- subtitle_appearance_dialog.cc
- text_panel.cc
- text_view.cc
+ check_box.cc
christie_certificate_panel.cc
cinema_dialog.cc
- cinema_player_dialog.cc
+ closed_captions_dialog.cc
colour_conversion_editor.cc
config_dialog.cc
config_move_dialog.cc
confirm_kdm_email_dialog.cc
+ content_advanced_dialog.cc
content_colour_conversion_dialog.cc
content_menu.cc
content_panel.cc
content_properties_dialog.cc
content_sub_panel.cc
+ content_version_dialog.cc
+ content_view.cc
controls.cc
- closed_captions_dialog.cc
+ credentials_download_certificate_panel.cc
+ custom_scale_dialog.cc
dcp_panel.cc
- email_dialog.cc
- image_sequence_dialog.cc
- isdcf_metadata_dialog.cc
dcp_text_track_dialog.cc
+ dcpomatic_button.cc
+ dcpomatic_choice.cc
+ dcpomatic_spin_ctrl.cc
dir_picker_ctrl.cc
+ disk_warning_dialog.cc
+ dkdm_dialog.cc
+ dkdm_output_panel.cc
dolby_doremi_certificate_panel.cc
download_certificate_dialog.cc
download_certificate_panel.cc
- export_dialog.cc
+ drive_wipe_warning_dialog.cc
+ email_dialog.cc
+ export_subtitles_dialog.cc
+ export_video_file_dialog.cc
+ extra_kdm_email_dialog.cc
+ file_dialog.cc
file_picker_ctrl.cc
film_editor.cc
film_name_location_dialog.cc
film_viewer.cc
filter_dialog.cc
- filter_editor.cc
focus_manager.cc
fonts_dialog.cc
- font_files_dialog.cc
full_config_dialog.cc
+ full_language_tag_dialog.cc
gain_calculator_dialog.cc
gdc_certificate_panel.cc
+ gl_video_view.cc
hints_dialog.cc
- initial_setup_dialog.cc
+ html_dialog.cc
+ i18n_hook.cc
+ image_sequence_dialog.cc
+ instant_i18n_dialog.cc
+ interop_metadata_dialog.cc
+ job_manager_view.cc
job_view.cc
job_view_dialog.cc
- job_manager_view.cc
kdm_advanced_dialog.cc
kdm_cpl_panel.cc
kdm_dialog.cc
kdm_output_panel.cc
kdm_timing_panel.cc
- key_dialog.cc
+ language_subtag_panel.cc
+ language_tag_dialog.cc
+ language_tag_widget.cc
+ kdm_choice.cc
make_chain_dialog.cc
+ markers.cc
+ markers_dialog.cc
+ markers_panel.cc
message_dialog.cc
+ metadata_dialog.cc
move_to_dialog.cc
nag_dialog.cc
name_format_editor.cc
new_dkdm_folder_dialog.cc
normal_job_view.cc
paste_dialog.cc
+ password_entry.cc
player_config_dialog.cc
player_information.cc
+ player_stress_tester.cc
playhead_to_timecode_dialog.cc
playhead_to_frame_dialog.cc
+ playlist_controls.cc
+ playlist_editor_config_dialog.cc
question_dialog.cc
+ rating_dialog.cc
+ qube_certificate_panel.cc
+ recipients_panel.cc
+ recipient_dialog.cc
recreate_chain_dialog.cc
+ region_subtag_dialog.cc
+ region_subtag_widget.cc
repeat_dialog.cc
report_problem_dialog.cc
rename_template_dialog.cc
screen_dialog.cc
screens_panel.cc
self_dkdm_dialog.cc
+ send_i18n_dialog.cc
+ send_test_email_dialog.cc
server_dialog.cc
servers_list_dialog.cc
+ simple_video_view.cc
+ smpte_metadata_dialog.cc
+ standard_controls.cc
+ static_text.cc
+ subtag_list_ctrl.cc
+ subtitle_appearance_dialog.cc
+ suspender.cc
system_font_dialog.cc
+ system_information_dialog.cc
table_dialog.cc
templates_dialog.cc
+ text_panel.cc
+ text_view.cc
time_picker.cc
+ timer_display.cc
timecode.cc
timeline.cc
timeline_atmos_content_view.cc
timeline_video_content_view.cc
timeline_view.cc
timing_panel.cc
+ try_unmount_dialog.cc
update_dialog.cc
verify_dcp_dialog.cc
+ verify_dcp_progress_dialog.cc
video_panel.cc
+ video_view.cc
video_waveform_dialog.cc
video_waveform_plot.cc
wx_util.cc
"""
def configure(conf):
- try:
- wx_config = '/usr/lib64/wx/config/gtk2-unicode-3.0'
- conf.check_cfg(msg='Checking for wxWidgets using gtk2-unicode-3.0',
+
+ wx_libs = 'core,richtext,adv,html,xml,propgrid'
+
+ if conf.options.wx_config is not None:
+ wx_config = conf.options.wx_config
+ conf.check_cfg(msg='Checking for wxWidgets using %s' % wx_config,
package='',
path=wx_config,
- args='--cppflags --cxxflags --libs std,richtext',
+ args='--cppflags --cxxflags --libs %s --gl-libs' % wx_libs,
uselib_store='WXWIDGETS',
mandatory=True)
- except:
+ else:
try:
- wx_config = 'wx-config-3.0-gtk2'
- conf.check_cfg(msg='Checking for wxWidgets using wx-config-3.0-gtk2',
+ wx_config = '/usr/lib64/wx/config/gtk2-unicode-3.0'
+ conf.check_cfg(msg='Checking for wxWidgets using gtk2-unicode-3.0',
package='',
path=wx_config,
- args='--cppflags --cxxflags --libs std,richtext',
+ args='--cppflags --cxxflags --libs %s --gl-libs' % wx_libs,
uselib_store='WXWIDGETS',
mandatory=True)
except:
- wx_config = 'wx-config'
- conf.check_cfg(msg='Checking for wxWidgets using wx-config',
- package='',
- path=wx_config,
- args='--cppflags --cxxflags --libs std,richtext',
- uselib_store='WXWIDGETS',
- mandatory=True)
+ try:
+ wx_config = 'wx-config-3.0-gtk2'
+ conf.check_cfg(msg='Checking for wxWidgets using wx-config-3.0-gtk2',
+ package='',
+ path=wx_config,
+ args='--cppflags --cxxflags --libs %s --gl-libs' % wx_libs,
+ uselib_store='WXWIDGETS',
+ mandatory=True)
+ except:
+ wx_config = 'wx-config'
+ conf.check_cfg(msg='Checking for wxWidgets using wx-config',
+ package='',
+ path=wx_config,
+ args='--cppflags --cxxflags --libs %s --gl-libs' % wx_libs,
+ uselib_store='WXWIDGETS',
+ mandatory=True)
+
+ if conf.env.TARGET_LINUX:
+ conf.env.append_value('CXXFLAGS', ['-DGL_GLEXT_PROTOTYPES', '-DGLX_GLXEXT_PROTOTYPES'])
+ if conf.env.TARGET_WINDOWS_64 or conf.env.TARGET_WINDOWS_32:
+ conf.env.append_value('CXXFLAGS', ['-DWGL_WGLEXT_PROTOTYPES'])
+ conf.env.append_value('CXXFLAGS', ['-DwxNO_UNSAFE_WXSTRING_CONV'])
if conf.options.static_wxwidgets:
- # wx-config returns its static libraries as full paths, without -l prefixes, which confuses
+ # wx-config returns its static libraries as full paths, without -l prefixes, which confuses
# check_cfg(). It puts the static libraries into LINKFLAGS_WXWIDGETS, so fish them out.
stlibs = []
new_linkflags = []
conf.in_msg = 1
wx_version = conf.check_cfg(package='wxwidgets', path=wx_config, args='--version').strip()
- conf.im_msg = 0
- if not wx_version.startswith('3.0.'):
- conf.fatal('wxwidgets version 3.0.x is required; %s found' % wx_version)
+ conf.in_msg = 0
+ if not wx_version.startswith('3.'):
+ conf.fatal('wxwidgets version 3.x.y is required; %s found' % wx_version)
+
+ config = conf.check_cfg(package='wxwidgets', path=wx_config, args='--selected-config').strip()
+ if config.find('gtk2') != -1:
+ conf.check_cfg(package='gtk+-2.0', args='--cflags --libs', uselib_store='GTK', mandatory=True)
try:
conf.check_cfg(msg='Checking for RtAudio using pkg-config',
# Some rtaudio-configs don't include rtaudio as a link library. Go figure.
conf.env.LIB_RTAUDIO.append('rtaudio')
- # Don't explicitly link with pthread on Windows
- if conf.env.TARGET_WINDOWS:
+ if conf.env.TARGET_WINDOWS_64 or conf.env.TARGET_WINDOWS_32:
+ # Don't explicitly link with pthread on Windows
conf.env.CFLAGS_RTAUDIO.remove('-pthread')
conf.env.LINKFLAGS_RTAUDIO.remove('-pthread')
+ # We need some libraries for WASAPI
+ conf.env.LIB_RTAUDIO.append('mfplat')
+ conf.env.LIB_RTAUDIO.append('mfuuid')
+ conf.env.LIB_RTAUDIO.append('wmcodecdspuuid')
- conf.check_cxx(fragment="""
- #include <RtAudio.h>\n
- int main() { throw RtError("Hello"); }
- """,
- msg='Checking for RtError class',
- libpath='/usr/local/lib',
- lib=['rtaudio'],
- uselib_store='',
- define_name='DCPOMATIC_USE_RTERROR',
- mandatory=False)
+ if conf.env.TARGET_WINDOWS_64 or conf.env.TARGET_WINDOWS_32 or conf.env.TARGET_LINUX:
+ conf.check_cfg(package='gl', args='--cflags --libs', uselib_store='GL', mandatory=True)
+ conf.check_cfg(package='glu', args='--cflags --libs', uselib_store='GLU', mandatory=True)
+ if conf.env.TARGET_WINDOWS_64 or conf.env.TARGET_WINDOWS_32:
+ conf.check_cfg(package='glew', args='--cflags --libs', uselib_store='GLEW', mandatory=True)
+ else:
+ conf.env.STLIB_GL = 'gl'
+ conf.env.STLIB_GLU = 'glu'
+ if conf.env.TARGET_LINUX:
+ conf.check_cxx(fragment="""
+ #include <wx/glcanvas.h>
+ #include <GL/glu.h>
+ #include <GL/glext.h>
+ #include <GL/glxext.h>
+ int main() {
+ glXSwapIntervalEXT (0, 0, 1);
+ return 0;
+ }
+ """,
+ msg='Checking for glXSwapIntervalEXT',
+ okmsg='yes',
+ uselib='GL WXWIDGETS',
+ define_name='DCPOMATIC_HAVE_GLX_SWAP_INTERVAL_EXT',
+ mandatory=False)
def build(bld):
obj.name = 'libdcpomatic2-wx'
obj.export_includes = ['..']
- obj.uselib = 'BOOST_FILESYSTEM BOOST_THREAD BOOST_REGEX WXWIDGETS DCP SUB ZIP CXML RTAUDIO '
+ obj.uselib = 'BOOST_FILESYSTEM BOOST_THREAD BOOST_REGEX WXWIDGETS DCP SUB ZIP CXML RTAUDIO ICU '
if bld.env.TARGET_LINUX:
- obj.uselib += 'GTK '
- if bld.env.TARGET_WINDOWS:
- obj.uselib += 'WINSOCK2 OLE32 DSOUND WINMM KSUSER '
+ obj.uselib += 'GTK GL GLU '
+ if bld.env.TARGET_WINDOWS_64 or bld.env.TARGET_WINDOWS_32:
+ obj.uselib += 'WINSOCK2 OLE32 DSOUND WINMM KSUSER GL GLU GLEW '
if bld.env.TARGET_OSX:
- obj.framework = ['CoreAudio']
+ obj.framework = ['CoreAudio', 'OpenGL']
obj.use = 'libdcpomatic2'
obj.source = sources
obj.target = 'dcpomatic2-wx'