Browse Source

Support QNX build with WAF

Change-Id: I9ee88d6b2531622c8d46f69872d30750168c4e4a
Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
pull/545/head
Timo Wischer Adam Miartus 6 years ago
parent
commit
5d098b09fc
5 changed files with 87 additions and 25 deletions
  1. +14
    -0
      Makefile
  2. +25
    -7
      common/wscript
  3. +6
    -4
      example-clients/wscript
  4. +2
    -0
      tests/wscript
  5. +40
    -14
      wscript

+ 14
- 0
Makefile View File

@@ -0,0 +1,14 @@
.PHONY: all
all:
CC=${QNX_HOST}/usr/bin/aarch64-unknown-nto-qnx7.0.0-gcc CXX=${QNX_HOST}/usr/bin/aarch64-unknown-nto-qnx7.0.0-g++ AR=${QNX_HOST}/usr/bin/aarch64-unknown-nto-qnx7.0.0-ar LDFLAGS="-L${INSTALL_ROOT_nto}/aarch64le/lib -L${INSTALL_ROOT_nto}/aarch64le/usr/lib -L${QNX_TARGET}/aarch64le/lib -L${QNX_TARGET}/aarch64le/usr/lib" PKG_CONFIG_LIBDIR=${INSTALL_ROOT_nto}/usr/lib/pkgconfig ./waf configure --platform=qnx --prefix=/usr --libdir=/usr/lib64
./waf build
./waf install --destdir=${INSTALL_ROOT_nto}

.PHONY: install
install: all

.PHONY:clean
clean:
# ignore error codes otherwise it would for example fail if clean is called before configure
-./waf clean


+ 25
- 7
common/wscript View File

