$NetBSD: patch-ac,v 1.9 2014/02/24 16:19:39 joerg Exp $

--- SConstruct.orig	2013-01-07 12:49:34.000000000 +0000
+++ SConstruct
@@ -60,6 +60,10 @@ def getPlatform():
         return 'darwin'
     elif sys.platform[:5] == 'sunos':
         return 'sunos'
+    elif sys.platform[:6] == 'netbsd':
+        return 'netbsd'
+    elif sys.platform[:9] == 'dragonfly':
+        return 'dragonfly'
     else:
         return 'unsupported'
 
@@ -408,6 +412,8 @@ if commonEnvironment['useGettext'] == '1
         commonEnvironment.Append(LIBS=['intl'])
     if getPlatform() == 'haiku':
         commonEnvironment.Append(LIBS=['intl'])
+    if getPlatform() == 'netbsd':
+        commonEnvironment.Append(LIBS=['intl'])
 else:
     print "CONFIGURATION DECISION: No localisation"
 
@@ -505,17 +511,17 @@ else:
 if getPlatform() == 'linux':
     commonEnvironment.Append(CCFLAGS = ["-DLINUX"])
     commonEnvironment.Append(CPPFLAGS = ['-DHAVE_SOCKETS'])
-    commonEnvironment.Append(CPPPATH = ['/usr/local/include'])
-    commonEnvironment.Append(CPPPATH = ['/usr/include'])
-    commonEnvironment.Append(CPPPATH = ['/usr/include'])
-    commonEnvironment.Append(CPPPATH = ['/usr/X11R6/include'])
     commonEnvironment.Append(CCFLAGS = ["-DPIPES"])
     commonEnvironment.Append(LINKFLAGS = ['-Wl,-Bdynamic'])
+    commonEnvironment.Append(CCFLAGS = Split(os.environ['CFLAGS']))
+    commonEnvironment.Append(CXXFLAGS = Split(os.environ['CXXFLAGS']))
+    commonEnvironment.Append(LINKFLAGS = Split(os.environ['LDFLAGS']))
 elif getPlatform() == 'sunos':
     commonEnvironment.Append(CCFLAGS = "-D_SOLARIS")
-    commonEnvironment.Append(CPPPATH = '/usr/local/include')
-    commonEnvironment.Append(CPPPATH = '/usr/include')
     commonEnvironment.Append(CPPPATH = '/usr/jdk/instances/jdk1.5.0/include')
+    commonEnvironment.Append(CCFLAGS = Split(os.environ['CFLAGS']))
+    commonEnvironment.Append(CXXFLAGS = Split(os.environ['CXXFLAGS']))
+    commonEnvironment.Append(LINKFLAGS = Split(os.environ['LDFLAGS']))
     if compilerGNU():
         commonEnvironment.Append(CCFLAGS = "-DPIPES")
         commonEnvironment.Append(LINKFLAGS = ['-Wl,-Bdynamic'])
@@ -570,6 +576,11 @@ elif getPlatform() == 'win32':
     if compilerIntel():
         print 'Generating code optimized for Intel Core 2 Duo and Pentium 4 that will run on other processors also.'
         commonEnvironment.Append(CCFLAGS = Split('/O3 /QaxTP'))
+elif getPlatform() == 'netbsd' or getPlatform() == 'dragonfly' or getPlatform() == 'sunos5':
+    commonEnvironment.Append(CCFLAGS = Split(os.environ['CFLAGS']))
+    commonEnvironment.Append(CXXFLAGS = Split(os.environ['CXXFLAGS']))
+    commonEnvironment.Append(LINKFLAGS = Split(os.environ['LDFLAGS']))
+    SConsignFile("unused-consign-file")
 
 if getPlatform() == 'linux':
     path1 = '/usr/include/python%s' % commonEnvironment['pythonVersion']
