view src/portaudio_20161030_catalina_patch/bindings/cpp/SConscript @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 4edcd14160a5
children
line wrap: on
line source
import os.path

Import("env", "buildDir")
env.Append(CPPPATH="include")

ApiVer = "0.0.12"
Major, Minor, Micro = [int(c) for c in ApiVer.split(".")]

sharedLibs = []
staticLibs = []
Import("Platform", "Posix")
if Platform in Posix:
    env["SHLIBSUFFIX"] = ".so.%d.%d.%d" % (Major, Minor, Micro)
    soFile = "libportaudiocpp.so"
    if Platform != 'darwin':
        env.AppendUnique(SHLINKFLAGS="-Wl,-soname=%s.%d" % (soFile, Major))

    # Create symlinks
    def symlink(env, target, source):
        trgt = str(target[0])
        src = str(source[0])
        if os.path.islink(trgt) or os.path.exists(trgt):
            os.remove(trgt)
        os.symlink(os.path.basename(src), trgt)
    lnk0 = env.Command(soFile + ".%d" % (Major), soFile + ".%d.%d.%d" % (Major, Minor, Micro), symlink)
    lnk1 = env.Command(soFile, soFile + ".%d" % (Major), symlink)
    sharedLibs.append(lnk0)
    sharedLibs.append(lnk1)

src = [os.path.join("source", "portaudiocpp", "%s.cxx" % f) for f in ("BlockingStream", "CallbackInterface", \
    "CallbackStream", "CFunCallbackStream","CppFunCallbackStream", "Device",
    "DirectionSpecificStreamParameters", "Exception", "HostApi", "InterfaceCallbackStream",
    "MemFunCallbackStream", "Stream", "StreamParameters", "System", "SystemDeviceIterator",
    "SystemHostApiIterator")]
env.Append(LIBS="portaudio", LIBPATH=buildDir)
sharedLib = env.SharedLibrary("portaudiocpp", src, LIBS=["portaudio"])
staticLib = env.Library("portaudiocpp", src, LIBS=["portaudio"])
sharedLibs.append(sharedLib)
staticLibs.append(staticLib)

headers = Split("""AutoSystem.hxx                         
                   BlockingStream.hxx                     
                   CallbackInterface.hxx                  
                   CallbackStream.hxx
                   CFunCallbackStream.hxx                 
                   CppFunCallbackStream.hxx               
                   Device.hxx                             
                   DirectionSpecificStreamParameters.hxx  
                   Exception.hxx                           
                   HostApi.hxx
                   InterfaceCallbackStream.hxx
                   MemFunCallbackStream.hxx
                   PortAudioCpp.hxx
                   SampleDataFormat.hxx
                   Stream.hxx
                   StreamParameters.hxx
                   SystemDeviceIterator.hxx
                   SystemHostApiIterator.hxx
                   System.hxx
                   """)
if env["PLATFORM"] == "win32":
    headers.append("AsioDeviceAdapter.hxx") 
headers = [File(os.path.join("include", "portaudiocpp", h)) for h in headers]

Return("sharedLibs", "staticLibs", "headers")