diff --git a/Makefile b/Makefile new file mode 100755 index 00000000..d9dfa56b --- /dev/null +++ b/Makefile @@ -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 + diff --git a/common/wscript b/common/wscript old mode 100644 new mode 100755 index c2e2c4af..4dc5f9ed --- a/common/wscript +++ b/common/wscript @@ -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') diff --git a/example-clients/wscript b/example-clients/wscript index a8857aa7..065fcf15 100644 --- a/example-clients/wscript +++ b/example-clients/wscript @@ -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'] diff --git a/tests/wscript b/tests/wscript index 96a63bc9..0dcae8c3 100644 --- a/tests/wscript +++ b/tests/wscript @@ -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 diff --git a/wscript b/wscript old mode 100644 new mode 100755 index ba7ba9fa..defc9de5 --- a/wscript +++ b/wscript @@ -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(