@@ -942,6 +953,13 @@ if commonEnvironment['buildRelease'] != 
             tmp += '64'
         s = '-DCS_DEFAULT_PLUGINDIR=\\"%s\\"' % tmp
         csoundLibraryEnvironment.Append(CPPFLAGS = [s])
+    if getPlatform() == 'netbsd' or getPlatform() == 'dragonfly' or getPlatform() == 'sunos':
+        tmp = '%s/lib/csound5/plugins' % commonEnvironment['prefix']
+        if commonEnvironment['useDouble'] != '0':
+            tmp += '64'
+        s = '-DCS_DEFAULT_PLUGINDIR=\\"%s\\"' % tmp
+        csoundLibraryEnvironment.Append(CPPFLAGS = [s])
+
 csoundDynamicLibraryEnvironment = csoundLibraryEnvironment.Clone()
 csoundDynamicLibraryEnvironment.Append(LIBS = ['sndfile'])
 if getPlatform() == 'win32':
@@ -999,6 +1017,11 @@ ws2_32
         csoundDynamicLibraryEnvironment.Append(SHLINKFLAGS = ['-module'])
 elif getPlatform() == 'linux' or getPlatform() == 'sunos' or getPlatform() == 'darwin':
     csoundDynamicLibraryEnvironment.Append(LIBS = ['dl', 'm', 'pthread'])
+elif getPlatform() == 'netbsd':
+    csoundDynamicLibraryEnvironment.Append(LIBS = ['m', 'pthread'])
+elif getPlatform() == 'dragonfly':
+    csoundDynamicLibraryEnvironment.Append(LINKFLAGS = ['-pthread'])
+    csoundDynamicLibraryEnvironment.Append(LIBS = ['m'])
 csoundInterfacesEnvironment = csoundDynamicLibraryEnvironment.Clone()
 
 if buildOSXFramework:
@@ -1289,7 +1312,7 @@ else:
     csoundLibraryEnvironment.Append(CCFLAGS='-fPIC')
     csoundLibrary = csoundLibraryEnvironment.Library(
         csoundLibraryName, libCsoundSources)
-if getPlatform() == 'linux' or getPlatform() == 'sunos' or getPlatform() == 'haiku':
+if getPlatform() == 'linux' or getPlatform() == 'sunos' or getPlatform() == 'haiku' or getPlatform() == 'netbsd' or getPlatform() == 'dragonfly':
  # We need the library before sndfile in case we are building a static
  # libcsound and passing -Wl,-as-needed
  libCsoundLibs.insert(0,csoundLibrary)
