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