$NetBSD: patch-ac,v 1.10 2019/01/02 18:29:14 tnn Exp $

fix python3.x support and paths

--- SConstruct.orig	2013-01-07 12:49:34.000000000 +0000
+++ SConstruct
@@ -1,5 +1,5 @@
 #J vim:syntax=python
-print '''
+print('''
       C S O U N D 5
 
 SCons build file for Csound 5:
@@ -16,7 +16,7 @@ For MinGW, run in the MSys shell
     and use www.python.org WIN32 Python to run scons.
 For Microsoft Visual C++, run in the Platform SDK
     command shell, and use www.python.org WIN32 Python to run scons.
-'''
+''')
 
 import time
 import glob
@@ -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'
 
@@ -69,7 +73,7 @@ def getPlatform():
 #
 #############################################################################
 
-print "System platform is '" + getPlatform() + "'."
+print("System platform is '" + getPlatform() + "'.")
 
 
 # Create options that can be set from the command line.
@@ -317,24 +321,24 @@ def compilerGNU():
 optionsFilename = 'custom.py'
 
 if compilerIntel():
-	Tool('icl')(commonEnvironment)
-	optionsFilename = 'custom-msvc.py'
+        Tool('icl')(commonEnvironment)
+        optionsFilename = 'custom-msvc.py'
 elif compilerMicrosoft():
-	optionsFilename = 'custom-msvc.py'
+        optionsFilename = 'custom-msvc.py'
 elif getPlatform() == 'win32':
-	# On Windows, to exclude MSVC tools,
-	# we have to force MinGW tools and then re-create
-	# the environment from scratch.
-	commonEnvironment = Environment(ENV = os.environ, tools = ['mingw', 'swig', 'javac', 'jar'])
-	commandOptions.Update(commonEnvironment)
-	#Tool('mingw')(commonEnvironment)
-	optionsFilename = 'custom-mingw.py'
+        # On Windows, to exclude MSVC tools,
+        # we have to force MinGW tools and then re-create
+        # the environment from scratch.
+        commonEnvironment = Environment(ENV = os.environ, tools = ['mingw', 'swig', 'javac', 'jar'])
+        commandOptions.Update(commonEnvironment)
+        #Tool('mingw')(commonEnvironment)
+        optionsFilename = 'custom-mingw.py'
 
 if(not FindFile(optionsFilename, '.')):
-    print "\n\n*************************************************"  
-    print "%s NOT FOUND, please copy one of the custom-***.py" % optionsFilename
-    print "as %s and modify it to suit your system, if necessary" % optionsFilename
-    print "*************************************************"  
+    print("\n\n*************************************************"  )
+    print("%s NOT FOUND, please copy one of the custom-***.py" % optionsFilename)
+    print("as %s and modify it to suit your system, if necessary" % optionsFilename)
+    print("*************************************************"  )
     Exit(-1)
 
 
@@ -346,7 +350,7 @@ if commonEnvironment['custom']:
 Requires(optionsFilename, commonEnvironment)
    
 
-print "Using options from '%s.'" % optionsFilename
+print("Using options from '%s.'" % optionsFilename)
 
 fileOptions = Variables(optionsFilename)
 fileOptions.Add('customCPPPATH', 'List of custom CPPPATH variables')
@@ -375,21 +379,21 @@ commonEnvironment.Prepend(SWIGFLAGS = cu
 
 # Define options for different platforms.
 if getPlatform() != 'win32' and getPlatform() != 'sunos':
-    print "Build platform is '" + getPlatform() + "'."
+    print("Build platform is '" + getPlatform() + "'.")
 elif getPlatform() == 'sunos':
     if compilerSun():
-        print "Build platform is Sun Studio."
+        print("Build platform is Sun Studio.")
     elif compilerGNU():
-        print "Build platform is '" + getPlatform() + "'."
+        print("Build platform is '" + getPlatform() + "'.")
 else:
     if compilerMicrosoft():
-        print "Build platform is Microsoft Visual C++ (MSVC)."
+        print("Build platform is Microsoft Visual C++ (MSVC).")
     elif compilerIntel():
-        print "Build platform is the Intel C++ Compiler (ICL)."
+        print("Build platform is the Intel C++ Compiler (ICL).")
     elif compilerGNU():
-        print "Build platform is MinGW/MSYS"
+        print("Build platform is MinGW/MSYS")
 
-print "SCons tools on this platform: ", commonEnvironment['TOOLS']
+print("SCons tools on this platform: ", commonEnvironment['TOOLS'])
 
 commonEnvironment.Prepend(CPPPATH = ['.', './H'])
 if commonEnvironment['useLrint'] != '0':
@@ -398,7 +402,7 @@ if commonEnvironment['useLrint'] != '0':
 cf = Configure(commonEnvironment)
 if commonEnvironment['useGettext'] == '1':
   if cf.CheckHeader("libintl.h"):
-    print "CONFIGURATION DECISION: Using GNU gettext scheme"
+    print("CONFIGURATION DECISION: Using GNU gettext scheme")
     commonEnvironment.Prepend(CCFLAGS = ['-DGNU_GETTEXT'])
     if getPlatform() == "win32":
         commonEnvironment.Append(LIBS=['intl'])
@@ -408,8 +412,10 @@ 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"
+    print("CONFIGURATION DECISION: No localisation")
 
 if getPlatform() == 'haiku':
     commonEnvironment.Append(LIBS=['network'])
@@ -495,9 +501,9 @@ if commonEnvironment['Word64'] == '1':
         commonEnvironment.Append(CCFLAGS = ['-fPIC'])
 
 if commonEnvironment['useDouble'] == '0':
-    print 'CONFIGURATION DECISION: Using single-precision floating point for audio samples.'
+    print('CONFIGURATION DECISION: Using single-precision floating point for audio samples.')
 else:
-    print 'CONFIGURATION DECISION: Using double-precision floating point for audio samples.'
+    print('CONFIGURATION DECISION: Using double-precision floating point for audio samples.')
     commonEnvironment.Append(CPPFLAGS = ['-DUSE_DOUBLE'])
     
 # Define different build environments for different types of targets.
@@ -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'])
@@ -524,7 +530,7 @@ elif getPlatform() == 'darwin':
     commonEnvironment.Append(CPPPATH = '/usr/local/include')
     commonEnvironment.Append(CCFLAGS = "-DPIPES")
     if commonEnvironment['useAltivec'] == '1':
-        print 'CONFIGURATION DECISION: Using Altivec optimisation'
+        print('CONFIGURATION DECISION: Using Altivec optimisation')
         commonEnvironment.Append(CCFLAGS = "-faltivec")
 elif getPlatform() == 'haiku':
     commonEnvironment.Append(CPPPATH = '/boot/common/include')
@@ -568,8 +574,13 @@ elif getPlatform() == 'win32':
     if compilerMicrosoft():
         commonEnvironment.Append(CCFLAGS =  '/arch:sse')
     if compilerIntel():
-        print 'Generating code optimized for Intel Core 2 Duo and Pentium 4 that will run on other processors also.'
+        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']
@@ -603,7 +614,7 @@ elif getPlatform() == 'darwin':
     kernelstr = fout.readline()
     fout.close()
     OSXvers = int(kernelstr[:kernelstr.find('.')]) - 4
-    print "Mac OS X version 10.%d" % OSXvers
+    print("Mac OS X version 10.%d" % OSXvers)
     # dictionary mapping OS X version to Apple Python version
     # ex. 4:3 maps OS X 10.4 to Python 2.3
     # Note that OS X 10.2 did not ship with a Python framework
@@ -611,21 +622,21 @@ elif getPlatform() == 'darwin':
     OSXSystemPythonVersions = { 0:0, 1:0, 2:2, 3:3, 4:3, 5:5, 6:6, 7:7, 8:7 }
     sysPyVers = OSXSystemPythonVersions[OSXvers]
     if OSXvers >= 2:
-        print "Apple Python version is 2.%d" % sysPyVers
+        print("Apple Python version is 2.%d" % sysPyVers)
     # vers = (int(sys.hexversion) >> 24, (int(sys.hexversion) >> 16) & 255)
     vers = sys.version_info
     pvers = "%s.%s" % (vers[0], vers[1])
     # This logic is not quite right on OS X 10.2 and earlier
     # or if the MacPython version equals the expected Apple Python version
     if vers[1] == sysPyVers:
-        print "Current Python version is %s, using Apple Python Framework" % pvers
+        print("Current Python version is %s, using Apple Python Framework" % pvers)
         pyBasePath = '/System/Library/Frameworks'
     else:
-        print "Current Python version is %s, using MacPython Framework" % pvers
+        print("Current Python version is %s, using MacPython Framework" % pvers)
         pyBasePath = '/Library/Frameworks'
     if commonEnvironment['pythonVersion'] != pvers:
         commonEnvironment['pythonVersion'] = pvers
-        print "WARNING python version used is " + pvers
+        print("WARNING python version used is " + pvers)
     pythonIncludePath = ['%s/Python.Framework/Headers' % pyBasePath]
     pythonLinkFlags = [ '-F' + pyBasePath, '-framework', 'python']
     path1 = '%s/Python.framework/Versions/Current/lib' % pyBasePath
@@ -696,44 +707,44 @@ configure = commonEnvironment.Configure(
 })
 
 if not configure.CheckHeader("stdio.h", language = "C"):
