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']
if bld.env['IS_LINUX']:
env_includes = ['../linux', '../posix', '../linux/alsa']
if bld.env['IS_QNX']:
env_includes = ['../qnx', '../posix']
if bld.env['IS_SUN']:
env_includes = ['../solaris', '../posix', '../solaris/oss']
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.target = target
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.install_path = '${ADDON_DIR}/'
process.use = [uselib.name]
@@ -92,6 +94,22 @@ def build(bld):
uselib.append('RT')
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']:
common_libsources += [
'JackDebugClient.cpp',
@@ -159,7 +177,7 @@ def build(bld):
'JackMetadata.cpp',
]

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

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')

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

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

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')

if bld.env['IS_MACOSX']:
@@ -312,7 +330,7 @@ def build(bld):
netlib.env['cxxshlib_PATTERN'] = 'lib%s.dll'
netlib.install_path = '${BINDIR}'
netlib.use += ['WS2_32', 'WINMM']
elif bld.env['IS_MACOSX']:
elif bld.env['IS_MACOSX'] or bld.env['IS_QNX']:
netlib.install_path = '${LIBDIR}'
else:
netlib.use += ['RT']
@@ -328,7 +346,7 @@ def build(bld):
'JackGlobals.cpp',
'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.env.append_value('CPPFLAGS', '-fvisibility=hidden')



+ 6
- 4
example-clients/wscript View File

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


+ 40
- 14
wscript View File

@@ -95,6 +95,15 @@ def options(opt):
alsa.check_cfg(
package='alsa >= 1.0.18',
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',
help='Enable FireWire driver (FFADO)',
@@ -185,6 +194,7 @@ def detect_platform(conf):
platforms = [
# ('KEY, 'Human readable name', ['strings', 'to', 'check', 'for'])
('IS_LINUX', 'Linux', ['gnu0', 'gnukfreebsd', 'linux', 'posix']),
('IS_QNX', 'QNX', ['qnx']),
('IS_MACOSX', 'MacOS X', ['darwin']),
('IS_SUN', 'SunOS', ['sunos']),
('IS_WINDOWS', 'Windows', ['cygwin', 'msys', 'win32'])
@@ -293,7 +303,11 @@ def configure(conf):
conf.check_cc(fragment=fragment, define_name='HAVE_NGREG', mandatory=False,
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_RT'] = ['rt']
conf.env['LIB_M'] = ['m']
@@ -496,6 +510,9 @@ def obj_add_includes(bld, obj):
if bld.env['IS_MACOSX']:
obj.includes += ['macosx', 'posix']

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

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

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

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


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

@@ -582,16 +603,20 @@ def build_drivers(bld):
alsa_src = [
'common/memops.c',
'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 = [
'linux/alsarawmidi/JackALSARawMidiDriver.cpp',
'linux/alsarawmidi/JackALSARawMidiInputPort.cpp',
@@ -688,11 +713,12 @@ def build_drivers(bld):
target = 'alsa',
source = alsa_src,
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']:
create_driver_obj(


Loading…
Cancel
Save