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