-    print " *** Failed to compile a simple test program. The compiler is"
-    print " *** possibly not set up correctly, or is used with invalid flags."
-    print " *** Check config.log to find out more about the error."
+    print(" *** Failed to compile a simple test program. The compiler is")
+    print(" *** possibly not set up correctly, or is used with invalid flags.")
+    print(" *** Check config.log to find out more about the error.")
     Exit(-1)
 if not configure.CheckLibWithHeader("sndfile", "sndfile.h", language = "C"):
-	print "The sndfile library is required to build Csound 5."
-	Exit(-1)
+        print("The sndfile library is required to build Csound 5.")
+        Exit(-1)
 if getPlatform() == 'haiku':
-	pthreadLib = "root"
+        pthreadLib = "root"
 else:
-	pthreadLib = "pthread"
+        pthreadLib = "pthread"
 if not configure.CheckLibWithHeader(pthreadLib, "pthread.h", language = "C"):
- 	print "The pthread library is required to build Csound 5."
- 	Exit(-1)
+        print("The pthread library is required to build Csound 5.")
+        Exit(-1)
 
 # Support for GEN49 (load MP3 file)
 
 if commonEnvironment['includeWii'] != '0' and configure.CheckHeader("wiiuse.h", language = "C"):
     wiifound = 1
     wiiversion = commonEnvironment['includeWii']
-    print 'CONFIGURATION DECISION: Building with Wiimote support'
+    print('CONFIGURATION DECISION: Building with Wiimote support')
 else:
     wiifound = 0
-    print 'CONFIGURATION DECISION: No Wiimote support'
+    print('CONFIGURATION DECISION: No Wiimote support')
 
 if commonEnvironment['includeP5Glove'] == '1' :
     p5gfound = 1
-    print 'CONFIGURATION DECISION: Building with P5 Glove support'
+    print('CONFIGURATION DECISION: Building with P5 Glove support')
 else:
     p5gfound = 0
-    print 'CONFIGURATION DECISION: No P5 Glove support'
+    print('CONFIGURATION DECISION: No P5 Glove support')
 
 if commonEnvironment['includeSerial'] == '1' :
     serialfound = 1
-    print 'CONFIGURATION DECISION: Building with Serial code support'
+    print('CONFIGURATION DECISION: Building with Serial code support')
 else:
     serialfound = 0
-    print 'CONFIGURATION DECISION: No Serial code support'
+    print('CONFIGURATION DECISION: No Serial code support')
 
 
 #pthreadSpinlockFound = configure.CheckLibWithHeader('pthread', 'pthread.h', 'C', 'pthread_spin_lock(0);')
@@ -741,13 +752,13 @@ if getPlatform() != 'darwin': # pthreadS
     commonEnvironment.Append(CPPFLAGS = ['-DHAVE_PTHREAD_SPIN_LOCK'])
 pthreadBarrierFound = configure.CheckLibWithHeader('pthread', 'pthread.h', 'C', 'pthread_barrier_init(0, NULL, 0);')
 if pthreadBarrierFound:
-    print 'CONFIGURATION DECISION: Using HAVE_PTHREAD_BARRIER_INIT'
+    print('CONFIGURATION DECISION: Using HAVE_PTHREAD_BARRIER_INIT')
     commonEnvironment.Append(CPPFLAGS = ['-DHAVE_PTHREAD_BARRIER_INIT'])
 else:
-    print 'CONFIGURATION DECISION: Not using HAVE_PTHREAD_BARRIER_INIT'
+    print('CONFIGURATION DECISION: Not using HAVE_PTHREAD_BARRIER_INIT')
 openMpFound = configure.CheckLibWithHeader('gomp', 'omp.h', 'C++', 'int n = omp_get_num_threads();')
 if openMpFound and pthreadBarrierFound and commonEnvironment['useOpenMP'] == '1':
-    print 'CONFIGURATION DECISION: Using OpenMP.'
+    print('CONFIGURATION DECISION: Using OpenMP.')
     commonEnvironment.Append(CFLAGS = ['-fopenmp'])
     commonEnvironment.Append(CXXFLAGS = ['-fopenmp'])
     commonEnvironment.Append(CPPFLAGS = ['-DUSE_OPENMP'])
@@ -760,7 +771,7 @@ else:
    syncLockTestAndSetFound = configure.CheckLibWithHeader('m', 'stdint.h', 'C', '__sync_lock_test_and_set((int32_t *)0, 0);')
 if syncLockTestAndSetFound:
    commonEnvironment.Append(CPPFLAGS = ['-DHAVE_SYNC_LOCK_TEST_AND_SET'])
-   print  'found sync lock'
+   print( 'found sync lock')
 vstSdkFound = configure.CheckHeader("frontends/CsoundVST/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h", language = "C++")
 portaudioFound = configure.CheckHeader("portaudio.h", language = "C")
 #portmidiFound = configure.CheckHeader("portmidi.h", language = "C")
@@ -794,10 +805,10 @@ if not tclhfound:
 zlibhfound = configure.CheckHeader("zlib.h", language = "C")
 midiPluginSdkFound = configure.CheckHeader("funknown.h", language = "C++")
 luaFound = configure.CheckHeader("lua.h", language = "C")
-#print 'LUA: %s' % (['no', 'yes'][int(luaFound)])
+#print('LUA: %s' % (['no', 'yes'][int(luaFound)]))
 swigFound = 'swig' in commonEnvironment['TOOLS']
-print 'Checking for SWIG... %s' % (['no', 'yes'][int(swigFound)])
-print "Python Version: " + commonEnvironment['pythonVersion']
+print('Checking for SWIG... %s' % (['no', 'yes'][int(swigFound)]))
+print("Python Version: " + commonEnvironment['pythonVersion'])
 pythonFound = configure.CheckHeader("Python.h", language = "C")
 if not pythonFound:
     if getPlatform() == 'darwin':
