Chris@4: import os.path
Chris@4: 
Chris@4: Import("env", "buildDir")
Chris@4: env.Append(CPPPATH="include")
Chris@4: 
Chris@4: ApiVer = "0.0.12"
Chris@4: Major, Minor, Micro = [int(c) for c in ApiVer.split(".")]
Chris@4: 
Chris@4: sharedLibs = []
Chris@4: staticLibs = []
Chris@4: Import("Platform", "Posix")
Chris@4: if Platform in Posix:
Chris@4:     env["SHLIBSUFFIX"] = ".so.%d.%d.%d" % (Major, Minor, Micro)
Chris@4:     soFile = "libportaudiocpp.so"
Chris@4:     if Platform != 'darwin':
Chris@4:         env.AppendUnique(SHLINKFLAGS="-Wl,-soname=%s.%d" % (soFile, Major))
Chris@4: 
Chris@4:     # Create symlinks
Chris@4:     def symlink(env, target, source):
Chris@4:         trgt = str(target[0])
Chris@4:         src = str(source[0])
Chris@4:         if os.path.islink(trgt) or os.path.exists(trgt):
Chris@4:             os.remove(trgt)
Chris@4:         os.symlink(os.path.basename(src), trgt)
Chris@4:     lnk0 = env.Command(soFile + ".%d" % (Major), soFile + ".%d.%d.%d" % (Major, Minor, Micro), symlink)
Chris@4:     lnk1 = env.Command(soFile, soFile + ".%d" % (Major), symlink)
Chris@4:     sharedLibs.append(lnk0)
Chris@4:     sharedLibs.append(lnk1)
Chris@4: 
Chris@4: src = [os.path.join("source", "portaudiocpp", "%s.cxx" % f) for f in ("BlockingStream", "CallbackInterface", \
Chris@4:     "CallbackStream", "CFunCallbackStream","CppFunCallbackStream", "Device",
Chris@4:     "DirectionSpecificStreamParameters", "Exception", "HostApi", "InterfaceCallbackStream",
Chris@4:     "MemFunCallbackStream", "Stream", "StreamParameters", "System", "SystemDeviceIterator",
Chris@4:     "SystemHostApiIterator")]
Chris@4: env.Append(LIBS="portaudio", LIBPATH=buildDir)
Chris@4: sharedLib = env.SharedLibrary("portaudiocpp", src, LIBS=["portaudio"])
Chris@4: staticLib = env.Library("portaudiocpp", src, LIBS=["portaudio"])
Chris@4: sharedLibs.append(sharedLib)
Chris@4: staticLibs.append(staticLib)
Chris@4: 
Chris@4: headers = Split("""AutoSystem.hxx                         
Chris@4:                    BlockingStream.hxx                     
Chris@4:                    CallbackInterface.hxx                  
Chris@4:                    CallbackStream.hxx
Chris@4:                    CFunCallbackStream.hxx                 
Chris@4:                    CppFunCallbackStream.hxx               
Chris@4:                    Device.hxx                             
Chris@4:                    DirectionSpecificStreamParameters.hxx  
Chris@4:                    Exception.hxx                           
Chris@4:                    HostApi.hxx
Chris@4:                    InterfaceCallbackStream.hxx
Chris@4:                    MemFunCallbackStream.hxx
Chris@4:                    PortAudioCpp.hxx
Chris@4:                    SampleDataFormat.hxx
Chris@4:                    Stream.hxx
Chris@4:                    StreamParameters.hxx
Chris@4:                    SystemDeviceIterator.hxx
Chris@4:                    SystemHostApiIterator.hxx
Chris@4:                    System.hxx
Chris@4:                    """)
Chris@4: if env["PLATFORM"] == "win32":
Chris@4:     headers.append("AsioDeviceAdapter.hxx") 
Chris@4: headers = [File(os.path.join("include", "portaudiocpp", h)) for h in headers]
Chris@4: 
Chris@4: Return("sharedLibs", "staticLibs", "headers")