X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2FSConscript;h=bc3b16d0678b19e8313949ec35477767ee3c4995;hb=a4c116ec07eefeb113a2087c2091b7090e0036ec;hp=e9b38e75c20256415ed6e071304edfc4420e8bce;hpb=8af0757b61990767f2a85e68f535a5af9976fd79;p=ardour.git diff --git a/libs/ardour/SConscript b/libs/ardour/SConscript index e9b38e75c2..bc3b16d067 100644 --- a/libs/ardour/SConscript +++ b/libs/ardour/SConscript @@ -1,6 +1,7 @@ # -*- python -*- import os +import os.path import glob Import('env final_prefix install_prefix final_config_prefix libraries i18n') @@ -13,30 +14,42 @@ ardour = env.Copy() domain = 'libardour' -ardour.Append(DOMAIN = domain, MAJOR = 1, MINOR = 0, MICRO = 0) +ardour.Append(DOMAIN = domain, MAJOR = 2, MINOR = 0, MICRO = 0) ardour.Append(CXXFLAGS = "-DPACKAGE=\\\"" + domain + "\\\"") -ardour.Append(CCFLAGS="-DLIBSIGC_DISABLE_DEPRECATED") +ardour.Append(CXXFLAGS="-DLIBSIGC_DISABLE_DEPRECATED") +ardour.Append(CXXFLAGS="-DGLIBMM_DISABLE_DEPRECATED") ardour.Append(PACKAGE = domain) ardour.Append(POTFILE = domain + '.pot') +# +# explicitly reference the control protocol LGPL library for includes +# + +ardour.Append(CPPPATH = '#libs/surfaces/control_protocol') + ardour_files=Split(""" +diskstream.cc +audio_diskstream.cc audio_library.cc audio_playlist.cc +track.cc audio_track.cc audioengine.cc +audiofilesource.cc audiofilter.cc audioregion.cc +audiosource.cc auditioner.cc automation.cc automation_event.cc configuration.cc connection.cc +control_protocol_manager.cc crossfade.cc curve.cc cycle_timer.cc default_click.cc -diskstream.cc -filesource.cc +enums.cc gain.cc gdither.cc globals.cc @@ -49,6 +62,7 @@ location.cc mtc_slave.cc named_selection.cc panner.cc +pcm_utils.cc playlist.cc playlist_factory.cc plugin.cc @@ -57,6 +71,7 @@ port.cc recent_sessions.cc redirect.cc region.cc +region_factory.cc reverse.cc route.cc route_group.cc @@ -64,9 +79,9 @@ send.cc session.cc session_butler.cc session_click.cc +session_command.cc session_events.cc session_export.cc -session_feedback.cc session_midi.cc session_process.cc session_state.cc @@ -76,8 +91,7 @@ session_transport.cc sndfile_helpers.cc sndfilesource.cc source.cc -state_manager.cc -stateful.cc +source_factory.cc tempo.cc utils.cc version.cc @@ -86,16 +100,24 @@ mix.cc arch_specific_objects = [ ] +osc_files = [ 'osc.cc' ] vst_files = [ 'vst_plugin.cc', 'session_vst.cc' ] +audiounit_files = [ 'audio_unit.cc' ] +coreaudio_files = [ 'coreaudiosource.cc' ] extra_sources = [ ] if ardour['VST']: extra_sources += vst_files + ardour.Append(CCFLAGS="-DVST_SUPPORT", CPPPATH="#libs/fst") + +if ardour['LIBLO']: + extra_sources += osc_files ardour.Append(CCFLAGS="-D_REENTRANT -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE") -ardour.Append(CXXFLAGS="-DDATA_DIR=\\\""+final_prefix+"/share\\\"") -ardour.Append(CXXFLAGS="-DCONFIG_DIR=\\\""+final_config_prefix+"\\\"") -ardour.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"") +ardour.Append(CXXFLAGS="-DDATA_DIR=\\\"" + os.path.join (final_prefix, 'share') + "\\\"") +ardour.Append(CXXFLAGS="-DMODULE_DIR=\\\"" + os.path.join (final_prefix, env['LIBDIR']) + "\\\"") +ardour.Append(CXXFLAGS="-DCONFIG_DIR=\\\"" + final_config_prefix + "\\\"") +ardour.Append(CXXFLAGS="-DLOCALEDIR=\\\"" + os.path.join (final_prefix, 'share', 'locale') + "\\\"") ardour.Merge ([ libraries['jack'] ]) @@ -135,17 +157,64 @@ def CheckJackRecomputeLatencies(context): context.Result(result) return result +jack_video_frame_offset_test = """ +#include +int main(int argc, char** argv) +{ + jack_position_t pos; + + pos.valid & JackVideoFrameOffset; + return 0; +} +""" +def CheckJackVideoFrameOffset(context): + context.Message('Checking for JackVideoFrameOffset in jack_position_bits_t enum...') + result = context.TryLink(jack_video_frame_offset_test, '.c') + context.Result(result) + return result + +# +# See if JACK supports jack_port_ensure_monitor_input() +# +jack_ensure_monitor_input_test = """ +#include +int main(int argc, char** argv) +{ + jack_port_t **port; + + jack_port_ensure_monitor (*port, 1); + return 0; + +} +""" + +def CheckJackEnsureMonitorInput(context): + context.Message('Checking for jack_port_ensure_monitor_input()...') + result = context.TryLink(jack_ensure_monitor_input_test, '.c') + context.Result(result) + return result + conf = Configure(ardour, custom_tests = { 'CheckJackClientOpen' : CheckJackClientOpen, - 'CheckJackRecomputeLatencies' : CheckJackRecomputeLatencies + 'CheckJackRecomputeLatencies' : CheckJackRecomputeLatencies, + 'CheckJackVideoFrameOffset' : CheckJackVideoFrameOffset, + 'CheckJackEnsureMonitorInput' : CheckJackEnsureMonitorInput }) if conf.CheckJackClientOpen(): - ardour.Append(CXXFLAGS="-DHAVE_JACK_CLIENT_OPEN") + ardour.Append(CXXFLAGS="-DHAVE_JACK_CLIENT_OPEN") if conf.CheckJackRecomputeLatencies(): ardour.Append(CXXFLAGS="-DHAVE_JACK_RECOMPUTE_LATENCIES") +if conf.CheckJackVideoFrameOffset(): + ardour.Append(CXXFLAGS="-DHAVE_JACK_VIDEO_SUPPORT") + +if conf.CheckJackEnsureMonitorInput(): + ardour.Append(CXXFLAGS='-DHAVE_JACK_PORT_ENSURE_MONITOR') +else: + print '\nWARNING: You need at least svn revision 985 of jack for hardware monitoring to work correctly.\n' + # # Optional header files # @@ -156,22 +225,52 @@ if conf.CheckCHeader('wordexp.h'): if conf.CheckCHeader('sys/vfs.h'): ardour.Append(CXXFLAGS="-DHAVE_SYS_VFS_H") +if conf.CheckCHeader('/System/Library/Frameworks/CoreMIDI.framework/Headers/CoreMIDI.h'): + ardour.Append(LINKFLAGS="-framework CoreMIDI") + +if conf.CheckCHeader('/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h'): + ardour.Append(LINKFLAGS="-framework AudioToolbox") + +if conf.CheckCHeader('/System/Library/Frameworks/CoreAudio.framework/Headers/CoreAudio.h'): + ardour.Append(CXXFLAGS="-DHAVE_WEAK_COREAUDIO") + +if conf.CheckCHeader('/System/Library/Frameworks/AudioUnit.framework/Headers/AudioUnit.h') and ardour['AUDIOUNITS']: + ardour.Append(CXXFLAGS="-DHAVE_AUDIOUNITS") + ardour.Append(LINKFLAGS="-framework AudioUnit") + extra_sources += audiounit_files + +if ardour['COREAUDIO']: + ardour.Append(CXXFLAGS="-DHAVE_COREAUDIO") + extra_sources += coreaudio_files + +if env['CONFIG_ARCH'] == 'apple': + # this next line avoids issues with circular dependencies between libardour and libardour_cp. + # it is based on the (entirely reasonable) assumption that a system with CoreAudio is OS X + # + ardour.Append(LINKFLAGS='-undefined suppress -flat_namespace') + ardour = conf.Finish () ardour.Merge ([ libraries['core'], libraries['xml'], - libraries['sndfile'], + libraries['sndfile-ardour'], + libraries['raptor'], libraries['lrdf'], libraries['samplerate'], libraries['sigc2'], - libraries['pbd3'], + libraries['pbd'], libraries['soundtouch'], - libraries['midi++2'] + libraries['midi++2'], + libraries['glib2'], + libraries['glibmm2'] ]) +if ardour['LIBLO']: + ardour.Merge ([ libraries['lo'] ]) -ardour.VersionBuild(['version.cc', 'ardour/version.h'], 'SConscript') +if ardour['COREAUDIO'] or ardour['AUDIOUNITS']: + ardour.Merge ([ libraries['appleutility'] ]) def SharedAsmObjectEmitter(target, source, env): for tgt in target: @@ -185,22 +284,27 @@ env['BUILDERS']['SharedAsmObject'] = Builder (action = '$CXX -c -fPIC $SOURCE -o src_suffix = '.s', single_source = 1) -if env['DEVBUILD'] == 1: - if env['BUILD_SSE_OPTIMIZATIONS'] == 1: +if env['FPU_OPTIMIZATION']: + if env['DIST_TARGET'] == "i386": arch_specific_objects = env.SharedAsmObject('sse_functions.os', 'sse_functions.s') - libardour = ardour.SharedLibrary('ardour', ardour_files + extra_sources + arch_specific_objects) -else: - if env['BUILD_SSE_OPTIMIZATIONS'] == 1: - arch_specific_objects = env.StaticObject(target='sse_functions',source='sse_functions.s') - - libardour = ardour.StaticLibrary('ardour', ardour_files + extra_sources + arch_specific_objects) + if env['DIST_TARGET'] == "i686": + arch_specific_objects = env.SharedAsmObject('sse_functions.os', 'sse_functions.s') + if env['DIST_TARGET'] == "x86_64": + arch_specific_objects = env.SharedAsmObject('sse_functions_64bit.os', 'sse_functions_64bit.s') + +libardour = ardour.SharedLibrary('ardour', ardour_files + extra_sources + arch_specific_objects) Default(libardour) if env['NLS']: - i18n (ardour, ardour_files + vst_files, env) - + i18n (ardour, ardour_files + vst_files + coreaudio_files + audiounit_files, env) + + +env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour2'), libardour)) + +env.Alias('version', ardour.VersionBuild(['version.cc', 'ardour/version.h'], [])) + env.Alias('tarball', env.Distribute (env['DISTTREE'], - [ 'SConscript', 'i18n.h', 'gettext.h', 'sse_functions.s' ] + - ardour_files + vst_files + + [ 'SConscript', 'i18n.h', 'gettext.h', 'sse_functions.s', 'sse_functions_64bit.s' ] + + ardour_files + osc_files + vst_files + coreaudio_files + audiounit_files + glob.glob('po/*.po') + glob.glob('ardour/*.h')))