@@ -865,7 +876,7 @@ elif configure.CheckHeader("dirent.h", l
     commonEnvironment.Append(CPPFLAGS = ['-DHAVE_DIRENT_H'])
 
 if not configure.CheckSndFile():
-    print "The sndfile library >= 1.0.19 is required to build Csound 5."
+    print("The sndfile library >= 1.0.19 is required to build Csound 5.")
     Exit(-1)
 
 # Package contents.
@@ -919,9 +930,9 @@ lexBuild = csoundLibraryEnvironment.CFil
 preBuild = csoundLibraryEnvironment.CFile(target = 'Engine/csound_prelex.c',
                            source = 'Engine/csound_pre.lex')
 if commonEnvironment['NewParserDebug'] != '0':
-    print 'CONFIGURATION DECISION: Building with new parser debugging'
+    print('CONFIGURATION DECISION: Building with new parser debugging')
     csoundLibraryEnvironment.Append(CPPFLAGS = ['-DPARSER_DEBUG=1'])
-else: print 'CONFIGURATION DECISION: Not building with new parser debugging'
+else: print('CONFIGURATION DECISION: Not building with new parser debugging')
 
 csoundLibraryEnvironment.Append(CPPFLAGS = ['-D__BUILDING_LIBCSOUND'])
 if commonEnvironment['buildRelease'] != '0':
@@ -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:
@@ -1016,7 +1039,7 @@ if buildOSXFramework:
         tmp += ['%s/Resources/Opcodes64' % OSXFrameworkCurrentVersion]
     for i in tmp:
         try:
-            os.mkdir(i, 0755)
+            os.mkdir(i, 0o755)
         except:
             pass
     # set up symbolic links
@@ -1045,7 +1068,7 @@ def MacOSX_InstallHeader(headerName):
 
 def MacOSX_InstallPlugin(fileName):
     if buildOSXFramework:
-        print "COPYINNG plugin"
+        print("COPYINNG plugin")
         pluginDir = '%s/Resources/Opcodes' % OSXFrameworkCurrentVersion
         if commonEnvironment['useDouble'] != '0':
             pluginDir += '64'
@@ -1233,7 +1256,7 @@ libCsoundSources += newParserSources
 
 csoundLibraryEnvironment.Append(CCFLAGS='-fPIC')
 if commonEnvironment['dynamicCsoundLibrary'] == '1':
-    print 'CONFIGURATION DECISION: Building dynamic Csound library'
+    print('CONFIGURATION DECISION: Building dynamic Csound library')
     if getPlatform() == 'linux' or getPlatform() == 'sunos':
         libName = 'lib' + csoundLibraryName + '.so'
         libName2 = libName + '.' + csoundLibraryVersion
@@ -1285,11 +1308,11 @@ if commonEnvironment['dynamicCsoundLibra
         csoundLibrary = csoundDynamicLibraryEnvironment.SharedLibrary(
             csoundLibraryName, libCsoundSources)
 else:
-    print 'CONFIGURATION DECISION: Building static Csound library'
+    print('CONFIGURATION DECISION: Building static Csound library')
     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)
@@ -1355,7 +1378,7 @@ def makePythonModule(env, targetName, so
             pyModule_ = env.SharedLibrary('_%s' % targetName, sources, SHLIBSUFFIX = '.pyd')
         if getPlatform() == 'win32' and pythonLibs[0] < 'python24':
             Depends(pyModule_, pythonImportLibrary)
-        print "PYTHON MODULE %s..." % targetName
+        print("PYTHON MODULE %s..." % targetName)
     pythonModules.append(pyModule_)
     pythonModules.append('%s.py' % targetName)
     return pyModule_
@@ -1369,15 +1392,15 @@ def makeLuaModule(env, targetName, srcs)
             luaModule_ = env.SharedLibrary('%s' % targetName, srcs, SHLIBPREFIX="", SHLIBSUFFIX = '.so')
         else:
             luaModule_ = env.SharedLibrary('%s' % targetName, srcs, SHLIBSUFFIX = '.dll')
-        print "LUA MODULE %s..." % targetName
+        print("LUA MODULE %s..." % targetName)
     return luaModule_
 
 # libcsnd.so is used by all wrapper libraries.
 
 if not (commonEnvironment['buildInterfaces'] == '1'):
-    print 'CONFIGURATION DECISION: Not building Csound C++ interface library.'
+    print('CONFIGURATION DECISION: Not building Csound C++ interface library.')
 else:
-    print 'CONFIGURATION DECISION: Building Csound C++ interface library.'
+    print('CONFIGURATION DECISION: Building Csound C++ interface library.')
     csoundInterfacesEnvironment.Append(CPPPATH = ['interfaces'])
     if musicXmlFound:
         csoundInterfacesEnvironment.Prepend(LIBS = 'musicxml2')
@@ -1456,36 +1479,36 @@ else:
         option = '-I' + option
         csoundWrapperEnvironment.Append(SWIGFLAGS = [option])
     swigflags = csoundWrapperEnvironment['SWIGFLAGS']
-    print 'swigflags:', swigflags
+    print('swigflags:', swigflags)
     luaWrapper = None
     if not (luaFound and commonEnvironment['buildLuaWrapper'] != '0'):
-        print 'CONFIGURATION DECISION: Not building Lua wrapper to Csound C++ interface library.'
+        print('CONFIGURATION DECISION: Not building Lua wrapper to Csound C++ interface library.')
     else:
-        print 'CONFIGURATION DECISION: Building Lua wrapper to Csound C++ interface library.'
-	luaWrapperEnvironment = csoundWrapperEnvironment.Clone()
+        print('CONFIGURATION DECISION: Building Lua wrapper to Csound C++ interface library.')
+        luaWrapperEnvironment = csoundWrapperEnvironment.Clone()
         if getPlatform() != 'win32':
             csoundWrapperEnvironment.Append(CPPPATH=['/usr/include/lua5.1'])
         if getPlatform() == 'win32':
             csoundLuaInterface = luaWrapperEnvironment.SharedObject(
-		    'interfaces/lua_interface.i',
-		    SWIGFLAGS = [swigflags, '-lua', '-module', 'luaCsnd', '-outdir', '.'])
-	    luaWrapperEnvironment.Prepend(LIBS = ['csnd','lua51'])
-	else:
-	    csoundLuaInterface = luaWrapperEnvironment.SharedObject(
-			'interfaces/lua_interface.i',
-			SWIGFLAGS = [swigflags, '-lua', '-module', 'luaCsnd', '-outdir', '.'])
+                    'interfaces/lua_interface.i',
+                    SWIGFLAGS = [swigflags, '-lua', '-module', 'luaCsnd', '-outdir', '.'])
+            luaWrapperEnvironment.Prepend(LIBS = ['csnd','lua51'])
+        else:
+            csoundLuaInterface = luaWrapperEnvironment.SharedObject(
+                        'interfaces/lua_interface.i',
+                        SWIGFLAGS = [swigflags, '-lua', '-module', 'luaCsnd', '-outdir', '.'])
             luaWrapperEnvironment.Prepend(LIBS = ['csnd','luajit-5.1'])
-       	luaWrapper = makeLuaModule(luaWrapperEnvironment, 'luaCsnd', [csoundLuaInterface])
-	Depends(luaWrapper, csoundLuaInterface)
+        luaWrapper = makeLuaModule(luaWrapperEnvironment, 'luaCsnd', [csoundLuaInterface])
+        Depends(luaWrapper, csoundLuaInterface)
 
     if not (javaFound and commonEnvironment['buildJavaWrapper'] != '0'):
-        print 'CONFIGURATION DECISION: Not building Java wrapper to Csound C++ interface library.'
+        print('CONFIGURATION DECISION: Not building Java wrapper to Csound C++ interface library.')
     else:
-        print 'CONFIGURATION DECISION: Building Java wrapper to Csound C++ interface library.'
+        print('CONFIGURATION DECISION: Building Java wrapper to Csound C++ interface library.')
         javaWrapperEnvironment = csoundWrapperEnvironment.Clone()
         if  getPlatform() == 'darwin': 
              javaWrapperEnvironment.Append(LINKFLAGS = ['-L.', '-l_csnd'])
-	else: javaWrapperEnvironment.Prepend(LIBS = ['csnd'])
+        else: javaWrapperEnvironment.Prepend(LIBS = ['csnd'])
         if getPlatform() == 'darwin':
             javaWrapperEnvironment.Append(CPPPATH =
                 ['/System/Library/Frameworks/JavaVM.framework/Headers'])
@@ -1525,7 +1548,7 @@ else:
             target = './interfaces', source = './interfaces',
             JAVACFLAGS = ['-source', '5', '-target', '5'])
         try:
