Upgrade PortAudio
to JLL packages
This commit is contained in:
parent
7944836b49
commit
a7919c5b64
20 changed files with 219 additions and 1568 deletions
206
Manifest.toml
Normal file
206
Manifest.toml
Normal file
|
@ -0,0 +1,206 @@
|
||||||
|
# This file is machine-generated - editing it directly is not advised
|
||||||
|
|
||||||
|
[[AbstractFFTs]]
|
||||||
|
deps = ["LinearAlgebra"]
|
||||||
|
git-tree-sha1 = "051c95d6836228d120f5f4b984dd5aba1624f716"
|
||||||
|
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
|
||||||
|
version = "0.5.0"
|
||||||
|
|
||||||
|
[[Base64]]
|
||||||
|
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
|
||||||
|
|
||||||
|
[[BinaryProvider]]
|
||||||
|
deps = ["Libdl", "SHA"]
|
||||||
|
git-tree-sha1 = "5b08ed6036d9d3f0ee6369410b830f8873d4024c"
|
||||||
|
uuid = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
|
||||||
|
version = "0.5.8"
|
||||||
|
|
||||||
|
[[Compat]]
|
||||||
|
deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"]
|
||||||
|
git-tree-sha1 = "ed2c4abadf84c53d9e58510b5fc48912c2336fbb"
|
||||||
|
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
|
||||||
|
version = "2.2.0"
|
||||||
|
|
||||||
|
[[DSP]]
|
||||||
|
deps = ["FFTW", "LinearAlgebra", "Polynomials", "Random", "Reexport", "SpecialFunctions", "Statistics"]
|
||||||
|
git-tree-sha1 = "fa9564dc41fb91716c2e3353fe447f268a08f14d"
|
||||||
|
uuid = "717857b8-e6f2-59f4-9121-6e50c889abd2"
|
||||||
|
version = "0.6.2"
|
||||||
|
|
||||||
|
[[Dates]]
|
||||||
|
deps = ["Printf"]
|
||||||
|
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
|
||||||
|
|
||||||
|
[[DelimitedFiles]]
|
||||||
|
deps = ["Mmap"]
|
||||||
|
uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
|
||||||
|
|
||||||
|
[[Distributed]]
|
||||||
|
deps = ["Random", "Serialization", "Sockets"]
|
||||||
|
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
|
||||||
|
|
||||||
|
[[FFTW]]
|
||||||
|
deps = ["AbstractFFTs", "FFTW_jll", "IntelOpenMP_jll", "Libdl", "LinearAlgebra", "MKL_jll", "Reexport"]
|
||||||
|
git-tree-sha1 = "109d82fa4b00429f9afcce873e9f746f11f018d3"
|
||||||
|
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
|
||||||
|
version = "1.2.0"
|
||||||
|
|
||||||
|
[[FFTW_jll]]
|
||||||
|
deps = ["Libdl", "Pkg"]
|
||||||
|
git-tree-sha1 = "05674f209a6e3387dd103a945b0113eeb64b1a58"
|
||||||
|
uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a"
|
||||||
|
version = "3.3.9+3"
|
||||||
|
|
||||||
|
[[FixedPointNumbers]]
|
||||||
|
git-tree-sha1 = "d14a6fa5890ea3a7e5dcab6811114f132fec2b4b"
|
||||||
|
uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
|
||||||
|
version = "0.6.1"
|
||||||
|
|
||||||
|
[[IntelOpenMP_jll]]
|
||||||
|
deps = ["Libdl", "Pkg"]
|
||||||
|
git-tree-sha1 = "fb8e1c7a5594ba56f9011310790e03b5384998d6"
|
||||||
|
uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0"
|
||||||
|
version = "2018.0.3+0"
|
||||||
|
|
||||||
|
[[InteractiveUtils]]
|
||||||
|
deps = ["Markdown"]
|
||||||
|
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
|
||||||
|
|
||||||
|
[[IntervalSets]]
|
||||||
|
deps = ["Dates", "Statistics"]
|
||||||
|
git-tree-sha1 = "4214b48a62eb8f2c292b2ee34a508c256c0cdbc9"
|
||||||
|
uuid = "8197267c-284f-5f27-9208-e0e47529a953"
|
||||||
|
version = "0.3.2"
|
||||||
|
|
||||||
|
[[LibGit2]]
|
||||||
|
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
|
||||||
|
|
||||||
|
[[Libdl]]
|
||||||
|
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
|
||||||
|
|
||||||
|
[[LinearAlgebra]]
|
||||||
|
deps = ["Libdl"]
|
||||||
|
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
|
||||||
|
|
||||||
|
[[Logging]]
|
||||||
|
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
|
||||||
|
|
||||||
|
[[MKL_jll]]
|
||||||
|
deps = ["Libdl", "Pkg"]
|
||||||
|
git-tree-sha1 = "61069ae718b8ab1e325bbfb4e5268902e7ea08e3"
|
||||||
|
uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
|
||||||
|
version = "2019.0.117+0"
|
||||||
|
|
||||||
|
[[Markdown]]
|
||||||
|
deps = ["Base64"]
|
||||||
|
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
|
||||||
|
|
||||||
|
[[Mmap]]
|
||||||
|
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
|
||||||
|
|
||||||
|
[[OpenSpecFun_jll]]
|
||||||
|
deps = ["Libdl", "Pkg"]
|
||||||
|
git-tree-sha1 = "65f672edebf3f4e613ddf37db9dcbd7a407e5e90"
|
||||||
|
uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
|
||||||
|
version = "0.5.3+1"
|
||||||
|
|
||||||
|
[[Pkg]]
|
||||||
|
deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"]
|
||||||
|
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
|
||||||
|
|
||||||
|
[[Polynomials]]
|
||||||
|
deps = ["LinearAlgebra", "RecipesBase"]
|
||||||
|
git-tree-sha1 = "ae71c2329790af97b7682b11241b3609e4d48626"
|
||||||
|
uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45"
|
||||||
|
version = "0.6.0"
|
||||||
|
|
||||||
|
[[Printf]]
|
||||||
|
deps = ["Unicode"]
|
||||||
|
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
|
||||||
|
|
||||||
|
[[REPL]]
|
||||||
|
deps = ["InteractiveUtils", "Markdown", "Sockets"]
|
||||||
|
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
|
||||||
|
|
||||||
|
[[Random]]
|
||||||
|
deps = ["Serialization"]
|
||||||
|
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
|
||||||
|
|
||||||
|
[[RecipesBase]]
|
||||||
|
git-tree-sha1 = "7bdce29bc9b2f5660a6e5e64d64d91ec941f6aa2"
|
||||||
|
uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
|
||||||
|
version = "0.7.0"
|
||||||
|
|
||||||
|
[[Reexport]]
|
||||||
|
deps = ["Pkg"]
|
||||||
|
git-tree-sha1 = "7b1d07f411bc8ddb7977ec7f377b97b158514fe0"
|
||||||
|
uuid = "189a3867-3050-52da-a836-e630ba90ab69"
|
||||||
|
version = "0.2.0"
|
||||||
|
|
||||||
|
[[RingBuffers]]
|
||||||
|
deps = ["BinaryProvider", "Compat"]
|
||||||
|
git-tree-sha1 = "a22900f141fae3e8c6f2ab9e4d48dfca274fafb8"
|
||||||
|
uuid = "f6d8bcc6-4e01-5431-93c4-9d6004abab90"
|
||||||
|
version = "1.2.0"
|
||||||
|
|
||||||
|
[[SHA]]
|
||||||
|
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
|
||||||
|
|
||||||
|
[[SampledSignals]]
|
||||||
|
deps = ["Compat", "DSP", "FFTW", "FixedPointNumbers", "IntervalSets", "LinearAlgebra", "TreeViews", "Unitful"]
|
||||||
|
git-tree-sha1 = "ce5705b342baa4a995ba6fa7ca9aa96e6647ac91"
|
||||||
|
uuid = "bd7594eb-a658-542f-9e75-4c4d8908c167"
|
||||||
|
version = "2.1.0"
|
||||||
|
|
||||||
|
[[Serialization]]
|
||||||
|
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
|
||||||
|
|
||||||
|
[[SharedArrays]]
|
||||||
|
deps = ["Distributed", "Mmap", "Random", "Serialization"]
|
||||||
|
uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"
|
||||||
|
|
||||||
|
[[Sockets]]
|
||||||
|
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
|
||||||
|
|
||||||
|
[[SparseArrays]]
|
||||||
|
deps = ["LinearAlgebra", "Random"]
|
||||||
|
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
|
||||||
|
|
||||||
|
[[SpecialFunctions]]
|
||||||
|
deps = ["OpenSpecFun_jll"]
|
||||||
|
git-tree-sha1 = "268052ee908b2c086cc0011f528694f02f3e2408"
|
||||||
|
uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
|
||||||
|
version = "0.9.0"
|
||||||
|
|
||||||
|
[[Statistics]]
|
||||||
|
deps = ["LinearAlgebra", "SparseArrays"]
|
||||||
|
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
|
||||||
|
|
||||||
|
[[Test]]
|
||||||
|
deps = ["Distributed", "InteractiveUtils", "Logging", "Random"]
|
||||||
|
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
||||||
|
|
||||||
|
[[TreeViews]]
|
||||||
|
deps = ["Test"]
|
||||||
|
git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6"
|
||||||
|
uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7"
|
||||||
|
version = "0.3.0"
|
||||||
|
|
||||||
|
[[UUIDs]]
|
||||||
|
deps = ["Random", "SHA"]
|
||||||
|
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
|
||||||
|
|
||||||
|
[[Unicode]]
|
||||||
|
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
|
||||||
|
|
||||||
|
[[Unitful]]
|
||||||
|
deps = ["LinearAlgebra", "Random"]
|
||||||
|
git-tree-sha1 = "92bdf0ccfa9612b167d0adaadef832a09971ceb0"
|
||||||
|
uuid = "1986cc42-f94f-5a68-af5c-568840ba703d"
|
||||||
|
version = "0.17.0"
|
||||||
|
|
||||||
|
[[libportaudio_jll]]
|
||||||
|
deps = ["Libdl", "Pkg"]
|
||||||
|
path = "/Users/sabae/.julia/dev/libportaudio_jll"
|
||||||
|
uuid = "2d7b7beb-0762-5160-978e-1ab83a1e8a31"
|
||||||
|
version = "19.6.0+1"
|
12
Project.toml
12
Project.toml
|
@ -4,9 +4,19 @@ repo = "https://github.com/JuliaAudio/PortAudio.jl.git"
|
||||||
version = "1.1.0"
|
version = "1.1.0"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
BinaryProvider = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
|
|
||||||
Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
|
Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
|
||||||
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
|
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
|
||||||
RingBuffers = "f6d8bcc6-4e01-5431-93c4-9d6004abab90"
|
RingBuffers = "f6d8bcc6-4e01-5431-93c4-9d6004abab90"
|
||||||
SampledSignals = "bd7594eb-a658-542f-9e75-4c4d8908c167"
|
SampledSignals = "bd7594eb-a658-542f-9e75-4c4d8908c167"
|
||||||
|
libportaudio_jll = "2d7b7beb-0762-5160-978e-1ab83a1e8a31"
|
||||||
|
|
||||||
|
[compat]
|
||||||
|
RingBuffers = "1.2"
|
||||||
|
julia = "1.3"
|
||||||
|
|
||||||
|
[extras]
|
||||||
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
||||||
|
TestSetExtensions = "98d24dd4-01ad-11ea-1b02-c9a08f80db04"
|
||||||
|
|
||||||
|
[targets]
|
||||||
|
test = ["Test", "TestSetExtensions"]
|
||||||
|
|
2
deps/.gitignore
vendored
2
deps/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
||||||
build.log
|
|
||||||
deps.jl
|
|
40
deps/build.jl
vendored
40
deps/build.jl
vendored
|
@ -1,40 +0,0 @@
|
||||||
using BinaryProvider # requires BinaryProvider 0.3.0 or later
|
|
||||||
|
|
||||||
# Parse some basic command-line arguments
|
|
||||||
const verbose = "--verbose" in ARGS
|
|
||||||
const prefix = Prefix(get([a for a in ARGS if a != "--verbose"], 1, joinpath(@__DIR__, "usr")))
|
|
||||||
products = [
|
|
||||||
LibraryProduct(prefix, ["libportaudio"], :libportaudio),
|
|
||||||
]
|
|
||||||
|
|
||||||
# Download binaries from hosted location
|
|
||||||
bin_prefix = "https://github.com/jpsamaroo/PortAudioBuilder/releases/download/v19.6.0"
|
|
||||||
|
|
||||||
# Listing of files generated by BinaryBuilder:
|
|
||||||
download_info = Dict(
|
|
||||||
Windows(:i686) => ("$bin_prefix/libportaudio.v19.6.0.i686-w64-mingw32.tar.gz", "0d38fd434c21e8cd8a45193d50cc66c35d920ed0f4bf7d5682a3ad7819b9eb01"),
|
|
||||||
Linux(:powerpc64le, libc=:glibc) => ("$bin_prefix/libportaudio.v19.6.0.powerpc64le-linux-gnu.tar.gz", "4050d5b887f2afa5891d1b4e5f55bf1f5f140c97b7c9fe4140f495263d594c37"),
|
|
||||||
MacOS(:x86_64) => ("$bin_prefix/libportaudio.v19.6.0.x86_64-apple-darwin14.tar.gz", "1c20a2884bd73e5827508a47d0794b845040569739326b2b37eaa1d9bcb2a7a0"),
|
|
||||||
Linux(:x86_64, libc=:glibc) => ("$bin_prefix/libportaudio.v19.6.0.x86_64-linux-gnu.tar.gz", "bfb31ffd54fa48802f9af31ecbbae07506baaee52880e6d458a192ea0d6d6a21"),
|
|
||||||
Windows(:x86_64) => ("$bin_prefix/libportaudio.v19.6.0.x86_64-w64-mingw32.tar.gz", "e373f78eebe7b08a3e07c72a579209f305232281d0ff7c8b07ad48ffb1711259"),
|
|
||||||
)
|
|
||||||
|
|
||||||
# Install unsatisfied or updated dependencies:
|
|
||||||
unsatisfied = any(!satisfied(p; verbose=verbose) for p in products)
|
|
||||||
dl_info = choose_download(download_info, platform_key_abi())
|
|
||||||
if dl_info === nothing && unsatisfied
|
|
||||||
# If we don't have a compatible .tar.gz to download, complain.
|
|
||||||
# Alternatively, you could attempt to install from a separate provider,
|
|
||||||
# build from source or something even more ambitious here.
|
|
||||||
error("Your platform (\"$(Sys.MACHINE)\", parsed as \"$(triplet(platform_key_abi()))\") is not supported by this package!")
|
|
||||||
end
|
|
||||||
|
|
||||||
# If we have a download, and we are unsatisfied (or the version we're
|
|
||||||
# trying to install is not itself installed) then load it up!
|
|
||||||
if unsatisfied || !isinstalled(dl_info...; prefix=prefix)
|
|
||||||
# Download and install binaries
|
|
||||||
install(dl_info...; prefix=prefix, force=true, verbose=verbose)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Write out a deps.jl file that will contain mappings for our products
|
|
||||||
write_deps_file(joinpath(@__DIR__, "deps.jl"), products, verbose=verbose)
|
|
80
deps/src/Makefile
vendored
80
deps/src/Makefile
vendored
|
@ -1,80 +0,0 @@
|
||||||
# Makefile originally lifted from Clang.jl
|
|
||||||
# Copyright (c) 2012-: Isaiah Norton and [contributors](https://github.com/ihnorton/Clang.jl/graphs/contributors)
|
|
||||||
|
|
||||||
ifeq (exists, $(shell [ -e Make.user ] && echo exists ))
|
|
||||||
include Make.user
|
|
||||||
endif
|
|
||||||
|
|
||||||
TARGETDIR=../usr/lib
|
|
||||||
TARGETBASENAME=pa_shim
|
|
||||||
OBJS = pa_shim.o
|
|
||||||
|
|
||||||
# check to see if the user passed in a HOST variable for cross-compiling
|
|
||||||
ifeq ($(HOST),)
|
|
||||||
# Figure out OS and architecture
|
|
||||||
OS=$(shell uname)
|
|
||||||
ifneq ($(findstring MINGW,$(OS)),)
|
|
||||||
OS=WINNT
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
HOSTSUFFIX=_$(HOST)
|
|
||||||
ifneq ($(findstring linux,$(HOST)),)
|
|
||||||
OS=Linux
|
|
||||||
else ifneq ($(findstring darwin,$(HOST)),)
|
|
||||||
OS=Darwin
|
|
||||||
else ifneq ($(findstring mingw,$(HOST)),)
|
|
||||||
OS=WINNT
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
CFLAGS = -Wall -Wno-strict-aliasing -fno-omit-frame-pointer -I../../../RingBuffers/deps/src
|
|
||||||
LDFLAGS +=
|
|
||||||
|
|
||||||
ifeq ($(OS), WINNT)
|
|
||||||
LIBS +=
|
|
||||||
LDFLAGS += -shared -L../../../RingBuffers/deps/usr/lib -lpa_ringbuffer$(HOSTSUFFIX)
|
|
||||||
INC +=
|
|
||||||
SHACMD = sha256sum
|
|
||||||
SHLIB_EXT = dll
|
|
||||||
else ifeq ($(OS), Darwin)
|
|
||||||
LIBS +=
|
|
||||||
INC +=
|
|
||||||
# we'll rely on Julia to load RingBuffers.jl, which will in turn load the C
|
|
||||||
# library that we depend on for these symbols
|
|
||||||
LDFLAGS += -dynamiclib -Wl,-undefined,dynamic_lookup
|
|
||||||
SHLIB_EXT = dylib
|
|
||||||
SHACMD = shasum -a256
|
|
||||||
else
|
|
||||||
CFLAGS += -fPIC
|
|
||||||
LIBS +=
|
|
||||||
INC +=
|
|
||||||
LDFLAGS += -shared
|
|
||||||
SHLIB_EXT = so
|
|
||||||
SHACMD = sha256sum
|
|
||||||
endif
|
|
||||||
|
|
||||||
SOURCEHASH = $(shell $(SHACMD) pa_shim.c | awk '{print $$1}')
|
|
||||||
CFLAGS += -DSOURCEHASH=\"$(SOURCEHASH)\"
|
|
||||||
|
|
||||||
TARGET=$(TARGETDIR)/$(TARGETBASENAME)$(HOSTSUFFIX).$(SHLIB_EXT)
|
|
||||||
|
|
||||||
.PHONY: clean cleantemp default
|
|
||||||
|
|
||||||
default: $(TARGET)
|
|
||||||
|
|
||||||
%.o: %.c Makefile
|
|
||||||
$(CC) $< -c -o $@ $(INC) $(CFLAGS)
|
|
||||||
|
|
||||||
$(TARGETDIR):
|
|
||||||
mkdir -p $@
|
|
||||||
|
|
||||||
$(TARGET): $(OBJS) $(TARGETDIR) Makefile
|
|
||||||
$(CC) $(OBJS) $(LDFLAGS) -o $@ $(LIBS)
|
|
||||||
|
|
||||||
cleantemp:
|
|
||||||
rm -f $(OBJS)
|
|
||||||
|
|
||||||
clean: cleantemp
|
|
||||||
rm -f $(TARGETDIR)/$(TARGETBASENAME)*.so
|
|
||||||
rm -f $(TARGETDIR)/$(TARGETBASENAME)*.dylib
|
|
||||||
rm -f $(TARGETDIR)/$(TARGETBASENAME)*.dll
|
|
54
deps/src/build.sh
vendored
54
deps/src/build.sh
vendored
|
@ -1,54 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# User docker to build pa_shim library for all supported platforms.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
make clean
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
# NOTE: the darwin build ends up actually being x86_64-apple-darwin14. It gets
|
|
||||||
# mapped within the docker machine
|
|
||||||
for platform in \
|
|
||||||
arm-linux-gnueabihf \
|
|
||||||
powerpc64le-linux-gnu \
|
|
||||||
x86_64-apple-darwin \
|
|
||||||
x86_64-w64-mingw32 \
|
|
||||||
i686-w64-mingw32; do
|
|
||||||
echo "================================"
|
|
||||||
echo "building for $platform..."
|
|
||||||
docker run --rm \
|
|
||||||
-v $(pwd)/../..:/workdir \
|
|
||||||
-v $(pwd)/../../../RingBuffers:/RingBuffers \
|
|
||||||
-w /workdir/deps/src \
|
|
||||||
-e CROSS_TRIPLE=$platform \
|
|
||||||
multiarch/crossbuild \
|
|
||||||
./dockerbuild_cb.sh
|
|
||||||
echo "================================"
|
|
||||||
echo ""
|
|
||||||
done
|
|
||||||
|
|
||||||
# we use holy-build-box for the x86 linux builds because it uses an older
|
|
||||||
# glibc so it should be compatible with more user environments
|
|
||||||
echo "================================"
|
|
||||||
echo "building for x86_64-linux-gnu..."
|
|
||||||
docker run --rm \
|
|
||||||
-v $(pwd)/../..:/workdir \
|
|
||||||
-v $(pwd)/../../../RingBuffers:/RingBuffers \
|
|
||||||
-w /workdir/deps/src \
|
|
||||||
-e HOST=x86_64-linux-gnu \
|
|
||||||
phusion/holy-build-box-64 \
|
|
||||||
./dockerbuild_hbb.sh
|
|
||||||
echo "================================"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
echo "================================"
|
|
||||||
echo "building for i686-linux-gnu..."
|
|
||||||
docker run --rm \
|
|
||||||
-v $(pwd)/../..:/workdir \
|
|
||||||
-v $(pwd)/../../../RingBuffers:/RingBuffers \
|
|
||||||
-w /workdir/deps/src \
|
|
||||||
-e HOST=i686-linux-gnu \
|
|
||||||
phusion/holy-build-box-32 \
|
|
||||||
./dockerbuild_hbb.sh
|
|
||||||
echo "================================"
|
|
8
deps/src/dockerbuild_cb.sh
vendored
8
deps/src/dockerbuild_cb.sh
vendored
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# this script is run by build.sh within each docker instance to do the build.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
make HOST=$CROSS_TRIPLE
|
|
||||||
make cleantemp
|
|
13
deps/src/dockerbuild_hbb.sh
vendored
13
deps/src/dockerbuild_hbb.sh
vendored
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# this script is run by build.sh within each docker instance to do the build.
|
|
||||||
# it's meant to be run from within a "Holy Build Box" docker instance.
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Activate Holy Build Box environment.
|
|
||||||
source /hbb_exe/activate
|
|
||||||
|
|
||||||
set -x
|
|
||||||
make HOST=$HOST
|
|
||||||
make cleantemp
|
|
109
deps/src/pa_shim.c
vendored
109
deps/src/pa_shim.c
vendored
|
@ -1,109 +0,0 @@
|
||||||
#include "portaudio.h"
|
|
||||||
#include <pa_ringbuffer.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define MIN(x, y) ((x) < (y) ? (x) : (y))
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
PA_SHIM_ERRMSG_OVERFLOW, // input overflow
|
|
||||||
PA_SHIM_ERRMSG_UNDERFLOW, // output underflow
|
|
||||||
PA_SHIM_ERRMSG_ERR_OVERFLOW, // error buffer overflowed
|
|
||||||
} pa_shim_errmsg_t;
|
|
||||||
|
|
||||||
// this callback type is used to notify the Julia side that the portaudio
|
|
||||||
// callback has run
|
|
||||||
typedef void (*pa_shim_notifycb_t)(void *userdata);
|
|
||||||
|
|
||||||
// This struct is shared between the Julia side and C
|
|
||||||
typedef struct {
|
|
||||||
PaUtilRingBuffer *inputbuf; // ringbuffer for input
|
|
||||||
PaUtilRingBuffer *outputbuf; // ringbuffer for output
|
|
||||||
PaUtilRingBuffer *errorbuf; // ringbuffer to send error notifications
|
|
||||||
int sync; // keep input/output ring buffers synchronized (0/1)
|
|
||||||
pa_shim_notifycb_t notifycb; // Julia callback to notify conditions
|
|
||||||
void *inputhandle; // condition to notify on new input
|
|
||||||
void *outputhandle; // condition to notify when ready for output
|
|
||||||
void *errorhandle; // condition to notify on new error
|
|
||||||
void *globalhandle; // only needed for libuv workaround
|
|
||||||
} pa_shim_info_t;
|
|
||||||
|
|
||||||
void senderr(pa_shim_info_t *info, pa_shim_errmsg_t msg) {
|
|
||||||
if(PaUtil_GetRingBufferWriteAvailable(info->errorbuf) == 1) {
|
|
||||||
// we've overflowed our error buffer! notify the host.
|
|
||||||
msg = PA_SHIM_ERRMSG_ERR_OVERFLOW;
|
|
||||||
}
|
|
||||||
PaUtil_WriteRingBuffer(info->errorbuf, &msg, 1);
|
|
||||||
// for now we're relying on the global handle. uncomment the following
|
|
||||||
// when the libuv workaround is no longer necessary
|
|
||||||
// if(info->notifycb) {
|
|
||||||
// info->notifycb(info->errorhandle);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
// return the sha256 hash of the shim source so we can make sure things are in sync
|
|
||||||
const char *pa_shim_getsourcehash(void)
|
|
||||||
{
|
|
||||||
// defined on the command-line at build-time
|
|
||||||
return SOURCEHASH;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This routine will be called by the PortAudio engine when audio is needed.
|
|
||||||
* It may called at interrupt level on some machines so don't do anything that
|
|
||||||
* could mess up the system like calling malloc() or free().
|
|
||||||
*/
|
|
||||||
int pa_shim_processcb(const void *input, void *output,
|
|
||||||
unsigned long frameCount,
|
|
||||||
const PaStreamCallbackTimeInfo* timeInfo,
|
|
||||||
PaStreamCallbackFlags statusFlags,
|
|
||||||
void *userData)
|
|
||||||
{
|
|
||||||
pa_shim_info_t *info = userData;
|
|
||||||
if(info->notifycb == NULL) {
|
|
||||||
fprintf(stderr, "pa_shim ERROR: notifycb is NULL\n");
|
|
||||||
return paAbort;
|
|
||||||
}
|
|
||||||
int nwrite;
|
|
||||||
if(info->inputbuf) {
|
|
||||||
nwrite = PaUtil_GetRingBufferWriteAvailable(info->inputbuf);
|
|
||||||
nwrite = MIN(frameCount, nwrite);
|
|
||||||
}
|
|
||||||
int nread;
|
|
||||||
if(info->outputbuf) {
|
|
||||||
nread = PaUtil_GetRingBufferReadAvailable(info->outputbuf);
|
|
||||||
nread = MIN(frameCount, nread);
|
|
||||||
}
|
|
||||||
if(info->inputbuf && info->outputbuf && info->sync) {
|
|
||||||
// to keep the buffers synchronized, set readable and writable to
|
|
||||||
// their minimum value
|
|
||||||
nread = MIN(nread, nwrite);
|
|
||||||
nwrite = nread;
|
|
||||||
}
|
|
||||||
// read/write from the ringbuffers
|
|
||||||
if(info->inputbuf) {
|
|
||||||
PaUtil_WriteRingBuffer(info->inputbuf, input, nwrite);
|
|
||||||
// for now we're relying on the global handle. uncomment the following
|
|
||||||
// when the libuv workaround is no longer necessary
|
|
||||||
// info->notifycb(info->inputhandle);
|
|
||||||
if(nwrite < frameCount) {
|
|
||||||
senderr(info, PA_SHIM_ERRMSG_OVERFLOW);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(info->outputbuf) {
|
|
||||||
PaUtil_ReadRingBuffer(info->outputbuf, output, nread);
|
|
||||||
// for now we're relying on the global handle. uncomment the following
|
|
||||||
// when the libuv workaround is no longer necessary
|
|
||||||
// info->notifycb(info->outputhandle);
|
|
||||||
if(nread < frameCount) {
|
|
||||||
senderr(info, PA_SHIM_ERRMSG_UNDERFLOW);
|
|
||||||
// we didn't fill the whole output buffer, so zero it out
|
|
||||||
memset(output+nread*info->outputbuf->elementSizeBytes, 0,
|
|
||||||
(frameCount - nread)*info->outputbuf->elementSizeBytes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
info->notifycb(info->globalhandle);
|
|
||||||
return paContinue;
|
|
||||||
}
|
|
1225
deps/src/portaudio.h
vendored
1225
deps/src/portaudio.h
vendored
File diff suppressed because it is too large
Load diff
BIN
deps/usr/lib/pa_shim_arm-linux-gnueabihf.so
vendored
BIN
deps/usr/lib/pa_shim_arm-linux-gnueabihf.so
vendored
Binary file not shown.
BIN
deps/usr/lib/pa_shim_i686-linux-gnu.so
vendored
BIN
deps/usr/lib/pa_shim_i686-linux-gnu.so
vendored
Binary file not shown.
BIN
deps/usr/lib/pa_shim_i686-w64-mingw32.dll
vendored
BIN
deps/usr/lib/pa_shim_i686-w64-mingw32.dll
vendored
Binary file not shown.
BIN
deps/usr/lib/pa_shim_powerpc64le-linux-gnu.so
vendored
BIN
deps/usr/lib/pa_shim_powerpc64le-linux-gnu.so
vendored
Binary file not shown.
BIN
deps/usr/lib/pa_shim_x86_64-apple-darwin14.dylib
vendored
BIN
deps/usr/lib/pa_shim_x86_64-apple-darwin14.dylib
vendored
Binary file not shown.
BIN
deps/usr/lib/pa_shim_x86_64-linux-gnu.so
vendored
BIN
deps/usr/lib/pa_shim_x86_64-linux-gnu.so
vendored
Binary file not shown.
BIN
deps/usr/lib/pa_shim_x86_64-w64-mingw32.dll
vendored
BIN
deps/usr/lib/pa_shim_x86_64-w64-mingw32.dll
vendored
Binary file not shown.
|
@ -1,9 +1,6 @@
|
||||||
__precompile__(true)
|
|
||||||
|
|
||||||
module PortAudio
|
module PortAudio
|
||||||
|
|
||||||
using SampledSignals
|
using libportaudio_jll, Libdl, SampledSignals, RingBuffers
|
||||||
using RingBuffers
|
|
||||||
#=
|
#=
|
||||||
using Compat
|
using Compat
|
||||||
using Compat: undef, fetch, @compat
|
using Compat: undef, fetch, @compat
|
||||||
|
@ -23,7 +20,6 @@ export PortAudioStream
|
||||||
|
|
||||||
|
|
||||||
# Get binary dependencies loaded from BinDeps
|
# Get binary dependencies loaded from BinDeps
|
||||||
include("../deps/deps.jl")
|
|
||||||
include("pa_shim.jl")
|
include("pa_shim.jl")
|
||||||
include("libportaudio.jl")
|
include("libportaudio.jl")
|
||||||
|
|
||||||
|
@ -397,8 +393,6 @@ function SampledSignals.unsafe_read!(source::PortAudioSource, buf::Array, frameo
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
const libpa_shim = find_pa_shim()
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
PortAudio.shimhash()
|
PortAudio.shimhash()
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,3 @@
|
||||||
function find_pa_shim()
|
|
||||||
libdir = joinpath(@__DIR__, "..", "deps", "usr", "lib")
|
|
||||||
libsuffix = ""
|
|
||||||
basename = "pa_shim"
|
|
||||||
@static if Sys.islinux() && Sys.ARCH == :x86_64
|
|
||||||
libsuffix = "x86_64-linux-gnu"
|
|
||||||
elseif Sys.islinux() && Sys.ARCH == :i686
|
|
||||||
libsuffix = "i686-linux-gnu"
|
|
||||||
elseif Sys.isapple() && Sys.ARCH == :x86_64
|
|
||||||
libsuffix = "x86_64-apple-darwin14"
|
|
||||||
elseif Sys.iswindows() && Sys.ARCH == :x86_64
|
|
||||||
libsuffix = "x86_64-w64-mingw32"
|
|
||||||
elseif Sys.iswindows() && Sys.ARCH == :i686
|
|
||||||
libsuffix = "i686-w64-mingw32"
|
|
||||||
elseif !any(
|
|
||||||
(sfx) -> isfile(joinpath(libdir, "$basename.$sfx")),
|
|
||||||
("so", "dll", "dylib"))
|
|
||||||
error("Unsupported platform $(Sys.MACHINE). You can build your own library by running `make` from $(joinpath(@__FILE__, "..", "deps", "src"))")
|
|
||||||
end
|
|
||||||
# if there's a suffix-less library, it was built natively on this machine,
|
|
||||||
# so load that one first, otherwise load the pre-built one
|
|
||||||
libpa_shim = Libdl.find_library(
|
|
||||||
[basename, "$(basename)_$libsuffix"],
|
|
||||||
[libdir])
|
|
||||||
libpa_shim == "" && error("Could not load $basename library, please file an issue at https://github.com/JuliaAudio/RingBuffers.jl/issues with your `versioninfo()` output")
|
|
||||||
return libpa_shim
|
|
||||||
end
|
|
||||||
|
|
||||||
const pa_shim_errmsg_t = Cint
|
const pa_shim_errmsg_t = Cint
|
||||||
const PA_SHIM_ERRMSG_OVERFLOW = Cint(0) # input overflow
|
const PA_SHIM_ERRMSG_OVERFLOW = Cint(0) # input overflow
|
||||||
const PA_SHIM_ERRMSG_UNDERFLOW = Cint(1) # output underflow
|
const PA_SHIM_ERRMSG_UNDERFLOW = Cint(1) # output underflow
|
||||||
|
|
|
@ -202,7 +202,7 @@ end
|
||||||
end
|
end
|
||||||
|
|
||||||
@testset "using correct shim version" begin
|
@testset "using correct shim version" begin
|
||||||
@test PortAudio.shimhash() == "87021557a9f999545828eb11e4ebad2cd278b734dd91a8bd3faf05c89912cf80"
|
@test PortAudio.shimhash() == "7570f145b3c1b5a6f0733378a45807c5fd47e30f04771e4eaa2c380d80dcd15d"
|
||||||
end
|
end
|
||||||
|
|
||||||
@testset "Basic callback functionality" begin
|
@testset "Basic callback functionality" begin
|
||||||
|
|
Loading…
Reference in a new issue