@@ -28,6 +28,8 @@ def create_jack_process_obj(bld, target, sources, uselib = None, framework = Non
env_includes = ['../macosx', '../posix', '../macosx/coreaudio'] env_includes = ['../macosx', '../posix', '../macosx/coreaudio']
if bld.env['IS_LINUX']: if bld.env['IS_LINUX']:
env_includes = ['../linux', '../posix', '../linux/alsa'] env_includes = ['../linux', '../posix', '../linux/alsa']
if bld.env['IS_QNX']:
env_includes = ['../qnx', '../posix']
if bld.env['IS_SUN']: if bld.env['IS_SUN']:
env_includes = ['../solaris', '../posix', '../solaris/oss'] env_includes = ['../solaris', '../posix', '../solaris/oss']
if bld.env['IS_WINDOWS']: if bld.env['IS_WINDOWS']:
@@ -36,7 +38,7 @@ def create_jack_process_obj(bld, target, sources, uselib = None, framework = Non
process.name = target process.name = target
process.target = target process.target = target
process.source = sources process.source = sources
if bld.env['IS_LINUX'] or bld.env['IS_MACOSX']:
if bld.env['IS_LINUX'] or bld.env['IS_MACOSX'] or bld.env['IS_QNX']:
process.env.append_value('CPPFLAGS', '-fvisibility=hidden') process.env.append_value('CPPFLAGS', '-fvisibility=hidden')
process.install_path = '${ADDON_DIR}/' process.install_path = '${ADDON_DIR}/'
process.use = [uselib.name] process.use = [uselib.name]
@@ -92,6 +94,22 @@ def build(bld):
uselib.append('RT') uselib.append('RT')
uselib.append('DL') uselib.append('DL')


if bld.env['IS_QNX']:
common_libsources += [
'JackDebugClient.cpp',
'timestamps.c',
'promiscuous.c',
'../posix/JackPosixThread.cpp',
'../posix/JackPosixProcessSync.cpp',
'../posix/JackPosixMutex.cpp',
'../posix/JackSocket.cpp',
'../posix/JackFifo.cpp',
'../linux/JackLinuxTime.c',
]
includes = ['../qnx', '../posix'] + includes
uselib.append('SOCKET')
# libdl and librt is included in libc in QNX

if bld.env['IS_SUN']: if bld.env['IS_SUN']:
common_libsources += [ common_libsources += [
'JackDebugClient.cpp', 'JackDebugClient.cpp',
@@ -159,7 +177,7 @@ def build(bld):
'JackMetadata.cpp', 'JackMetadata.cpp',
] ]


if bld.env['IS_LINUX']:
if bld.env['IS_LINUX'] or bld.env['IS_QNX']:
clientlib.source += [ clientlib.source += [
'../posix/JackSocketClientChannel.cpp', '../posix/JackSocketClientChannel.cpp',
'../posix/JackPosixServerLaunch.cpp', '../posix/JackPosixServerLaunch.cpp',
@@ -187,7 +205,7 @@ def build(bld):


clientlib.vnum = bld.env['JACK_API_VERSION'] clientlib.vnum = bld.env['JACK_API_VERSION']


if bld.env['IS_LINUX']:
if bld.env['IS_LINUX'] or bld.env['IS_QNX']:
clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')


if bld.env['IS_MACOSX']: if bld.env['IS_MACOSX']:
@@ -253,7 +271,7 @@ def build(bld):
'JackMetadata.cpp', 'JackMetadata.cpp',
] ]


if bld.env['IS_LINUX']:
if bld.env['IS_LINUX'] or bld.env['IS_QNX']:
serverlib.source += [ serverlib.source += [
'../posix/JackSocketServerChannel.cpp', '../posix/JackSocketServerChannel.cpp',
'../posix/JackSocketNotifyChannel.cpp', '../posix/JackSocketNotifyChannel.cpp',
@@ -289,7 +307,7 @@ def build(bld):


serverlib.vnum = bld.env['JACK_API_VERSION'] serverlib.vnum = bld.env['JACK_API_VERSION']


if bld.env['IS_LINUX']:
if bld.env['IS_LINUX'] or bld.env['IS_QNX']:
serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')


if bld.env['IS_MACOSX']: if bld.env['IS_MACOSX']:
@@ -312,7 +330,7 @@ def build(bld):
netlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' netlib.env['cxxshlib_PATTERN'] = 'lib%s.dll'
netlib.install_path = '${BINDIR}' netlib.install_path = '${BINDIR}'
netlib.use += ['WS2_32', 'WINMM'] netlib.use += ['WS2_32', 'WINMM']
elif bld.env['IS_MACOSX']:
elif bld.env['IS_MACOSX'] or bld.env['IS_QNX']:
netlib.install_path = '${LIBDIR}' netlib.install_path = '${LIBDIR}'
else: else:
netlib.use += ['RT'] netlib.use += ['RT']
@@ -328,7 +346,7 @@ def build(bld):
'JackGlobals.cpp', 'JackGlobals.cpp',
'ringbuffer.c'] 'ringbuffer.c']


if bld.env['IS_LINUX']:
if bld.env['IS_LINUX'] or bld.env['IS_QNX']:
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') netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')




+ 6
- 4
example-clients/wscript View File

@@ -49,6 +49,8 @@ def build(bld):
os_incdir = ['../linux', '../posix'] os_incdir = ['../linux', '../posix']
if bld.env['IS_MACOSX']: if bld.env['IS_MACOSX']:
os_incdir = ['../macosx', '../posix'] os_incdir = ['../macosx', '../posix']
if bld.env['IS_QNX']:
os_incdir = ['../qnx', '../posix']
if bld.env['IS_SUN']: if bld.env['IS_SUN']:
os_incdir = ['../solaris', '../posix'] os_incdir = ['../solaris', '../posix']
if bld.env['IS_WINDOWS']: if bld.env['IS_WINDOWS']:
@@ -76,7 +78,7 @@ def build(bld):
prog.use = use prog.use = use
if bld.env['IS_LINUX']: if bld.env['IS_LINUX']:
prog.use += ['RT', 'M'] prog.use += ['RT', 'M']
if bld.env['IS_SUN']:
if bld.env['IS_SUN'] or bld.env['IS_QNX']:
prog.use += ['M'] prog.use += ['M']
#prog.cflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation'] #prog.cflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation']
#prog.cxxflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation'] #prog.cxxflags = ['-Wno-deprecated-declarations', '-Wno-misleading-indentation']
@@ -90,7 +92,7 @@ def build(bld):
prog.use = ['clientlib'] prog.use = ['clientlib']
if bld.env['IS_LINUX']: if bld.env['IS_LINUX']:
prog.use += ['RT', 'READLINE'] prog.use += ['RT', 'READLINE']
if bld.env['IS_MACOSX']:
if bld.env['IS_MACOSX'] or bld.env['IS_QNX']:
prog.use += ['READLINE'] prog.use += ['READLINE']
if bld.env['IS_WINDOWS']: if bld.env['IS_WINDOWS']:
prog.use += ['READLINE'] prog.use += ['READLINE']
@@ -101,7 +103,7 @@ def build(bld):
prog.includes = os_incdir + ['../common/jack', '../common'] prog.includes = os_incdir + ['../common/jack', '../common']
prog.source = 'capture_client.c' prog.source = 'capture_client.c'
prog.use = ['clientlib'] prog.use = ['clientlib']
if bld.env['IS_MACOSX']:
if bld.env['IS_MACOSX'] or bld.env['IS_QNX']:
prog.use += ['SNDFILE'] prog.use += ['SNDFILE']
if bld.env['IS_LINUX']: if bld.env['IS_LINUX']:
prog.use += ['RT', 'SNDFILE'] prog.use += ['RT', 'SNDFILE']
@@ -111,7 +113,7 @@ def build(bld):
prog.uselib = ['SNDFILE'] prog.uselib = ['SNDFILE']
prog.target = 'jack_rec' prog.target = 'jack_rec'


if bld.env['IS_LINUX'] or bld.env['IS_MACOSX']:
if bld.env['IS_LINUX'] or bld.env['IS_MACOSX'] or bld.env['IS_QNX']:
prog = bld(features = 'c cprogram') prog = bld(features = 'c cprogram')
prog.includes = os_incdir + ['.', '..', '../common/jack', '../common'] prog.includes = os_incdir + ['.', '..', '../common/jack', '../common']
prog.source = ['netsource.c', '../common/netjack_packet.c'] prog.source = ['netsource.c', '../common/netjack_packet.c']


+ 2
- 0
tests/wscript View File

@@ -20,6 +20,8 @@ def build(bld):
prog.includes = ['..','../macosx', '../posix', '../common/jack', '../common'] prog.includes = ['..','../macosx', '../posix', '../common/jack', '../common']
if bld.env['IS_LINUX']: if bld.env['IS_LINUX']:
prog.includes = ['..','../linux', '../posix', '../common/jack', '../common'] prog.includes = ['..','../linux', '../posix', '../common/jack', '../common']
if bld.env['IS_QNX']:
prog.includes = ['..','../qnx', '../posix', '../common/jack', '../common']
if bld.env['IS_SUN']: if bld.env['IS_SUN']:
prog.includes = ['..','../solaris', '../posix', '../common/jack', '../common'] prog.includes = ['..','../solaris', '../posix', '../common/jack', '../common']
prog.source = test_program_sources prog.source = test_program_sources


+ 40
- 14
wscript View File

@@ -95,6 +95,15 @@ def options(opt):
alsa.check_cfg( alsa.check_cfg(
package='alsa >= 1.0.18', package='alsa >= 1.0.18',
args='--cflags --libs') args='--cflags --libs')
# Check for QNX sound headers
qsa = opt.add_auto_option(
'qsa',
help='Enable QNX sound driver',
conf_dest='BUILD_DRIVER_ALSA')
qsa.check(lib='asound', uselib_store='ALSA')
qsa.check(
header_name=['sys/asoundlib.h'],
msg='Checking for header sys/asoundlib.h')
firewire = opt.add_auto_option( firewire = opt.add_auto_option(
'firewire', 'firewire',
help='Enable FireWire driver (FFADO)', help='Enable FireWire driver (FFADO)',
@@ -185,6 +194,7 @@ def detect_platform(conf):
platforms = [ platforms = [
# ('KEY, 'Human readable name', ['strings', 'to', 'check', 'for']) # ('KEY, 'Human readable name', ['strings', 'to', 'check', 'for'])
('IS_LINUX', 'Linux', ['gnu0', 'gnukfreebsd', 'linux', 'posix']), ('IS_LINUX', 'Linux', ['gnu0', 'gnukfreebsd', 'linux', 'posix']),
('IS_QNX', 'QNX', ['qnx']),
('IS_MACOSX', 'MacOS X', ['darwin']), ('IS_MACOSX', 'MacOS X', ['darwin']),
('IS_SUN', 'SunOS', ['sunos']), ('IS_SUN', 'SunOS', ['sunos']),
('IS_WINDOWS', 'Windows', ['cygwin', 'msys', 'win32']) ('IS_WINDOWS', 'Windows', ['cygwin', 'msys', 'win32'])
@@ -293,7 +303,11 @@ def configure(conf):
conf.check_cc(fragment=fragment, define_name='HAVE_NGREG', mandatory=False, conf.check_cc(fragment=fragment, define_name='HAVE_NGREG', mandatory=False,
msg='Checking for NGREG') msg='Checking for NGREG')


conf.env['LIB_PTHREAD'] = ['pthread']
if conf.env['IS_QNX']:
conf.env['LIB_PTHREAD'] = ['c']
conf.env['LIB_SOCKET'] = ['socket']
else:
conf.env['LIB_PTHREAD'] = ['pthread']
conf.env['LIB_DL'] = ['dl'] conf.env['LIB_DL'] = ['dl']
conf.env['LIB_RT'] = ['rt'] conf.env['LIB_RT'] = ['rt']
conf.env['LIB_M'] = ['m'] conf.env['LIB_M'] = ['m']
@@ -496,6 +510,9 @@ def obj_add_includes(bld, obj):
if bld.env['IS_MACOSX']: if bld.env['IS_MACOSX']:
obj.includes += ['macosx', 'posix'] obj.includes += ['macosx', 'posix']


if bld.env['IS_QNX']:
obj.includes += ['qnx', 'posix']

if bld.env['IS_SUN']: if bld.env['IS_SUN']:
obj.includes += ['posix', 'solaris'] obj.includes += ['posix', 'solaris']


@@ -524,6 +541,10 @@ def build_jackd(bld):
jackd.use += ['DL', 'PTHREAD'] jackd.use += ['DL', 'PTHREAD']
jackd.framework = ['CoreFoundation'] jackd.framework = ['CoreFoundation']


if bld.env['IS_QNX']:
jackd.use += ['M', 'PTHREAD']


if bld.env['IS_SUN']: if bld.env['IS_SUN']:
jackd.use += ['DL', 'PTHREAD'] jackd.use += ['DL', 'PTHREAD']


@@ -582,16 +603,20 @@ def build_drivers(bld):
alsa_src = [ alsa_src = [
'common/memops.c', 'common/memops.c',
'linux/alsa/JackAlsaDriver.cpp', 'linux/alsa/JackAlsaDriver.cpp',
'linux/alsa/alsa_rawmidi.c',
'linux/alsa/alsa_seqmidi.c',
'linux/alsa/alsa_midi_jackmp.cpp',
'linux/alsa/generic_hw.c',
'linux/alsa/hdsp.c',
'linux/alsa/alsa_driver.c',
'linux/alsa/hammerfall.c',
'linux/alsa/ice1712.c'
'linux/alsa/alsa_driver.c'
] ]


if not bld.env['IS_QNX']:
alsa_src += [
'linux/alsa/alsa_rawmidi.c',
'linux/alsa/alsa_seqmidi.c',
'linux/alsa/alsa_midi_jackmp.cpp',
'linux/alsa/generic_hw.c',
'linux/alsa/hdsp.c',
'linux/alsa/hammerfall.c',
'linux/alsa/ice1712.c'
]

alsarawmidi_src = [ alsarawmidi_src = [
'linux/alsarawmidi/JackALSARawMidiDriver.cpp', 'linux/alsarawmidi/JackALSARawMidiDriver.cpp',
'linux/alsarawmidi/JackALSARawMidiInputPort.cpp', 'linux/alsarawmidi/JackALSARawMidiInputPort.cpp',
@@ -688,11 +713,12 @@ def build_drivers(bld):
target = 'alsa', target = 'alsa',
source = alsa_src, source = alsa_src,
use = ['ALSA']) use = ['ALSA'])
create_driver_obj(
bld,
target = 'alsarawmidi',
source = alsarawmidi_src,
use = ['ALSA'])
if not bld.env['IS_QNX']:
create_driver_obj(
bld,
target = 'alsarawmidi',
source = alsarawmidi_src,
use = ['ALSA'])


if bld.env['BUILD_DRIVER_FFADO']: if bld.env['BUILD_DRIVER_FFADO']:
create_driver_obj( create_driver_obj(


Loading…
Cancel
Save