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