|
|
|
@@ -1,9 +1,9 @@ |
|
|
|
#! /usr/bin/python3 |
|
|
|
# encoding: utf-8 |
|
|
|
|
|
|
|
import re |
|
|
|
import os |
|
|
|
|
|
|
|
|
|
|
|
def configure(conf): |
|
|
|
conf.env['BUILD_NETLIB'] = conf.env['SAMPLERATE'] |
|
|
|
conf.env['BUILD_ADAPTER'] = conf.env['SAMPLERATE'] |
|
|
|
@@ -11,17 +11,20 @@ def configure(conf): |
|
|
|
if conf.env['IS_WINDOWS']: |
|
|
|
try: |
|
|
|
conf.check(header_name='regex.h', lib='regex', uselib_store='REGEX', define_name='HAVE_REGEX_H') |
|
|
|
except: |
|
|
|
except Exception: |
|
|
|
conf.check(header_name='tre/regex.h', lib='tre', uselib_store='REGEX', define_name='HAVE_TRE_REGEX_H') |
|
|
|
conf.check(header_name='winsock2.h', lib='ws2_32', uselib_store='WS2_32', define_name='HAVE_WINSOCK2_H') |
|
|
|
conf.check(header_name=['windows.h', 'mmsystem.h'], lib='winmm', uselib_store='WINMM', define_name='HAVE_MMSYSTEM_H') |
|
|
|
conf.check( |
|
|
|
header_name=['windows.h', 'mmsystem.h'], lib='winmm', uselib_store='WINMM', define_name='HAVE_MMSYSTEM_H' |
|
|
|
) |
|
|
|
conf.check(header_name=['windows.h', 'psapi.h'], lib='psapi', uselib_store='PSAPI', define_name='HAVE_PSAPI_H') |
|
|
|
|
|
|
|
def create_jack_process_obj(bld, target, sources, uselib = None, framework = None): |
|
|
|
process = bld(features = ['cxx', 'cxxshlib']) |
|
|
|
|
|
|
|
def create_jack_process_obj(bld, target, sources, uselib=None, framework=None): |
|
|
|
process = bld(features=['cxx', 'cxxshlib']) |
|
|
|
if not bld.env['IS_WINDOWS']: |
|
|
|
process.env['cxxshlib_PATTERN'] = '%s.so' |
|
|
|
process.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] |
|
|
|
process.defines = ['HAVE_CONFIG_H', 'SERVER_SIDE'] |
|
|
|
if bld.env['IS_MACOSX']: |
|
|
|
if framework: |
|
|
|
process.framework = framework |
|
|
|
@@ -35,15 +38,16 @@ def create_jack_process_obj(bld, target, sources, uselib = None, framework = Non |
|
|
|
if bld.env['IS_WINDOWS']: |
|
|
|
env_includes = ['../windows', '../windows/portaudio'] |
|
|
|
process.includes = ['.'] + env_includes + ['jack', '..'] |
|
|
|
process.name = target |
|
|
|
process.target = target |
|
|
|
process.source = sources |
|
|
|
process.name = target |
|
|
|
process.target = target |
|
|
|
process.source = sources |
|
|
|
if bld.env['IS_LINUX'] or bld.env['IS_MACOSX'] or bld.env['IS_FREEBSD']: |
|
|
|
process.env.append_value('CPPFLAGS', '-fvisibility=hidden') |
|
|
|
process.install_path = '${ADDON_DIR}/' |
|
|
|
process.use = [uselib.name] |
|
|
|
return process |
|
|
|
|
|
|
|
|
|
|
|
def build(bld): |
|
|
|
common_libsources = [ |
|
|
|
'JackActivationCount.cpp', |
|
|
|
@@ -113,13 +117,13 @@ def build(bld): |
|
|
|
'JackDebugClient.cpp', |
|
|
|
'timestamps.c', |
|
|
|
'promiscuous.c', |
|
|
|
'../posix/JackPosixThread.cpp', |
|
|
|
'../posix/JackFifo.cpp', |
|
|
|
'../posix/JackPosixProcessSync.cpp', |
|
|
|
'../posix/JackPosixMutex.cpp', |
|
|
|
'../posix/JackSocket.cpp', |
|
|
|
'../solaris/JackSolarisTime.c', |
|
|
|
] |
|
|
|
'../posix/JackPosixThread.cpp', |
|
|
|
'../posix/JackFifo.cpp', |
|
|
|
'../posix/JackPosixProcessSync.cpp', |
|
|
|
'../posix/JackPosixMutex.cpp', |
|
|
|
'../posix/JackSocket.cpp', |
|
|
|
'../solaris/JackSolarisTime.c', |
|
|
|
] |
|
|
|
includes = ['../solaris', '../posix'] + includes |
|
|
|
uselib.append('RT') |
|
|
|
|
|
|
|
@@ -147,7 +151,7 @@ def build(bld): |
|
|
|
'../windows/JackWinThread.cpp', |
|
|
|
'../windows/JackWinTime.c', |
|
|
|
] |
|
|
|
includes = ['../windows' ] + includes |
|
|
|
includes = ['../windows'] + includes |
|
|
|
libsuffix = "64" if (bld.env['DEST_CPU'] == "x86_64" and not bld.variant) else "" |
|
|
|
buildbindir = os.path.join('..', bld.path.get_bld().srcpath().rstrip(bld.path.srcpath())) |
|
|
|
staticbuild = bool('BUILD_STATIC' in bld.env and bld.env['BUILD_STATIC']) |
|
|
|
@@ -159,7 +163,7 @@ def build(bld): |
|
|
|
else: |
|
|
|
libsuffix = "" |
|
|
|
|
|
|
|
clientlib = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib']) |
|
|
|
clientlib = bld(features=['c', 'cxx', 'cxxshlib', 'cshlib']) |
|
|
|
if bld.env['IS_MACOSX']: |
|
|
|
clientlib.framework = ['CoreAudio', 'Accelerate'] |
|
|
|
clientlib.defines = 'HAVE_CONFIG_H' |
|
|
|
@@ -243,10 +247,10 @@ def build(bld): |
|
|
|
# we don't want to build other stuff in this variant |
|
|
|
return |
|
|
|
|
|
|
|
serverlib = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib']) |
|
|
|
serverlib = bld(features=['c', 'cxx', 'cxxshlib', 'cshlib']) |
|
|
|
if bld.env['IS_MACOSX']: |
|
|
|
serverlib.framework = ['CoreAudio', 'CoreFoundation', 'Accelerate'] |
|
|
|
serverlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] |
|
|
|
serverlib.defines = ['HAVE_CONFIG_H', 'SERVER_SIDE'] |
|
|
|
serverlib.includes = includes |
|
|
|
serverlib.name = 'serverlib' |
|
|
|
serverlib.target = 'jackserver'+libsuffix |
|
|
|
@@ -358,10 +362,10 @@ def build(bld): |
|
|
|
serverlib.env.append_value('LINKFLAGS', '-lnsl -lsocket') |
|
|
|
|
|
|
|
if bld.env['BUILD_NETLIB']: |
|
|
|
netlib = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib']) |
|
|
|
netlib = bld(features=['c', 'cxx', 'cxxshlib', 'cshlib']) |
|
|
|
if bld.env['IS_MACOSX']: |
|
|
|
netlib.framework = ['CoreAudio'] |
|
|
|
netlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] |
|
|
|
netlib.framework = ['CoreAudio'] |
|
|
|
netlib.defines = ['HAVE_CONFIG_H', 'SERVER_SIDE'] |
|
|
|
netlib.includes = includes |
|
|
|
netlib.name = 'netlib' |
|
|
|
netlib.target = 'jacknet'+libsuffix |
|
|
|
@@ -391,24 +395,49 @@ def build(bld): |
|
|
|
'ringbuffer.c'] |
|
|
|
|
|
|
|
if bld.env['IS_LINUX']: |
|
|
|
netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../posix/JackPosixMutex.cpp', '../linux/JackLinuxTime.c'] |
|
|
|
netlib.source += [ |
|
|
|
'../posix/JackNetUnixSocket.cpp', |
|
|
|
'../posix/JackPosixThread.cpp', |
|
|
|
'../posix/JackPosixMutex.cpp', |
|
|
|
'../linux/JackLinuxTime.c', |
|
|
|
] |
|
|
|
netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') |
|
|
|
|
|
|
|
if bld.env['IS_FREEBSD']: |
|
|
|
netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../posix/JackPosixMutex.cpp', '../linux/JackLinuxTime.c'] |
|
|
|
netlib.source += [ |
|
|
|
'../posix/JackNetUnixSocket.cpp', |
|
|
|
'../posix/JackPosixThread.cpp', |
|
|
|
'../posix/JackPosixMutex.cpp', |
|
|
|
'../linux/JackLinuxTime.c', |
|
|
|
] |
|
|
|
netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') |
|
|
|
|
|
|
|
if bld.env['IS_SUN']: |
|
|
|
netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../posix/JackPosixMutex.cpp', '../solaris/JackSolarisTime.c'] |
|
|
|
netlib.source += [ |
|
|
|
'../posix/JackNetUnixSocket.cpp', |
|
|
|
'../posix/JackPosixThread.cpp', |
|
|
|
'../posix/JackPosixMutex.cpp', |
|
|
|
'../solaris/JackSolarisTime.c', |
|
|
|
] |
|
|
|
netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') |
|
|
|
|
|
|
|
|
|
|
|
if bld.env['IS_MACOSX']: |
|
|
|
netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../posix/JackPosixMutex.cpp', '../macosx/JackMachThread.mm', '../macosx/JackMachTime.c'] |
|
|
|
netlib.source += [ |
|
|
|
'../posix/JackNetUnixSocket.cpp', |
|
|
|
'../posix/JackPosixThread.cpp', |
|
|
|
'../posix/JackPosixMutex.cpp', |
|
|
|
'../macosx/JackMachThread.mm', |
|
|
|
'../macosx/JackMachTime.c', |
|
|
|
] |
|
|
|
netlib.env.append_value('LINKFLAGS', '-single_module') |
|
|
|
|
|
|
|
if bld.env['IS_WINDOWS']: |
|
|
|
netlib.source += ['../windows/JackNetWinSocket.cpp','../windows/JackWinThread.cpp', '../windows/JackMMCSS.cpp', '../windows/JackWinTime.c'] |
|
|
|
netlib.source += [ |
|
|
|
'../windows/JackNetWinSocket.cpp', |
|
|
|
'../windows/JackWinThread.cpp', |
|
|
|
'../windows/JackMMCSS.cpp', |
|
|
|
'../windows/JackWinTime.c', |
|
|
|
] |
|
|
|
|
|
|
|
if bld.env['IS_MACOSX']: |
|
|
|
netlib.cnum = bld.env['JACK_API_VERSION'] |
|
|
|
@@ -441,45 +470,48 @@ def build(bld): |
|
|
|
] |
|
|
|
|
|
|
|
if bld.env['BUILD_ADAPTER'] and bld.env['IS_MACOSX']: |
|
|
|
audio_adapter_sources += ['../macosx/coreaudio/JackCoreAudioAdapter.mm'] |
|
|
|
process = create_jack_process_obj(bld, |
|
|
|
'audioadapter', |
|
|
|
audio_adapter_sources, |
|
|
|
serverlib, |
|
|
|
framework = [ |
|
|
|
'CoreAudio', |
|
|
|
'AudioUnit', |
|
|
|
'AudioToolbox', |
|
|
|
'CoreServices' |
|
|
|
] |
|
|
|
) |
|
|
|
process.use += ['SAMPLERATE'] |
|
|
|
audio_adapter_sources += ['../macosx/coreaudio/JackCoreAudioAdapter.mm'] |
|
|
|
process = create_jack_process_obj( |
|
|
|
bld, |
|
|
|
'audioadapter', |
|
|
|
audio_adapter_sources, |
|
|
|
serverlib, |
|
|
|
framework=[ |
|
|
|
'CoreAudio', |
|
|
|
'AudioUnit', |
|
|
|
'AudioToolbox', |
|
|
|
'CoreServices', |
|
|
|
] |
|
|
|
) |
|
|
|
process.use += ['SAMPLERATE'] |
|
|
|
|
|
|
|
if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']: |
|
|
|
audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp'] |
|
|
|
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|
|
|
process.use += ['ALSA', 'SAMPLERATE'] |
|
|
|
audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp'] |
|
|
|
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|
|
|
process.use += ['ALSA', 'SAMPLERATE'] |
|
|
|
|
|
|
|
if bld.env['BUILD_ADAPTER'] and (bld.env['IS_SUN'] or bld.env['IS_FREEBSD']): |
|
|
|
audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c'] |
|
|
|
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|
|
|
process.use += 'SAMPLERATE' |
|
|
|
audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c'] |
|
|
|
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|
|
|
process.use += 'SAMPLERATE' |
|
|
|
|
|
|
|
if bld.env['BUILD_ADAPTER'] and bld.env['IS_WINDOWS']: |
|
|
|
audio_adapter_sources += ['../windows/portaudio/JackPortAudioAdapter.cpp', '../windows/portaudio/JackPortAudioDevices.cpp'] |
|
|
|
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|
|
|
process.use += ['SAMPLERATE', 'PORTAUDIO'] |
|
|
|
|
|
|
|
audio_adapter_sources += [ |
|
|
|
'../windows/portaudio/JackPortAudioAdapter.cpp', |
|
|
|
'../windows/portaudio/JackPortAudioDevices.cpp', |
|
|
|
] |
|
|
|
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) |
|
|
|
process.use += ['SAMPLERATE', 'PORTAUDIO'] |
|
|
|
|
|
|
|
bld.install_files('${PREFIX}/include/jack', bld.path.ant_glob('jack/*.h')) |
|
|
|
|
|
|
|
# process jack.pc.in -> jack.pc |
|
|
|
obj = bld( |
|
|
|
features = 'subst_pc', |
|
|
|
source = '../jack.pc.in', |
|
|
|
target = 'jack.pc', |
|
|
|
install_path = '${PKGCONFDIR}', |
|
|
|
INCLUDEDIR = os.path.normpath(bld.env['PREFIX'] + '/include'), |
|
|
|
CLIENTLIB = clientlib.target, |
|
|
|
SERVERLIB = serverlib.target, |
|
|
|
) |
|
|
|
bld( |
|
|
|
features='subst_pc', |
|
|
|
source='../jack.pc.in', |
|
|
|
target='jack.pc', |
|
|
|
install_path='${PKGCONFDIR}', |
|
|
|
INCLUDEDIR=os.path.normpath(bld.env['PREFIX'] + '/include'), |
|
|
|
CLIENTLIB=clientlib.target, |
|
|
|
SERVERLIB=serverlib.target, |
|
|
|
) |