X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=SConstruct;h=d462a155cbda6883c5c60e3b31dcf8aa6a41a8c4;hb=b9b6ba8be490622dff662c23d9c77c9eee1291b3;hp=379f47f66005ea0b73b2db696094db96015d4c25;hpb=82a7429156f50ebc45f7d76afd52117905f846f0;p=ardour.git diff --git a/SConstruct b/SConstruct index 379f47f660..d462a155cb 100644 --- a/SConstruct +++ b/SConstruct @@ -28,24 +28,25 @@ opts = Options('scache.conf') opts.AddOptions( ('ARCH', 'Set architecture-specific compilation flags by hand (all flags as 1 argument)',''), BoolOption('AUDIOUNITS', 'Compile with Apple\'s AudioUnit library. (experimental)', 0), + BoolOption('CMT', 'Compile with support for CMT Additions', 1), BoolOption('COREAUDIO', 'Compile with Apple\'s CoreAudio library', 0), - BoolOption('DEBUG', 'Set to build with debugging information and no optimizations', 0), + BoolOption('DEBUG', 'Set to build with debugging information and no optimizations', 1), PathOption('DESTDIR', 'Set the intermediate install "prefix"', '/'), EnumOption('DIST_TARGET', 'Build target for cross compiling packagers', 'auto', allowed_values=('auto', 'i386', 'i686', 'x86_64', 'powerpc', 'tiger', 'panther', 'none' ), ignorecase=2), BoolOption('DMALLOC', 'Compile and link using the dmalloc library', 0), BoolOption('EXTRA_WARN', 'Compile with -Wextra, -ansi, and -pedantic. Might break compilation. For pedants', 0), BoolOption('FFT_ANALYSIS', 'Include FFT analysis window', 0), BoolOption('FPU_OPTIMIZATION', 'Build runtime checked assembler code', 1), + BoolOption('GPROFILE', 'Compile with support for gprofile (Developers only)', 0), BoolOption('LIBLO', 'Compile with support for liblo library', 1), BoolOption('NLS', 'Set to turn on i18n support', 1), PathOption('PREFIX', 'Set the install "prefix"', '/usr/local'), BoolOption('SURFACES', 'Build support for control surfaces', 1), BoolOption('SYSLIBS', 'USE AT YOUR OWN RISK: CANCELS ALL SUPPORT FROM ARDOUR AUTHORS: Use existing system versions of various libraries instead of internal ones', 0), + BoolOption('TRANZPORT', 'Compile with support for Frontier Designs (if libusb is available)', 1), BoolOption('UNIVERSAL', 'Compile as universal binary. Requires that external libraries are already universal.', 0), BoolOption('VERSIONED', 'Add revision information to ardour/gtk executable name inside the build directory', 0), BoolOption('VST', 'Compile with support for VST', 0), - BoolOption('GPROFILE', 'Compile with support for gprofile (Developers only)', 0), - BoolOption('TRANZPORT', 'Compile with support for Frontier Designs (if libusb is available)', 1) ) #---------------------------------------------------------------------- @@ -408,14 +409,13 @@ deps = \ { 'glib-2.0' : '2.10.1', 'gthread-2.0' : '2.10.1', - 'gtk+-2.0' : '2.10.0', + 'gtk+-2.0' : '2.8.1', 'libxml-2.0' : '2.6.0', 'samplerate' : '0.1.0', 'raptor' : '1.4.2', 'lrdf' : '0.4.0', - 'jack' : '0.101.1', - 'libgnomecanvas-2.0' : '2.0', - 'cairo' : '1.2.4' + 'jack' : '0.105.0', + 'libgnomecanvas-2.0' : '2.0' } def DependenciesRequiredMessage(): @@ -492,12 +492,6 @@ libraries['xml'].ParseConfig('pkg-config --cflags --libs libxml-2.0') libraries['xslt'] = LibraryInfo() libraries['xslt'].ParseConfig('pkg-config --cflags --libs libxslt') -libraries['cairo'] = LibraryInfo() -libraries['cairo'].ParseConfig ('pkg-config --cflags --libs cairo') - -libraries['pangocairo'] = LibraryInfo() -libraries['pangocairo'].ParseConfig ('pkg-config --cflags --libs pangocairo') - libraries['glib2'] = LibraryInfo() libraries['glib2'].ParseConfig ('pkg-config --cflags --libs glib-2.0') libraries['glib2'].ParseConfig ('pkg-config --cflags --libs gobject-2.0') @@ -507,9 +501,6 @@ libraries['glib2'].ParseConfig ('pkg-config --cflags --libs gthread-2.0') libraries['gtk2'] = LibraryInfo() libraries['gtk2'].ParseConfig ('pkg-config --cflags --libs gtk+-2.0') -libraries['gtk2-unix-print'] = LibraryInfo() -libraries['gtk2-unix-print'].ParseConfig ('pkg-config --cflags --libs gtk+-unix-print-2.0') - libraries['pango'] = LibraryInfo() libraries['pango'].ParseConfig ('pkg-config --cflags --libs pango') @@ -634,8 +625,8 @@ elif ((re.search ("i[0-9]86", config[config_cpu]) != None) or (re.search ("x86_6 opt_flags.append ("-march=i686") if ((env['DIST_TARGET'] == 'i686') or (env['DIST_TARGET'] == 'x86_64')) and build_host_supports_sse: - opt_flags.extend (["-msse", "-mfpmath=sse"]) - debug_flags.extend (["-msse", "-mfpmath=sse"]) + opt_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"]) + debug_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"]) # end of processor-specific section # optimization section @@ -736,6 +727,12 @@ if conf.CheckLib ('usb', 'usb_interrupt_write'): else: have_libusb = False +# check for linux/input.h while we're at it for powermate +if conf.CheckHeader('linux/input.h'): + have_linux_input = True +else: + have_linux_input = False + libraries['usb'] = conf.Finish () # @@ -745,11 +742,19 @@ libraries['flac'] = LibraryInfo () prep_libcheck(env, libraries['flac']) libraries['flac'].Append(CCFLAGS="-I/usr/local/include", LINKFLAGS="-L/usr/local/lib") +# +# june 1st 2007: look for a function that is in FLAC 1.1.2 and not in later versions +# since the version of libsndfile we have internally does not support +# the new API that libFLAC has adopted +# + conf = Configure (libraries['flac']) -if conf.CheckLib ('FLAC', 'FLAC__stream_decoder_new', language='CXX'): +if conf.CheckLib ('FLAC', 'FLAC__seekable_stream_decoder_set_read_callback', language='CXX'): conf.env.Append(CCFLAGS='-DHAVE_FLAC') + use_flac = True +else: + use_flac = False libraries['flac'] = conf.Finish () - # or if that fails... #libraries['flac'] = LibraryInfo (LIBS='FLAC') @@ -802,18 +807,25 @@ libraries['dmalloc'] = conf.Finish () # conf = Configure(env) - -if conf.CheckCHeader('alsa/asoundlib.h'): +if conf.CheckCHeader('jack/midiport.h'): + libraries['sysmidi'] = LibraryInfo (LIBS='jack') + env['SYSMIDI'] = 'JACK MIDI' + subst_dict['%MIDITAG%'] = "control" + subst_dict['%MIDITYPE%'] = "jack" + print "Using JACK MIDI" +elif conf.CheckCHeader('alsa/asoundlib.h'): libraries['sysmidi'] = LibraryInfo (LIBS='asound') env['SYSMIDI'] = 'ALSA Sequencer' subst_dict['%MIDITAG%'] = "seq" subst_dict['%MIDITYPE%'] = "alsa/sequencer" + print "Using ALSA MIDI" elif conf.CheckCHeader('/System/Library/Frameworks/CoreMIDI.framework/Headers/CoreMIDI.h'): # this line is needed because scons can't handle -framework in ParseConfig() yet. libraries['sysmidi'] = LibraryInfo (LINKFLAGS= '-framework CoreMIDI -framework CoreFoundation -framework CoreAudio -framework CoreServices -framework AudioUnit -framework AudioToolbox -bind_at_load') env['SYSMIDI'] = 'CoreMIDI' subst_dict['%MIDITAG%'] = "ardour" subst_dict['%MIDITYPE%'] = "coremidi" + print "Using CoreMIDI" else: print "It appears you don't have the required MIDI libraries installed. For Linux this means you are missing the development package for ALSA libraries." sys.exit (1) @@ -844,6 +856,8 @@ if env['SYSLIBS']: libraries['sigc2'].ParseConfig('pkg-config --cflags --libs sigc++-2.0') libraries['glibmm2'] = LibraryInfo() libraries['glibmm2'].ParseConfig('pkg-config --cflags --libs glibmm-2.4') + libraries['cairomm'] = LibraryInfo() + libraries['cairomm'].ParseConfig('pkg-config --cflags --libs cairomm-1.0') libraries['gdkmm2'] = LibraryInfo() libraries['gdkmm2'].ParseConfig ('pkg-config --cflags --libs gdkmm-2.4') libraries['gtkmm2'] = LibraryInfo() @@ -863,11 +877,14 @@ if env['SYSLIBS']: LIBPATH='#libs/libsndfile', CPPPATH=['#libs/libsndfile/src']) +# libraries['libglademm'] = LibraryInfo() +# libraries['libglademm'].ParseConfig ('pkg-config --cflags --libs libglademm-2.4') + # libraries['flowcanvas'] = LibraryInfo(LIBS='flowcanvas', LIBPATH='#/libs/flowcanvas', CPPPATH='#libs/flowcanvas') libraries['soundtouch'] = LibraryInfo() - libraries['soundtouch'].ParseConfig ('pkg-config --cflags --libs soundtouch-1.0') + libraries['soundtouch'].ParseConfig ('pkg-config --cflags --libs libSoundTouch') # Comment the previous line and uncomment this for Debian: - #libraries['soundtouch'].ParseConfig ('pkg-config --cflags --libs libSoundTouch') + #libraries['soundtouch'].ParseConfig ('pkg-config --cflags --libs libSoundTouch') libraries['appleutility'] = LibraryInfo(LIBS='libappleutility', LIBPATH='#libs/appleutility', @@ -907,9 +924,6 @@ else: libraries['glibmm2'] = LibraryInfo(LIBS='glibmm2', LIBPATH='#libs/glibmm2', CPPPATH='#libs/glibmm2') - libraries['cairomm'] = LibraryInfo(LIBS='cairomm', - LIBPATH='#libs/cairomm', - CPPPATH='#libs/cairomm') libraries['pangomm'] = LibraryInfo(LIBS='pangomm', LIBPATH='#libs/gtkmm2/pango', CPPPATH='#libs/gtkmm2/pango') @@ -932,6 +946,9 @@ else: libraries['sndfile-ardour'] = LibraryInfo(LIBS='libsndfile-ardour', LIBPATH='#libs/libsndfile', CPPPATH=['#libs/libsndfile', '#libs/libsndfile/src']) +# libraries['libglademm'] = LibraryInfo(LIBS='libglademm', +# LIBPATH='#libs/libglademm', +# CPPPATH='#libs/libglademm') libraries['appleutility'] = LibraryInfo(LIBS='libappleutility', LIBPATH='#libs/appleutility', CPPPATH='#libs/appleutility') @@ -960,7 +977,6 @@ else: gtk_subdirs = [ 'libs/glibmm2', - 'libs/cairomm', 'libs/gtkmm2/pango', 'libs/gtkmm2/atk', 'libs/gtkmm2/gdk', @@ -979,7 +995,12 @@ else: # its included in the tarball # -surface_subdirs = [ 'libs/surfaces/control_protocol', 'libs/surfaces/generic_midi', 'libs/surfaces/tranzport', 'libs/surfaces/mackie' ] +surface_subdirs = [ 'libs/surfaces/control_protocol', + 'libs/surfaces/generic_midi', + 'libs/surfaces/tranzport', + 'libs/surfaces/mackie', + 'libs/surfaces/powermate' + ] if env['SURFACES']: if have_libusb: @@ -987,8 +1008,18 @@ if env['SURFACES']: else: env['TRANZPORT'] = 0 print 'Disabled building Tranzport code because libusb could not be found' + + if have_linux_input: + env['POWERMATE'] = 1 + else: + env['POWERMATE'] = 0 + print 'Disabled building Powermate code because linux/input.h could not be found' + if os.access ('libs/surfaces/sony9pin', os.F_OK): surface_subdirs += [ 'libs/surfaces/sony9pin' ] +else: + env['POWERMATE'] = 0 + env['TRANZPORT'] = 0 opts.Save('scache.conf', env) Help(opts.GenerateHelpText(env)) @@ -1027,6 +1058,14 @@ else: config_prefix = '$DESTDIR' + final_config_prefix +# For colorgcc +if os.environ.has_key('PATH'): + env['PATH'] = os.environ['PATH'] +if os.environ.has_key('TERM'): + env['TERM'] = os.environ['TERM'] +if os.environ.has_key('HOME'): + env['HOME'] = os.environ['HOME'] + # # everybody needs this # @@ -1069,7 +1108,7 @@ env = conf.Finish() if env['NLS'] == 1: env.Append(CCFLAGS="-DENABLE_NLS") -Export('env install_prefix final_prefix config_prefix final_config_prefix libraries i18n ardour_version subst_dict') +Export('env install_prefix final_prefix config_prefix final_config_prefix libraries i18n ardour_version subst_dict use_flac') # # the configuration file may be system dependent @@ -1081,8 +1120,8 @@ if conf.CheckCHeader('/System/Library/Frameworks/CoreAudio.framework/Versions/A/ subst_dict['%JACK_INPUT%'] = "coreaudio:Built-in Audio:in" subst_dict['%JACK_OUTPUT%'] = "coreaudio:Built-in Audio:out" else: - subst_dict['%JACK_INPUT%'] = "alsa_pcm:playback_" - subst_dict['%JACK_OUTPUT%'] = "alsa_pcm:capture_" + subst_dict['%JACK_INPUT%'] = "system:playback_" + subst_dict['%JACK_OUTPUT%'] = "system:capture_" # posix_memalign available if not conf.CheckFunc('posix_memalign'): @@ -1094,7 +1133,6 @@ env = conf.Finish() # generate the per-user and system rc files from the same source -rcbuild = env.SubstInFile ('ardour.rc','ardour.rc.in', SUBST_DICT = subst_dict) sysrcbuild = env.SubstInFile ('ardour_system.rc','ardour.rc.in', SUBST_DICT = subst_dict) # add to the substitution dictionary @@ -1111,9 +1149,7 @@ the_revision = env.Command ('frobnicatory_decoy', [], create_stored_revision) env.Alias('revision', the_revision) env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour_system.rc')) -env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour.rc')) -Default (rcbuild) Default (sysrcbuild) # source tarball