-            os.mkdir('interfaces/csnd', 0755)
+            os.mkdir('interfaces/csnd', 0o755)
         except:
             pass
         jcsndJar = javaWrapperEnvironment.Jar(
@@ -1535,57 +1558,57 @@ else:
     # Please do not remove these two variables, needed to get things to build on Windows...
     pythonWrapper = None
     if not (pythonFound and commonEnvironment['buildPythonWrapper'] != '0'):
-        print 'CONFIGURATION DECISION: Not building Python wrapper to Csound C++ interface library.'
+        print('CONFIGURATION DECISION: Not building Python wrapper to Csound C++ interface library.')
     else:
-        print 'CONFIGURATION DECISION: Building Python wrapper to Csound C++ interface library.'
+        print('CONFIGURATION DECISION: Building Python wrapper to Csound C++ interface library.')
         pythonWrapperEnvironment = csoundWrapperEnvironment.Clone()
         if  getPlatform() == 'darwin': 
              pythonWrapperEnvironment.Append(LINKFLAGS = ['-L.', '-l_csnd'])
         else: pythonWrapperEnvironment.Prepend(LIBS = Split('csnd'))
-	if getPlatform() == 'linux':
-	    os.spawnvp(os.P_WAIT, 'rm', ['rm', '-f', '_csnd.so'])
-	    # os.symlink('lib_csnd.so', '_csnd.so')
-	    pythonWrapperEnvironment.Append(LINKFLAGS = ['-Wl,-rpath-link,.'])
-	if getPlatform() == 'darwin':
+        if getPlatform() == 'linux':
+            os.spawnvp(os.P_WAIT, 'rm', ['rm', '-f', '_csnd.so'])
+            # os.symlink('lib_csnd.so', '_csnd.so')
+            pythonWrapperEnvironment.Append(LINKFLAGS = ['-Wl,-rpath-link,.'])
+        if getPlatform() == 'darwin':
             #pythonWrapperEnvironment.Append(LINKFLAGS = pythonLinkFlags)
-	    if commonEnvironment['dynamicCsoundLibrary'] == '1':
-		#ilibName = "lib_csnd.dylib"
-		#ilibVersion = csoundLibraryVersion
-		#pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-Xlinker -compatibility_version -Xlinker %s''' % ilibVersion))
-		#pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-Xlinker -current_version -Xlinker %s''' % ilibVersion))
-		#pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-install_name /Library/Frameworks/%s/%s''' % (OSXFrameworkCurrentVersion, ilibName)))
-		pythonWrapperEnvironment.Append(LINKFLAGS = Split('''-undefined dynamic_lookup'''))
+            if commonEnvironment['dynamicCsoundLibrary'] == '1':
+                #ilibName = "lib_csnd.dylib"
+                #ilibVersion = csoundLibraryVersion
+                #pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-Xlinker -compatibility_version -Xlinker %s''' % ilibVersion))
+                #pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-Xlinker -current_version -Xlinker %s''' % ilibVersion))
+                #pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-install_name /Library/Frameworks/%s/%s''' % (OSXFrameworkCurrentVersion, ilibName)))
+                pythonWrapperEnvironment.Append(LINKFLAGS = Split('''-undefined dynamic_lookup'''))
                 pythonWrapperEnvironment.Append(CPPPATH = pythonIncludePath)
-		#pythonWrapper = pythonWrapperEnvironment.SharedLibrary('_csnd', pythonWrapperSources)
-		pyVersToken = '-DPYTHON_24_or_newer'
-	        csoundPythonInterface = pythonWrapperEnvironment.SharedObject(
-		'interfaces/python_interface.i',
-		SWIGFLAGS = [swigflags, '-python', '-outdir', '.', pyVersToken])
-	        pythonWrapperEnvironment.Clean('.', 'interfaces/python_interface_wrap.h')
-		#try: os.symlink('lib_csnd.dylib', 'libcsnd.dylib')
-		#except: print "link exists..."
-	else:
-	    pythonWrapperEnvironment.Append(LINKFLAGS = pythonLinkFlags)
-	    pythonWrapperEnvironment.Prepend(LIBPATH = pythonLibraryPath)	
-	    if getPlatform() == 'win32':
-		pythonWrapperEnvironment.Prepend(LIBS = pythonLibs)
-	    pythonWrapperEnvironment.Append(CPPPATH = pythonIncludePath)
-	    fixCFlagsForSwig(pythonWrapperEnvironment)
-	    pyVersToken = '-DPYTHON_24_or_newer'
-	    csoundPythonInterface = pythonWrapperEnvironment.SharedObject(
-		'interfaces/python_interface.i',
-		SWIGFLAGS = [swigflags, '-python', '-outdir', '.', pyVersToken])
-	    pythonWrapperEnvironment.Clean('.', 'interfaces/python_interface_wrap.h')
-	    if getPlatform() == 'win32' and pythonLibs[0] < 'python24' and compilerGNU():
-		Depends(csoundPythonInterface, pythonImportLibrary)
-	pythonWrapper = makePythonModule(pythonWrapperEnvironment, 'csnd', [csoundPythonInterface])
-	pythonModules.append('csnd.py')
-	Depends(pythonWrapper, csnd)
+                #pythonWrapper = pythonWrapperEnvironment.SharedLibrary('_csnd', pythonWrapperSources)
+                pyVersToken = '-DPYTHON_24_or_newer'
+                csoundPythonInterface = pythonWrapperEnvironment.SharedObject(
+                'interfaces/python_interface.i',
+                SWIGFLAGS = [swigflags, '-python', '-outdir', '.', pyVersToken])
+                pythonWrapperEnvironment.Clean('.', 'interfaces/python_interface_wrap.h')
+                #try: os.symlink('lib_csnd.dylib', 'libcsnd.dylib')
+                #except: print("link exists...")
+        else:
+            pythonWrapperEnvironment.Append(LINKFLAGS = pythonLinkFlags)
+            pythonWrapperEnvironment.Prepend(LIBPATH = pythonLibraryPath)
+            if getPlatform() == 'win32':
+                pythonWrapperEnvironment.Prepend(LIBS = pythonLibs)
+            pythonWrapperEnvironment.Append(CPPPATH = pythonIncludePath)
+            fixCFlagsForSwig(pythonWrapperEnvironment)
+            pyVersToken = '-DPYTHON_24_or_newer'
+            csoundPythonInterface = pythonWrapperEnvironment.SharedObject(
+                'interfaces/python_interface.i',
+                SWIGFLAGS = [swigflags, '-python', '-outdir', '.', pyVersToken])
+            pythonWrapperEnvironment.Clean('.', 'interfaces/python_interface_wrap.h')
+            if getPlatform() == 'win32' and pythonLibs[0] < 'python24' and compilerGNU():
+                Depends(csoundPythonInterface, pythonImportLibrary)
+        pythonWrapper = makePythonModule(pythonWrapperEnvironment, 'csnd', [csoundPythonInterface])
+        pythonModules.append('csnd.py')
+        Depends(pythonWrapper, csnd)
 
 if commonEnvironment['generatePdf'] == '0':
-    print 'CONFIGURATION DECISION: Not generating Csound API PDF documentation.'
+    print('CONFIGURATION DECISION: Not generating Csound API PDF documentation.')
 else:
-    print 'CONFIGURATION DECISION: Generating Csound API PDF documentation.'
+    print('CONFIGURATION DECISION: Generating Csound API PDF documentation.')
     refmanTex = commonEnvironment.Command('doc/latex/refman.tex', 'Doxyfile', ['doxygen $SOURCE'])
     Depends(refmanTex, csoundLibrary)
     csoundPdf = commonEnvironment.Command('refman.pdf', 'doc/latex/refman.tex', ['pdflatex --include-directory=doc/latex --interaction=nonstopmode --job-name=CsoundAPI $SOURCE'])
@@ -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':
@@ -1718,9 +1741,9 @@ makePlugin(pluginEnvironment, 'cellular'
 #############################################################################
 # UDP opcodes
 if commonEnvironment['useUDP'] == '0':
-    print "CONFIGURATION DECISION: Not building UDP plugins."
+    print("CONFIGURATION DECISION: Not building UDP plugins.")
 else:
-    print "CONFIGURATION DECISION: Building UDP plugins."
+    print("CONFIGURATION DECISION: Building UDP plugins.")
     udpEnvironment = pluginEnvironment.Clone()
     if getPlatform() != 'haiku':
        udpEnvironment.Append(LIBS = ['pthread'])
@@ -1733,13 +1756,15 @@ else:
 
 # OSC opcodes
 if not (commonEnvironment['useOSC'] == '1' and oscFound):
-    print "CONFIGURATION DECISION: Not building OSC plugin."
+    print("CONFIGURATION DECISION: Not building OSC plugin.")
 else:
-    print "CONFIGURATION DECISION: Building OSC plugin."
+    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():
@@ -1771,32 +1796,32 @@ if jackFound and commonEnvironment['useJ
         jpluginEnvironment.Append(LIBS = ['jackdmp'])
     elif getPlatform() == 'darwin':
         jpluginEnvironment.Append(LIBS = ['pthread'])
-	jpluginEnvironment.Append(LINKFLAGS = ['-framework', 'Jackmp'])
+        jpluginEnvironment.Append(LINKFLAGS = ['-framework', 'Jackmp'])
     makePlugin(jpluginEnvironment, 'jackTransport', 'Opcodes/jackTransport.c')
     makePlugin(jpluginEnvironment, 'jacko', 'Opcodes/jacko.cpp')
 if boostFound:
     makePlugin(pluginEnvironment, 'chua', 'Opcodes/chua/ChuaOscillator.cpp')
 if gmmFound and commonEnvironment['useDouble'] != '0':
     makePlugin(pluginEnvironment, 'linear_algebra', 'Opcodes/linear_algebra.cpp')
-    print 'CONFIGURATION DECISION: Building linear algebra opcodes.'
+    print('CONFIGURATION DECISION: Building linear algebra opcodes.')
 else:
-    print 'CONFIGURATION DECISION: Not building linear algebra opcodes.'
+    print('CONFIGURATION DECISION: Not building linear algebra opcodes.')
 
 if commonEnvironment['buildImageOpcodes'] == '1':
     if getPlatform() == 'win32':
         if configure.CheckHeader("png.h", language="C") and zlibhfound:
-            print 'CONFIGURATION DECISION: Building image opcodes'
+            print('CONFIGURATION DECISION: Building image opcodes')
             imEnv = pluginEnvironment.Clone()
             imEnv.Append(LIBS= Split(''' fltk_png fltk_z '''))
             makePlugin(imEnv, 'image', ['Opcodes/imageOpcodes.c'])
     else:
         if configure.CheckHeader("png.h", language="C") and zlibhfound:
-            print 'CONFIGURATION DECISION: Building image opcodes'
+            print('CONFIGURATION DECISION: Building image opcodes')
             imEnv = pluginEnvironment.Clone()
             imEnv.Append(LIBS= Split(''' png z '''))
             makePlugin(imEnv, 'image', ['Opcodes/imageOpcodes.c'])
 else:
-    print 'CONFIGURATION DECISION: Not building image opcodes'
+    print('CONFIGURATION DECISION: Not building image opcodes')
 
 # FLTK widgets
 
@@ -1810,11 +1835,11 @@ if getPlatform() != 'darwin':
 if ((commonEnvironment['buildCsoundVST'] == '1') and boostFound and fltkFound):
  try:
     if vstEnvironment.ParseConfig(fltkConfigFlags):
-        print 'Parsed fltk-config.'
+        print('Parsed fltk-config.')
     else:
-        print 'Could not parse fltk-config.'
+        print('Could not parse fltk-config.')
  except:
-    print 'Exception when attempting to parse fltk-config.'
+    print('Exception when attempting to parse fltk-config.')
 if getPlatform() == 'darwin':
     vstEnvironment.Append(LIBS = ['fltk', 'fltk_images']) # png z jpeg are not on OSX at the mo
 if getPlatform() == 'win32':
@@ -1834,7 +1859,7 @@ else:
         vstEnvironment.Append(LIBS = ['dl'])
         guiProgramEnvironment.Append(LIBS = ['dl'])
     if getPlatform() != 'haiku':
-	    csoundProgramEnvironment.Append(LIBS = ['pthread', 'm'])
+        csoundProgramEnvironment.Append(LIBS = ['pthread', 'm'])
     if wiifound :
       if getPlatform() == 'darwin':
         WiiEnvironment.Append(LIBS = ['wiiuse'])
@@ -1842,13 +1867,20 @@ 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'''))
 
 if (not (commonEnvironment['useFLTK'] == '1' and fltkFound)):
-    print 'CONFIGURATION DECISION: Not building with FLTK graphs and widgets.'
+    print('CONFIGURATION DECISION: Not building with FLTK graphs and widgets.')
 else:
     widgetsEnvironment = pluginEnvironment.Clone()
     if (commonEnvironment['buildvst4cs'] == '1'):
@@ -1872,13 +1904,20 @@ 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'])
 
     if commonEnvironment['buildVirtual'] == '0' or not fltk117Found:
-        print "CONFIGURATION DECISION: Not building Virtual Keyboard plugin. (FLTK 1.1.7+ required)"
+        print("CONFIGURATION DECISION: Not building Virtual Keyboard plugin. (FLTK 1.1.7+ required)")
     else:
-        print "CONFIGURATION DECISION: Building Virtual Keyboard plugin."
+        print("CONFIGURATION DECISION: Building Virtual Keyboard plugin.")
         widgetsEnvironment.Append(CPPPATH = ['./InOut', './InOut/virtual_keyboard'])
         makePlugin(widgetsEnvironment, 'virtual',
                    ['InOut/virtual_keyboard/FLTKKeyboard.cpp',
@@ -1894,7 +1933,7 @@ else:
 # REAL TIME AUDIO AND MIDI
 
 if commonEnvironment['useCoreAudio'] == '1' and getPlatform() == 'darwin':
-    print "CONFIGURATION DECISION: Building CoreAudio plugin."
+    print("CONFIGURATION DECISION: Building CoreAudio plugin.")
     coreaudioEnvironment = pluginEnvironment.Clone()
     coreaudioEnvironment.Append(CCFLAGS = ['-I/System/Library/Frameworks/CoreAudio.framework/Headers'])
 #    makePlugin(coreaudioEnvironment, 'rtcoreaudio', ['InOut/rtcoreaudio.c'])
@@ -1902,18 +1941,22 @@ if commonEnvironment['useCoreAudio'] == 
     coreaudioEnvironment.Append(LINKFLAGS = ['-framework', 'AudioUnit'])
     makePlugin(coreaudioEnvironment, 'rtauhal', ['InOut/rtauhal.c'])
 else:
-    print "CONFIGURATION DECISION: Not building CoreAudio plugin."
+    print("CONFIGURATION DECISION: Not building CoreAudio plugin.")
 
 if not (commonEnvironment['useALSA'] == '1' and alsaFound):
-    print "CONFIGURATION DECISION: Not building ALSA plugin."
+    print("CONFIGURATION DECISION: Not building ALSA plugin.")
 else:
-    print "CONFIGURATION DECISION: Building ALSA plugin."
+    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'):
-   print "CONFIGURATION DECISION: Building PulseAudio plugin"
+   print("CONFIGURATION DECISION: Building PulseAudio plugin")
    pulseaudioEnv = pluginEnvironment.Clone()
    pulseaudioEnv.Append(LIBS = ['pulse-simple'])
    makePlugin(pulseaudioEnv, 'rtpulse', ['InOut/rtpulse.c'])
@@ -1924,9 +1967,9 @@ if getPlatform() == 'win32':
     makePlugin(winmmEnvironment, 'rtwinmm', ['InOut/rtwinmm.c'])
 
 if not (commonEnvironment['usePortAudio'] == '1' and portaudioFound):
-    print "CONFIGURATION DECISION: Not building PortAudio module."
+    print("CONFIGURATION DECISION: Not building PortAudio module.")
 else:
-    print "CONFIGURATION DECISION: Building PortAudio module."
+    print("CONFIGURATION DECISION: Building PortAudio module.")
     portaudioEnvironment = pluginEnvironment.Clone()
     if getPlatform() == 'win32':
        portaudioEnvironment.Append(LIBS = ['portaudio'])
@@ -1934,7 +1977,7 @@ else:
        portaudioEnvironment.Append(LIBS = ['portaudio'])
     if (getPlatform() == 'linux'):
         if (commonEnvironment['useJack']=='1' and jackFound):
-            print "Adding Jack library for PortAudio"
+            print("Adding Jack library for PortAudio")
             portaudioEnvironment.Append(LIBS = ['jack'])
         portaudioEnvironment.Append(LIBS = ['asound', 'pthread'])
         makePlugin(portaudioEnvironment, 'rtpa', ['InOut/rtpa.c'])
@@ -1942,18 +1985,24 @@ 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'])
 
 if not (commonEnvironment['useJack'] == '1' and jackFound):
-    print "CONFIGURATION DECISION: Not building JACK plugin."
+    print("CONFIGURATION DECISION: Not building JACK plugin.")
 else:
-    print "CONFIGURATION DECISION: Building JACK plugin."
+    print("CONFIGURATION DECISION: Building JACK plugin.")
     jackEnvironment = pluginEnvironment.Clone()
     if getPlatform() == 'linux':
         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'])
@@ -1966,7 +2015,7 @@ if getPlatform() == 'haiku':
 
 
 if commonEnvironment['usePortMIDI'] == '1' and portmidiFound:
-    print 'CONFIGURATION DECISION: Building with PortMIDI.'
+    print('CONFIGURATION DECISION: Building with PortMIDI.')
     portMidiEnvironment = pluginEnvironment.Clone()
     portMidiEnvironment.Append(LIBS = ['portmidi'])
     if getPlatform() != 'darwin' and getPlatform() != 'win32':
@@ -1978,16 +2027,16 @@ if commonEnvironment['usePortMIDI'] == '
         portMidiEnvironment.Append(LIBS = ['asound'])
     makePlugin(portMidiEnvironment, 'pmidi', ['InOut/pmidi.c'])
 else:
-    print 'CONFIGURATION DECISION: Not building with PortMIDI.'
+    print('CONFIGURATION DECISION: Not building with PortMIDI.')
 
 if commonEnvironment['useIpMIDI'] == '1' and (getPlatform() == 'linux' or getPlatform() == 'win32' or getPlatform() == 'haiku'):
-    print 'CONFIGURATION DECISION: Building with ipMIDI.'
+    print('CONFIGURATION DECISION: Building with ipMIDI.')
     ipMidiEnvironment = pluginEnvironment.Clone()
     if getPlatform() == 'win32':
         ipMidiEnvironment.Append(LIBS = ['ws2_32'])
     makePlugin(ipMidiEnvironment, 'ipmidi', ['InOut/ipmidi.c'])
 else:
-    print 'CONFIGURATION DECISION: Not building with ipMIDI.'
+    print('CONFIGURATION DECISION: Not building with ipMIDI.')
 
 if getPlatform() == 'darwin':
     coreMidiEnvironment = pluginEnvironment.Clone()
@@ -1999,32 +2048,38 @@ if getPlatform() == 'darwin':
 # FLUIDSYNTH OPCODES
 
 if not configure.CheckHeader("fluidsynth.h", language = "C"):
-    print "CONFIGURATION DECISION: Not building fluid opcodes."
+    print("CONFIGURATION DECISION: Not building fluid opcodes.")
 else:
-	print "CONFIGURATION DECISION: Building fluid opcodes."
-	fluidEnvironment = pluginEnvironment.Clone()
-	if getPlatform() == 'win32':
-	   	if compilerGNU():
-		   fluidEnvironment.Append(LIBS = ['fluidsynth'])
-		else:
-		   fluidEnvironment.Append(LIBS = ['fluidsynth'])
-		fluidEnvironment.Append(CPPFLAGS = ['-DFLUIDSYNTH_NOT_A_DLL'])
-		fluidEnvironment.Append(LIBS = ['winmm', 'dsound'])
-		fluidEnvironment.Append(LIBS = csoundWindowsLibraries)
-	elif getPlatform() == 'linux' or getPlatform() == 'darwin':
-		fluidEnvironment.Append(LIBS = ['fluidsynth'])
-		fluidEnvironment.Append(LIBS = ['pthread'])
-	elif getPlatform() == 'haiku':
-		fluidEnvironment.Append(LIBS = ['fluidsynth'])
-	makePlugin(fluidEnvironment, 'fluidOpcodes',
+        print("CONFIGURATION DECISION: Building fluid opcodes.")
+        fluidEnvironment = pluginEnvironment.Clone()
+        if getPlatform() == 'win32':
+                if compilerGNU():
+                   fluidEnvironment.Append(LIBS = ['fluidsynth'])
+                else:
+                   fluidEnvironment.Append(LIBS = ['fluidsynth'])
+                fluidEnvironment.Append(CPPFLAGS = ['-DFLUIDSYNTH_NOT_A_DLL'])
+                fluidEnvironment.Append(LIBS = ['winmm', 'dsound'])
+                fluidEnvironment.Append(LIBS = csoundWindowsLibraries)
+        elif getPlatform() == 'linux' or getPlatform() == 'darwin':
+                fluidEnvironment.Append(LIBS = ['fluidsynth'])
+                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'])
 
 # VST HOST OPCODES
 
 if (commonEnvironment['buildvst4cs'] != '1'):
-    print "CONFIGURATION DECISION: Not building vst4cs opcodes."
+    print("CONFIGURATION DECISION: Not building vst4cs opcodes.")
 else:
-    print "CONFIGURATION DECISION: Building vst4cs opcodes."
+    print("CONFIGURATION DECISION: Building vst4cs opcodes.")
     if (getPlatform() == 'win32'or getPlatform() == 'linux') and fltkFound:
         vst4Environment = vstEnvironment.Clone()
         vst4Environment.Append(CPPFLAGS = ['-DCS_VSTHOST'])
@@ -2058,19 +2113,19 @@ else:
 # DSSI HOST OPCODES
 
 if (commonEnvironment['buildDSSI'] == '1' and (getPlatform() == 'linux' or getPlatform() == 'darwin') and configure.CheckHeader("ladspa.h", language = "C")) and configure.CheckHeader("dssi.h", language = "C"):
-    print "CONFIGURATION DECISION: Building DSSI plugin host opcodes."
+    print("CONFIGURATION DECISION: Building DSSI plugin host opcodes.")
     dssiEnvironment = pluginEnvironment.Clone()
     dssiEnvironment.Append(LIBS = ['dl'])
     makePlugin(dssiEnvironment, 'dssi4cs',
                ['Opcodes/dssi4cs/src/load.c', 'Opcodes/dssi4cs/src/dssi4cs.c'])
 else:
-    print "CONFIGURATION DECISION: Not building DSSI plugin host opcodes."
+    print("CONFIGURATION DECISION: Not building DSSI plugin host opcodes.")
 
 # Loris opcodes
 #if not (commonEnvironment['buildLoris'] == '1' and configure.CheckHeader("Opcodes/Loris/src/loris.h") and configure.CheckHeader("fftw3.h")):
-#    print "CONFIGURATION DECISION: Not building Loris Python extension and Csound opcodes."
+#    print("CONFIGURATION DECISION: Not building Loris Python extension and Csound opcodes.")
 #else:
-#    print "CONFIGURATION DECISION: Building Loris Python extension and Csound opcodes."
+#    print("CONFIGURATION DECISION: Building Loris Python extension and Csound opcodes.")
     # For Loris, we build only the loris Python extension module and
     # the Csound opcodes (modified for Csound 5).
     # It is assumed that you have copied all contents of the Loris
@@ -2127,9 +2182,9 @@ else:
 # STK opcodes
 
 if not (commonEnvironment['buildStkOpcodes'] == '1' and stkFound):
-    print 'CONFIGURATION DECISION: Not building STK opcodes.'
+    print('CONFIGURATION DECISION: Not building STK opcodes.')
 else:
-    print 'CONFIGURATION DECISION: Building STK opcodes.'
+    print('CONFIGURATION DECISION: Building STK opcodes.')
     # For the STK opcodes, the STK distribution include, src, and rawwaves
     # directories should be copied thusly:
     #   csound5/Opcodes/stk/include
@@ -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'])
@@ -2188,9 +2245,9 @@ else:
 # Python opcodes
 
 if not (pythonFound and commonEnvironment['buildPythonOpcodes'] != '0'):
-    print "CONFIGURATION DECISION: Not building Python opcodes."
+    print("CONFIGURATION DECISION: Not building Python opcodes.")
 else:
-    print "CONFIGURATION DECISION: Building Python opcodes."
+    print("CONFIGURATION DECISION: Building Python opcodes.")
     pyEnvironment = pluginEnvironment.Clone()
     if getPlatform() != 'darwin':
        pyEnvironment.Append(CPPPATH = pythonIncludePath)
@@ -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':
@@ -2214,9 +2273,9 @@ else:
 # Python opcodes
 
 if not (commonEnvironment['buildLuaOpcodes'] != '0'):
-    print "CONFIGURATION DECISION: Not building Lua opcodes."
+    print("CONFIGURATION DECISION: Not building Lua opcodes.")
 else:
-    print "CONFIGURATION DECISION: Building Lua opcodes."
+    print("CONFIGURATION DECISION: Building Lua opcodes.")
     luaEnvironment = pluginEnvironment.Clone()
     
     if getPlatform() == 'linux':
@@ -2331,9 +2390,9 @@ def fluidTarget(env, dirName, baseName, 
 # Build Csound5gui (FLTK frontend)
 
 if not (commonEnvironment['buildCsound5GUI'] != '0' and fltk117Found):
-    print 'CONFIGURATION DECISION: Not building FLTK CSOUND5GUI frontend.'
+    print('CONFIGURATION DECISION: Not building FLTK CSOUND5GUI frontend.')
 else:
-    print 'CONFIGURATION DECISION: Building FLTK GUI CSOUND5GUI frontend.'
+    print('CONFIGURATION DECISION: Building FLTK GUI CSOUND5GUI frontend.')
     csound5GUIEnvironment = csoundProgramEnvironment.Clone()
     csound5GUIEnvironment.Append(CPPPATH = ['./interfaces'])
     if jackFound:
@@ -2409,9 +2468,9 @@ else:
 # Build CsoundAC
 
 if not ((commonEnvironment['buildCsoundAC'] == '1') and fltkFound and boostFound and fltkFound and eigenFound):
-    print 'CONFIGURATION DECISION: Not building CsoundAC extension module for Csound with algorithmic composition.'
+    print('CONFIGURATION DECISION: Not building CsoundAC extension module for Csound with algorithmic composition.')
 else:
-    print 'CONFIGURATION DECISION: Building CsoundAC extension module for Csound with algorithmic composition.'
+    print('CONFIGURATION DECISION: Building CsoundAC extension module for Csound with algorithmic composition.')
     acEnvironment = vstEnvironment.Clone()
     if getPlatform() == 'linux':
         acEnvironment.ParseConfig('fltk-config --use-images --cflags --cxxflags --ldflags')
@@ -2476,7 +2535,7 @@ else:
     for option in acEnvironment['CPPPATH']:
         option = '-I' + option
         acEnvironment.Append(SWIGFLAGS = [option])
-    print 'PATH =', commonEnvironment['ENV']['PATH']
+    print('PATH =', commonEnvironment['ENV']['PATH'])
     csoundAcSources = Split('''
     frontends/CsoundAC/allegro.cpp
     frontends/CsoundAC/allegrord.cpp
@@ -2547,7 +2606,7 @@ else:
     csoundAcPythonModule = makePythonModule(pythonCsoundACWrapperEnvironment, 'CsoundAC',
                                             csoundAcPythonWrapper)
     if getPlatform() == 'win32' and pythonLibs[0] < 'python24' and compilerGNU():
-	Depends(csoundAcPythonModule, pythonImportLibrary)
+        Depends(csoundAcPythonModule, pythonImportLibrary)
     pythonModules.append('CsoundAC.py')
     Depends(csoundAcPythonModule, pythonWrapper)
     Depends(csoundAcPythonModule, csoundac)
@@ -2572,9 +2631,9 @@ else:
 # Build CsoundVST
 
 if not ((commonEnvironment['buildCsoundVST'] == '1') and boostFound and fltkFound):
-    print 'CONFIGURATION DECISION: Not building CsoundVST plugin and standalone.'
+    print('CONFIGURATION DECISION: Not building CsoundVST plugin and standalone.')
 else:
-    print 'CONFIGURATION DECISION: Building CsoundVST plugin and standalone.'
+    print('CONFIGURATION DECISION: Building CsoundVST plugin and standalone.')
     headers += glob.glob('frontends/CsoundVST/*.h')
     headers += glob.glob('frontends/CsoundVST/*.hpp')
     vstEnvironment.Prepend(CPPPATH = ['interfaces', 'frontends/CsoundVST'])
@@ -2606,7 +2665,14 @@ 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'))
-    print 'PATH =', commonEnvironment['ENV']['PATH']
+    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
     frontends/CsoundVST/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp
@@ -2639,9 +2705,9 @@ else:
 
 # Build csoundapi~ (pd class)
 
-print commonEnvironment['buildPDClass'], pdhfound
+print(commonEnvironment['buildPDClass'], pdhfound)
 if commonEnvironment['buildPDClass'] == '1' and pdhfound:
-    print "CONFIGURATION DECISION: Building PD csoundapi~ class"
+    print("CONFIGURATION DECISION: Building PD csoundapi~ class")
     pdClassEnvironment = commonEnvironment.Clone()
     pdClassEnvironment.Append(LINKFLAGS = libCsoundLinkFlags)
     pdClassEnvironment.Append(LIBS = libCsoundLibs)
@@ -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',
@@ -2670,7 +2736,7 @@ if commonEnvironment['buildPDClass'] == 
 # Build tclcsound
 
 if commonEnvironment['buildTclcsound'] == '1' and tclhfound:
-    print "CONFIGURATION DECISION: Building Tclcsound frontend"
+    print("CONFIGURATION DECISION: Building Tclcsound frontend")
     csTclEnvironment = commonEnvironment.Clone()
     csTclEnvironment.Append(LINKFLAGS = libCsoundLinkFlags)
     csTclEnvironment.Append(LIBS = libCsoundLibs)
@@ -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(
@@ -2721,7 +2796,7 @@ if commonEnvironment['buildTclcsound'] =
     executables.append(csTk)
     libs.append(Tclcsoundlib)
     try:
-            os.mkdir('tclcsound', 0755)
+            os.mkdir('tclcsound', 0o755)
     except:
             pass
 #    if getPlatform() == 'darwin':
@@ -2733,12 +2808,12 @@ if commonEnvironment['buildTclcsound'] =
 #      csTclEnvironment.Command('tclcsound/pkgIndex.tcl', 'tclcsound/tclcsound.dll','tclsh84 pkgbuild.tcl')
 
 else:
-    print "CONFIGURATION DECISION: Not building Tclcsound"
+    print("CONFIGURATION DECISION: Not building Tclcsound")
 
 # Build Winsound FLTK frontend
 
 if commonEnvironment['buildWinsound'] == '1' and fltkFound:
-    print "CONFIGURATION DECISION: Building Winsound frontend"
+    print("CONFIGURATION DECISION: Building Winsound frontend")
     # should these be installed ?
     # headers += glob.glob('frontends/winsound/*.h')
     csWinEnvironment = commonEnvironment.Clone()
@@ -2785,10 +2860,10 @@ if commonEnvironment['buildWinsound'] ==
     Depends(winsound5, csoundLibrary)
     executables.append(winsound5)
 else:
-    print "CONFIGURATION DECISION: Not building Winsound"
+    print("CONFIGURATION DECISION: Not building Winsound")
 
 #if (getPlatform() == 'darwin' and commonEnvironment['buildOSXGUI'] == '1'):
-#    print "CONFIGURATION DECISION: building OSX GUI frontend"
+#    print("CONFIGURATION DECISION: building OSX GUI frontend")
 #    csOSXGUIEnvironment = commonEnvironment.Clone()
 #    OSXGUI = csOSXGUIEnvironment.Command(
 #        '''frontends/OSX/build/Csound 5.app/Contents/MacOS/Csound 5''',
@@ -2796,10 +2871,10 @@ else:
 #        "cd frontends/OSX; xcodebuild -buildstyle Deployment")
 #    Depends(OSXGUI, csoundLibrary)
 #else:
-#    print "CONFIGURATION DECISION: Not building OSX GUI frontend"
+#    print("CONFIGURATION DECISION: Not building OSX GUI frontend")
 
 # build csLADSPA
-print "CONFIGURATION DEFAULT:  Building csLadspa."
+print("CONFIGURATION DEFAULT:  Building csLadspa.")
 csLadspaEnv = commonEnvironment.Clone()
 csLadspaEnv.Append(LINKFLAGS = libCsoundLinkFlags)
 csLadspaEnv.Append(LIBS=libCsoundLibs)
@@ -2818,12 +2893,12 @@ libs.append(csladspa)
 # Build beats (score generator)
 
 if not (commonEnvironment['buildBeats'] != '0'):
-    print 'CONFIGURATION DECISION: Not building beats score frontend.'
+    print('CONFIGURATION DECISION: Not building beats score frontend.')
 else:
-    print "CONFIGURATION DECISION: Building beats score frontend"
+    print("CONFIGURATION DECISION: Building beats score frontend")
     csBeatsEnvironment = commonEnvironment.Clone()
     if getPlatform() != "haiku":
-	    csBeatsEnvironment.Append(LINKFLAGS = ['-lm'])
+        csBeatsEnvironment.Append(LINKFLAGS = ['-lm'])
     csBeatsEnvironment.Append(YACCFLAGS = ['-d'])
     #csBeatsEnvironment.Append(LEXFLAGS = ['-Pbeats'])
     byb = csBeatsEnvironment.CFile(target = 'frontends/beats/beats.tab.c',
@@ -2831,15 +2906,14 @@ 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)
 
 if not (commonEnvironment['buildcatalog'] != '0'):
-    print 'CONFIGURATION DECISION: Not building catalog builder.'
+    print('CONFIGURATION DECISION: Not building catalog builder.')
 else:
-    print "CONFIGURATION DECISION: Building catalog builder"
+    print("CONFIGURATION DECISION: Building catalog builder")
     catEnvironment = Environment(ENV = os.environ)
     catEnvironment.Append(LINKFLAGS = ['-ldl'])
     bb = catEnvironment.Program('mkdb', ['mkdb.c'])
@@ -2847,9 +2921,9 @@ else:
 
 
 if (commonEnvironment['generateTags']=='0') or (getPlatform() != 'darwin' and getPlatform() != 'linux'):
-    print "CONFIGURATION DECISION: Not calling TAGS"
+    print("CONFIGURATION DECISION: Not calling TAGS")
 else:
-    print "CONFIGURATION DECISION: Calling TAGS"
+    print("CONFIGURATION DECISION: Calling TAGS")
     allSources = string.join(glob.glob('*/*.h*'))
     allSources = allSources + ' ' + string.join(glob.glob('*/*.c'))
     allSources = allSources + ' ' + string.join(glob.glob('*/*.cpp'))
@@ -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',
@@ -2920,7 +3000,7 @@ if commonEnvironment['install'] == '1':
     Alias('install', [installExecutables, installOpcodes, installLibs, installHeaders, installPythonModules])
 
 if getPlatform() == 'darwin' and commonEnvironment['useFLTK'] == '1':
-    print "CONFIGURATION DECISION: Adding resource fork for csound"
+    print("CONFIGURATION DECISION: Adding resource fork for csound")
     addOSXResourceFork(commonEnvironment, 'csound', '')
 
 ###Code to create pkconfig files
