$NetBSD: patch-wscript,v 1.6 2025/06/06 23:03:39 wiz Exp $ - Add NetBSD support. - Ensure man pages are installed on all Unixes. --- wscript.orig 2023-02-02 11:04:10.000000000 +0000 +++ wscript @@ -216,6 +216,7 @@ def detect_platform(conf): ('IS_LINUX', 'Linux', ['gnu0', 'gnukfreebsd', 'linux', 'posix']), ('IS_FREEBSD', 'FreeBSD', ['freebsd']), ('IS_MACOSX', 'MacOS X', ['darwin']), + ('IS_NETBSD', 'NetBSD', ['netbsd']), ('IS_SUN', 'SunOS', ['sunos']), ('IS_WINDOWS', 'Windows', ['cygwin', 'msys', 'win32']) ] @@ -258,6 +259,11 @@ def configure(conf): conf.check(lib='execinfo', uselib='EXECINFO', define_name='EXECINFO') conf.check_cfg(package='libsysinfo', args='--cflags --libs') + # Needed to work around "error: ::vfscanf has not been declared" failures + # prior to NetBSD 9.99.x. + if conf.env['IS_NETBSD']: + conf.env.append_unique('CXXFLAGS', '-D_NETBSD_SOURCE') + if not conf.env['IS_MACOSX']: conf.env.append_unique('LDFLAGS', '-Wl,--no-undefined') else: @@ -546,6 +552,9 @@ def obj_add_includes(bld, obj): if bld.env['IS_SUN']: obj.includes += ['posix', 'solaris'] + if bld.env['IS_NETBSD']: + obj.includes += ['posix', 'netbsd'] + if bld.env['IS_WINDOWS']: obj.includes += ['windows'] @@ -602,6 +611,10 @@ def create_driver_obj(bld, **kw): else: driver.env['cxxshlib_PATTERN'] = 'jack_%s.so' + if bld.env['IS_SUN']: + driver.env.append_value('LINKFLAGS', '-lnsl') + driver.env.append_value('LINKFLAGS', '-lsocket') + obj_add_includes(bld, driver) return driver @@ -704,6 +717,11 @@ def build_drivers(bld): 'windows/portaudio/JackPortAudioDriver.cpp', ] + sun_src = [ + 'common/memops.c', + 'netbsd/sun/JackSunDriver.cpp' + ] + winmme_src = [ 'windows/winmme/JackWinMMEDriver.cpp', 'windows/winmme/JackWinMMEInputPort.cpp', @@ -812,6 +830,11 @@ def build_drivers(bld): target='oss', source=oss_src) + if bld.env['IS_NETBSD']: + create_driver_obj( + bld, + target = 'sun', + source = sun_src) def build(bld): if not bld.variant and bld.env['BUILD_WITH_32_64']: @@ -831,8 +854,8 @@ def build(bld): build_drivers(bld) + bld.recurse('man') if bld.env['IS_LINUX'] or bld.env['IS_FREEBSD']: - bld.recurse('man') bld.recurse('systemd') if not bld.env['IS_WINDOWS'] and bld.env['BUILD_TESTS']: bld.recurse('tests')