$NetBSD: patch-common_wscript,v 1.7 2023/01/07 21:20:19 triaxx Exp $

Add NetBSD support.

--- common/wscript.orig	2022-04-15 19:14:06.000000000 +0000
+++ common/wscript
@@ -31,6 +31,8 @@ def create_jack_process_obj(bld, target,
         env_includes = ['../macosx', '../posix', '../macosx/coreaudio']
     if bld.env['IS_LINUX']:
         env_includes = ['../linux', '../posix', '../linux/alsa']
+    if bld.env['IS_NETBSD']:
+        env_includes = ['../netbsd', '../posix', '../netbsd/sun']
     if bld.env['IS_FREEBSD']:
         env_includes = ['../freebsd', '../posix', '../solaris/oss']
     if bld.env['IS_SUN']:
@@ -41,7 +43,7 @@ def create_jack_process_obj(bld, target,
     process.name = target
     process.target = target
     process.source = sources
-    if bld.env['IS_LINUX'] or bld.env['IS_MACOSX'] or bld.env['IS_FREEBSD']:
+    if bld.env['IS_LINUX'] or bld.env['IS_NETBSD'] 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]
@@ -98,6 +100,21 @@ def build(bld):
         uselib.append('RT')
         uselib.append('DL')
 
+    if bld.env['IS_NETBSD']:
+        common_libsources += [
+            'JackDebugClient.cpp',
+            'timestamps.c',
+            'promiscuous.c',
+           '../posix/JackPosixThread.cpp',
+           '../posix/JackPosixSemaphore.cpp',
+           '../posix/JackPosixProcessSync.cpp',
+           '../posix/JackPosixMutex.cpp',
+           '../posix/JackSocket.cpp',
+           '../netbsd/JackNetBSDTime.c',
+           ]
+        includes = ['../netbsd', '../posix'] + includes
+        uselib.append('RT')
+
     if bld.env['IS_FREEBSD']:
         common_libsources += [
             'JackDebugClient.cpp',
@@ -197,6 +214,12 @@ def build(bld):
             '../posix/JackPosixServerLaunch.cpp',
             ]
 
+    if bld.env['IS_NETBSD']:
+        clientlib.source += [
+            '../posix/JackSocketClientChannel.cpp',
+            '../posix/JackPosixServerLaunch.cpp',
+            ]
+
     if bld.env['IS_FREEBSD']:
         clientlib.source += [
             '../posix/JackSocketClientChannel.cpp',
@@ -232,6 +255,9 @@ def build(bld):
     if bld.env['IS_LINUX']:
         clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
 
+    if bld.env['IS_NETBSD']:
+        clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
+
     if bld.env['IS_FREEBSD']:
         clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
 
@@ -240,7 +266,8 @@ def build(bld):
         clientlib.env.append_value('LINKFLAGS', '-single_module')
 
     if bld.env['IS_SUN']:
-        clientlib.env.append_value('LINKFLAGS', '-lnsl -lsocket')
+        clientlib.env.append_value('LINKFLAGS', '-lnsl')
+        clientlib.env.append_value('LINKFLAGS', '-lsocket')
 
     if bld.variant:
         # if there is variant defined, we expect it to be the 32bit client lib one
@@ -311,6 +338,14 @@ def build(bld):
             '../posix/JackNetUnixSocket.cpp',
             ]
 
+    if bld.env['IS_NETBSD']:
+        serverlib.source += [
+            '../posix/JackSocketServerChannel.cpp',
+            '../posix/JackSocketNotifyChannel.cpp',
+            '../posix/JackSocketServerNotifyChannel.cpp',
+            '../posix/JackNetUnixSocket.cpp',
+            ]
+
     if bld.env['IS_FREEBSD']:
         serverlib.source += [
             '../posix/JackSocketServerChannel.cpp',
@@ -351,15 +386,21 @@ def build(bld):
     elif not bld.env['IS_WINDOWS']:
         serverlib.vnum = bld.env['JACK_API_VERSION']
 
+    serverlib.env.append_value('LINKFLAGS', '-lsamplerate')
+
     if bld.env['IS_LINUX']:
         serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
 
+    if bld.env['IS_NETBSD']:
+        serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
+
     if bld.env['IS_MACOSX']:
         serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
         serverlib.env.append_value('LINKFLAGS', '-single_module')
 
     if bld.env['IS_SUN']:
-        serverlib.env.append_value('LINKFLAGS', '-lnsl -lsocket')
+        serverlib.env.append_value('LINKFLAGS', '-lnsl')
+        serverlib.env.append_value('LINKFLAGS', '-lsocket')
 
     if bld.env['BUILD_NETLIB']:
         netlib = bld(features=['c', 'cxx', 'cxxshlib', 'cshlib'])
@@ -403,6 +444,15 @@ def build(bld):
             ]
             netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
 
+        if bld.env['IS_NETBSD']:
+            netlib.source += [
+                '../posix/JackNetUnixSocket.cpp',
+                '../posix/JackPosixThread.cpp',
+                '../posix/JackPosixMutex.cpp',
+                '../netbsd/JackNetBSDTime.c'
+            ]
+            netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
+
         if bld.env['IS_FREEBSD']:
             netlib.source += [
                 '../posix/JackNetUnixSocket.cpp',
@@ -420,6 +470,8 @@ def build(bld):
                 '../solaris/JackSolarisTime.c',
             ]
             netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
+            netlib.env.append_value('LINKFLAGS', '-lnsl')
+            netlib.env.append_value('LINKFLAGS', '-lsocket')
 
         if bld.env['IS_MACOSX']:
             netlib.source += [
@@ -490,11 +542,23 @@ def build(bld):
         process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
         process.use += ['ALSA', 'SAMPLERATE']
 
+    if bld.env['BUILD_ADAPTER'] and bld.env['IS_NETBSD']:
+         audio_adapter_sources += ['../netbsd/sun/JackSunAdapter.cpp']
+         process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
+         process.env.append_value('LINKFLAGS', '-lsamplerate')
+         process.use += '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'
 
+    if bld.env['BUILD_ADAPTER'] and bld.env['IS_SUN']:
+         process.env.append_value('LINKFLAGS', '-lsamplerate')
+         # This is clearly bogus and should be coming from the main flags but it is
+         # far too painful to try and trace why it is not, so a hack it is for now.
+         process.env.append_value('CFLAGS', '-fPIC')
+
     if bld.env['BUILD_ADAPTER'] and bld.env['IS_WINDOWS']:
         audio_adapter_sources += [
             '../windows/portaudio/JackPortAudioAdapter.cpp',
