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