a) start at creating ControlProtocol objects
[ardour.git] / libs / ardour / SConscript
1 # -*- python -*-
2
3 import os
4 import glob
5
6 Import('env final_prefix install_prefix final_config_prefix libraries i18n')
7
8 ardour = env.Copy()
9
10 #
11 # this defines the version number of libardour
12
13
14 domain = 'libardour'
15
16 ardour.Append(DOMAIN = domain, MAJOR = 1, MINOR = 0, MICRO = 0)
17 ardour.Append(CXXFLAGS = "-DPACKAGE=\\\"" + domain + "\\\"")
18 ardour.Append(CXXFLAGS="-DLIBSIGC_DISABLE_DEPRECATED")
19 ardour.Append(PACKAGE = domain)
20 ardour.Append(POTFILE = domain + '.pot')
21
22 ardour_files=Split("""
23 audio_library.cc
24 audio_playlist.cc
25 audio_track.cc
26 audioengine.cc
27 audiofilter.cc
28 audioregion.cc
29 auditioner.cc
30 automation.cc
31 automation_event.cc
32 configuration.cc
33 connection.cc
34 control_protocol.cc
35 crossfade.cc
36 curve.cc
37 cycle_timer.cc
38 default_click.cc
39 destructive_filesource.cc
40 diskstream.cc
41 externalsource.cc
42 filesource.cc
43 gain.cc
44 gdither.cc
45 generic_midi_control_protocol.cc
46 globals.cc
47 import.cc
48 insert.cc
49 io.cc
50 jack_slave.cc
51 ladspa_plugin.cc
52 location.cc
53 mtc_slave.cc
54 named_selection.cc
55 panner.cc
56 pcm_utils.cc
57 playlist.cc
58 playlist_factory.cc
59 plugin.cc
60 plugin_manager.cc
61 port.cc
62 recent_sessions.cc
63 redirect.cc
64 region.cc
65 reverse.cc
66 route.cc
67 route_group.cc
68 send.cc
69 session.cc
70 session_butler.cc
71 session_click.cc
72 session_control.cc
73 session_events.cc
74 session_export.cc
75 session_feedback.cc
76 session_midi.cc
77 session_process.cc
78 session_state.cc
79 session_time.cc
80 session_timefx.cc
81 session_transport.cc
82 sndfile_helpers.cc
83 sndfilesource.cc
84 source.cc
85 state_manager.cc
86 stateful.cc
87 tempo.cc
88 tranzport_control_protocol.cc
89 utils.cc
90 version.cc
91 mix.cc
92 """)
93
94 arch_specific_objects = [ ]
95
96 vst_files = [ 'vst_plugin.cc', 'session_vst.cc' ]
97 coreaudio_files = [ 'coreaudio_source.cc' ]
98 extra_sources = [ ]
99
100 if ardour['VST']:
101         extra_sources += vst_files
102
103 ardour.Append(CCFLAGS="-D_REENTRANT -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE")
104 ardour.Append(CXXFLAGS="-DDATA_DIR=\\\""+final_prefix+"/share\\\"")
105 ardour.Append(CXXFLAGS="-DCONFIG_DIR=\\\""+final_config_prefix+"\\\"")
106 ardour.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"")
107
108 ardour.Merge ([ libraries['jack'] ])
109
110 #
111 # See if JACK supports jack_client_open()
112 #
113
114 jack_test_source_file = """
115 #include <jack/jack.h>
116 int main(int argc, char **argv)
117 {
118     jack_client_open ("foo", 0, 0);
119     return 0;
120 }
121 """
122 def CheckJackClientOpen(context):
123         context.Message('Checking for jack_client_open()...')
124         result = context.TryLink(jack_test_source_file, '.c')
125         context.Result(result)
126         return result
127
128 #
129 # See if JACK supports jack_recompute_total_latencies()
130 #
131
132 jack_test_source_file = """
133 #include <jack/jack.h>
134 int main(int argc, char **argv)
135 {
136     jack_recompute_total_latencies ((jack_client_t*) 0);
137     return 0;
138 }
139 """
140 def CheckJackRecomputeLatencies(context):
141         context.Message('Checking for jack_recompute_total_latencies()...')
142         result = context.TryLink(jack_test_source_file, '.c')
143         context.Result(result)
144         return result
145
146 conf = Configure(ardour, custom_tests = {
147         'CheckJackClientOpen' : CheckJackClientOpen,
148         'CheckJackRecomputeLatencies' : CheckJackRecomputeLatencies
149 })
150
151 if conf.CheckJackClientOpen():
152         ardour.Append(CXXFLAGS="-DHAVE_JACK_CLIENT_OPEN")
153
154 if conf.CheckJackRecomputeLatencies():
155     ardour.Append(CXXFLAGS="-DHAVE_JACK_RECOMPUTE_LATENCIES")
156
157 #
158 # Optional header files
159 #
160
161 if conf.CheckCHeader('wordexp.h'):
162     ardour.Append(CXXFLAGS="-DHAVE_WORDEXP")
163
164 if conf.CheckCHeader('sys/vfs.h'):
165     ardour.Append(CXXFLAGS="-DHAVE_SYS_VFS_H")
166
167 if conf.CheckCHeader('/System/Library/Frameworks/CoreMIDI.framework/Headers/CoreMIDI.h'):
168     ardour.Append(LINKFLAGS="-framework CoreMIDI")
169
170 if conf.CheckCHeader('/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h'):
171     ardour.Append(CXXFLAGS="-DHAVE_COREAUDIO")    
172     extra_sources += coreaudio_files
173
174 ardour = conf.Finish ()
175
176 ardour.Merge ([
177              libraries['core'],
178              libraries['xml'],
179              libraries['sndfile'],
180              libraries['lrdf'],
181              libraries['samplerate'],
182              libraries['sigc2'],
183              libraries['pbd3'],
184              libraries['soundtouch'],
185              libraries['midi++2'],
186              ])
187
188
189 ardour.VersionBuild(['version.cc', 'ardour/version.h'], 'SConscript')
190
191 def SharedAsmObjectEmitter(target, source, env):
192     for tgt in target:
193         tgt.attributes.shared = 1
194     return (target, source)
195
196
197 env['BUILDERS']['SharedAsmObject'] = Builder (action = '$CXX -c -fPIC $SOURCE -o $TARGET',
198                                               emitter = SharedAsmObjectEmitter,
199                                               suffix = '$SHOBJSUFFIX',
200                                               src_suffix = '.s',
201                                               single_source = 1)
202
203 if env['DEVBUILD'] == 1:
204         if env['FPU_OPTIMIZATION']:
205                 if env['DIST_TARGET'] == "i386":
206                         arch_specific_objects = env.SharedAsmObject('sse_functions.os', 'sse_functions.s')
207                 if env['DIST_TARGET'] == "i686":
208                         arch_specific_objects = env.SharedAsmObject('sse_functions.os', 'sse_functions.s')
209                 if env['DIST_TARGET'] == "x86_64":
210                         arch_specific_objects = env.SharedAsmObject('sse_functions_64bit.os', 'sse_functions_64bit.s')
211                         
212         libardour = ardour.SharedLibrary('ardour', ardour_files + extra_sources + arch_specific_objects)
213 else:
214         if env['FPU_OPTIMIZATION']:
215                 if env['DIST_TARGET'] == "i386":
216                         arch_specific_objects = env.StaticObject(target='sse_functions',source='sse_functions.s')
217                 if env['DIST_TARGET'] == "i686":
218                         arch_specific_objects = env.StaticObject(target='sse_functions',source='sse_functions.s')
219                 if env['DIST_TARGET'] == "x86_64":
220                         arch_specific_objects = env.StaticObject(target='sse_functions_64bit',source='sse_functions_64bit.s')
221
222         libardour = ardour.StaticLibrary('ardour', ardour_files + extra_sources + arch_specific_objects)
223
224 Default(libardour)
225
226 if env['NLS']:
227         i18n (ardour, ardour_files + vst_files + coreaudio_files, env)
228               
229 env.Alias('tarball', env.Distribute (env['DISTTREE'],
230                                      [ 'SConscript', 'i18n.h', 'gettext.h', 'sse_functions.s', 'sse_functions_64bit.s' ] +
231                                      ardour_files + vst_files + coreaudio_files +
232                                      glob.glob('po/*.po') + glob.glob('ardour/*.h')))