| 1 |
#! /usr/bin/env python |
|---|
| 2 |
# encoding: utf-8 |
|---|
| 3 |
|
|---|
| 4 |
import Build |
|---|
| 5 |
import re |
|---|
| 6 |
import os |
|---|
| 7 |
|
|---|
| 8 |
def configure(conf): |
|---|
| 9 |
conf.check_cc(header_name='samplerate.h', define_name="HAVE_SAMPLERATE") |
|---|
| 10 |
|
|---|
| 11 |
if conf.is_defined('HAVE_SAMPLERATE'): |
|---|
| 12 |
conf.env['LIB_SAMPLERATE'] = ['samplerate'] |
|---|
| 13 |
|
|---|
| 14 |
conf.env['BUILD_ADAPTER'] = conf.is_defined('HAVE_SAMPLERATE') |
|---|
| 15 |
|
|---|
| 16 |
def create_jack_process_obj(bld, target, sources, uselib = None): |
|---|
| 17 |
process = bld.new_task_gen('cxx', 'shlib') |
|---|
| 18 |
process.env['shlib_PATTERN'] = '%s.so' |
|---|
| 19 |
process.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] |
|---|
| 20 |
if bld.env['IS_MACOSX']: |
|---|
| 21 |
env_includes = ['../macosx', '../posix', '../macosx/coreaudio'] |
|---|
| 22 |
if bld.env['IS_LINUX']: |
|---|
| 23 |
env_includes = ['../linux', '../posix', '../linux/alsa'] |
|---|
| 24 |
if bld.env['IS_SUN']: |
|---|
| 25 |
env_includes = ['../solaris', '../posix', '../solaris/oss'] |
|---|
| 26 |
process.includes = ['.'] + env_includes + ['jack', '..'] |
|---|
| 27 |
process.name = target |
|---|
| 28 |
process.target = target |
|---|
| 29 |
process.source = sources |
|---|
| 30 |
if bld.env['IS_LINUX']: |
|---|
| 31 |
process.env.append_value("CPPFLAGS", "-fvisibility=hidden") |
|---|
| 32 |
if bld.env['IS_MACOSX']: |
|---|
| 33 |
process.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc") |
|---|
| 34 |
#process.env.append_value("LINKFLAGS", "-arch i386 -arch ppc") |
|---|
| 35 |
process.env.append_value("CPPFLAGS", "-fvisibility=hidden") |
|---|
| 36 |
process.install_path = '${ADDON_DIR}/' |
|---|
| 37 |
process.uselib_local = uselib.name |
|---|
| 38 |
return process |
|---|
| 39 |
|
|---|
| 40 |
def build(bld): |
|---|
| 41 |
common_libsources = [ |
|---|
| 42 |
'JackActivationCount.cpp', |
|---|
| 43 |
'JackAPI.cpp', |
|---|
| 44 |
'JackClient.cpp', |
|---|
| 45 |
'JackConnectionManager.cpp', |
|---|
| 46 |
'ringbuffer.c', |
|---|
| 47 |
'JackError.cpp', |
|---|
| 48 |
'JackFrameTimer.cpp', |
|---|
| 49 |
'JackGraphManager.cpp', |
|---|
| 50 |
'JackPort.cpp', |
|---|
| 51 |
'JackPortType.cpp', |
|---|
| 52 |
'JackAudioPort.cpp', |
|---|
| 53 |
'JackMidiPort.cpp', |
|---|
| 54 |
'JackMidiAPI.cpp', |
|---|
| 55 |
'JackEngineControl.cpp', |
|---|
| 56 |
'JackShmMem.cpp', |
|---|
| 57 |
'shm.c', |
|---|
| 58 |
'JackGlobals.cpp', |
|---|
| 59 |
'JackDebugClient.cpp', |
|---|
| 60 |
'JackTransportEngine.cpp', |
|---|
| 61 |
'timestamps.c', |
|---|
| 62 |
'JackTools.cpp', |
|---|
| 63 |
'JackMessageBuffer.cpp', |
|---|
| 64 |
'JackEngineProfiling.cpp', |
|---|
| 65 |
] |
|---|
| 66 |
|
|---|
| 67 |
includes = ['.', './jack', '..'] |
|---|
| 68 |
uselib = ["PTHREAD"] |
|---|
| 69 |
|
|---|
| 70 |
if bld.env['IS_LINUX']: |
|---|
| 71 |
common_libsources += [ |
|---|
| 72 |
'../posix/JackPosixThread.cpp', |
|---|
| 73 |
'../posix/JackPosixSemaphore.cpp', |
|---|
| 74 |
'../posix/JackFifo.cpp', |
|---|
| 75 |
'../posix/JackProcessSync.cpp', |
|---|
| 76 |
'../posix/JackSocket.cpp', |
|---|
| 77 |
'../linux/JackLinuxTime.c', |
|---|
| 78 |
] |
|---|
| 79 |
includes = ['../linux', '../posix'] + includes |
|---|
| 80 |
uselib.append('RT') |
|---|
| 81 |
uselib.append('DL') |
|---|
| 82 |
|
|---|
| 83 |
if bld.env['IS_SUN']: |
|---|
| 84 |
common_libsources += [ |
|---|
| 85 |
'../posix/JackPosixThread.cpp', |
|---|
| 86 |
'../posix/JackFifo.cpp', |
|---|
| 87 |
'../posix/JackProcessSync.cpp', |
|---|
| 88 |
'../posix/JackSocket.cpp', |
|---|
| 89 |
'../solaris/JackSolarisTime.c', |
|---|
| 90 |
] |
|---|
| 91 |
includes = ['../solaris', '../posix'] + includes |
|---|
| 92 |
uselib.append('RT') |
|---|
| 93 |
|
|---|
| 94 |
if bld.env['IS_MACOSX']: |
|---|
| 95 |
common_libsources += [ |
|---|
| 96 |
'../posix/JackProcessSync.cpp', |
|---|
| 97 |
'../posix/JackPosixThread.cpp', |
|---|
| 98 |
'../macosx/JackMachThread.cpp', |
|---|
| 99 |
'../macosx/JackMachSemaphore.cpp', |
|---|
| 100 |
'../macosx/JackMachPort.cpp', |
|---|
| 101 |
'../macosx/JackMachTime.c', |
|---|
| 102 |
] |
|---|
| 103 |
includes = ['../macosx', '../macosx/RPC', '../posix'] + includes |
|---|
| 104 |
|
|---|
| 105 |
serverlib = bld.new_task_gen('cxx', 'shlib') |
|---|
| 106 |
serverlib.features.append('cc') |
|---|
| 107 |
serverlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] |
|---|
| 108 |
serverlib.includes = includes |
|---|
| 109 |
serverlib.name = 'serverlib' |
|---|
| 110 |
serverlib.target = 'jackserver' |
|---|
| 111 |
serverlib.uselib = uselib |
|---|
| 112 |
serverlib.install_path = '${LIBDIR}' |
|---|
| 113 |
serverlib.source = [] + common_libsources |
|---|
| 114 |
serverlib.source += [ |
|---|
| 115 |
'JackAudioDriver.cpp', |
|---|
| 116 |
'JackMidiDriver.cpp', |
|---|
| 117 |
'JackDriver.cpp', |
|---|
| 118 |
'JackEngine.cpp', |
|---|
| 119 |
'JackExternalClient.cpp', |
|---|
| 120 |
'JackFreewheelDriver.cpp', |
|---|
| 121 |
'JackInternalClient.cpp', |
|---|
| 122 |
'JackLoopbackDriver.cpp', |
|---|
| 123 |
'JackServer.cpp', |
|---|
| 124 |
'JackThreadedDriver.cpp', |
|---|
| 125 |
'JackRestartThreadedDriver.cpp', |
|---|
| 126 |
'JackWaitThreadedDriver.cpp', |
|---|
| 127 |
'JackServerAPI.cpp', |
|---|
| 128 |
'JackDriverLoader.cpp', |
|---|
| 129 |
'JackServerGlobals.cpp', |
|---|
| 130 |
'JackControlAPI.cpp', |
|---|
| 131 |
'JackNetTool.cpp', |
|---|
| 132 |
'JackNetInterface.cpp', |
|---|
| 133 |
'JackArgParser.cpp', |
|---|
| 134 |
'JackDummyDriver.cpp', |
|---|
| 135 |
] |
|---|
| 136 |
|
|---|
| 137 |
if bld.env['IS_LINUX']: |
|---|
| 138 |
serverlib.source += [ |
|---|
| 139 |
'../posix/JackSocketServerChannel.cpp', |
|---|
| 140 |
'../posix/JackSocketNotifyChannel.cpp', |
|---|
| 141 |
'../posix/JackSocketServerNotifyChannel.cpp', |
|---|
| 142 |
'../posix/JackNetUnixSocket.cpp', |
|---|
| 143 |
] |
|---|
| 144 |
|
|---|
| 145 |
if bld.env['IS_SUN']: |
|---|
| 146 |
serverlib.source += [ |
|---|
| 147 |
'../posix/JackSocketServerChannel.cpp', |
|---|
| 148 |
'../posix/JackSocketNotifyChannel.cpp', |
|---|
| 149 |
'../posix/JackSocketServerNotifyChannel.cpp', |
|---|
| 150 |
'../posix/JackNetUnixSocket.cpp', |
|---|
| 151 |
] |
|---|
| 152 |
|
|---|
| 153 |
if bld.env['IS_MACOSX']: |
|---|
| 154 |
serverlib.source += [ |
|---|
| 155 |
'../macosx/JackMachServerChannel.cpp', |
|---|
| 156 |
'../macosx/JackMachNotifyChannel.cpp', |
|---|
| 157 |
'../macosx/JackMachServerNotifyChannel.cpp', |
|---|
| 158 |
'../macosx/JackMacEngineRPC.cpp', |
|---|
| 159 |
'../macosx/RPC/JackRPCClientUser.c', |
|---|
| 160 |
'../posix/JackNetUnixSocket.cpp', |
|---|
| 161 |
] |
|---|
| 162 |
|
|---|
| 163 |
serverlib.vnum = bld.env['JACK_API_VERSION'] |
|---|
| 164 |
|
|---|
| 165 |
if bld.env['IS_LINUX']: |
|---|
| 166 |
serverlib.env.append_value("CPPFLAGS", "-fvisibility=hidden") |
|---|
| 167 |
|
|---|
| 168 |
if bld.env['IS_MACOSX']: |
|---|
| 169 |
serverlib.env.append_value("CPPFLAGS", "-fvisibility=hidden") |
|---|
| 170 |
serverlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc") |
|---|
| 171 |
#serverlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module -arch i386 -arch ppc") |
|---|
| 172 |
serverlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework CoreFoundation -framework vecLib -single_module") |
|---|
| 173 |
serverlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1") |
|---|
| 174 |
|
|---|
| 175 |
if bld.env['IS_SUN']: |
|---|
| 176 |
serverlib.env.append_value("LINKFLAGS", "-lnsl -lsocket") |
|---|
| 177 |
|
|---|
| 178 |
clientlib = bld.new_task_gen('cxx', 'shlib') |
|---|
| 179 |
clientlib.features.append('cc') |
|---|
| 180 |
clientlib.defines = 'HAVE_CONFIG_H' |
|---|
| 181 |
clientlib.uselib = uselib |
|---|
| 182 |
clientlib.install_path = '${LIBDIR}' |
|---|
| 183 |
if bld.env['BUILD_JACKDBUS'] == True and bld.env['BUILD_JACKD'] == False: |
|---|
| 184 |
clientlib.uselib.append('DBUS-1') |
|---|
| 185 |
clientlib.includes = includes |
|---|
| 186 |
clientlib.name = 'clientlib' |
|---|
| 187 |
clientlib.target = 'jack' |
|---|
| 188 |
clientlib.source = [] + common_libsources |
|---|
| 189 |
clientlib.source += [ |
|---|
| 190 |
'JackLibClient.cpp', |
|---|
| 191 |
'JackLibAPI.cpp', |
|---|
| 192 |
] |
|---|
| 193 |
|
|---|
| 194 |
if bld.env['IS_LINUX']: |
|---|
| 195 |
clientlib.source += [ |
|---|
| 196 |
'../posix/JackSocketClientChannel.cpp', |
|---|
| 197 |
'../posix/JackPosixServerLaunch.cpp', |
|---|
| 198 |
] |
|---|
| 199 |
|
|---|
| 200 |
if bld.env['IS_SUN']: |
|---|
| 201 |
clientlib.source += [ |
|---|
| 202 |
'../posix/JackSocketClientChannel.cpp', |
|---|
| 203 |
'../posix/JackPosixServerLaunch.cpp', |
|---|
| 204 |
] |
|---|
| 205 |
|
|---|
| 206 |
if bld.env['IS_MACOSX']: |
|---|
| 207 |
clientlib.source += [ |
|---|
| 208 |
'../macosx/JackMachClientChannel.cpp', |
|---|
| 209 |
'../macosx/RPC/JackRPCEngineUser.c', |
|---|
| 210 |
'../macosx/JackMacLibClientRPC.cpp', |
|---|
| 211 |
'../posix/JackPosixServerLaunch.cpp', |
|---|
| 212 |
] |
|---|
| 213 |
|
|---|
| 214 |
clientlib.vnum = bld.env['JACK_API_VERSION'] |
|---|
| 215 |
|
|---|
| 216 |
if bld.env['IS_LINUX']: |
|---|
| 217 |
clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden") |
|---|
| 218 |
|
|---|
| 219 |
if bld.env['IS_MACOSX']: |
|---|
| 220 |
clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden") |
|---|
| 221 |
clientlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc") |
|---|
| 222 |
#clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module -arch i386 -arch ppc" |
|---|
| 223 |
clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module") |
|---|
| 224 |
clientlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1") |
|---|
| 225 |
|
|---|
| 226 |
if bld.env['IS_SUN']: |
|---|
| 227 |
clientlib.env.append_value("LINKFLAGS", "-lnsl -lsocket") |
|---|
| 228 |
|
|---|
| 229 |
if bld.env['BUILD_WITH_32_64']: |
|---|
| 230 |
print "create 32bit lib..." |
|---|
| 231 |
clientlib32bit = clientlib.clone('lib32') |
|---|
| 232 |
|
|---|
| 233 |
create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib) |
|---|
| 234 |
|
|---|
| 235 |
create_jack_process_obj(bld, 'profiler', 'JackProfiler.cpp', serverlib) |
|---|
| 236 |
|
|---|
| 237 |
net_adapter_sources = [ |
|---|
| 238 |
'JackResampler.cpp', |
|---|
| 239 |
'JackLibSampleRateResampler.cpp', |
|---|
| 240 |
'JackAudioAdapter.cpp', |
|---|
| 241 |
'JackAudioAdapterInterface.cpp', |
|---|
| 242 |
'JackNetAdapter.cpp', |
|---|
| 243 |
] |
|---|
| 244 |
|
|---|
| 245 |
if bld.env['BUILD_ADAPTER'] == True: |
|---|
| 246 |
process = create_jack_process_obj(bld, 'netadapter', net_adapter_sources, serverlib) |
|---|
| 247 |
process.uselib = 'SAMPLERATE' |
|---|
| 248 |
|
|---|
| 249 |
audio_adapter_sources = [ |
|---|
| 250 |
'JackResampler.cpp', |
|---|
| 251 |
'JackLibSampleRateResampler.cpp', |
|---|
| 252 |
'JackAudioAdapter.cpp', |
|---|
| 253 |
'JackAudioAdapterInterface.cpp', |
|---|
| 254 |
'JackAudioAdapterFactory.cpp', |
|---|
| 255 |
] |
|---|
| 256 |
|
|---|
| 257 |
if bld.env['BUILD_ADAPTER'] and bld.env['IS_MACOSX']: |
|---|
| 258 |
audio_adapter_sources += ['../macosx/coreaudio/JackCoreAudioAdapter.cpp'] |
|---|
| 259 |
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|---|
| 260 |
process.env.append_value("LINKFLAGS", "-framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreServices") |
|---|
| 261 |
process.uselib = 'SAMPLERATE' |
|---|
| 262 |
|
|---|
| 263 |
if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']: |
|---|
| 264 |
audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp'] |
|---|
| 265 |
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|---|
| 266 |
process.uselib = ['ALSA', 'SAMPLERATE'] |
|---|
| 267 |
|
|---|
| 268 |
if bld.env['BUILD_ADAPTER'] and bld.env['IS_SUN']: |
|---|
| 269 |
audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c'] |
|---|
| 270 |
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|---|
| 271 |
process.uselib = 'SAMPLERATE' |
|---|
| 272 |
|
|---|
| 273 |
#audio_adapter_sources += ['../windows/JackPortAudioAdapter.cpp'] |
|---|
| 274 |
#process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|---|
| 275 |
|
|---|
| 276 |
bld.install_files('${PREFIX}/include/jack', 'jack/*.h') |
|---|
| 277 |
|
|---|
| 278 |
# process jack.pc.in -> jack.pc |
|---|
| 279 |
import misc |
|---|
| 280 |
obj = bld.new_task_gen('subst') |
|---|
| 281 |
obj.source = '../jack.pc.in' |
|---|
| 282 |
obj.target = 'jack.pc' |
|---|
| 283 |
obj.dict = {'PREFIX': bld.env['PREFIX'], |
|---|
| 284 |
'LIBDIR': bld.env['LIBDIR'], |
|---|
| 285 |
'INCLUDEDIR': os.path.normpath(bld.env['PREFIX'] + '/include'), |
|---|
| 286 |
'SERVERLIB': serverlib.target, |
|---|
| 287 |
'JACK_VERSION': bld.env['JACK_VERSION'], |
|---|
| 288 |
} |
|---|
| 289 |
obj.install_path = '${LIBDIR}/pkgconfig/' |
|---|
| 290 |
obj.fun = misc.subst_func |
|---|