@@ -1691,7 +1714,7 @@ makePlugin(pluginEnvironment, 'signalflo
 makePlugin(pluginEnvironment, 'fractalnoise', ['Opcodes/tl/fractalnoise.cpp'])
 
 # platform-specific
-if (getPlatform() == 'linux' or getPlatform() == 'darwin'):
+if getPlatform() == 'linux' or getPlatform() == 'darwin' or getPlatform() == 'netbsd' or getPlatform() == 'dragonfly' or getPlatform() == 'sunos':
     makePlugin(pluginEnvironment, 'control', ['Opcodes/control.c'])
 #   makePlugin(pluginEnvironment, 'cpumeter', ['Opcodes/cpumeter.c'])
 if getPlatform() == 'linux':
@@ -1738,8 +1761,10 @@ else:
     print "CONFIGURATION DECISION: Building OSC plugin."
     oscEnvironment = pluginEnvironment.Clone()
     oscEnvironment.Append(LIBS = ['lo'])
-    if getPlatform() != 'haiku':
-	    oscEnvironment.Append(LIBS = ['pthread'])
+    if getPlatform() == 'dragonfly':
+        oscEnvironment.Append(LINKFLAGS = ['-pthread'])
+    elif getPlatform() != 'haiku':
+        oscEnvironment.Append(LIBS = ['pthread'])
     if getPlatform() == 'win32':
         oscEnvironment.Append(LIBS = csoundWindowsLibraries)
         if compilerGNU():
@@ -1842,8 +1867,15 @@ else:
         WiiEnvironment.Append(LIBS = ['wiiuse', 'bluetooth'])
     if p5gfound :
         P5GEnvironment.Append(LIBS = ['p5glove'])
-    vstEnvironment.Append(LIBS = ['stdc++', 'pthread', 'm'])
-    guiProgramEnvironment.Append(LIBS = ['stdc++', 'pthread', 'm'])
+    if getPlatform() == 'dragonfly':
+        csoundProgramEnvironment.Append(LINKFLAGS = ['-pthread'])
+        vstEnvironment.Append(LIBS = ['stdc++', 'm'])
+        vstEnvironment.Append(LINKFLAGS = ['-pthread'])
+        guiProgramEnvironment.Append(LIBS = ['stdc++', 'm'])
+        guiProgramEnvironment.Append(LINKFLAGS = ['-pthread'])
+    else:
+        vstEnvironment.Append(LIBS = ['stdc++', 'pthread', 'm'])
+        guiProgramEnvironment.Append(LIBS = ['stdc++', 'pthread', 'm'])
     if getPlatform() == 'darwin':
         csoundProgramEnvironment.Append(LINKFLAGS = Split('''-framework Carbon -framework CoreAudio -framework CoreMIDI'''))
 
@@ -1872,6 +1904,13 @@ else:
         widgetsEnvironment.Append(LIBS = csoundWindowsLibraries)
     elif getPlatform() == 'darwin':
         widgetsEnvironment.ParseConfig('fltk-config --use-images --cflags --cxxflags --ldflags')
+    elif getPlatform() == 'netbsd':
+        widgetsEnvironment.ParseConfig('fltk-config --use-images --cflags --cxxflags --ldflags')
+        widgetsEnvironment.Append(LIBS = ['stdc++', 'pthread', 'm'])
+    elif getPlatform() == 'dragonfly':
+        widgetsEnvironment.ParseConfig('fltk-config --use-images --cflags --cxxflags --ldflags')
+        widgetsEnvironment.Append(LIBS = ['stdc++', 'm'])
+        widgetsEnvironment.Append(LINKFLAGS = ['-pthread'])
     makePlugin(widgetsEnvironment, 'widgets',
                ['InOut/FL_graph.cpp', 'InOut/winFLTK.c', 'InOut/widgets.cpp'])
 
@@ -1909,7 +1948,11 @@ if not (commonEnvironment['useALSA'] == 
 else:
     print "CONFIGURATION DECISION: Building ALSA plugin."
     alsaEnvironment = pluginEnvironment.Clone()
-    alsaEnvironment.Append(LIBS = ['asound', 'pthread'])
+    if getPlatform() == 'dragonfly':
+        alsaEnvironment.Append(LIBS = ['asound'])
+        alsaEnvironment.Append(LINKFLAGS = ['-pthread'])
+    else:
+        alsaEnvironment.Append(LIBS = ['asound', 'pthread'])
     makePlugin(alsaEnvironment, 'rtalsa', ['InOut/rtalsa.c'])
 
 if pulseaudioFound and (getPlatform() == 'linux' or getPlatform() == 'sunos'):
@@ -1942,6 +1985,9 @@ else:
         portaudioEnvironment.Append(LIBS = ['winmm', 'dsound'])
         portaudioEnvironment.Append(LIBS = csoundWindowsLibraries)
         makePlugin(portaudioEnvironment, 'rtpa', ['InOut/rtpa.cpp'])
+    elif getPlatform() == 'netbsd' or getPlatform() == 'dragonfly' or getPlatform() == 'sunos5':
+        portaudioEnvironment.ParseConfig('pkg-config --cflags --libs portaudio-2.0')
+        makePlugin(portaudioEnvironment, 'rtpa', ['InOut/rtpa.c'])
     else:
         makePlugin(portaudioEnvironment, 'rtpa', ['InOut/rtpa.c'])
 
@@ -1954,6 +2000,9 @@ else:
         jackEnvironment.Append(LIBS = ['jack', 'asound', 'pthread'])
     elif getPlatform() == 'win32':
         jackEnvironment.Append(LIBS = ['jackdmp'])
+    elif getPlatform() == 'dragonfly':
+        jackEnvironment.Append(LIBS = ['jack'])
+        jackEnvironment.Append(LINKFLAGS = ['-pthread'])
     else:
         jackEnvironment.Append(LIBS = ['pthread', 'jack'])
     makePlugin(jackEnvironment, 'rtjack', ['InOut/rtjack.c'])
@@ -2016,6 +2065,12 @@ else:
 		fluidEnvironment.Append(LIBS = ['pthread'])
 	elif getPlatform() == 'haiku':
 		fluidEnvironment.Append(LIBS = ['fluidsynth'])
+        elif getPlatform() == 'netbsd':
+		fluidEnvironment.Append(LIBS = ['fluidsynth'])
+		fluidEnvironment.Append(LIBS = ['pthread'])
+        elif getPlatform() == 'dragonfly':
+		fluidEnvironment.Append(LIBS = ['fluidsynth'])
+                fluidEnvironment.Append(LINKFLAGS = ['-pthread'])
 	makePlugin(fluidEnvironment, 'fluidOpcodes',
 			   ['Opcodes/fluidOpcodes/fluidOpcodes.cpp'])
 
@@ -2178,8 +2233,10 @@ else:
         stkEnvironment.Append(LIBS = ['stdc++'])
     if getPlatform() == 'win32':
         stkEnvironment.Append(LIBS = csoundWindowsLibraries)
-    elif getPlatform() == 'linux' or getPlatform() == 'darwin' or getPlatform() == 'sunos':
+    elif getPlatform() == 'linux' or getPlatform() == 'darwin' or getPlatform() == 'sunos' or getPlatform() == 'netbsd':
         stkEnvironment.Append(LIBS = ['pthread'])
+    elif getPlatform() == 'dragonfly':
+        stkEnvironment.Append(LINKFLAGS = ['-pthread'])
     # This is the one that actually defines the opcodes.
     # They are straight wrappers, as simple as possible.
     stk = makePlugin(stkEnvironment, 'stk', ['Opcodes/stk/stkOpcodes.cpp'])
@@ -2206,6 +2263,8 @@ else:
         pyEnvironment.Append(LIBS = ['dl', 'm'])
     elif getPlatform() == 'win32':
         pyEnvironment['ENV']['PATH'] = os.environ['PATH']
+    elif getPlatform() == 'netbsd' or getPlatform() == 'dragonfly':
+        pyEnvironment.Append(LIBS = ['m'])
     pythonOpcodes = makePlugin(pyEnvironment, 'py',
                                ['Opcodes/py/pythonopcodes.c'])
     if getPlatform() == 'win32' and pythonLibs[0] < 'python24':
@@ -2606,6 +2665,13 @@ else:
             vstEnvironment.Append(LIBS = Split('fltk fltk_images fltk_png fltk_jpeg fltk_z'))
         else:
             vstEnvironment.Append(LIBS = Split('csound64 csnd fltk fltkimages fltkpng fltkjpeg fltkz'))
+    elif getPlatform() == 'netbsd' or getPlatform() == 'dragonfly':
+        vstEnvironment.Append(LIBS = ['m'])
+        vstEnvironment.Append(SHLINKFLAGS = '--no-export-all-symbols')
+        vstEnvironment.Append(LINKFLAGS = ['-Wl,-rpath-link,.'])
+        guiProgramEnvironment.Prepend(LINKFLAGS = ['-Wl,-rpath-link,.'])
+        os.spawnvp(os.P_WAIT, 'rm', ['rm', '-f', '_CsoundVST.so'])
+        os.symlink('lib_CsoundVST.so', '_CsoundVST.so')
     print 'PATH =', commonEnvironment['ENV']['PATH']
     csoundVstSources = Split('''
     frontends/CsoundVST/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp
@@ -2653,7 +2719,7 @@ if commonEnvironment['buildPDClass'] == 
         pdClass = pdClassEnvironment.Program(
             'csoundapi~.pd_darwin',
             'frontends/csoundapi_tilde/csoundapi_tilde.c')
-    elif getPlatform() == 'linux':
+    elif getPlatform() == 'linux' or getPlatform() == 'netbsd' or getPlatform() == 'dragonfly' or getPlatform() == 'sunos5':
         pdClass = pdClassEnvironment.SharedLibrary(
             'csoundapi~.pd_linux',
             'frontends/csoundapi_tilde/csoundapi_tilde.c',
@@ -2694,6 +2760,15 @@ if commonEnvironment['buildTclcsound'] =
         lib2 = 'tk%s' % commonEnvironment['tclversion']
         csTclEnvironment.Append(LIBS = [lib1, lib2])
         csTclEnvironment.Append(LIBS = csoundWindowsLibraries)
+    elif getPlatform() == 'netbsd':
+        lib1 = 'tcl%s' % commonEnvironment['tclversion']
+        lib2 = 'tk%s' % commonEnvironment['tclversion']
+        csTclEnvironment.Append(LIBS = [lib1, lib2, 'pthread'])
+    elif getPlatform() == 'dragonfly':
+        lib1 = 'tcl%s' % commonEnvironment['tclversion']
+        lib2 = 'tk%s' % commonEnvironment['tclversion']
+        csTclEnvironment.Append(LIBS = [lib1, lib2])
+        csTclEnvironment.Append(LINKFLAGS = ['-pthread'])
     csTclCmdObj = csTclEnvironment.SharedObject(
         'frontends/tclcsound/commands.c')
     csTcl = csTclEnvironment.Program(
@@ -2831,8 +2906,7 @@ else:
     blb = csBeatsEnvironment.CFile(target = 'frontends/beats/lex.yy.c',
                                source = 'frontends/beats/beats.l')
     bb = csBeatsEnvironment.Program('csbeats',
-                                    ['frontends/beats/main.c', 
-                                    byb, 
+                                    ['frontends/beats/main.c', 'frontends/beats/beats.tab.c',
                                     blb])
     executables.append(bb)
 
@@ -2887,11 +2961,15 @@ INSTDIR = commonEnvironment['instdir']
 PREFIX = INSTDIR + commonEnvironment['prefix']
 
 BIN_DIR = PREFIX + "/bin"
+BIN_DIR = PREFIX + "/lib/csound5"
 INCLUDE_DIR = PREFIX + "/include/csound"
+INCLUDE_DIR = PREFIX + "/include/csound5"
 
 if (commonEnvironment['Lib64'] == '1'):
     LIB_DIR = PREFIX + "/lib64"
+    LIB_DIR = PREFIX + "/lib64/csound5"
     PYTHON_DIR = '%s/lib64' % sys.prefix
+    PYTHON_DIR = '%s/lib64/csount5' % sys.prefix
 else:
     LIB_DIR = PREFIX + "/lib"
     PYTHON_DIR = '%s/lib' % sys.prefix
@@ -2903,8 +2981,10 @@ for i in sys.path:
 
 if commonEnvironment['useDouble'] == '0':
     PLUGIN_DIR = LIB_DIR + "/csound/plugins"
+    PLUGIN_DIR = LIB_DIR + "/plugins"
 else:
     PLUGIN_DIR = LIB_DIR + "/csound/plugins64"
+    PLUGIN_DIR = LIB_DIR + "/plugins64"
 
 if commonEnvironment['install'] == '1':
     installExecutables = Alias('install-executables',
