Compare commits

..
Author SHA1 Message Date
Ross Bencina
b95f3bd6a2 hotplug dsound: zero new device count on error 2016-09-12 02:46:40 +10:00
Ross Bencina
231ecf77c7 hotplug: fix signed/unsigned parameter warning in pa_win_hotplug.c 2016-09-10 23:47:21 +10:00
Ross Bencina
0a290773de fix missing new line at end of pa_front.c 2016-09-09 23:48:53 +10:00
Ross Bencina
46f97c7c20 Merge branch 'master' into hotplug 2016-09-03 14:19:23 +10:00
Ross Bencina
8e9e507e12 hotplug dsound: initial cut of properly working connectionIds. it works. it pulls device information from each device every time, and then reuses the old connectionId if the GUID is the same. This has the advantage of always pulling updated channel count information. it has the disadvantage of re-polling every device, not just newly inserted/removed ones. the alternative is to reuse the existing device information by copying it over, which could be done. 2016-09-03 01:57:29 +10:00
Ross Bencina
8d285faa5e hotplug dsound: remove resolved fixme comment 2016-09-03 00:30:18 +10:00
Ross Bencina
6840cda9ad hotplug: extended doc comments for ScanDeviceInfos, CommitDeviceInfos, DisposeDeviceInfos. Added requirement that commit and dispose should be implemented such that they can't fail (this is currently the case with DirectSound and WDM/KS implementations). 2016-09-03 00:11:56 +10:00
Ross Bencina
5c5d4fb711 hotplug directsound: factor out freeing of device info array to FreeDeviceInfos. Delete some unused variables. 2016-09-02 23:29:20 +10:00
Ross Bencina
9562fb8074 hotplug: further refinement of API doc comments 2016-09-02 21:47:43 +10:00
Ross Bencina
ec5b0687a8 fix .def file: rename Pa_RefreshDeviceList --> Pa_UpdateAvailableDeviceList 2016-09-02 21:12:10 +10:00
Ross Bencina
b45ec9ed0a Moved hotplug function prototypes from random locations to new header file src/common/pa_hotplug.h. Added draft documentation and licence headers. In pa_front.c moved devices changed code next to refresh device list code. 2016-09-02 20:52:42 +10:00
Ross Bencina
d41ba780b2 hotplug: added connectionId parameter to PaDeviceInfo and bumped struct version number. added PaUtil_MakeDeviceConnectionId() function and used it to initialize connectionId in all host APIs. updated patest_refresh_device_list to display connection id. NOTE: persistent connection ids have not been implemented in dsound and wdmks, so refreshing the device list will change connection ids. 2016-09-02 20:27:39 +10:00
Ross Bencina
abfcd708b4 hotplug: first cut doc comments for PaDevicesChangedCallback and Pa_SetDevicesChangedCallback 2016-09-02 19:43:27 +10:00
Ross Bencina
3f7c315f22 hotplug: rename Pa_UpdateAvailableDeviceList() to Pa_RefreshDeviceList(). Clean up doc comment for Pa_RefreshDeviceList(). 2016-09-02 19:27:47 +10:00
Ross Bencina
9761960aa5 wdmks hotplug: Make CommitDeviceInfos fail-safe by removing allocation of temporary. Factored out device info array freeing function from DisposeDeviceInfos into separate FreeHostApiDeviceInfos. 2016-09-02 19:08:39 +10:00
Ross Bencina
23b4bdd49a wdm/ks hotplug: fixed two bugs in CommitDeviceInfos() Firstly, hostApi->info.deviceCount was being zeroed before it was used to specify how many devices to free, so zero devices/filters would be freed. Secondly, a ptr ptr (**) to temporary scan results localScanResults was being pased to DisposeDeviceInfos() instead of a ptr (*). 2016-09-02 18:52:22 +10:00
Ross Bencina
89f8f75a27 Merge of old SVN hotplug branch into current git HEAD. Includes hotplug support for DirectSound, WDM/KS. Both are working running in debugger but WDM/KS seems to be crashing in stand-alone build. I removed the use of struct _PaInternalInfo in hotplug/pa_front.c to reduce the size of the change. pa_win_dsound.c involved the most intricate changes due to other changes that had been made in the mean time. I've also initialized function ptrs ScanDeviceInfos, CommitDeviceInfos, DisposeDeviceInfos so this should build on all platforms. 2016-08-27 17:51:40 +10:00
289 changed files with 31077 additions and 140899 deletions

View file

@ -1,13 +0,0 @@
# EditorConfig info: https://editorconfig.org/
root = true
[Makefile*]
indent_style = tab
[*.{c,cpp,h,cxx,hxx}]
indent_style = space
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120

View file

@ -1,34 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
(Please use the mailing list for support requests and general discussion. This is only for actual bugs.)
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior. Include code if applicable.
1.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Actual behavior**
What actually happened.
Include a recording if helpful.
Error messages or logs longer than a page should be attached as a .txt file.
**Desktop (please complete the following information):**
- OS: [e.g. Mac OS]
- OS Version [e.g. 22]
- PortAudio version: stable, nightly snapshot (which?), current (please give date and/or Git hash):
- If Windows or Linux, which Host API (e.g. WASAPI):
**Additional context**
Add any other context about the problem here.

View file

@ -1,96 +0,0 @@
name: MSBuild MSVC Project File CI
on: [push, pull_request]
env:
# Path to the solution file relative to the root of the project.
SOLUTION_FILE_PATH: ./build/msvc/portaudio.sln
VCPROJ_FILE_PATH: ./build/msvc/portaudio.vcproj
VCXPROJ_FILE_PATH: ./build/msvc/portaudio.vcxproj
VCXPROJ_FILTERS_FILE_PATH: ./build/msvc/portaudio.vcxproj.filters
VCXPROJ_USER_FILE_PATH: ./build/msvc/portaudio.vcxproj.user
DEF_FILE_PATH: ./build/msvc/portaudio.def
jobs:
build:
runs-on: windows-latest
strategy:
matrix:
BUILD_CONFIGURATION: [Release]
BUILD_PLATFORM: [Win32, x64]
steps:
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1
- uses: actions/checkout@v2
- name: Upgrade VC Project File
# We maintain our vcproj file in an old format to maintain backwards compatibility
# This step upgrades the project to the latest version of MSVC
# see https://docs.microsoft.com/en-us/visualstudio/ide/reference/upgrade-devenv-exe?view=vs-2019
# pipe to file to ensure that it terminates https://stackoverflow.com/questions/48896010/occasionally-occurring-msbuild-error-msb3428/48918105#48918105
# discussion of using vswhere.exe here: https://stackoverflow.com/questions/65287456/how-to-upgrade-a-visual-studio-project-from-within-a-github-action/65311868#65311868
run: |
$devenv = & vswhere.exe '-property' productPath
Write-Output "$devenv"
& $devenv "${{env.VCPROJ_FILE_PATH}}" /Upgrade /NoSplash | Out-Null
Write-Output "devenv launched"
while (!(Test-Path "${{env.VCXPROJ_FILE_PATH}}")) { Start-Sleep -Seconds 10 }
Write-Output "vcxproj found"
while (!(Test-Path "${{env.VCXPROJ_FILTERS_FILE_PATH}}")) { Start-Sleep -Seconds 10 }
Write-Output "vcxproj.filters found"
Start-Sleep -Seconds 10
Write-Output "done."
- name: Remove ASIO Files and Enable PA_USE_DS=1
# Process the project files to remove ASIO-related sources and includes (since we can not access the ASIO SDK in a public build)
run: |
# Process .vcxproj file: remove source files
$xdoc = new-object System.Xml.XmlDocument
$vcxprojFile = resolve-path("${{env.VCXPROJ_FILE_PATH}}")
$xdoc.load($vcxprojFile)
$namespace = New-Object -TypeName "Xml.XmlNamespaceManager" -ArgumentList $xdoc.NameTable
$namespace.AddNamespace("vs", $xdoc.DocumentElement.NamespaceURI)
$nodes = $xdoc.SelectNodes("//vs:ClCompile[contains(@Include, '..\src\hostapi\asio')]", $namespace)
Write-Output "deleting ASIO related compilation nodes from .vcxproj:"
Write-Output $nodes
ForEach($node in $nodes) {
$parent = $node.ParentNode
$parent.RemoveChild($node)
}
# Enable DirectSound host API
$nodes = $xdoc.SelectNodes("//vs:PreprocessorDefinitions[contains(., 'PA_USE_DS=0')]", $namespace)
ForEach($node in $nodes) {
$text = $node.InnerText
$node.InnerText = $text -replace 'PA_USE_DS=0', 'PA_USE_DS=1'
}
$xdoc.save($vcxprojFile)
# Process .vcxproj.filters file: remove source files and includes
$vcxprojFiltersFile = resolve-path("${{env.VCXPROJ_FILTERS_FILE_PATH}}")
$xdoc.load($vcxprojFiltersFile)
$namespace = New-Object -TypeName "Xml.XmlNamespaceManager" -ArgumentList $xdoc.NameTable
$namespace.AddNamespace("vs", $xdoc.DocumentElement.NamespaceURI)
$nodes = $xdoc.SelectNodes("//vs:ClCompile[contains(@Include, '..\src\hostapi\asio')]", $namespace)
Write-Output "deleting ASIO related compilation nodes from .vcxproj.filters:"
Write-Output $nodes
ForEach($node in $nodes) {
$parent = $node.ParentNode
$parent.RemoveChild($node)
}
$nodes = $xdoc.SelectNodes("//vs:ClInclude[contains(@Include, 'pa_asio.h')]", $namespace)
Write-Output "deleting ASIO related include nodes from .vcxproj.filters:"
Write-Output $nodes
ForEach($node in $nodes) {
$parent = $node.ParentNode
$parent.RemoveChild($node)
}
$xdoc.save($vcxprojFiltersFile)
# Process .def file: remove PaAsio_ symbols
Set-Content -Path "${{env.DEF_FILE_PATH}}" -Value (Get-Content -Path "${{env.DEF_FILE_PATH}}" | Select-String -Pattern 'PaAsio_' -NotMatch)
- name: Build
working-directory: ${{env.GITHUB_WORKSPACE}}
# Add additional options to the MSBuild command line here (like platform or verbosity level).
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
run: msbuild /m /p:Configuration=${{matrix.BUILD_CONFIGURATION}} /p:Platform=${{matrix.BUILD_PLATFORM}} ${{env.VCXPROJ_FILE_PATH}}

View file

@ -1,20 +0,0 @@
name: autotools build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build-autotools:
runs-on: ubuntu-latest
name: Ubuntu
steps:
- uses: actions/checkout@v2
- name: configure
run: ./configure
- name: make
run: make

View file

@ -1,56 +0,0 @@
name: CMake build
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- name: Ubuntu
os: ubuntu-latest
install_dir: ~/portaudio
- name: Ubuntu mingw64
os: ubuntu-latest
install_dir: ~/portaudio
dependencies_extras: mingw-w64
cmake_extras: -DCMAKE_TOOLCHAIN_FILE=i686-w64-mingw32.cmake
- name: Windows
os: windows-latest
install_dir: C:\portaudio
- name: macOS
os: macOS-latest
install_dir: ~/portaudio
runs-on: ${{ matrix.os }}
name: ${{ matrix.name }}
env:
cmake_build_type: RelWithDebInfo
steps:
- name: checkout Git repository
uses: actions/checkout@v2
- name: "[Ubuntu] install dependencies"
run: sudo apt-get install libasound2-dev libjack-dev ${{ matrix.dependencies_extras }}
if: matrix.os == 'ubuntu-latest'
- name: configure
run: cmake ${{ matrix.cmake_extras }}
-DCMAKE_INSTALL_PREFIX=${{ matrix.install_dir }}
-DCMAKE_BUILD_TYPE=${{ env.cmake_build_type }}
-DPA_BUILD_TESTS=ON
-DPA_BUILD_EXAMPLES=ON
-S .
-B build
- name: build
run: cmake --build build --config ${{ env.cmake_build_type }} --parallel 2
- name: install
run: cmake --install build --config ${{ env.cmake_build_type }}
- name: "Upload GitHub Actions artifacts"
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.name }} PortAudio build
path: ${{ matrix.install_dir }}

10
.gitignore vendored
View file

@ -17,7 +17,6 @@ lib-stamp
lib/* lib/*
libtool libtool
portaudio-2.0.pc portaudio-2.0.pc
autom4te.cache/*
# Precompiled Headers # Precompiled Headers
*.gch *.gch
@ -41,12 +40,3 @@ autom4te.cache/*
*.exe *.exe
*.out *.out
*.app *.app
# Visual Studio 2017/2019 state folder
.vs/
# Visual Studio CMake build output folder
out/
# Visual Studio CMake settings file
CMakeSettings.json

View file

@ -3,77 +3,214 @@
# For a "How-To" please refer to the Portaudio documentation at: # For a "How-To" please refer to the Portaudio documentation at:
# http://www.portaudio.com/trac/wiki/TutorialDir/Compile/CMake # http://www.portaudio.com/trac/wiki/TutorialDir/Compile/CMake
# #
PROJECT( portaudio )
CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0) CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
# Check if the user is building PortAudio stand-alone or as part of a larger SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
# project. If this is part of a larger project (i.e. the CMakeLists.txt has
# been imported by some other CMakeLists.txt), we don't want to trump over
# the top of that project's global settings.
IF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_LIST_DIR})
PROJECT(portaudio)
# CMAKE_CONFIGURATION_TYPES only exists for multi-config generators (like OPTION(PA_CONFIG_LIB_OUTPUT_PATH "Make sure that output paths are kept neat" OFF)
# Visual Studio or Xcode). For these projects, we won't define IF(CMAKE_CL_64)
# CMAKE_BUILD_TYPE as it does not make sense. SET(TARGET_POSTFIX x64)
IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) IF(PA_CONFIG_LIB_OUTPUT_PATH)
MESSAGE(STATUS "Setting CMAKE_BUILD_TYPE type to 'Debug' as none was specified.") SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin/x64)
SET(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE) ENDIF(PA_CONFIG_LIB_OUTPUT_PATH)
SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release") ELSE(CMAKE_CL_64)
ENDIF() SET(TARGET_POSTFIX x86)
IF(PA_CONFIG_LIB_OUTPUT_PATH)
SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin/Win32)
ENDIF(PA_CONFIG_LIB_OUTPUT_PATH)
ENDIF(CMAKE_CL_64)
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON) OPTION(PA_ENABLE_DEBUG_OUTPUT "Enable debug output for Portaudio" OFF)
IF(PA_ENABLE_DEBUG_OUTPUT)
ADD_DEFINITIONS(-DPA_ENABLE_DEBUG_OUTPUT)
ENDIF(PA_ENABLE_DEBUG_OUTPUT)
IF(WIN32 AND MSVC) IF(WIN32 AND MSVC)
OPTION(PA_DLL_LINK_WITH_STATIC_RUNTIME "Link with static runtime libraries (minimizes runtime dependencies)" ON) OPTION(PA_DLL_LINK_WITH_STATIC_RUNTIME "Link with static runtime libraries (minimizes runtime dependencies)" ON)
IF(PA_DLL_LINK_WITH_STATIC_RUNTIME) IF(PA_DLL_LINK_WITH_STATIC_RUNTIME)
FOREACH(flag_var FOREACH(flag_var
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
IF(${flag_var} MATCHES "/MD") IF(${flag_var} MATCHES "/MD")
STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
ENDIF() ENDIF(${flag_var} MATCHES "/MD")
ENDFOREACH() ENDFOREACH(flag_var)
ENDIF() ENDIF(PA_DLL_LINK_WITH_STATIC_RUNTIME)
ENDIF()
ENDIF()
SET(PA_VERSION 19) ENDIF(WIN32 AND MSVC)
SET(PA_PKGCONFIG_VERSION ${PA_VERSION})
SET(PA_SOVERSION "${PA_VERSION}.0")
# Most of the code from this point onwards is related to populating the IF(WIN32)
# following variables: OPTION(PA_UNICODE_BUILD "Enable Portaudio Unicode build" ON)
# PA_PUBLIC_INCLUDES - This contains the list of public PortAudio header
# files. These files will be copied into /include paths on Unix'y SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_support)
# systems when "make install" is invoked. # Try to find DirectX SDK
# PA_PRIVATE_INCLUDES - This contains the list of header files which FIND_PACKAGE(DXSDK)
# are not part of PortAudio, but are required by the various hostapis. # Try to find ASIO SDK (assumes that portaudio and asiosdk folders are side-by-side, see
# It is only used by CMake IDE generators (like Visual Studio) to # http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC)
# provide quick-links to useful headers. It has no impact on build FIND_PACKAGE(ASIOSDK)
# output.
# PA_PRIVATE_INCLUDE_PATHS - This contains the list of include paths which IF(ASIOSDK_FOUND)
# will be passed to the compiler while PortAudio is being built which OPTION(PA_USE_ASIO "Enable support for ASIO" ON)
# are not required by applications using the PortAudio API. ELSE(ASIOSDK_FOUND)
# PA_PRIVATE_COMPILE_DEFINITIONS - This contains a list of preprocessor OPTION(PA_USE_ASIO "Enable support for ASIO" OFF)
# macro definitions which will be set when compiling PortAudio source ENDIF(ASIOSDK_FOUND)
# files. IF(DXSDK_FOUND)
# PA_SOURCES - This contains the list of source files which will be built OPTION(PA_USE_DS "Enable support for DirectSound" ON)
# into the static and shared PortAudio libraries. ELSE(DXSDK_FOUND)
# PA_NON_UNICODE_SOURCES - This also contains a list of source files which OPTION(PA_USE_DS "Enable support for DirectSound" OFF)
# will be build into the static and shared PortAudio libraries. However, ENDIF(DXSDK_FOUND)
# these sources will not have any unicode compiler definitions added OPTION(PA_USE_WMME "Enable support for MME" ON)
# to them. This list should only contain external source dependencies. OPTION(PA_USE_WASAPI "Enable support for WASAPI" ON)
# PA_EXTRA_SHARED_SOURCES - Contains a list of extra files which will be OPTION(PA_USE_WDMKS "Enable support for WDMKS" ON)
# associated only with the shared PortAudio library. This only seems OPTION(PA_USE_WDMKS_DEVICE_INFO "Use WDM/KS API for device info" ON)
# relevant for Windows shared libraries which require a list of export MARK_AS_ADVANCED(PA_USE_WDMKS_DEVICE_INFO)
# symbols. IF(PA_USE_DS)
# Where other PA_* variables are set, these are almost always only used to OPTION(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE "Use DirectSound full duplex create" ON)
# preserve the historic SOURCE_GROUP behavior (which again only has an impact MARK_AS_ADVANCED(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
# on IDE-style generators for visual appearance) or store the output of ENDIF(PA_USE_DS)
# find_library() calls. ENDIF(WIN32)
# Set variables for DEF file expansion
IF(NOT PA_USE_ASIO)
SET(DEF_EXCLUDE_ASIO_SYMBOLS ";")
ENDIF(NOT PA_USE_ASIO)
IF(NOT PA_USE_WASAPI)
SET(DEF_EXCLUDE_WASAPI_SYMBOLS ";")
ENDIF(NOT PA_USE_WASAPI)
IF(PA_USE_WDMKS_DEVICE_INFO)
ADD_DEFINITIONS(-DPAWIN_USE_WDMKS_DEVICE_INFO)
ENDIF(PA_USE_WDMKS_DEVICE_INFO)
IF(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
ADD_DEFINITIONS(-DPAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE)
ENDIF(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
#######################################
IF(WIN32)
INCLUDE_DIRECTORIES(src/os/win)
ENDIF(WIN32)
IF(PA_USE_ASIO)
INCLUDE_DIRECTORIES(${ASIOSDK_ROOT_DIR}/common)
INCLUDE_DIRECTORIES(${ASIOSDK_ROOT_DIR}/host)
INCLUDE_DIRECTORIES(${ASIOSDK_ROOT_DIR}/host/pc)
SET(PA_ASIO_INCLUDES
include/pa_asio.h
)
SET(PA_ASIO_SOURCES
src/hostapi/asio/pa_asio.cpp
)
SET(PA_ASIOSDK_SOURCES
${ASIOSDK_ROOT_DIR}/common/asio.cpp
${ASIOSDK_ROOT_DIR}/host/pc/asiolist.cpp
${ASIOSDK_ROOT_DIR}/host/asiodrivers.cpp
)
SOURCE_GROUP("hostapi\\ASIO" FILES
${PA_ASIO_SOURCES}
)
SOURCE_GROUP("hostapi\\ASIO\\ASIOSDK" FILES
${PA_ASIOSDK_SOURCES}
)
ENDIF(PA_USE_ASIO)
IF(PA_USE_DS)
INCLUDE_DIRECTORIES(${DXSDK_INCLUDE_DIR})
INCLUDE_DIRECTORIES(src/os/win)
SET(PA_DS_INCLUDES
include/pa_win_ds.h
src/hostapi/dsound/pa_win_ds_dynlink.h
)
SET(PA_DS_SOURCES
src/hostapi/dsound/pa_win_ds.c
src/hostapi/dsound/pa_win_ds_dynlink.c
)
SOURCE_GROUP("hostapi\\dsound" FILES
${PA_DS_INCLUDES}
${PA_DS_SOURCES}
)
ENDIF(PA_USE_DS)
IF(PA_USE_WMME)
SET(PA_WMME_INCLUDES
include/pa_win_wmme.h
)
SET(PA_WMME_SOURCES
src/hostapi/wmme/pa_win_wmme.c
)
SOURCE_GROUP("hostapi\\wmme" FILES
${PA_WMME_SOURCES}
)
ENDIF(PA_USE_WMME)
IF(PA_USE_WASAPI)
SET(PA_WASAPI_INCLUDES
include/pa_win_wasapi.h
)
SET(PA_WASAPI_SOURCES
src/hostapi/wasapi/pa_win_wasapi.c
)
SOURCE_GROUP("hostapi\\wasapi" FILES
${PA_WASAPI_SOURCES}
)
ENDIF(PA_USE_WASAPI)
IF(PA_USE_WDMKS)
SET(PA_WDMKS_INCLUDES
include/pa_win_wdmks.h
)
SET(PA_WDMKS_SOURCES
src/hostapi/wdmks/pa_win_wdmks.c
)
SOURCE_GROUP("hostapi\\wdmks" FILES
${PA_WDMKS_SOURCES}
)
ENDIF(PA_USE_WDMKS)
SET(PA_SKELETON_SOURCES
src/hostapi/skeleton/pa_hostapi_skeleton.c
)
SOURCE_GROUP("hostapi\\skeleton"
${PA_SKELETON_SOURCES})
#######################################
IF(WIN32)
SET(PA_INCLUDES
include/portaudio.h
${PA_ASIO_INCLUDES}
${PA_DS_INCLUDES}
${PA_WMME_INCLUDES}
${PA_WASAPI_INCLUDES}
${PA_WDMKS_INCLUDES}
)
ENDIF(WIN32)
SOURCE_GROUP("include" FILES
${PA_INCLUDES}
)
SET(PA_COMMON_INCLUDES SET(PA_COMMON_INCLUDES
src/common/pa_allocation.h src/common/pa_allocation.h
@ -105,395 +242,112 @@ SET(PA_COMMON_SOURCES
src/common/pa_trace.c src/common/pa_trace.c
) )
SOURCE_GROUP("common" FILES ${PA_COMMON_INCLUDES} ${PA_COMMON_SOURCES}) SOURCE_GROUP("common" FILES
${PA_COMMON_INCLUDES}
${PA_COMMON_SOURCES}
)
SET(PA_PUBLIC_INCLUDES include/portaudio.h) SOURCE_GROUP("cmake_generated" FILES
${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake_support) ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h
)
SET(PA_SKELETON_SOURCES src/hostapi/skeleton/pa_hostapi_skeleton.c)
SOURCE_GROUP("hostapi\\skeleton" ${PA_SKELETON_SOURCES})
SET(PA_SOURCES ${PA_COMMON_SOURCES} ${PA_SKELETON_SOURCES})
SET(PA_PRIVATE_INCLUDE_PATHS src/common ${CMAKE_CURRENT_BINARY_DIR})
IF(WIN32) IF(WIN32)
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} _CRT_SECURE_NO_WARNINGS) SET(PA_PLATFORM_SOURCES
src/os/win/pa_win_hostapis.c
src/os/win/pa_win_util.c
src/os/win/pa_win_waveformat.c
src/os/win/pa_win_wdmks_utils.c
src/os/win/pa_win_coinitialize.c
src/os/win/pa_x86_plain_converters.c
)
SET(PA_PLATFORM_SOURCES SOURCE_GROUP("os\\win" FILES
src/os/win/pa_win_hostapis.c ${PA_PLATFORM_SOURCES}
src/os/win/pa_win_util.c )
src/os/win/pa_win_waveformat.c ENDIF(WIN32)
src/os/win/pa_win_wdmks_utils.c
src/os/win/pa_win_coinitialize.c)
SET(PA_PLATFORM_INCLUDES
src/os/win/pa_win_util.h
src/os/win/pa_win_coinitialize.h
src/os/win/pa_win_wdmks_utils.h)
IF(MSVC) INCLUDE_DIRECTORIES( include )
SET(PA_PLATFORM_SOURCES ${PA_PLATFORM_SOURCES} src/os/win/pa_x86_plain_converters.c) INCLUDE_DIRECTORIES( src/common )
SET(PA_PLATFORM_INCLUDES ${PA_PLATFORM_INCLUDES} src/os/win/pa_x86_plain_converters.h)
ELSE()
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} _WIN32_WINNT=0x0501 WINVER=0x0501)
SET(DEF_EXCLUDE_X86_PLAIN_CONVERTERS ";")
ENDIF()
SOURCE_GROUP("os\\win" FILES ${PA_PLATFORM_SOURCES} ${PA_PLATFORM_INCLUDES})
SET(PA_SOURCES ${PA_SOURCES} ${PA_PLATFORM_SOURCES})
SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_PLATFORM_INCLUDES})
SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} src/os/win)
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} winmm)
# Try to find ASIO SDK (assumes that portaudio and asiosdk folders are side-by-side, see
# http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC)
FIND_PACKAGE(ASIOSDK)
IF(ASIOSDK_FOUND)
OPTION(PA_USE_ASIO "Enable support for ASIO" ON)
ELSE()
OPTION(PA_USE_ASIO "Enable support for ASIO" OFF)
ENDIF()
IF(PA_USE_ASIO)
SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${ASIOSDK_ROOT_DIR}/common)
SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${ASIOSDK_ROOT_DIR}/host)
SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${ASIOSDK_ROOT_DIR}/host/pc)
SET(PA_ASIO_SOURCES src/hostapi/asio/pa_asio.cpp src/hostapi/asio/iasiothiscallresolver.cpp)
SET(PA_ASIOSDK_SOURCES ${ASIOSDK_ROOT_DIR}/common/asio.cpp ${ASIOSDK_ROOT_DIR}/host/pc/asiolist.cpp ${ASIOSDK_ROOT_DIR}/host/asiodrivers.cpp)
SOURCE_GROUP("hostapi\\ASIO" FILES ${PA_ASIO_SOURCES})
SOURCE_GROUP("hostapi\\ASIO\\ASIOSDK" FILES ${PA_ASIOSDK_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_asio.h)
SET(PA_SOURCES ${PA_SOURCES} ${PA_ASIO_SOURCES})
SET(PA_NON_UNICODE_SOURCES ${PA_NON_UNICODE_SOURCES} ${PA_ASIOSDK_SOURCES})
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ole32 uuid)
ELSE()
# Set variables for DEF file expansion
SET(DEF_EXCLUDE_ASIO_SYMBOLS ";")
ENDIF()
OPTION(PA_USE_DS "Enable support for DirectSound" ON)
IF(PA_USE_DS)
IF(MINGW)
MESSAGE(STATUS "DirectSound support will be built with DSound provided by MinGW.")
OPTION(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE "Use DirectSound full duplex create" OFF)
ELSE(MINGW)
OPTION(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE "Use DirectSound full duplex create" ON)
ENDIF(MINGW)
MARK_AS_ADVANCED(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
IF(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE)
ENDIF()
SET(PA_DS_INCLUDES src/hostapi/dsound/pa_win_ds_dynlink.h)
SET(PA_DS_SOURCES src/hostapi/dsound/pa_win_ds.c src/hostapi/dsound/pa_win_ds_dynlink.c)
SOURCE_GROUP("hostapi\\dsound" FILES ${PA_DS_INCLUDES} ${PA_DS_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_win_ds.h include/pa_win_waveformat.h)
SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_DS_INCLUDES})
SET(PA_SOURCES ${PA_SOURCES} ${PA_DS_SOURCES})
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} dsound)
ENDIF(PA_USE_DS)
OPTION(PA_USE_WMME "Enable support for MME" ON)
IF(PA_USE_WMME)
SET(PA_WMME_SOURCES src/hostapi/wmme/pa_win_wmme.c)
SOURCE_GROUP("hostapi\\wmme" FILES ${PA_WMME_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_win_wmme.h include/pa_win_waveformat.h)
SET(PA_SOURCES ${PA_SOURCES} ${PA_WMME_SOURCES})
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ole32 uuid)
ENDIF()
# MinGW versions below 4.93, especially non MinGW-w64 distributions may
# break in the wasapi build. If an older MinGW version is required, WASAPI-
# support needs to be disabled.
OPTION(PA_USE_WASAPI "Enable support for WASAPI" ON)
IF(PA_USE_WASAPI)
SET(PA_WASAPI_SOURCES src/hostapi/wasapi/pa_win_wasapi.c)
SOURCE_GROUP("hostapi\\wasapi" FILES ${PA_WASAPI_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_win_wasapi.h include/pa_win_waveformat.h)
SET(PA_SOURCES ${PA_SOURCES} ${PA_WASAPI_SOURCES})
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ole32 uuid)
ELSE()
SET(DEF_EXCLUDE_WASAPI_SYMBOLS ";")
ENDIF()
OPTION(PA_USE_WDMKS "Enable support for WDMKS" ON)
IF(PA_USE_WDMKS)
SET(PA_WDMKS_SOURCES src/hostapi/wdmks/pa_win_wdmks.c)
SOURCE_GROUP("hostapi\\wdmks" FILES ${PA_WDMKS_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_win_wdmks.h)
SET(PA_SOURCES ${PA_SOURCES} ${PA_WDMKS_SOURCES})
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} setupapi ole32 uuid)
ENDIF()
OPTION(PA_USE_WDMKS_DEVICE_INFO "Use WDM/KS API for device info" ON)
MARK_AS_ADVANCED(PA_USE_WDMKS_DEVICE_INFO)
IF(PA_USE_WDMKS_DEVICE_INFO)
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PAWIN_USE_WDMKS_DEVICE_INFO)
ENDIF()
SET(GENERATED_MESSAGE "CMake generated file, do NOT edit! Use CMake-GUI to change configuration instead.")
CONFIGURE_FILE(cmake_support/template_portaudio.def ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def @ONLY)
CONFIGURE_FILE(cmake_support/options_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h @ONLY)
SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PORTAUDIO_CMAKE_GENERATED)
SOURCE_GROUP("cmake_generated" FILES ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
SET(PA_EXTRA_SHARED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def)
ELSE()
SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} src/os/unix)
SET(PA_PLATFORM_SOURCES src/os/unix/pa_unix_hostapis.c src/os/unix/pa_unix_util.c)
SOURCE_GROUP("os\\unix" FILES ${PA_PLATFORM_SOURCES})
SET(PA_SOURCES ${PA_SOURCES} ${PA_PLATFORM_SOURCES})
IF(APPLE)
SET(CMAKE_MACOSX_RPATH 1)
OPTION(PA_USE_COREAUDIO "Enable support for CoreAudio" ON)
IF(PA_USE_COREAUDIO)
SET(PA_COREAUDIO_SOURCES
src/hostapi/coreaudio/pa_mac_core.c
src/hostapi/coreaudio/pa_mac_core_blocking.c
src/hostapi/coreaudio/pa_mac_core_utilities.c)
SET(PA_COREAUDIO_INCLUDES
src/hostapi/coreaudio/pa_mac_core_blocking.h
src/hostapi/coreaudio/pa_mac_core_utilities.h)
SOURCE_GROUP("hostapi\\coreaudio" FILES ${PA_COREAUDIO_SOURCES} ${PA_COREAUDIO_INCLUDES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_mac_core.h)
SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_COREAUDIO_INCLUDES})
SET(PA_SOURCES ${PA_SOURCES} ${PA_COREAUDIO_SOURCES})
FIND_LIBRARY(COREAUDIO_LIBRARY CoreAudio REQUIRED)
FIND_LIBRARY(AUDIOTOOLBOX_LIBRARY AudioToolbox REQUIRED)
FIND_LIBRARY(AUDIOUNIT_LIBRARY AudioUnit REQUIRED)
FIND_LIBRARY(COREFOUNDATION_LIBRARY CoreFoundation REQUIRED)
FIND_LIBRARY(CORESERVICES_LIBRARY CoreServices REQUIRED)
MARK_AS_ADVANCED(COREAUDIO_LIBRARY AUDIOTOOLBOX_LIBRARY AUDIOUNIT_LIBRARY COREFOUNDATION_LIBRARY CORESERVICES_LIBRARY)
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${COREAUDIO_LIBRARY} ${AUDIOTOOLBOX_LIBRARY} ${AUDIOUNIT_LIBRARY} ${COREFOUNDATION_LIBRARY} ${CORESERVICES_LIBRARY})
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_COREAUDIO)
SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework CoreFoundation -framework CoreServices")
ENDIF()
ELSEIF(UNIX)
FIND_PACKAGE(Jack)
IF(JACK_FOUND)
OPTION(PA_USE_JACK "Enable support for Jack" ON)
ELSE()
OPTION(PA_USE_JACK "Enable support for Jack" OFF)
ENDIF()
IF(PA_USE_JACK)
SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${JACK_INCLUDE_DIRS})
SET(PA_JACK_SOURCES src/hostapi/jack/pa_jack.c)
SOURCE_GROUP("hostapi\\JACK" FILES ${PA_JACK_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_jack.h)
SET(PA_SOURCES ${PA_SOURCES} ${PA_JACK_SOURCES})
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_JACK)
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${JACK_LIBRARIES})
SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -ljack")
ENDIF()
FIND_PACKAGE(ALSA)
IF(ALSA_FOUND)
OPTION(PA_USE_ALSA "Enable support for ALSA" ON)
OPTION(PA_ALSA_DYNAMIC "Enable loading ALSA through dlopen" OFF)
ELSE()
OPTION(PA_USE_ALSA "Enable support for ALSA" OFF)
ENDIF()
IF(PA_USE_ALSA)
SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${ALSA_INCLUDE_DIRS})
SET(PA_ALSA_SOURCES src/hostapi/alsa/pa_linux_alsa.c)
SOURCE_GROUP("hostapi\\ALSA" FILES ${PA_ALSA_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_linux_alsa.h)
SET(PA_SOURCES ${PA_SOURCES} ${PA_ALSA_SOURCES})
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_ALSA)
IF(PA_ALSA_DYNAMIC)
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_ALSA_DYNAMIC)
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${CMAKE_DL_LIBS})
SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -l${CMAKE_DL_LIBS}")
ELSE()
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${ALSA_LIBRARIES})
SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -lasound")
ENDIF()
ENDIF()
ENDIF()
SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -lm -lpthread")
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} m pthread)
ENDIF()
SOURCE_GROUP("include" FILES ${PA_PUBLIC_INCLUDES})
SET(PA_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_PUBLIC_INCLUDES})
IF(WIN32)
OPTION(PA_UNICODE_BUILD "Enable Portaudio Unicode build" ON)
IF(PA_UNICODE_BUILD)
SET_SOURCE_FILES_PROPERTIES(${PA_SOURCES} PROPERTIES COMPILE_DEFINITIONS "UNICODE;_UNICODE")
ENDIF()
ENDIF()
OPTION(PA_ENABLE_DEBUG_OUTPUT "Enable debug output for Portaudio" OFF)
IF(PA_ENABLE_DEBUG_OUTPUT)
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_ENABLE_DEBUG_OUTPUT)
ENDIF()
INCLUDE(TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
IF(IS_BIG_ENDIAN)
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_BIG_ENDIAN)
ELSE()
SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_LITTLE_ENDIAN)
ENDIF()
OPTION(PA_BUILD_STATIC "Build static library" ON)
OPTION(PA_BUILD_SHARED "Build shared/dynamic library" ON)
IF(MSVC)
OPTION(PA_LIBNAME_ADD_SUFFIX "Add suffix _static to static library name" ON)
ELSE()
OPTION(PA_LIBNAME_ADD_SUFFIX "Add suffix _static to static library name" OFF)
ENDIF()
# MSVC: if PA_LIBNAME_ADD_SUFFIX is not used, and both static and shared libraries are
# built, one, of import- and static libraries, will overwrite the other. In
# embedded builds this is not an issue as they will only build the configuration
# used in the host application.
MARK_AS_ADVANCED(PA_LIBNAME_ADD_SUFFIX)
IF(MSVC AND PA_BUILD_STATIC AND PA_BUILD_SHARED AND NOT PA_LIBNAME_ADD_SUFFIX)
MESSAGE(WARNING "Building both shared and static libraries, and avoiding the suffix _static will lead to a name conflict")
SET(PA_LIBNAME_ADD_SUFFIX ON CACHE BOOL "Forcing use of suffix _static to avoid name conflict between static and import library" FORCE)
MESSAGE(WARNING "PA_LIBNAME_ADD_SUFFIX was set to ON")
ENDIF()
SET(PA_TARGETS "")
IF(PA_BUILD_SHARED)
LIST(APPEND PA_TARGETS portaudio)
ADD_LIBRARY(portaudio SHARED ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_NON_UNICODE_SOURCES} ${PA_EXTRA_SHARED_SOURCES})
SET_PROPERTY(TARGET portaudio APPEND_STRING PROPERTY COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(portaudio PRIVATE ${PA_PRIVATE_INCLUDE_PATHS})
TARGET_INCLUDE_DIRECTORIES(portaudio PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" "$<INSTALL_INTERFACE:include>")
TARGET_LINK_LIBRARIES(portaudio ${PA_LIBRARY_DEPENDENCIES})
ENDIF()
IF(PA_BUILD_STATIC)
LIST(APPEND PA_TARGETS portaudio_static)
ADD_LIBRARY(portaudio_static STATIC ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_NON_UNICODE_SOURCES})
SET_PROPERTY(TARGET portaudio_static APPEND_STRING PROPERTY COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(portaudio_static PRIVATE ${PA_PRIVATE_INCLUDE_PATHS})
TARGET_INCLUDE_DIRECTORIES(portaudio_static PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" "$<INSTALL_INTERFACE:include>")
TARGET_LINK_LIBRARIES(portaudio_static ${PA_LIBRARY_DEPENDENCIES})
IF(NOT PA_LIBNAME_ADD_SUFFIX)
SET_PROPERTY(TARGET portaudio_static PROPERTY OUTPUT_NAME portaudio)
ENDIF()
ENDIF()
IF(WIN32 AND MSVC) IF(WIN32 AND MSVC)
OPTION(PA_CONFIG_LIB_OUTPUT_PATH "Make sure that output paths are kept neat" OFF) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
IF(CMAKE_CL_64) ENDIF(WIN32 AND MSVC)
SET(TARGET_POSTFIX x64)
IF(PA_CONFIG_LIB_OUTPUT_PATH)
SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin/x64)
ENDIF()
ELSE()
SET(TARGET_POSTFIX x86)
IF(PA_CONFIG_LIB_OUTPUT_PATH)
SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin/Win32)
ENDIF()
ENDIF()
IF(PA_BUILD_SHARED)
IF(PA_LIBNAME_ADD_SUFFIX)
SET_TARGET_PROPERTIES(portaudio PROPERTIES OUTPUT_NAME portaudio_${TARGET_POSTFIX})
ELSE()
SET_TARGET_PROPERTIES(portaudio PROPERTIES OUTPUT_NAME portaudio)
ENDIF()
ENDIF()
IF(PA_BUILD_STATIC)
IF(PA_LIBNAME_ADD_SUFFIX)
SET_TARGET_PROPERTIES(portaudio_static PROPERTIES OUTPUT_NAME portaudio_static_${TARGET_POSTFIX})
ELSE()
SET_TARGET_PROPERTIES(portaudio_static PROPERTIES OUTPUT_NAME portaudio)
ENDIF()
ENDIF()
ELSE()
IF(APPLE AND CMAKE_VERSION VERSION_GREATER 3.4.2)
OPTION(PA_OUTPUT_OSX_FRAMEWORK "Generate an OS X framework instead of the simple library" OFF)
IF(PA_OUTPUT_OSX_FRAMEWORK)
SET_TARGET_PROPERTIES(portaudio PROPERTIES
FRAMEWORK TRUE
MACOSX_FRAMEWORK_IDENTIFIER com.portaudio
FRAMEWORK_VERSION A
PUBLIC_HEADER "${PA_PUBLIC_INCLUDES}"
VERSION ${PA_SOVERSION}
SOVERSION ${PA_SOVERSION})
ENDIF()
ENDIF()
ENDIF()
# At least on Windows in embedded builds, portaudio's install target should likely ADD_DEFINITIONS(-DPORTAUDIO_CMAKE_GENERATED)
# not be executed, as the library would usually already be installed as part of, and INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
# by means of the host application.
# The option below offers the option to avoid executing the portaudio install target
# for cases in which the host-application executes install, but no independent install
# of portaudio is wished.
OPTION(PA_DISABLE_INSTALL "Disable targets install and uninstall (for embedded builds)" OFF)
IF(NOT PA_OUTPUT_OSX_FRAMEWORK AND NOT PA_DISABLE_INSTALL) SET(SOURCES_LESS_ASIO_SDK
INCLUDE(CMakePackageConfigHelpers) ${PA_COMMON_SOURCES}
${PA_ASIO_SOURCES}
${PA_DS_SOURCES}
${PA_WMME_SOURCES}
${PA_WASAPI_SOURCES}
${PA_WDMKS_SOURCES}
${PA_SKELETON_SOURCES}
${PA_PLATFORM_SOURCES}
)
CONFIGURE_PACKAGE_CONFIG_FILE(cmake_support/portaudioConfig.cmake.in ${CMAKE_BINARY_DIR}/cmake/portaudio/portaudioConfig.cmake IF(PA_UNICODE_BUILD)
INSTALL_DESTINATION "lib/cmake/portaudio" SET_SOURCE_FILES_PROPERTIES(
NO_CHECK_REQUIRED_COMPONENTS_MACRO) ${SOURCES_LESS_ASIO_SDK}
WRITE_BASIC_PACKAGE_VERSION_FILE(${CMAKE_BINARY_DIR}/cmake/portaudio/portaudioConfigVersion.cmake PROPERTIES
VERSION ${PA_VERSION} COMPILE_DEFINITIONS "UNICODE;_UNICODE"
COMPATIBILITY SameMajorVersion) )
CONFIGURE_FILE(cmake_support/portaudio-2.0.pc.in ${CMAKE_CURRENT_BINARY_DIR}/portaudio-2.0.pc @ONLY) ENDIF(PA_UNICODE_BUILD)
INSTALL(FILES README.md DESTINATION share/doc/portaudio)
INSTALL(FILES LICENSE.txt DESTINATION share/doc/portaudio)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/portaudio-2.0.pc DESTINATION lib/pkgconfig)
INSTALL(FILES ${PA_PUBLIC_INCLUDES} DESTINATION include)
INSTALL(TARGETS ${PA_TARGETS}
EXPORT portaudio-targets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
INSTALL(EXPORT portaudio-targets FILE "portaudioTargets.cmake" DESTINATION "lib/cmake/portaudio")
EXPORT(TARGETS ${PA_TARGETS} FILE "${PROJECT_BINARY_DIR}/cmake/portaudio/portaudioTargets.cmake")
INSTALL(FILES "${CMAKE_BINARY_DIR}/cmake/portaudio/portaudioConfig.cmake"
"${CMAKE_BINARY_DIR}/cmake/portaudio/portaudioConfigVersion.cmake"
DESTINATION "lib/cmake/portaudio")
IF (NOT TARGET uninstall) ADD_LIBRARY(portaudio SHARED
CONFIGURE_FILE( ${PA_INCLUDES}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_support/cmake_uninstall.cmake.in" ${PA_COMMON_INCLUDES}
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" ${SOURCES_LESS_ASIO_SDK}
IMMEDIATE @ONLY) ${PA_ASIOSDK_SOURCES}
ADD_CUSTOM_TARGET(uninstall ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h
ENDIF() )
ENDIF()
ADD_LIBRARY(portaudio_static STATIC
${PA_INCLUDES}
${PA_COMMON_INCLUDES}
${SOURCES_LESS_ASIO_SDK}
${PA_ASIOSDK_SOURCES}
${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h
)
# Configure the exports file according to settings
SET(GENERATED_MESSAGE "CMake generated file, do NOT edit! Use CMake-GUI to change configuration instead.")
CONFIGURE_FILE( cmake_support/template_portaudio.def ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def @ONLY )
# Configure header for options (PA_USE_xxx)
CONFIGURE_FILE( cmake_support/options_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h @ONLY )
IF(WIN32)
# If we use DirectSound, we need this for the library to be found (if not in VS project settings)
IF(PA_USE_DS AND DXSDK_FOUND)
TARGET_LINK_LIBRARIES(portaudio ${DXSDK_DSOUND_LIBRARY})
ENDIF(PA_USE_DS AND DXSDK_FOUND)
# If we use WDM/KS we need setupapi.lib
IF(PA_USE_WDMKS)
TARGET_LINK_LIBRARIES(portaudio setupapi)
ENDIF(PA_USE_WDMKS)
SET_TARGET_PROPERTIES(portaudio PROPERTIES OUTPUT_NAME portaudio_${TARGET_POSTFIX}
FOLDER "Portaudio")
SET_TARGET_PROPERTIES(portaudio_static PROPERTIES OUTPUT_NAME portaudio_static_${TARGET_POSTFIX}
FOLDER "Portaudio")
ENDIF(WIN32)
# Prepared for inclusion of test files
OPTION(PA_BUILD_TESTS "Include test projects" OFF) OPTION(PA_BUILD_TESTS "Include test projects" OFF)
IF(PA_BUILD_TESTS) OPTION(PA_BUILD_EXAMPLES "Include example projects" OFF)
MACRO(ADD_TEST appl_name)
ADD_EXECUTABLE(${appl_name} "${appl_name}.c") # Prepared for inclusion of test files
TARGET_LINK_LIBRARIES(${appl_name} portaudio_static) IF(PA_BUILD_TESTS)
TARGET_INCLUDE_DIRECTORIES(${appl_name} PRIVATE "${CMAKE_SOURCE_DIR}/src/common") SUBDIRS(test)
SET_TARGET_PROPERTIES(${appl_name} ENDIF(PA_BUILD_TESTS)
PROPERTIES
FOLDER "Test"
)
ENDMACRO(ADD_TEST)
SUBDIRS(test)
SUBDIRS(qa)
ENDIF()
# Prepared for inclusion of test files # Prepared for inclusion of test files
OPTION(PA_BUILD_EXAMPLES "Include example projects" OFF)
IF(PA_BUILD_EXAMPLES) IF(PA_BUILD_EXAMPLES)
SUBDIRS(examples) SUBDIRS(examples)
ENDIF() ENDIF(PA_BUILD_EXAMPLES)
#################################

View file

@ -44,7 +44,7 @@ PALIB = libportaudio.la
PAINC = include/portaudio.h PAINC = include/portaudio.h
PA_LDFLAGS = $(LDFLAGS) $(SHARED_FLAGS) -rpath $(libdir) -no-undefined \ PA_LDFLAGS = $(LDFLAGS) $(SHARED_FLAGS) -rpath $(libdir) -no-undefined \
-export-symbols-regex "(Pa|PaMacCore|PaJack|PaAlsa|PaAsio|PaOSS|PaWasapi|PaWasapiWinrt)_.*" \ -export-symbols-regex "(Pa|PaMacCore|PaJack|PaAlsa|PaAsio|PaOSS)_.*" \
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
COMMON_OBJS = \ COMMON_OBJS = \
@ -146,7 +146,6 @@ SRC_DIRS = \
src/hostapi/dsound \ src/hostapi/dsound \
src/hostapi/jack \ src/hostapi/jack \
src/hostapi/oss \ src/hostapi/oss \
src/hostapi/skeleton \
src/hostapi/wasapi \ src/hostapi/wasapi \
src/hostapi/wdmks \ src/hostapi/wdmks \
src/hostapi/wmme \ src/hostapi/wmme \
@ -221,16 +220,16 @@ clean:
distclean: clean distclean: clean
$(RM) config.log config.status Makefile libtool portaudio-2.0.pc $(RM) config.log config.status Makefile libtool portaudio-2.0.pc
%.o: %.c $(MAKEFILE) $(PAINC) lib-stamp %.o: %.c $(MAKEFILE) $(PAINC)
$(CC) -c $(CFLAGS) $< -o $@ $(CC) -c $(CFLAGS) $< -o $@
%.lo: %.c $(MAKEFILE) $(PAINC) lib-stamp %.lo: %.c $(MAKEFILE) $(PAINC)
$(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) $< -o $@ $(LIBTOOL) --mode=compile $(CC) -c $(CFLAGS) $< -o $@
%.lo: %.cpp $(MAKEFILE) $(PAINC) lib-stamp %.lo: %.cpp $(MAKEFILE) $(PAINC)
$(LIBTOOL) --mode=compile --tag=CXX $(CXX) -c $(CXXFLAGS) $< -o $@ $(LIBTOOL) --mode=compile --tag=CXX $(CXX) -c $(CXXFLAGS) $< -o $@
%.o: %.cpp $(MAKEFILE) $(PAINC) lib-stamp %.o: %.cpp $(MAKEFILE) $(PAINC)
$(CXX) -c $(CXXFLAGS) $< -o $@ $(CXX) -c $(CXXFLAGS) $< -o $@
%.o: %.asm %.o: %.asm

103
README.md
View file

@ -1,103 +0,0 @@
# PortAudio - portable audio I/O library
This is a fork of PortAudio that adds `Pa_RefreshDevice` functionality (see commit `1f01a3ddc05df7ee3bb3cad5ef960d335aff018b`), which allows runtime detection of audio device changes without restarting your application.
PortAudio is a portable audio I/O library designed for cross-platform
support of audio. It uses either a callback mechanism to request audio
processing, or blocking read/write calls to buffer data between the
native audio subsystem and the client. Audio can be processed in various
formats, including 32 bit floating point, and will be converted to the
native format internally.
## Documentation:
* Documentation is available at http://www.portaudio.com/docs/
* Or at `/doc/html/index.html` after running Doxygen.
* Also see `src/common/portaudio.h` for the API spec.
* And see the `examples/` and `test/` directories for many examples of usage. (We suggest `examples/paex_saw.c` for an example.)
For information on compiling programs with PortAudio, please see the
tutorial at:
http://portaudio.com/docs/v19-doxydocs/tutorial_start.html
We have an active mailing list for user and developer discussions.
Please feel free to join. See http://www.portaudio.com for details.
## Important Files and Folders:
include/portaudio.h = header file for PortAudio API. Specifies API.
src/common/ = platform independent code, host independent
code for all implementations.
src/os = os specific (but host api neutral) code
src/hostapi = implementations for different host apis
### Host API Implementations:
src/hostapi/alsa = Advanced Linux Sound Architecture (ALSA)
src/hostapi/asihpi = AudioScience HPI
src/hostapi/asio = ASIO for Windows and Macintosh
src/hostapi/coreaudio = Macintosh Core Audio for OS X
src/hostapi/dsound = Windows Direct Sound
src/hostapi/jack = JACK Audio Connection Kit
src/hostapi/oss = Unix Open Sound System (OSS)
src/hostapi/wasapi = Windows Vista WASAPI
src/hostapi/wdmks = Windows WDM Kernel Streaming
src/hostapi/wmme = Windows MultiMedia Extensions (MME)
### Test Programs:
test/pa_fuzz.c = guitar fuzz box
test/pa_devs.c = print a list of available devices
test/pa_minlat.c = determine minimum latency for your machine
test/paqa_devs.c = self test that opens all devices
test/paqa_errs.c = test error detection and reporting
test/patest_clip.c = hear a sine wave clipped and unclipped
test/patest_dither.c = hear effects of dithering (extremely subtle)
test/patest_pink.c = fun with pink noise
test/patest_record.c = record and playback some audio
test/patest_maxsines.c = how many sine waves can we play? Tests Pa_GetCPULoad().
test/patest_sine.c = output a sine wave in a simple PA app
test/patest_sync.c = test synchronization of audio and video
test/patest_wire.c = pass input to output, wire simulator
## Using with Node.js
This fork can be used with the [nodeaudio](https://andrewgundersen.net/repos/nodeaudio) Node.js bindings, which provide native audio I/O capabilities to JavaScript/TypeScript applications.
### Building PortAudio
Build portaudio:
./configure and make
At the time of writing (MacOS 12.1) I initially received build errors (-WError) about unused variables, so I had to remove -WError flag from the build rules.
Anytime the build configuration changes, make sure to run (see PortAudio docs):
autoreconf -if
Use find command in usr/local/lib to see install state:
find /usr/local/lib -name "libport*" -maxdepth 1
The default build of PortAudio sets an absolute install path (usr/local/lib) which causes issues if you want to package the .dylib in a project. To fix this, use install_name_tool to rename the binary using a relative @loader_path:
install_name_tool -id "@loader_path/libportaudio.dylib" libportaudio.dylib
Ideally, this would be set in the build config settings of PortAudio, but I haven't figured out how to do that yet.
### Using with nodeaudio
The [nodeaudio](https://andrewgundersen.net/repos/nodeaudio) bindings wrap this PortAudio fork to expose audio I/O capabilities to Node.js applications. Clone and build the nodeaudio project to get started:
git clone https://andrewgundersen.net/repos/nodeaudio
cd nodeaudio
node-gyp rebuild
This will link against the PortAudio library you've built, allowing you to use audio functionality from JavaScript.
TODO: Sign on build
Of course, any binary (e.g. libportaudio.dylib) must be signed before distribution.

98
README.txt Normal file
View file

@ -0,0 +1,98 @@
README for PortAudio
/*
* PortAudio Portable Real-Time Audio Library
* Latest Version at: http://www.portaudio.com
*
* Copyright (c) 1999-2008 Phil Burk and Ross Bencina
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/*
* The text above constitutes the entire PortAudio license; however,
* the PortAudio community also makes the following non-binding requests:
*
* Any person wishing to distribute modifications to the Software is
* requested to send the modifications to the original developer so that
* they can be incorporated into the canonical version. It is also
* requested that these non-binding requests be included along with the
* license above.
*/
PortAudio is a portable audio I/O library designed for cross-platform
support of audio. It uses either a callback mechanism to request audio
processing, or blocking read/write calls to buffer data between the
native audio subsystem and the client. Audio can be processed in various
formats, including 32 bit floating point, and will be converted to the
native format internally.
Documentation:
Documentation is available in "/doc/html/index.html"
Also see "src/common/portaudio.h" for API spec.
Also see http://www.portaudio.com/docs/
And see the "test/" directory for many examples of usage
(we suggest "test/patest_saw.c" for an example)
For information on compiling programs with PortAudio, please see the
tutorial at:
http://portaudio.com/trac/wiki/TutorialDir/TutorialStart
We have an active mailing list for user and developer discussions.
Please feel free to join. See http://www.portaudio.com for details.
Important Files and Folders:
include/portaudio.h = header file for PortAudio API. Specifies API.
src/common/ = platform independant code, host independant
code for all implementations.
src/os = os specific (but host api neutral) code
src/hostapi = implementations for different host apis
Host API Implementations:
src/hostapi/alsa = Advanced Linux Sound Architecture (ALSA)
src/hostapi/asihpi = AudioScience HPI
src/hostapi/asio = ASIO for Windows and Macintosh
src/hostapi/coreaudio = Macintosh Core Audio for OS X
src/hostapi/dsound = Windows Direct Sound
src/hostapi/jack = JACK Audio Connection Kit
src/hostapi/oss = Unix Open Sound System (OSS)
src/hostapi/wasapi = Windows Vista WASAPI
src/hostapi/wdmks = Windows WDM Kernel Streaming
src/hostapi/wmme = Windows MultiMedia Extensions (MME)
Test Programs:
test/pa_fuzz.c = guitar fuzz box
test/pa_devs.c = print a list of available devices
test/pa_minlat.c = determine minimum latency for your machine
test/paqa_devs.c = self test that opens all devices
test/paqa_errs.c = test error detection and reporting
test/patest_clip.c = hear a sine wave clipped and unclipped
test/patest_dither.c = hear effects of dithering (extremely subtle)
test/patest_pink.c = fun with pink noise
test/patest_record.c = record and playback some audio
test/patest_maxsines.c = how many sine waves can we play? Tests Pa_GetCPULoad().
test/patest_sine.c = output a sine wave in a simple PA app
test/patest_sync.c = test syncronization of audio and video
test/patest_wire.c = pass input to output, wire simulator

2936
aclocal.m4 vendored

File diff suppressed because it is too large Load diff

View file

@ -12,7 +12,7 @@ PortAudioCpp v19 revision 15 (unknown release date):
mblaauw: mblaauw:
- Changed some exception handling code in HostApi's constructor. - Changed some exception handling code in HostApi's constructor.
- Added accessors to PortAudio PaStream from PortAudioCpp Stream (their absence being pointed out - Added accessors to PortAudio PaStream from PortAudioCpp Stream (their absense being pointed out
by Tom Jordan). by Tom Jordan).
- Fixed a bug/typo in MemFunToCallbackInterfaceAdapter::init() thanks to Fredrik Viklund. - Fixed a bug/typo in MemFunToCallbackInterfaceAdapter::init() thanks to Fredrik Viklund.
- Fixed issue with concrete Stream classes possibly throwing an exception and fixed documentation w.r.t. this. - Fixed issue with concrete Stream classes possibly throwing an exception and fixed documentation w.r.t. this.
@ -37,14 +37,14 @@ PortAudioCpp v19 revision 13 03/10/19:
the std::exception base class's what() member function (which had throw(), i.e. no-throw guarantee). the std::exception base class's what() member function (which had throw(), i.e. no-throw guarantee).
- Changed the iterators so that they have a set of public typedefs instead of deriving the C++ standard - Changed the iterators so that they have a set of public typedefs instead of deriving the C++ standard
library std::iterator<> struct. G++ 2.95 doesn't support std::exception<> and composition-by-aggregation library std::iterator<> struct. G++ 2.95 doesn't support std::exception<> and composition-by-aggregation
is preferred over composition-by-inheritance in this case. is prefered over composition-by-inheritance in this case.
- Changed some minor things to avoid G++ warning messages. - Changed some minor things to avoid G++ warning messages.
mblaauw: mblaauw:
- Renamed this file (/WHATSNEW.txt) to /CHANGELOG. - Renamed this file (/WHATSNEW.txt) to /CHANGELOG.
- Renamed /PA_ISSUES.txt to /PA_ISSUES. - Renamed /PA_ISSUES.txt to /PA_ISSUES.
- Added /INSTALL file with some build info for GNU/Linux and VC6. - Added /INSTALL file with some build info for GNU/Linux and VC6.
- Added MSVC 6.0 projects for building PortAudioCpp as a statically or dynamically linkable library. - Added MSVC 6.0 projects for building PortAudioCpp as a staticly or dynamically linkable library.
- Moved build files to /build/(gnu/ or vc6/). - Moved build files to /build/(gnu/ or vc6/).
- Moved Doxygen configuration files to /doc/ and output to /doc/api_reference/. - Moved Doxygen configuration files to /doc/ and output to /doc/api_reference/.
- Added a /doc/README with some info how to generate Doxygen documentation. - Added a /doc/README with some info how to generate Doxygen documentation.
@ -82,7 +82,7 @@ PortAudioCpp v19 revision 09 03/06/25:
mblaauw: mblaauw:
- Changed some things in SingleDirectionStreamParameters to ease it's usage. - Changed some things in SingleDirectionStreamParameters to ease it's usage.
- Placed all SingleDirectionStreamParameters stuff into a separate file. - Placed all SingleDirectionStreamParameters stuff into a separate file.
+ Totally redid the callback stuff, now it's less awkward and supports C++ functions. + Totally redid the callback stuff, now it's less ackward and supports C++ functions.
PortAudioCpp v19 revision 08 03/06/20: PortAudioCpp v19 revision 08 03/06/20:

View file

@ -1,8 +1,8 @@
Installation Instructions Installation Instructions
************************* *************************
Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2021 Free Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
Software Foundation, Inc. Inc.
Copying and distribution of this file, with or without modification, Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright are permitted in any medium without royalty provided the copyright
@ -12,96 +12,97 @@ without warranty of any kind.
Basic Installation Basic Installation
================== ==================
Briefly, the shell command './configure && make && make install' Briefly, the shell command `./configure && make && make install'
should configure, build, and install this package. The following should configure, build, and install this package. The following
more-detailed instructions are generic; see the 'README' file for more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this instructions specific to this package. Some packages provide this
'INSTALL' file but do not implement all of the features documented `INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions. in *note Makefile Conventions: (standards)Makefile Conventions.
The 'configure' shell script attempts to guess correct values for The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses various system-dependent variables used during compilation. It uses
those values to create a 'Makefile' in each directory of the package. those values to create a `Makefile' in each directory of the package.
It may also create one or more '.h' files containing system-dependent It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script 'config.status' that definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a you can run in the future to recreate the current configuration, and a
file 'config.log' containing compiler output (useful mainly for file `config.log' containing compiler output (useful mainly for
debugging 'configure'). debugging `configure').
It can also use an optional file (typically called 'config.cache' and It can also use an optional file (typically called `config.cache'
enabled with '--cache-file=config.cache' or simply '-C') that saves the and enabled with `--cache-file=config.cache' or simply `-C') that saves
results of its tests to speed up reconfiguring. Caching is disabled by the results of its tests to speed up reconfiguring. Caching is
default to prevent problems with accidental use of stale cache files. disabled by default to prevent problems with accidental use of stale
cache files.
If you need to do unusual things to compile the package, please try If you need to do unusual things to compile the package, please try
to figure out how 'configure' could check whether to do them, and mail to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the 'README' so they can diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at be considered for the next release. If you are using the cache, and at
some point 'config.cache' contains results you don't want to keep, you some point `config.cache' contains results you don't want to keep, you
may remove or edit it. may remove or edit it.
The file 'configure.ac' (or 'configure.in') is used to create The file `configure.ac' (or `configure.in') is used to create
'configure' by a program called 'autoconf'. You need 'configure.ac' if `configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate 'configure' using a newer version of you want to change it or regenerate `configure' using a newer version
'autoconf'. of `autoconf'.
The simplest way to compile this package is: The simplest way to compile this package is:
1. 'cd' to the directory containing the package's source code and type 1. `cd' to the directory containing the package's source code and type
'./configure' to configure the package for your system. `./configure' to configure the package for your system.
Running 'configure' might take a while. While running, it prints Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for. some messages telling which features it is checking for.
2. Type 'make' to compile the package. 2. Type `make' to compile the package.
3. Optionally, type 'make check' to run any self-tests that come with 3. Optionally, type `make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries. the package, generally using the just-built uninstalled binaries.
4. Type 'make install' to install the programs and any data files and 4. Type `make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular recommended that the package be configured and built as a regular
user, and only the 'make install' phase executed with root user, and only the `make install' phase executed with root
privileges. privileges.
5. Optionally, type 'make installcheck' to repeat any self-tests, but 5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location. this time using the binaries in their final installed location.
This target does not install anything. Running this target as a This target does not install anything. Running this target as a
regular user, particularly if the prior 'make install' required regular user, particularly if the prior `make install' required
root privileges, verifies that the installation completed root privileges, verifies that the installation completed
correctly. correctly.
6. You can remove the program binaries and object files from the 6. You can remove the program binaries and object files from the
source code directory by typing 'make clean'. To also remove the source code directory by typing `make clean'. To also remove the
files that 'configure' created (so you can compile the package for files that `configure' created (so you can compile the package for
a different kind of computer), type 'make distclean'. There is a different kind of computer), type `make distclean'. There is
also a 'make maintainer-clean' target, but that is intended mainly also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came all sorts of other programs in order to regenerate files that came
with the distribution. with the distribution.
7. Often, you can also type 'make uninstall' to remove the installed 7. Often, you can also type `make uninstall' to remove the installed
files again. In practice, not all packages have tested that files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the uninstallation works correctly, even though it is required by the
GNU Coding Standards. GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide 'make 8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other distcheck', which can by used by developers to test that all other
targets like 'make install' and 'make uninstall' work correctly. targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users. This target is generally not run by end users.
Compilers and Options Compilers and Options
===================== =====================
Some systems require unusual options for compilation or linking that Some systems require unusual options for compilation or linking that
the 'configure' script does not know about. Run './configure --help' the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables. for details on some of the pertinent environment variables.
You can give 'configure' initial values for configuration parameters You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here is by setting variables in the command line or in the environment. Here
an example: is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix ./configure CC=c99 CFLAGS=-g LIBS=-lposix
@ -112,21 +113,21 @@ Compiling For Multiple Architectures
You can compile the package for more than one kind of computer at the You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU 'make'. 'cd' to the own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run directory where you want the object files and executables to go and run
the 'configure' script. 'configure' automatically checks for the source the `configure' script. `configure' automatically checks for the
code in the directory that 'configure' is in and in '..'. This is known source code in the directory that `configure' is in and in `..'. This
as a "VPATH" build. is known as a "VPATH" build.
With a non-GNU 'make', it is safer to compile the package for one With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have architecture at a time in the source code directory. After you have
installed the package for one architecture, use 'make distclean' before installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture. reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple '-arch' options to the "universal" binaries--by specifying multiple `-arch' options to the
compiler but only a single '-arch' option to the preprocessor. Like compiler but only a single `-arch' option to the preprocessor. Like
this: this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
@ -135,104 +136,105 @@ this:
This is not guaranteed to produce working output in all cases, you This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results may have to build one architecture at a time and combine the results
using the 'lipo' tool if you have problems. using the `lipo' tool if you have problems.
Installation Names Installation Names
================== ==================
By default, 'make install' installs the package's commands under By default, `make install' installs the package's commands under
'/usr/local/bin', include files under '/usr/local/include', etc. You `/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than '/usr/local' by giving can specify an installation prefix other than `/usr/local' by giving
'configure' the option '--prefix=PREFIX', where PREFIX must be an `configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute file name. absolute file name.
You can specify separate installation prefixes for You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you architecture-specific files and architecture-independent files. If you
pass the option '--exec-prefix=PREFIX' to 'configure', the package uses pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries. PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix. Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give In addition, if you use an unusual directory layout you can give
options like '--bindir=DIR' to specify different values for particular options like `--bindir=DIR' to specify different values for particular
kinds of files. Run 'configure --help' for a list of the directories kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them. In general, the default you can set and what kinds of files go in them. In general, the
for these options is expressed in terms of '${prefix}', so that default for these options is expressed in terms of `${prefix}', so that
specifying just '--prefix' will affect all of the other directory specifying just `--prefix' will affect all of the other directory
specifications that were not explicitly provided. specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the The most portable way to affect installation locations is to pass the
correct locations to 'configure'; however, many packages provide one or correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the both of the following shortcuts of passing variable assignments to the
'make install' command line to change installation locations without `make install' command line to change installation locations without
having to reconfigure or recompile. having to reconfigure or recompile.
The first method involves providing an override variable for each The first method involves providing an override variable for each
affected directory. For example, 'make install affected directory. For example, `make install
prefix=/alternate/directory' will choose an alternate location for all prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of directory configuration variables that were expressed in terms of
'${prefix}'. Any directories that were specified during 'configure', `${prefix}'. Any directories that were specified during `configure',
but not in terms of '${prefix}', must each be overridden at install time but not in terms of `${prefix}', must each be overridden at install
for the entire installation to be relocated. The approach of makefile time for the entire installation to be relocated. The approach of
variable overrides for each directory variable is required by the GNU makefile variable overrides for each directory variable is required by
Coding Standards, and ideally causes no recompilation. However, some the GNU Coding Standards, and ideally causes no recompilation.
platforms have known limitations with the semantics of shared libraries However, some platforms have known limitations with the semantics of
that end up requiring recompilation when using this method, particularly shared libraries that end up requiring recompilation when using this
noticeable in packages that use GNU Libtool. method, particularly noticeable in packages that use GNU Libtool.
The second method involves providing the 'DESTDIR' variable. For The second method involves providing the `DESTDIR' variable. For
example, 'make install DESTDIR=/alternate/directory' will prepend example, `make install DESTDIR=/alternate/directory' will prepend
'/alternate/directory' before all installation names. The approach of `/alternate/directory' before all installation names. The approach of
'DESTDIR' overrides is not required by the GNU Coding Standards, and `DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand, does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of '${prefix}' when some directory options were not specified in terms of `${prefix}'
at 'configure' time. at `configure' time.
Optional Features Optional Features
================= =================
If the package supports it, you can cause programs to be installed If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving 'configure' the with an extra prefix or suffix on their names by giving `configure' the
option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Some packages pay attention to '--enable-FEATURE' options to Some packages pay attention to `--enable-FEATURE' options to
'configure', where FEATURE indicates an optional part of the package. `configure', where FEATURE indicates an optional part of the package.
They may also pay attention to '--with-PACKAGE' options, where PACKAGE They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like 'gnu-as' or 'x' (for the X Window System). The is something like `gnu-as' or `x' (for the X Window System). The
'README' should mention any '--enable-' and '--with-' options that the `README' should mention any `--enable-' and `--with-' options that the
package recognizes. package recognizes.
For packages that use the X Window System, 'configure' can usually For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't, find the X include and library files automatically, but if it doesn't,
you can use the 'configure' options '--x-includes=DIR' and you can use the `configure' options `--x-includes=DIR' and
'--x-libraries=DIR' to specify their locations. `--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the Some packages offer the ability to configure how verbose the
execution of 'make' will be. For these packages, running './configure execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be --enable-silent-rules' sets the default to minimal output, which can be
overridden with 'make V=1'; while running './configure overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be --disable-silent-rules' sets the default to verbose, which can be
overridden with 'make V=0'. overridden with `make V=0'.
Particular systems Particular systems
================== ==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC On HP-UX, the default C compiler is not ANSI C compatible. If GNU
is not installed, it is recommended to use the following options in CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler: order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500" ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX. and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX 'make' updates targets which have the same timestamps as their HP-UX `make' updates targets which have the same time stamps as
prerequisites, which makes it generally unusable when shipped generated their prerequisites, which makes it generally unusable when shipped
files such as 'configure' are involved. Use GNU 'make' instead. generated files such as `configure' are involved. Use GNU `make'
instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its '<wchar.h>' header file. The option '-nodtk' can be used as a parse its `<wchar.h>' header file. The option `-nodtk' can be used as
workaround. If GNU CC is not installed, it is therefore recommended to a workaround. If GNU CC is not installed, it is therefore recommended
try to try
./configure CC="cc" ./configure CC="cc"
@ -240,26 +242,26 @@ and if that doesn't work, try
./configure CC="cc -nodtk" ./configure CC="cc -nodtk"
On Solaris, don't put '/usr/ucb' early in your 'PATH'. This On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of directory contains several dysfunctional programs; working variants of
these programs are available in '/usr/bin'. So, if you need '/usr/ucb' these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your 'PATH', put it _after_ '/usr/bin'. in your `PATH', put it _after_ `/usr/bin'.
On Haiku, software installed for all users goes in '/boot/common', On Haiku, software installed for all users goes in `/boot/common',
not '/usr/local'. It is recommended to use the following options: not `/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common ./configure --prefix=/boot/common
Specifying the System Type Specifying the System Type
========================== ==========================
There may be some features 'configure' cannot figure out There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the will run on. Usually, assuming the package is built to be run on the
_same_ architectures, 'configure' can figure that out, but if it prints _same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the a message saying it cannot guess the machine type, give it the
'--build=TYPE' option. TYPE can either be a short name for the system `--build=TYPE' option. TYPE can either be a short name for the system
type, such as 'sun4', or a canonical name which has the form: type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM CPU-COMPANY-SYSTEM
@ -268,101 +270,101 @@ where SYSTEM can have one of these forms:
OS OS
KERNEL-OS KERNEL-OS
See the file 'config.sub' for the possible values of each field. If See the file `config.sub' for the possible values of each field. If
'config.sub' isn't included in this package, then this package doesn't `config.sub' isn't included in this package, then this package doesn't
need to know the machine type. need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should If you are _building_ compiler tools for cross-compiling, you should
use the option '--target=TYPE' to select the type of system they will use the option `--target=TYPE' to select the type of system they will
produce code for. produce code for.
If you want to _use_ a cross compiler, that generates code for a If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will "host" platform (i.e., that on which the generated programs will
eventually be run) with '--host=TYPE'. eventually be run) with `--host=TYPE'.
Sharing Defaults Sharing Defaults
================ ================
If you want to set default values for 'configure' scripts to share, If you want to set default values for `configure' scripts to share,
you can create a site shell script called 'config.site' that gives you can create a site shell script called `config.site' that gives
default values for variables like 'CC', 'cache_file', and 'prefix'. default values for variables like `CC', `cache_file', and `prefix'.
'configure' looks for 'PREFIX/share/config.site' if it exists, then `configure' looks for `PREFIX/share/config.site' if it exists, then
'PREFIX/etc/config.site' if it exists. Or, you can set the `PREFIX/etc/config.site' if it exists. Or, you can set the
'CONFIG_SITE' environment variable to the location of the site script. `CONFIG_SITE' environment variable to the location of the site script.
A warning: not all 'configure' scripts look for a site script. A warning: not all `configure' scripts look for a site script.
Defining Variables Defining Variables
================== ==================
Variables not defined in a site shell script can be set in the Variables not defined in a site shell script can be set in the
environment passed to 'configure'. However, some packages may run environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set variables may be lost. In order to avoid this problem, you should set
them in the 'configure' command line, using 'VAR=value'. For example: them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc ./configure CC=/usr/local2/bin/gcc
causes the specified 'gcc' to be used as the C compiler (unless it is causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script). overridden in the site shell script).
Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Unfortunately, this technique does not work for `CONFIG_SHELL' due to
Autoconf limitation. Until the limitation is lifted, you can use this an Autoconf limitation. Until the limitation is lifted, you can use
workaround: this workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
'configure' Invocation `configure' Invocation
====================== ======================
'configure' recognizes the following options to control how it `configure' recognizes the following options to control how it
operates. operates.
'--help' `--help'
'-h' `-h'
Print a summary of all of the options to 'configure', and exit. Print a summary of all of the options to `configure', and exit.
'--help=short' `--help=short'
'--help=recursive' `--help=recursive'
Print a summary of the options unique to this package's Print a summary of the options unique to this package's
'configure', and exit. The 'short' variant lists options used only `configure', and exit. The `short' variant lists options used
in the top level, while the 'recursive' variant lists options also only in the top level, while the `recursive' variant lists options
present in any nested packages. also present in any nested packages.
'--version' `--version'
'-V' `-V'
Print the version of Autoconf used to generate the 'configure' Print the version of Autoconf used to generate the `configure'
script, and exit. script, and exit.
'--cache-file=FILE' `--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE, Enable the cache: use and save the results of the tests in FILE,
traditionally 'config.cache'. FILE defaults to '/dev/null' to traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching. disable caching.
'--config-cache' `--config-cache'
'-C' `-C'
Alias for '--cache-file=config.cache'. Alias for `--cache-file=config.cache'.
'--quiet' `--quiet'
'--silent' `--silent'
'-q' `-q'
Do not print messages saying which checks are being made. To Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to '/dev/null' (any error suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown). messages will still be shown).
'--srcdir=DIR' `--srcdir=DIR'
Look for the package's source code in directory DIR. Usually Look for the package's source code in directory DIR. Usually
'configure' can determine that directory automatically. `configure' can determine that directory automatically.
'--prefix=DIR' `--prefix=DIR'
Use DIR as the installation prefix. *note Installation Names:: for Use DIR as the installation prefix. *note Installation Names::
more details, including other options available for fine-tuning the for more details, including other options available for fine-tuning
installation locations. the installation locations.
'--no-create' `--no-create'
'-n' `-n'
Run the configure checks, but stop before creating any output Run the configure checks, but stop before creating any output
files. files.
'configure' also accepts some other, not widely useful, options. Run `configure' also accepts some other, not widely useful, options. Run
'configure --help' for more details. `configure --help' for more details.

View file

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16.5 from Makefile.am. # Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2021 Free Software Foundation, Inc. # Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -15,17 +15,7 @@
@SET_MAKE@ @SET_MAKE@
VPATH = @srcdir@ VPATH = @srcdir@
am__is_gnu_make = { \ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \ am__make_running_with_option = \
case $${target_option-} in \ case $${target_option-} in \
?) ;; \ ?) ;; \
@ -89,12 +79,17 @@ POST_UNINSTALL = :
build_triplet = @build@ build_triplet = @build@
host_triplet = @host@ host_triplet = @host@
subdir = . subdir = .
DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/configure $(am__configure_deps) \
$(srcdir)/portaudiocpp.pc.in COPYING \
$(top_srcdir)/../../compile $(top_srcdir)/../../config.guess \
$(top_srcdir)/../../config.sub $(top_srcdir)/../../install-sh \
$(top_srcdir)/../../ltmain.sh $(top_srcdir)/../../missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d mkinstalldirs = $(install_sh) -d
@ -163,7 +158,7 @@ am__recursive_targets = \
$(RECURSIVE_CLEAN_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets) $(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir distdir-am dist dist-all distcheck cscope distdir dist dist-all distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input, # Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is # and print each of them once, without duplicates. Input order is
@ -181,10 +176,10 @@ am__define_uniq_tagged_files = \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)` done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/portaudiocpp.pc.in \
AUTHORS COPYING ChangeLog INSTALL NEWS README compile \
config.guess config.sub install-sh ltmain.sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION) distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir) top_distdir = $(distdir)
@ -223,8 +218,6 @@ am__relativize = \
DIST_ARCHIVES = $(distdir).tar.gz DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best GZIP_ENV = --best
DIST_TARGETS = dist-gzip DIST_TARGETS = dist-gzip
# Exists only to be overridden by the user if desired.
AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@ -241,9 +234,8 @@ AWK = @AWK@
CC = @CC@ CC = @CC@
CCDEPMODE = @CCDEPMODE@ CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@ CXX = @CXX@
CXXCPP = @CXXCPP@ CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@ CXXDEPMODE = @CXXDEPMODE@
@ -259,7 +251,6 @@ ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@ ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
FGREP = @FGREP@ FGREP = @FGREP@
GREP = @GREP@ GREP = @GREP@
@ -276,7 +267,6 @@ LIBTOOL = @LIBTOOL@
LIPO = @LIPO@ LIPO = @LIPO@
LN_S = @LN_S@ LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@ LTLIBOBJS = @LTLIBOBJS@
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
LT_VERSION_INFO = @LT_VERSION_INFO@ LT_VERSION_INFO = @LT_VERSION_INFO@
MAINT = @MAINT@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
@ -348,7 +338,6 @@ pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@ psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@ srcdir = @srcdir@
@ -380,14 +369,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
$(am__cd) $(top_srcdir) && \ $(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile $(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \
*config.status*) \ *config.status*) \
echo ' $(SHELL) ./config.status'; \ echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \ $(SHELL) ./config.status;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -536,10 +526,8 @@ cscopelist-am: $(am__tagged_files)
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES) distdir: $(DISTFILES)
$(am__remove_distdir) $(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)" test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@ -604,7 +592,7 @@ distdir-am: $(DISTFILES)
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)" || chmod -R a+r "$(distdir)"
dist-gzip: distdir dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__post_remove_distdir) $(am__post_remove_distdir)
dist-bzip2: distdir dist-bzip2: distdir
@ -619,22 +607,18 @@ dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir) $(am__post_remove_distdir)
dist-zstd: distdir
tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
$(am__post_remove_distdir)
dist-tarZ: distdir dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \ @echo WARNING: "Support for shar distribution archives is" \
"legacy program 'compress' is deprecated." >&2 "deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir) $(am__post_remove_distdir)
dist-shar: distdir dist-shar: distdir
@echo WARNING: "Support for shar distribution archives is" \ @echo WARNING: "Support for distribution archives compressed with" \
"deprecated." >&2 "legacy program 'compress' is deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir) $(am__post_remove_distdir)
dist-zip: distdir dist-zip: distdir
@ -652,7 +636,7 @@ dist dist-all:
distcheck: dist distcheck: dist
case '$(DIST_ARCHIVES)' in \ case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \ *.tar.gz*) \
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \ *.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \ *.tar.lz*) \
@ -662,27 +646,25 @@ distcheck: dist
*.tar.Z*) \ *.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \ *.shar.gz*) \
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \ *.zip*) \
unzip $(distdir).zip ;;\ unzip $(distdir).zip ;;\
*.tar.zst*) \
zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
esac esac
chmod -R a-w $(distdir) chmod -R a-w $(distdir)
chmod u+w $(distdir) chmod u+w $(distdir)
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst mkdir $(distdir)/_build $(distdir)/_inst
chmod a-w $(distdir) chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \ test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \ && am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build/sub \ && $(am__cd) $(distdir)/_build \
&& ../../configure \ && ../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \
--srcdir=../.. --prefix="$$dc_install_base" \ --srcdir=.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
@ -847,20 +829,18 @@ uninstall-am: uninstall-pkgconfigDATA
am--refresh check check-am clean clean-cscope clean-generic \ am--refresh check check-am clean clean-cscope clean-generic \
clean-libtool cscope cscopelist-am ctags ctags-am dist \ clean-libtool cscope cscopelist-am ctags ctags-am dist \
dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
dist-xz dist-zip dist-zstd distcheck distclean \ dist-xz dist-zip distcheck distclean distclean-generic \
distclean-generic distclean-libtool distclean-tags \ distclean-libtool distclean-tags distcleancheck distdir \
distcleancheck distdir distuninstallcheck dvi dvi-am html \ distuninstallcheck dvi dvi-am html html-am info info-am \
html-am info info-am install install-am install-data \ install install-am install-data install-data-am install-dvi \
install-data-am install-dvi install-dvi-am install-exec \ install-dvi-am install-exec install-exec-am install-html \
install-exec-am install-html install-html-am install-info \ install-html-am install-info install-info-am install-man \
install-info-am install-man install-pdf install-pdf-am \ install-pdf install-pdf-am install-pkgconfigDATA install-ps \
install-pkgconfigDATA install-ps install-ps-am install-strip \ install-ps-am install-strip installcheck installcheck-am \
installcheck installcheck-am installdirs installdirs-am \ installdirs installdirs-am maintainer-clean \
maintainer-clean maintainer-clean-generic mostlyclean \ maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
tags tags-am uninstall uninstall-am uninstall-pkgconfigDATA uninstall-am uninstall-pkgconfigDATA
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.

2947
bindings/cpp/aclocal.m4 vendored

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,382 +0,0 @@
# This file was generated by Autom4te 2.71.
# It contains the lists of macros which have been traced.
# It can be safely removed.
@request = (
bless( [
'0',
1,
[
'/usr/local/Cellar/autoconf/2.71/share/autoconf'
],
[
'/usr/local/Cellar/autoconf/2.71/share/autoconf/autoconf/autoconf.m4f',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/internal/ac-config-macro-dirs.m4',
'/usr/local/share/aclocal/libtool.m4',
'/usr/local/share/aclocal/ltargz.m4',
'/usr/local/share/aclocal/ltdl.m4',
'/usr/local/share/aclocal/ltoptions.m4',
'/usr/local/share/aclocal/ltsugar.m4',
'/usr/local/share/aclocal/ltversion.m4',
'/usr/local/share/aclocal/lt~obsolete.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/amversion.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/auxdir.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/cond.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/depend.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/depout.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/init.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/install-sh.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/lead-dot.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/maintainer.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/make.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/missing.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/options.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/prog-cc-c-o.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/runlog.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/sanity.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/silent.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/strip.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/substnot.m4',
'/usr/local/Cellar/automake/1.16.5/share/aclocal-1.16/tar.m4',
'configure.ac'
],
{
'AC_LIBTOOL_LINKER_OPTION' => 1,
'LT_WITH_LTDL' => 1,
'AC_LIBLTDL_CONVENIENCE' => 1,
'AC_LTDL_SYSSEARCHPATH' => 1,
'LT_LIB_DLLOAD' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'LTOBSOLETE_VERSION' => 1,
'_AM_MANGLE_OPTION' => 1,
'AM_DEP_TRACK' => 1,
'LTDL_INSTALLABLE' => 1,
'AM_PROG_INSTALL_SH' => 1,
'AM_PROG_LD' => 1,
'AM_SET_DEPDIR' => 1,
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
'AM_INIT_AUTOMAKE' => 1,
'm4_pattern_forbid' => 1,
'_AC_PROG_LIBTOOL' => 1,
'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
'LT_SYS_SYMBOL_USCORE' => 1,
'AC_LIBTOOL_RC' => 1,
'_LT_REQUIRED_DARWIN_CHECKS' => 1,
'AM_DISABLE_SHARED' => 1,
'AC_PATH_TOOL_PREFIX' => 1,
'_LT_AC_LANG_CXX_CONFIG' => 1,
'LT_AC_PROG_SED' => 1,
'AC_PROG_NM' => 1,
'AM_ENABLE_SHARED' => 1,
'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
'LTDL_CONVENIENCE' => 1,
'AC_CONFIG_MACRO_DIR' => 1,
'_LT_AC_LANG_GCJ_CONFIG' => 1,
'AM_PROG_CC_C_O' => 1,
'LT_AC_PROG_EGREP' => 1,
'AC_LTDL_SHLIBEXT' => 1,
'AM_ENABLE_STATIC' => 1,
'_LT_COMPILER_BOILERPLATE' => 1,
'_AM_SET_OPTIONS' => 1,
'_LT_AC_LANG_F77_CONFIG' => 1,
'AM_SILENT_RULES' => 1,
'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
'_AM_CONFIG_MACRO_DIRS' => 1,
'm4_pattern_allow' => 1,
'AU_DEFUN' => 1,
'AM_RUN_LOG' => 1,
'AC_PROG_LD_RELOAD_FLAG' => 1,
'_AM_DEPENDENCIES' => 1,
'LTOPTIONS_VERSION' => 1,
'AM_SUBST_NOTMAKE' => 1,
'LT_SYS_DLSEARCH_PATH' => 1,
'LT_FUNC_DLSYM_USCORE' => 1,
'AC_LIBTOOL_CXX' => 1,
'AC_LTDL_SYMBOL_USCORE' => 1,
'AM_PROG_LIBTOOL' => 1,
'LT_PROG_GO' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_LTDL_SHLIBPATH' => 1,
'_AM_SET_OPTION' => 1,
'AC_DEFUN' => 1,
'AM_CONDITIONAL' => 1,
'LT_INIT' => 1,
'_LT_AC_CHECK_DLFCN' => 1,
'_LT_PROG_F77' => 1,
'_AM_IF_OPTION' => 1,
'AC_LIBTOOL_SETUP' => 1,
'_LT_PATH_TOOL_PREFIX' => 1,
'AC_PROG_LD_GNU' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AC_LIBTOOL_PROG_CC_C_O' => 1,
'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
'AC_CHECK_LIBM' => 1,
'_m4_warn' => 1,
'AC_LIBTOOL_FC' => 1,
'LT_PATH_LD' => 1,
'_LT_WITH_SYSROOT' => 1,
'LT_SYS_DLOPEN_SELF' => 1,
'_LT_PROG_CXX' => 1,
'LT_AC_PROG_RC' => 1,
'_LT_AC_LOCK' => 1,
'LT_SYS_MODULE_EXT' => 1,
'AM_DISABLE_STATIC' => 1,
'_LT_LIBOBJ' => 1,
'_LT_AC_PROG_CXXCPP' => 1,
'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
'LTDL_INIT' => 1,
'LT_OUTPUT' => 1,
'LT_PROG_GCJ' => 1,
'_LT_COMPILER_OPTION' => 1,
'LT_SYS_DLOPEN_DEPLIBS' => 1,
'AC_WITH_LTDL' => 1,
'_LT_LINKER_BOILERPLATE' => 1,
'_LT_AC_SHELL_INIT' => 1,
'LT_SUPPORTED_TAG' => 1,
'AC_LTDL_ENABLE_INSTALL' => 1,
'LTVERSION_VERSION' => 1,
'AC_LIBTOOL_WIN32_DLL' => 1,
'AM_MISSING_HAS_RUN' => 1,
'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'_LT_AC_LANG_RC_CONFIG' => 1,
'AC_DISABLE_STATIC' => 1,
'AC_DISABLE_FAST_INSTALL' => 1,
'_LT_PROG_LTMAIN' => 1,
'_LT_AC_PROG_ECHO_BACKSLASH' => 1,
'AM_AUX_DIR_EXPAND' => 1,
'_LT_AC_SYS_COMPILER' => 1,
'AM_SANITY_CHECK' => 1,
'_LT_PROG_FC' => 1,
'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
'AC_LIBTOOL_GCJ' => 1,
'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
'AC_PROG_LIBTOOL' => 1,
'_AM_AUTOCONF_VERSION' => 1,
'AC_ENABLE_FAST_INSTALL' => 1,
'LT_PATH_NM' => 1,
'_LT_CC_BASENAME' => 1,
'AC_DEFUN_ONCE' => 1,
'_LTDL_SETUP' => 1,
'_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'AC_LIBTOOL_CONFIG' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AC_LTDL_OBJDIR' => 1,
'_LT_AC_FILE_LTDLL_C' => 1,
'AC_LTDL_DLSYM_USCORE' => 1,
'AC_LIBTOOL_OBJDIR' => 1,
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
'AC_LIBLTDL_INSTALLABLE' => 1,
'AC_LTDL_DLLIB' => 1,
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
'AC_DISABLE_SHARED' => 1,
'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'_LT_AC_TAGVAR' => 1,
'AC_ENABLE_SHARED' => 1,
'AM_PROG_NM' => 1,
'AC_LIBTOOL_COMPILER_OPTION' => 1,
'AM_PROG_INSTALL_STRIP' => 1,
'AC_LIBTOOL_PICMODE' => 1,
'AM_SET_LEADING_DOT' => 1,
'AC_DEPLIBS_CHECK_METHOD' => 1,
'_LT_PREPARE_SED_QUOTE_VARS' => 1,
'AC_LIBTOOL_DLOPEN_SELF' => 1,
'AC_LIB_LTDL' => 1,
'LT_LIB_M' => 1,
'AC_ENABLE_STATIC' => 1,
'AC_PATH_MAGIC' => 1,
'AC_LIBTOOL_F77' => 1,
'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'LT_LANG' => 1,
'_LT_LINKER_OPTION' => 1,
'AM_MISSING_PROG' => 1,
'LTSUGAR_VERSION' => 1,
'include' => 1,
'_AM_PROG_CC_C_O' => 1,
'LT_AC_PROG_GCJ' => 1,
'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
'_LT_AC_TAGCONFIG' => 1,
'_AM_PROG_TAR' => 1,
'AM_MAKE_INCLUDE' => 1,
'_LT_AC_LANG_F77' => 1,
'AC_LTDL_PREOPEN' => 1,
'AC_LIBTOOL_DLOPEN' => 1,
'LT_CMD_MAX_LEN' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
'_LT_AC_SYS_LIBPATH_AIX' => 1,
'_LT_AC_TRY_DLOPEN_SELF' => 1,
'AC_PROG_EGREP' => 1,
'LT_PROG_RC' => 1,
'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
'_AC_AM_CONFIG_HEADER_HOOK' => 1,
'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
'LT_FUNC_ARGZ' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'_LT_PROG_ECHO_BACKSLASH' => 1,
'_LT_AC_LANG_CXX' => 1,
'LT_SYS_MODULE_PATH' => 1,
'_LT_AC_LANG_C_CONFIG' => 1,
'AC_PROG_LD' => 1,
'_LT_DLL_DEF_P' => 1,
'_LT_AC_LANG_GCJ' => 1,
'm4_include' => 1
}
], 'Autom4te::Request' ),
bless( [
'1',
1,
[
'/usr/local/Cellar/autoconf/2.71/share/autoconf'
],
[
'/usr/local/Cellar/autoconf/2.71/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'configure.ac'
],
{
'_m4_warn' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_FC_C_O' => 1,
'AM_PROG_MKDIR_P' => 1,
'sinclude' => 1,
'GTK_DOC_CHECK' => 1,
'AC_LIBSOURCE' => 1,
'AC_CONFIG_FILES' => 1,
'AM_PROG_F77_C_O' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'm4_sinclude' => 1,
'AM_PROG_AR' => 1,
'm4_include' => 1,
'AM_NLS' => 1,
'AM_XGETTEXT_OPTION' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AM_SILENT_RULES' => 1,
'm4_pattern_allow' => 1,
'_AM_COND_ENDIF' => 1,
'AC_CANONICAL_HOST' => 1,
'AM_PATH_GUILE' => 1,
'AC_SUBST_TRACE' => 1,
'IT_PROG_INTLTOOL' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_CANONICAL_BUILD' => 1,
'AM_PROG_MOC' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AM_PROG_CXX_C_O' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'LT_SUPPORTED_TAG' => 1,
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
'_AM_COND_ELSE' => 1,
'AC_FC_PP_DEFINE' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'AH_OUTPUT' => 1,
'AM_POT_TOOLS' => 1,
'AC_FC_FREEFORM' => 1,
'AC_FC_SRCEXT' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_CANONICAL_TARGET' => 1,
'_LT_AC_TAGCONFIG' => 1,
'include' => 1,
'_AM_MAKEFILE_INCLUDE' => 1,
'AM_INIT_AUTOMAKE' => 1,
'm4_pattern_forbid' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_SUBST' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'AM_CONDITIONAL' => 1,
'AC_CONFIG_LINKS' => 1,
'LT_INIT' => 1,
'AC_FC_PP_SRCEXT' => 1,
'AM_GNU_GETTEXT' => 1,
'_AM_COND_IF' => 1,
'AC_INIT' => 1
}
], 'Autom4te::Request' ),
bless( [
'2',
1,
[
'/usr/local/Cellar/autoconf/2.71/share/autoconf'
],
[
'/usr/local/Cellar/autoconf/2.71/share/autoconf/autoconf/autoconf.m4f',
'aclocal.m4',
'/usr/local/Cellar/autoconf/2.71/share/autoconf/autoconf/trailer.m4',
'configure.ac'
],
{
'GTK_DOC_CHECK' => 1,
'AC_LIBSOURCE' => 1,
'AM_PROG_MKDIR_P' => 1,
'sinclude' => 1,
'AM_PROG_CC_C_O' => 1,
'AM_PROG_FC_C_O' => 1,
'_m4_warn' => 1,
'AC_PROG_LIBTOOL' => 1,
'm4_sinclude' => 1,
'AM_PROG_AR' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AM_PROG_F77_C_O' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CONFIG_FILES' => 1,
'm4_pattern_allow' => 1,
'_AM_COND_ENDIF' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AM_SILENT_RULES' => 1,
'AM_XGETTEXT_OPTION' => 1,
'm4_include' => 1,
'AM_NLS' => 1,
'AC_SUBST_TRACE' => 1,
'IT_PROG_INTLTOOL' => 1,
'AC_CANONICAL_HOST' => 1,
'AM_PATH_GUILE' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'LT_SUPPORTED_TAG' => 1,
'AM_EXTRA_RECURSIVE_TARGETS' => 1,
'AM_PROG_MOC' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AM_PROG_CXX_C_O' => 1,
'AM_MAINTAINER_MODE' => 1,
'AC_CANONICAL_BUILD' => 1,
'AM_PROG_LIBTOOL' => 1,
'AM_ENABLE_MULTILIB' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'AC_FC_SRCEXT' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'AH_OUTPUT' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
'AM_POT_TOOLS' => 1,
'AC_FC_FREEFORM' => 1,
'_AM_COND_ELSE' => 1,
'AC_FC_PP_DEFINE' => 1,
'_AM_MAKEFILE_INCLUDE' => 1,
'AM_INIT_AUTOMAKE' => 1,
'm4_pattern_forbid' => 1,
'include' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_CONFIG_HEADERS' => 1,
'_LT_AC_TAGCONFIG' => 1,
'AM_GNU_GETTEXT' => 1,
'AC_FC_PP_SRCEXT' => 1,
'AC_INIT' => 1,
'_AM_COND_IF' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'AM_CONDITIONAL' => 1,
'LT_INIT' => 1,
'AC_CONFIG_LINKS' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AC_SUBST' => 1
}
], 'Autom4te::Request' )
);

File diff suppressed because it is too large Load diff

View file

@ -1,618 +0,0 @@
m4trace:aclocal.m4:9759: -1- AC_SUBST([am__quote])
m4trace:aclocal.m4:9759: -1- AC_SUBST_TRACE([am__quote])
m4trace:aclocal.m4:9759: -1- m4_pattern_allow([^am__quote$])
m4trace:configure.ac:15: -1- AC_INIT([PortAudioCpp], [12])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.ac:15: -1- m4_pattern_forbid([_AC_])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
m4trace:configure.ac:15: -1- m4_pattern_allow([^AS_FLAGS$])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^_?m4_])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^dnl$])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^_?AS_])
m4trace:configure.ac:15: -1- AC_SUBST([SHELL])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([SHELL])
m4trace:configure.ac:15: -1- m4_pattern_allow([^SHELL$])
m4trace:configure.ac:15: -1- AC_SUBST([PATH_SEPARATOR])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PATH_SEPARATOR$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_NAME])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_STRING])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_URL])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:15: -1- AC_SUBST([exec_prefix], [NONE])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([exec_prefix])
m4trace:configure.ac:15: -1- m4_pattern_allow([^exec_prefix$])
m4trace:configure.ac:15: -1- AC_SUBST([prefix], [NONE])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([prefix])
m4trace:configure.ac:15: -1- m4_pattern_allow([^prefix$])
m4trace:configure.ac:15: -1- AC_SUBST([program_transform_name], [s,x,x,])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([program_transform_name])
m4trace:configure.ac:15: -1- m4_pattern_allow([^program_transform_name$])
m4trace:configure.ac:15: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([bindir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^bindir$])
m4trace:configure.ac:15: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([sbindir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^sbindir$])
m4trace:configure.ac:15: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([libexecdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^libexecdir$])
m4trace:configure.ac:15: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([datarootdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^datarootdir$])
m4trace:configure.ac:15: -1- AC_SUBST([datadir], ['${datarootdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([datadir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^datadir$])
m4trace:configure.ac:15: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([sysconfdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.ac:15: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([sharedstatedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^sharedstatedir$])
m4trace:configure.ac:15: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([localstatedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^localstatedir$])
m4trace:configure.ac:15: -1- AC_SUBST([runstatedir], ['${localstatedir}/run'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([runstatedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^runstatedir$])
m4trace:configure.ac:15: -1- AC_SUBST([includedir], ['${prefix}/include'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([includedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^includedir$])
m4trace:configure.ac:15: -1- AC_SUBST([oldincludedir], ['/usr/include'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([oldincludedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^oldincludedir$])
m4trace:configure.ac:15: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
['${datarootdir}/doc/${PACKAGE}'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([docdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^docdir$])
m4trace:configure.ac:15: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([infodir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^infodir$])
m4trace:configure.ac:15: -1- AC_SUBST([htmldir], ['${docdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([htmldir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^htmldir$])
m4trace:configure.ac:15: -1- AC_SUBST([dvidir], ['${docdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([dvidir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^dvidir$])
m4trace:configure.ac:15: -1- AC_SUBST([pdfdir], ['${docdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([pdfdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^pdfdir$])
m4trace:configure.ac:15: -1- AC_SUBST([psdir], ['${docdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([psdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^psdir$])
m4trace:configure.ac:15: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([libdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^libdir$])
m4trace:configure.ac:15: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([localedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^localedir$])
m4trace:configure.ac:15: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([mandir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^mandir$])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
@%:@undef PACKAGE_NAME])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
@%:@undef PACKAGE_TARNAME])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
@%:@undef PACKAGE_VERSION])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
@%:@undef PACKAGE_STRING])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
@%:@undef PACKAGE_BUGREPORT])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
@%:@undef PACKAGE_URL])
m4trace:configure.ac:15: -1- AC_SUBST([DEFS])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([DEFS])
m4trace:configure.ac:15: -1- m4_pattern_allow([^DEFS$])
m4trace:configure.ac:15: -1- AC_SUBST([ECHO_C])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([ECHO_C])
m4trace:configure.ac:15: -1- m4_pattern_allow([^ECHO_C$])
m4trace:configure.ac:15: -1- AC_SUBST([ECHO_N])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([ECHO_N])
m4trace:configure.ac:15: -1- m4_pattern_allow([^ECHO_N$])
m4trace:configure.ac:15: -1- AC_SUBST([ECHO_T])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([ECHO_T])
m4trace:configure.ac:15: -1- m4_pattern_allow([^ECHO_T$])
m4trace:configure.ac:15: -1- AC_SUBST([LIBS])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:15: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:15: -1- AC_SUBST([build_alias])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([build_alias])
m4trace:configure.ac:15: -1- m4_pattern_allow([^build_alias$])
m4trace:configure.ac:15: -1- AC_SUBST([host_alias])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([host_alias])
m4trace:configure.ac:15: -1- m4_pattern_allow([^host_alias$])
m4trace:configure.ac:15: -1- AC_SUBST([target_alias])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([target_alias])
m4trace:configure.ac:15: -1- m4_pattern_allow([^target_alias$])
m4trace:configure.ac:17: -1- AM_INIT_AUTOMAKE
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
m4trace:configure.ac:17: -1- AM_AUTOMAKE_VERSION([1.16.5])
m4trace:configure.ac:17: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_PROGRAM])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
m4trace:configure.ac:17: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_SCRIPT])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
m4trace:configure.ac:17: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_DATA])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([INSTALL_DATA])
m4trace:configure.ac:17: -1- m4_pattern_allow([^INSTALL_DATA$])
m4trace:configure.ac:17: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__isrc])
m4trace:configure.ac:17: -1- m4_pattern_allow([^am__isrc$])
m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([am__isrc])
m4trace:configure.ac:17: -1- AC_SUBST([CYGPATH_W])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CYGPATH_W])
m4trace:configure.ac:17: -1- m4_pattern_allow([^CYGPATH_W$])
m4trace:configure.ac:17: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([PACKAGE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:17: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([VERSION])
m4trace:configure.ac:17: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:17: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:17: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
@%:@undef PACKAGE])
m4trace:configure.ac:17: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
m4trace:configure.ac:17: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:17: -1- AH_OUTPUT([VERSION], [/* Version number of package */
@%:@undef VERSION])
m4trace:configure.ac:17: -1- AC_REQUIRE_AUX_FILE([missing])
m4trace:configure.ac:17: -1- AC_SUBST([ACLOCAL])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([ACLOCAL])
m4trace:configure.ac:17: -1- m4_pattern_allow([^ACLOCAL$])
m4trace:configure.ac:17: -1- AC_SUBST([AUTOCONF])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AUTOCONF])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AUTOCONF$])
m4trace:configure.ac:17: -1- AC_SUBST([AUTOMAKE])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AUTOMAKE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AUTOMAKE$])
m4trace:configure.ac:17: -1- AC_SUBST([AUTOHEADER])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AUTOHEADER])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AUTOHEADER$])
m4trace:configure.ac:17: -1- AC_SUBST([MAKEINFO])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([MAKEINFO])
m4trace:configure.ac:17: -1- m4_pattern_allow([^MAKEINFO$])
m4trace:configure.ac:17: -1- AC_SUBST([install_sh])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([install_sh])
m4trace:configure.ac:17: -1- m4_pattern_allow([^install_sh$])
m4trace:configure.ac:17: -1- AC_SUBST([STRIP])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:17: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:17: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
m4trace:configure.ac:17: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:17: -1- AC_SUBST([MKDIR_P])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:17: -1- m4_pattern_allow([^MKDIR_P$])
m4trace:configure.ac:17: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([mkdir_p])
m4trace:configure.ac:17: -1- m4_pattern_allow([^mkdir_p$])
m4trace:configure.ac:17: -1- AC_SUBST([AWK])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AWK])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AWK$])
m4trace:configure.ac:17: -1- AC_SUBST([SET_MAKE])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([SET_MAKE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:17: -1- AC_SUBST([am__leading_dot])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__leading_dot])
m4trace:configure.ac:17: -1- m4_pattern_allow([^am__leading_dot$])
m4trace:configure.ac:17: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AMTAR])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AMTAR$])
m4trace:configure.ac:17: -1- AC_SUBST([am__tar])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__tar])
m4trace:configure.ac:17: -1- m4_pattern_allow([^am__tar$])
m4trace:configure.ac:17: -1- AC_SUBST([am__untar])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__untar])
m4trace:configure.ac:17: -1- m4_pattern_allow([^am__untar$])
m4trace:configure.ac:17: -1- AC_SUBST([CTAGS])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CTAGS])
m4trace:configure.ac:17: -1- m4_pattern_allow([^CTAGS$])
m4trace:configure.ac:17: -1- AC_SUBST([ETAGS])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([ETAGS])
m4trace:configure.ac:17: -1- m4_pattern_allow([^ETAGS$])
m4trace:configure.ac:17: -1- AC_SUBST([CSCOPE])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CSCOPE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^CSCOPE$])
m4trace:configure.ac:17: -1- AM_SILENT_RULES
m4trace:configure.ac:17: -1- AC_SUBST([AM_V])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AM_V])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_V$])
m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([AM_V])
m4trace:configure.ac:17: -1- AC_SUBST([AM_DEFAULT_V])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_DEFAULT_V$])
m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
m4trace:configure.ac:17: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
m4trace:configure.ac:17: -1- AC_SUBST([AM_BACKSLASH])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AM_BACKSLASH])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_BACKSLASH$])
m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
m4trace:configure.ac:18: -1- AM_MAINTAINER_MODE
m4trace:configure.ac:18: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
m4trace:configure.ac:18: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
m4trace:configure.ac:18: -1- AC_SUBST_TRACE([MAINTAINER_MODE_TRUE])
m4trace:configure.ac:18: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
m4trace:configure.ac:18: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
m4trace:configure.ac:18: -1- AC_SUBST_TRACE([MAINTAINER_MODE_FALSE])
m4trace:configure.ac:18: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
m4trace:configure.ac:18: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
m4trace:configure.ac:18: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
m4trace:configure.ac:18: -1- AC_SUBST([MAINT])
m4trace:configure.ac:18: -1- AC_SUBST_TRACE([MAINT])
m4trace:configure.ac:18: -1- m4_pattern_allow([^MAINT$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CFLAGS])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:35: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:35: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:35: -1- AC_SUBST([LIBS])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:35: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:35: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([EXEEXT])
m4trace:configure.ac:35: -1- m4_pattern_allow([^EXEEXT$])
m4trace:configure.ac:35: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([OBJEXT])
m4trace:configure.ac:35: -1- m4_pattern_allow([^OBJEXT$])
m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([compile])
m4trace:configure.ac:35: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([DEPDIR])
m4trace:configure.ac:35: -1- m4_pattern_allow([^DEPDIR$])
m4trace:configure.ac:35: -1- AC_SUBST([am__include])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__include])
m4trace:configure.ac:35: -1- m4_pattern_allow([^am__include$])
m4trace:configure.ac:35: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
m4trace:configure.ac:35: -1- AC_SUBST([AMDEP_TRUE])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMDEP_TRUE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEP_TRUE$])
m4trace:configure.ac:35: -1- AC_SUBST([AMDEP_FALSE])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMDEP_FALSE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEP_FALSE$])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
m4trace:configure.ac:35: -1- AC_SUBST([AMDEPBACKSLASH])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
m4trace:configure.ac:35: -1- AC_SUBST([am__nodep])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__nodep])
m4trace:configure.ac:35: -1- m4_pattern_allow([^am__nodep$])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__nodep])
m4trace:configure.ac:35: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CCDEPMODE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CCDEPMODE$])
m4trace:configure.ac:35: -1- AM_CONDITIONAL([am__fastdepCC], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:35: -1- AC_SUBST([am__fastdepCC_TRUE])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
m4trace:configure.ac:35: -1- AC_SUBST([am__fastdepCC_FALSE])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
m4trace:configure.ac:36: -1- AC_SUBST([CXX])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXX])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:36: -1- AC_SUBST([CXXFLAGS])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXXFLAGS])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CXXFLAGS$])
m4trace:configure.ac:36: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:36: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:36: -1- AC_SUBST([LIBS])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:36: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:36: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:36: -1- AC_SUBST([CXX])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXX])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:36: -1- AC_SUBST([ac_ct_CXX])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([ac_ct_CXX])
m4trace:configure.ac:36: -1- m4_pattern_allow([^ac_ct_CXX$])
m4trace:configure.ac:36: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXXDEPMODE])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CXXDEPMODE$])
m4trace:configure.ac:36: -1- AM_CONDITIONAL([am__fastdepCXX], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:36: -1- AC_SUBST([am__fastdepCXX_TRUE])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
m4trace:configure.ac:36: -1- AC_SUBST([am__fastdepCXX_FALSE])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
m4trace:configure.ac:37: -1- _m4_warn([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
You should run autoupdate.], [aclocal.m4:8510: AC_LIBTOOL_WIN32_DLL is expanded from...
configure.ac:37: the top level])
m4trace:configure.ac:37: -1- AC_CANONICAL_HOST
m4trace:configure.ac:37: -1- AC_CANONICAL_BUILD
m4trace:configure.ac:37: -1- AC_REQUIRE_AUX_FILE([config.sub])
m4trace:configure.ac:37: -1- AC_REQUIRE_AUX_FILE([config.guess])
m4trace:configure.ac:37: -1- AC_SUBST([build], [$ac_cv_build])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([build])
m4trace:configure.ac:37: -1- m4_pattern_allow([^build$])
m4trace:configure.ac:37: -1- AC_SUBST([build_cpu], [$[1]])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([build_cpu])
m4trace:configure.ac:37: -1- m4_pattern_allow([^build_cpu$])
m4trace:configure.ac:37: -1- AC_SUBST([build_vendor], [$[2]])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([build_vendor])
m4trace:configure.ac:37: -1- m4_pattern_allow([^build_vendor$])
m4trace:configure.ac:37: -1- AC_SUBST([build_os])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([build_os])
m4trace:configure.ac:37: -1- m4_pattern_allow([^build_os$])
m4trace:configure.ac:37: -1- AC_SUBST([host], [$ac_cv_host])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([host])
m4trace:configure.ac:37: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:37: -1- AC_SUBST([host_cpu], [$[1]])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.ac:37: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:37: -1- AC_SUBST([host_vendor], [$[2]])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([host_vendor])
m4trace:configure.ac:37: -1- m4_pattern_allow([^host_vendor$])
m4trace:configure.ac:37: -1- AC_SUBST([host_os])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.ac:37: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:37: -1- AC_SUBST([AS])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([AS])
m4trace:configure.ac:37: -1- m4_pattern_allow([^AS$])
m4trace:configure.ac:37: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:37: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:37: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:37: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:37: -1- _m4_warn([obsolete], [AC_LIBTOOL_WIN32_DLL: Remove this warning and the call to _LT_SET_OPTION when you
put the 'win32-dll' option into LT_INIT's first parameter.], [./lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
aclocal.m4:8510: AC_LIBTOOL_WIN32_DLL is expanded from...
configure.ac:37: the top level])
m4trace:configure.ac:38: -1- AC_PROG_LIBTOOL
m4trace:configure.ac:38: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
You should run autoupdate.], [aclocal.m4:121: AC_PROG_LIBTOOL is expanded from...
configure.ac:38: the top level])
m4trace:configure.ac:38: -1- LT_INIT
m4trace:configure.ac:38: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
m4trace:configure.ac:38: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
m4trace:configure.ac:38: -1- AC_SUBST([LIBTOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIBTOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBTOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([SED])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([SED])
m4trace:configure.ac:38: -1- m4_pattern_allow([^SED$])
m4trace:configure.ac:38: -1- AC_SUBST([GREP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:38: -1- AC_SUBST([EGREP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EGREP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^EGREP$])
m4trace:configure.ac:38: -1- AC_SUBST([FGREP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([FGREP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^FGREP$])
m4trace:configure.ac:38: -1- AC_SUBST([GREP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:38: -1- AC_SUBST([LD])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LD])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:38: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_DUMPBIN])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
m4trace:configure.ac:38: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:38: -1- AC_SUBST([NM])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([NM])
m4trace:configure.ac:38: -1- m4_pattern_allow([^NM$])
m4trace:configure.ac:38: -1- AC_SUBST([LN_S], [$as_ln_s])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LN_S])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LN_S$])
m4trace:configure.ac:38: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:38: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:38: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([AR])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:38: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_AR])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_AR])
m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_AR$])
m4trace:configure.ac:38: -1- AC_SUBST([STRIP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:38: -1- AC_SUBST([RANLIB])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([RANLIB])
m4trace:configure.ac:38: -1- m4_pattern_allow([^RANLIB$])
m4trace:configure.ac:38: -1- m4_pattern_allow([LT_OBJDIR])
m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LT_OBJDIR$])
m4trace:configure.ac:38: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory where libtool stores uninstalled libraries. */
@%:@undef LT_OBJDIR])
m4trace:configure.ac:38: -1- LT_SUPPORTED_TAG([CC])
m4trace:configure.ac:38: -1- AC_SUBST([MANIFEST_TOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^MANIFEST_TOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([DSYMUTIL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DSYMUTIL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DSYMUTIL$])
m4trace:configure.ac:38: -1- AC_SUBST([NMEDIT])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([NMEDIT])
m4trace:configure.ac:38: -1- m4_pattern_allow([^NMEDIT$])
m4trace:configure.ac:38: -1- AC_SUBST([LIPO])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIPO])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LIPO$])
m4trace:configure.ac:38: -1- AC_SUBST([OTOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OTOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^OTOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([OTOOL64])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OTOOL64])
m4trace:configure.ac:38: -1- m4_pattern_allow([^OTOOL64$])
m4trace:configure.ac:38: -1- AC_SUBST([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
@%:@undef HAVE_DLFCN_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the <stdio.h> header file. */
@%:@undef HAVE_STDIO_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
@%:@undef HAVE_STRING_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
@%:@undef HAVE_INTTYPES_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
@%:@undef HAVE_STDINT_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
@%:@undef HAVE_STRINGS_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
@%:@undef HAVE_SYS_STAT_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
@%:@undef HAVE_SYS_TYPES_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$])
m4trace:configure.ac:38: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C90 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */
@%:@undef STDC_HEADERS])
m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
m4trace:configure.ac:38: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
m4trace:configure.ac:38: -1- LT_SUPPORTED_TAG([CXX])
m4trace:configure.ac:38: -1- AC_SUBST([CXXCPP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CXXCPP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:38: -1- AC_SUBST([CXXCPP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CXXCPP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:38: -1- AC_SUBST([LD])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LD])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:38: -1- AC_SUBST([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$])
m4trace:configure.ac:41: -1- AC_SUBST([DEFAULT_INCLUDES])
m4trace:configure.ac:41: -1- AC_SUBST_TRACE([DEFAULT_INCLUDES])
m4trace:configure.ac:41: -1- m4_pattern_allow([^DEFAULT_INCLUDES$])
m4trace:configure.ac:42: -1- AC_SUBST([PORTAUDIO_ROOT])
m4trace:configure.ac:42: -1- AC_SUBST_TRACE([PORTAUDIO_ROOT])
m4trace:configure.ac:42: -1- m4_pattern_allow([^PORTAUDIO_ROOT$])
m4trace:configure.ac:43: -1- AC_SUBST([CXXFLAGS])
m4trace:configure.ac:43: -1- AC_SUBST_TRACE([CXXFLAGS])
m4trace:configure.ac:43: -1- m4_pattern_allow([^CXXFLAGS$])
m4trace:configure.ac:44: -1- AC_SUBST([LT_VERSION_INFO])
m4trace:configure.ac:44: -1- AC_SUBST_TRACE([LT_VERSION_INFO])
m4trace:configure.ac:44: -1- m4_pattern_allow([^LT_VERSION_INFO$])
m4trace:configure.ac:46: -1- AC_CONFIG_FILES([
Makefile
lib/Makefile
include/Makefile
bin/Makefile
doc/Makefile
portaudiocpp.pc
])
m4trace:configure.ac:54: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:54: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:54: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.ac:54: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:54: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:54: -1- AC_SUBST([am__EXEEXT_TRUE])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
m4trace:configure.ac:54: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:54: -1- AC_SUBST([am__EXEEXT_FALSE])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
m4trace:configure.ac:54: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:54: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:54: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([INSTALL])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:54: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])

View file

@ -1,618 +0,0 @@
m4trace:aclocal.m4:9759: -1- AC_SUBST([am__quote])
m4trace:aclocal.m4:9759: -1- AC_SUBST_TRACE([am__quote])
m4trace:aclocal.m4:9759: -1- m4_pattern_allow([^am__quote$])
m4trace:configure.ac:15: -1- AC_INIT([PortAudioCpp], [12])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.ac:15: -1- m4_pattern_forbid([_AC_])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
m4trace:configure.ac:15: -1- m4_pattern_allow([^AS_FLAGS$])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^_?m4_])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^dnl$])
m4trace:configure.ac:15: -1- m4_pattern_forbid([^_?AS_])
m4trace:configure.ac:15: -1- AC_SUBST([SHELL])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([SHELL])
m4trace:configure.ac:15: -1- m4_pattern_allow([^SHELL$])
m4trace:configure.ac:15: -1- AC_SUBST([PATH_SEPARATOR])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PATH_SEPARATOR$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_NAME])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_STRING])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:15: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([PACKAGE_URL])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:15: -1- AC_SUBST([exec_prefix], [NONE])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([exec_prefix])
m4trace:configure.ac:15: -1- m4_pattern_allow([^exec_prefix$])
m4trace:configure.ac:15: -1- AC_SUBST([prefix], [NONE])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([prefix])
m4trace:configure.ac:15: -1- m4_pattern_allow([^prefix$])
m4trace:configure.ac:15: -1- AC_SUBST([program_transform_name], [s,x,x,])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([program_transform_name])
m4trace:configure.ac:15: -1- m4_pattern_allow([^program_transform_name$])
m4trace:configure.ac:15: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([bindir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^bindir$])
m4trace:configure.ac:15: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([sbindir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^sbindir$])
m4trace:configure.ac:15: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([libexecdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^libexecdir$])
m4trace:configure.ac:15: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([datarootdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^datarootdir$])
m4trace:configure.ac:15: -1- AC_SUBST([datadir], ['${datarootdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([datadir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^datadir$])
m4trace:configure.ac:15: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([sysconfdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^sysconfdir$])
m4trace:configure.ac:15: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([sharedstatedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^sharedstatedir$])
m4trace:configure.ac:15: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([localstatedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^localstatedir$])
m4trace:configure.ac:15: -1- AC_SUBST([runstatedir], ['${localstatedir}/run'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([runstatedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^runstatedir$])
m4trace:configure.ac:15: -1- AC_SUBST([includedir], ['${prefix}/include'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([includedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^includedir$])
m4trace:configure.ac:15: -1- AC_SUBST([oldincludedir], ['/usr/include'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([oldincludedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^oldincludedir$])
m4trace:configure.ac:15: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
['${datarootdir}/doc/${PACKAGE_TARNAME}'],
['${datarootdir}/doc/${PACKAGE}'])])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([docdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^docdir$])
m4trace:configure.ac:15: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([infodir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^infodir$])
m4trace:configure.ac:15: -1- AC_SUBST([htmldir], ['${docdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([htmldir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^htmldir$])
m4trace:configure.ac:15: -1- AC_SUBST([dvidir], ['${docdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([dvidir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^dvidir$])
m4trace:configure.ac:15: -1- AC_SUBST([pdfdir], ['${docdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([pdfdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^pdfdir$])
m4trace:configure.ac:15: -1- AC_SUBST([psdir], ['${docdir}'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([psdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^psdir$])
m4trace:configure.ac:15: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([libdir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^libdir$])
m4trace:configure.ac:15: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([localedir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^localedir$])
m4trace:configure.ac:15: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([mandir])
m4trace:configure.ac:15: -1- m4_pattern_allow([^mandir$])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_NAME$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
@%:@undef PACKAGE_NAME])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
@%:@undef PACKAGE_TARNAME])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_VERSION$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
@%:@undef PACKAGE_VERSION])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_STRING$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
@%:@undef PACKAGE_STRING])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
@%:@undef PACKAGE_BUGREPORT])
m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
m4trace:configure.ac:15: -1- m4_pattern_allow([^PACKAGE_URL$])
m4trace:configure.ac:15: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
@%:@undef PACKAGE_URL])
m4trace:configure.ac:15: -1- AC_SUBST([DEFS])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([DEFS])
m4trace:configure.ac:15: -1- m4_pattern_allow([^DEFS$])
m4trace:configure.ac:15: -1- AC_SUBST([ECHO_C])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([ECHO_C])
m4trace:configure.ac:15: -1- m4_pattern_allow([^ECHO_C$])
m4trace:configure.ac:15: -1- AC_SUBST([ECHO_N])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([ECHO_N])
m4trace:configure.ac:15: -1- m4_pattern_allow([^ECHO_N$])
m4trace:configure.ac:15: -1- AC_SUBST([ECHO_T])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([ECHO_T])
m4trace:configure.ac:15: -1- m4_pattern_allow([^ECHO_T$])
m4trace:configure.ac:15: -1- AC_SUBST([LIBS])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:15: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:15: -1- AC_SUBST([build_alias])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([build_alias])
m4trace:configure.ac:15: -1- m4_pattern_allow([^build_alias$])
m4trace:configure.ac:15: -1- AC_SUBST([host_alias])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([host_alias])
m4trace:configure.ac:15: -1- m4_pattern_allow([^host_alias$])
m4trace:configure.ac:15: -1- AC_SUBST([target_alias])
m4trace:configure.ac:15: -1- AC_SUBST_TRACE([target_alias])
m4trace:configure.ac:15: -1- m4_pattern_allow([^target_alias$])
m4trace:configure.ac:17: -1- AM_INIT_AUTOMAKE
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
m4trace:configure.ac:17: -1- AM_AUTOMAKE_VERSION([1.16.5])
m4trace:configure.ac:17: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_PROGRAM])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
m4trace:configure.ac:17: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_SCRIPT])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
m4trace:configure.ac:17: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_DATA])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([INSTALL_DATA])
m4trace:configure.ac:17: -1- m4_pattern_allow([^INSTALL_DATA$])
m4trace:configure.ac:17: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__isrc])
m4trace:configure.ac:17: -1- m4_pattern_allow([^am__isrc$])
m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([am__isrc])
m4trace:configure.ac:17: -1- AC_SUBST([CYGPATH_W])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CYGPATH_W])
m4trace:configure.ac:17: -1- m4_pattern_allow([^CYGPATH_W$])
m4trace:configure.ac:17: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([PACKAGE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:17: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([VERSION])
m4trace:configure.ac:17: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:17: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^PACKAGE$])
m4trace:configure.ac:17: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
@%:@undef PACKAGE])
m4trace:configure.ac:17: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
m4trace:configure.ac:17: -1- m4_pattern_allow([^VERSION$])
m4trace:configure.ac:17: -1- AH_OUTPUT([VERSION], [/* Version number of package */
@%:@undef VERSION])
m4trace:configure.ac:17: -1- AC_REQUIRE_AUX_FILE([missing])
m4trace:configure.ac:17: -1- AC_SUBST([ACLOCAL])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([ACLOCAL])
m4trace:configure.ac:17: -1- m4_pattern_allow([^ACLOCAL$])
m4trace:configure.ac:17: -1- AC_SUBST([AUTOCONF])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AUTOCONF])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AUTOCONF$])
m4trace:configure.ac:17: -1- AC_SUBST([AUTOMAKE])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AUTOMAKE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AUTOMAKE$])
m4trace:configure.ac:17: -1- AC_SUBST([AUTOHEADER])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AUTOHEADER])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AUTOHEADER$])
m4trace:configure.ac:17: -1- AC_SUBST([MAKEINFO])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([MAKEINFO])
m4trace:configure.ac:17: -1- m4_pattern_allow([^MAKEINFO$])
m4trace:configure.ac:17: -1- AC_SUBST([install_sh])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([install_sh])
m4trace:configure.ac:17: -1- m4_pattern_allow([^install_sh$])
m4trace:configure.ac:17: -1- AC_SUBST([STRIP])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:17: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:17: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
m4trace:configure.ac:17: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
m4trace:configure.ac:17: -1- AC_REQUIRE_AUX_FILE([install-sh])
m4trace:configure.ac:17: -1- AC_SUBST([MKDIR_P])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:17: -1- m4_pattern_allow([^MKDIR_P$])
m4trace:configure.ac:17: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([mkdir_p])
m4trace:configure.ac:17: -1- m4_pattern_allow([^mkdir_p$])
m4trace:configure.ac:17: -1- AC_SUBST([AWK])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AWK])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AWK$])
m4trace:configure.ac:17: -1- AC_SUBST([SET_MAKE])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([SET_MAKE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^SET_MAKE$])
m4trace:configure.ac:17: -1- AC_SUBST([am__leading_dot])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__leading_dot])
m4trace:configure.ac:17: -1- m4_pattern_allow([^am__leading_dot$])
m4trace:configure.ac:17: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AMTAR])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AMTAR$])
m4trace:configure.ac:17: -1- AC_SUBST([am__tar])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__tar])
m4trace:configure.ac:17: -1- m4_pattern_allow([^am__tar$])
m4trace:configure.ac:17: -1- AC_SUBST([am__untar])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([am__untar])
m4trace:configure.ac:17: -1- m4_pattern_allow([^am__untar$])
m4trace:configure.ac:17: -1- AC_SUBST([CTAGS])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CTAGS])
m4trace:configure.ac:17: -1- m4_pattern_allow([^CTAGS$])
m4trace:configure.ac:17: -1- AC_SUBST([ETAGS])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([ETAGS])
m4trace:configure.ac:17: -1- m4_pattern_allow([^ETAGS$])
m4trace:configure.ac:17: -1- AC_SUBST([CSCOPE])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([CSCOPE])
m4trace:configure.ac:17: -1- m4_pattern_allow([^CSCOPE$])
m4trace:configure.ac:17: -1- AM_SILENT_RULES
m4trace:configure.ac:17: -1- AC_SUBST([AM_V])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AM_V])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_V$])
m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([AM_V])
m4trace:configure.ac:17: -1- AC_SUBST([AM_DEFAULT_V])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_DEFAULT_V$])
m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
m4trace:configure.ac:17: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
m4trace:configure.ac:17: -1- AC_SUBST([AM_BACKSLASH])
m4trace:configure.ac:17: -1- AC_SUBST_TRACE([AM_BACKSLASH])
m4trace:configure.ac:17: -1- m4_pattern_allow([^AM_BACKSLASH$])
m4trace:configure.ac:17: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
m4trace:configure.ac:18: -1- AM_MAINTAINER_MODE
m4trace:configure.ac:18: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
m4trace:configure.ac:18: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
m4trace:configure.ac:18: -1- AC_SUBST_TRACE([MAINTAINER_MODE_TRUE])
m4trace:configure.ac:18: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
m4trace:configure.ac:18: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
m4trace:configure.ac:18: -1- AC_SUBST_TRACE([MAINTAINER_MODE_FALSE])
m4trace:configure.ac:18: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
m4trace:configure.ac:18: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
m4trace:configure.ac:18: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
m4trace:configure.ac:18: -1- AC_SUBST([MAINT])
m4trace:configure.ac:18: -1- AC_SUBST_TRACE([MAINT])
m4trace:configure.ac:18: -1- m4_pattern_allow([^MAINT$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CFLAGS])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CFLAGS])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CFLAGS$])
m4trace:configure.ac:35: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:35: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:35: -1- AC_SUBST([LIBS])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:35: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:35: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([ac_ct_CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ac_ct_CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^ac_ct_CC$])
m4trace:configure.ac:35: -1- AC_SUBST([CC])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
m4trace:configure.ac:35: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([EXEEXT])
m4trace:configure.ac:35: -1- m4_pattern_allow([^EXEEXT$])
m4trace:configure.ac:35: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([OBJEXT])
m4trace:configure.ac:35: -1- m4_pattern_allow([^OBJEXT$])
m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([compile])
m4trace:configure.ac:35: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([DEPDIR])
m4trace:configure.ac:35: -1- m4_pattern_allow([^DEPDIR$])
m4trace:configure.ac:35: -1- AC_SUBST([am__include])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__include])
m4trace:configure.ac:35: -1- m4_pattern_allow([^am__include$])
m4trace:configure.ac:35: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
m4trace:configure.ac:35: -1- AC_SUBST([AMDEP_TRUE])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMDEP_TRUE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEP_TRUE$])
m4trace:configure.ac:35: -1- AC_SUBST([AMDEP_FALSE])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMDEP_FALSE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEP_FALSE$])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
m4trace:configure.ac:35: -1- AC_SUBST([AMDEPBACKSLASH])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
m4trace:configure.ac:35: -1- AC_SUBST([am__nodep])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__nodep])
m4trace:configure.ac:35: -1- m4_pattern_allow([^am__nodep$])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__nodep])
m4trace:configure.ac:35: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CCDEPMODE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^CCDEPMODE$])
m4trace:configure.ac:35: -1- AM_CONDITIONAL([am__fastdepCC], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:35: -1- AC_SUBST([am__fastdepCC_TRUE])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
m4trace:configure.ac:35: -1- AC_SUBST([am__fastdepCC_FALSE])
m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
m4trace:configure.ac:35: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
m4trace:configure.ac:36: -1- AC_SUBST([CXX])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXX])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:36: -1- AC_SUBST([CXXFLAGS])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXXFLAGS])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CXXFLAGS$])
m4trace:configure.ac:36: -1- AC_SUBST([LDFLAGS])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([LDFLAGS])
m4trace:configure.ac:36: -1- m4_pattern_allow([^LDFLAGS$])
m4trace:configure.ac:36: -1- AC_SUBST([LIBS])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([LIBS])
m4trace:configure.ac:36: -1- m4_pattern_allow([^LIBS$])
m4trace:configure.ac:36: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:36: -1- AC_SUBST([CXX])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXX])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CXX$])
m4trace:configure.ac:36: -1- AC_SUBST([ac_ct_CXX])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([ac_ct_CXX])
m4trace:configure.ac:36: -1- m4_pattern_allow([^ac_ct_CXX$])
m4trace:configure.ac:36: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXXDEPMODE])
m4trace:configure.ac:36: -1- m4_pattern_allow([^CXXDEPMODE$])
m4trace:configure.ac:36: -1- AM_CONDITIONAL([am__fastdepCXX], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
m4trace:configure.ac:36: -1- AC_SUBST([am__fastdepCXX_TRUE])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
m4trace:configure.ac:36: -1- AC_SUBST([am__fastdepCXX_FALSE])
m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
m4trace:configure.ac:37: -1- _m4_warn([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
You should run autoupdate.], [aclocal.m4:8510: AC_LIBTOOL_WIN32_DLL is expanded from...
configure.ac:37: the top level])
m4trace:configure.ac:37: -1- AC_CANONICAL_HOST
m4trace:configure.ac:37: -1- AC_CANONICAL_BUILD
m4trace:configure.ac:37: -1- AC_REQUIRE_AUX_FILE([config.sub])
m4trace:configure.ac:37: -1- AC_REQUIRE_AUX_FILE([config.guess])
m4trace:configure.ac:37: -1- AC_SUBST([build], [$ac_cv_build])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([build])
m4trace:configure.ac:37: -1- m4_pattern_allow([^build$])
m4trace:configure.ac:37: -1- AC_SUBST([build_cpu], [$[1]])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([build_cpu])
m4trace:configure.ac:37: -1- m4_pattern_allow([^build_cpu$])
m4trace:configure.ac:37: -1- AC_SUBST([build_vendor], [$[2]])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([build_vendor])
m4trace:configure.ac:37: -1- m4_pattern_allow([^build_vendor$])
m4trace:configure.ac:37: -1- AC_SUBST([build_os])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([build_os])
m4trace:configure.ac:37: -1- m4_pattern_allow([^build_os$])
m4trace:configure.ac:37: -1- AC_SUBST([host], [$ac_cv_host])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([host])
m4trace:configure.ac:37: -1- m4_pattern_allow([^host$])
m4trace:configure.ac:37: -1- AC_SUBST([host_cpu], [$[1]])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.ac:37: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.ac:37: -1- AC_SUBST([host_vendor], [$[2]])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([host_vendor])
m4trace:configure.ac:37: -1- m4_pattern_allow([^host_vendor$])
m4trace:configure.ac:37: -1- AC_SUBST([host_os])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.ac:37: -1- m4_pattern_allow([^host_os$])
m4trace:configure.ac:37: -1- AC_SUBST([AS])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([AS])
m4trace:configure.ac:37: -1- m4_pattern_allow([^AS$])
m4trace:configure.ac:37: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:37: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:37: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:37: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:37: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:37: -1- _m4_warn([obsolete], [AC_LIBTOOL_WIN32_DLL: Remove this warning and the call to _LT_SET_OPTION when you
put the 'win32-dll' option into LT_INIT's first parameter.], [./lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
aclocal.m4:8510: AC_LIBTOOL_WIN32_DLL is expanded from...
configure.ac:37: the top level])
m4trace:configure.ac:38: -1- AC_PROG_LIBTOOL
m4trace:configure.ac:38: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
You should run autoupdate.], [aclocal.m4:121: AC_PROG_LIBTOOL is expanded from...
configure.ac:38: the top level])
m4trace:configure.ac:38: -1- LT_INIT
m4trace:configure.ac:38: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
m4trace:configure.ac:38: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
m4trace:configure.ac:38: -1- AC_SUBST([LIBTOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIBTOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBTOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([SED])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([SED])
m4trace:configure.ac:38: -1- m4_pattern_allow([^SED$])
m4trace:configure.ac:38: -1- AC_SUBST([GREP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:38: -1- AC_SUBST([EGREP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EGREP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^EGREP$])
m4trace:configure.ac:38: -1- AC_SUBST([FGREP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([FGREP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^FGREP$])
m4trace:configure.ac:38: -1- AC_SUBST([GREP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([GREP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^GREP$])
m4trace:configure.ac:38: -1- AC_SUBST([LD])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LD])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:38: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_DUMPBIN])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
m4trace:configure.ac:38: -1- AC_SUBST([DUMPBIN])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DUMPBIN])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DUMPBIN$])
m4trace:configure.ac:38: -1- AC_SUBST([NM])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([NM])
m4trace:configure.ac:38: -1- m4_pattern_allow([^NM$])
m4trace:configure.ac:38: -1- AC_SUBST([LN_S], [$as_ln_s])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LN_S])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LN_S$])
m4trace:configure.ac:38: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:38: -1- AC_SUBST([OBJDUMP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJDUMP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJDUMP$])
m4trace:configure.ac:38: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([DLLTOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DLLTOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DLLTOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([AR])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AR])
m4trace:configure.ac:38: -1- m4_pattern_allow([^AR$])
m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_AR])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_AR])
m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_AR$])
m4trace:configure.ac:38: -1- AC_SUBST([STRIP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([STRIP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^STRIP$])
m4trace:configure.ac:38: -1- AC_SUBST([RANLIB])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([RANLIB])
m4trace:configure.ac:38: -1- m4_pattern_allow([^RANLIB$])
m4trace:configure.ac:38: -1- m4_pattern_allow([LT_OBJDIR])
m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LT_OBJDIR$])
m4trace:configure.ac:38: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory where libtool stores uninstalled libraries. */
@%:@undef LT_OBJDIR])
m4trace:configure.ac:38: -1- LT_SUPPORTED_TAG([CC])
m4trace:configure.ac:38: -1- AC_SUBST([MANIFEST_TOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^MANIFEST_TOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([DSYMUTIL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DSYMUTIL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^DSYMUTIL$])
m4trace:configure.ac:38: -1- AC_SUBST([NMEDIT])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([NMEDIT])
m4trace:configure.ac:38: -1- m4_pattern_allow([^NMEDIT$])
m4trace:configure.ac:38: -1- AC_SUBST([LIPO])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIPO])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LIPO$])
m4trace:configure.ac:38: -1- AC_SUBST([OTOOL])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OTOOL])
m4trace:configure.ac:38: -1- m4_pattern_allow([^OTOOL$])
m4trace:configure.ac:38: -1- AC_SUBST([OTOOL64])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OTOOL64])
m4trace:configure.ac:38: -1- m4_pattern_allow([^OTOOL64$])
m4trace:configure.ac:38: -1- AC_SUBST([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
@%:@undef HAVE_DLFCN_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the <stdio.h> header file. */
@%:@undef HAVE_STDIO_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
@%:@undef HAVE_STDLIB_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
@%:@undef HAVE_STRING_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
@%:@undef HAVE_INTTYPES_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
@%:@undef HAVE_STDINT_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
@%:@undef HAVE_STRINGS_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
@%:@undef HAVE_SYS_STAT_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
@%:@undef HAVE_SYS_TYPES_H])
m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
@%:@undef HAVE_UNISTD_H])
m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$])
m4trace:configure.ac:38: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C90 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */
@%:@undef STDC_HEADERS])
m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
m4trace:configure.ac:38: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
m4trace:configure.ac:38: -1- LT_SUPPORTED_TAG([CXX])
m4trace:configure.ac:38: -1- AC_SUBST([CXXCPP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CXXCPP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS])
m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$])
m4trace:configure.ac:38: -1- AC_SUBST([CXXCPP])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CXXCPP])
m4trace:configure.ac:38: -1- m4_pattern_allow([^CXXCPP$])
m4trace:configure.ac:38: -1- AC_SUBST([LD])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LD])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LD$])
m4trace:configure.ac:38: -1- AC_SUBST([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH])
m4trace:configure.ac:38: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$])
m4trace:configure.ac:41: -1- AC_SUBST([DEFAULT_INCLUDES])
m4trace:configure.ac:41: -1- AC_SUBST_TRACE([DEFAULT_INCLUDES])
m4trace:configure.ac:41: -1- m4_pattern_allow([^DEFAULT_INCLUDES$])
m4trace:configure.ac:42: -1- AC_SUBST([PORTAUDIO_ROOT])
m4trace:configure.ac:42: -1- AC_SUBST_TRACE([PORTAUDIO_ROOT])
m4trace:configure.ac:42: -1- m4_pattern_allow([^PORTAUDIO_ROOT$])
m4trace:configure.ac:43: -1- AC_SUBST([CXXFLAGS])
m4trace:configure.ac:43: -1- AC_SUBST_TRACE([CXXFLAGS])
m4trace:configure.ac:43: -1- m4_pattern_allow([^CXXFLAGS$])
m4trace:configure.ac:44: -1- AC_SUBST([LT_VERSION_INFO])
m4trace:configure.ac:44: -1- AC_SUBST_TRACE([LT_VERSION_INFO])
m4trace:configure.ac:44: -1- m4_pattern_allow([^LT_VERSION_INFO$])
m4trace:configure.ac:46: -1- AC_CONFIG_FILES([
Makefile
lib/Makefile
include/Makefile
bin/Makefile
doc/Makefile
portaudiocpp.pc
])
m4trace:configure.ac:54: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.ac:54: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.ac:54: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.ac:54: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.ac:54: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
m4trace:configure.ac:54: -1- AC_SUBST([am__EXEEXT_TRUE])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
m4trace:configure.ac:54: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
m4trace:configure.ac:54: -1- AC_SUBST([am__EXEEXT_FALSE])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
m4trace:configure.ac:54: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
m4trace:configure.ac:54: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
m4trace:configure.ac:54: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([INSTALL])
m4trace:configure.ac:54: -1- AC_SUBST_TRACE([MKDIR_P])
m4trace:configure.ac:54: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])

View file

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16.5 from Makefile.am. # Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2021 Free Software Foundation, Inc. # Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -15,17 +15,7 @@
@SET_MAKE@ @SET_MAKE@
VPATH = @srcdir@ VPATH = @srcdir@
am__is_gnu_make = { \ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \ am__make_running_with_option = \
case $${target_option-} in \ case $${target_option-} in \
?) ;; \ ?) ;; \
@ -90,11 +80,12 @@ build_triplet = @build@
host_triplet = @host@ host_triplet = @host@
noinst_PROGRAMS = devs$(EXEEXT) sine$(EXEEXT) noinst_PROGRAMS = devs$(EXEEXT) sine$(EXEEXT)
subdir = bin subdir = bin
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/../../depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES = CONFIG_CLEAN_VPATH_FILES =
@ -125,9 +116,8 @@ AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @ am__v_at_0 = @
am__v_at_1 = am__v_at_1 =
depcomp = $(SHELL) $(top_srcdir)/depcomp depcomp = $(SHELL) $(top_srcdir)/../../depcomp
am__maybe_remake_depfiles = depfiles am__depfiles_maybe = depfiles
am__depfiles_remade = ./$(DEPDIR)/devs.Po ./$(DEPDIR)/sine.Po
am__mv = mv -f am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@ -171,7 +161,8 @@ am__define_uniq_tagged_files = \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)` done | $(am__uniquify_input)`
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
@ -185,9 +176,8 @@ AWK = @AWK@
CC = @CC@ CC = @CC@
CCDEPMODE = @CCDEPMODE@ CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@ CXX = @CXX@
CXXCPP = @CXXCPP@ CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@ CXXDEPMODE = @CXXDEPMODE@
@ -203,7 +193,6 @@ ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@ ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
FGREP = @FGREP@ FGREP = @FGREP@
GREP = @GREP@ GREP = @GREP@
@ -220,7 +209,6 @@ LIBTOOL = @LIBTOOL@
LIPO = @LIPO@ LIPO = @LIPO@
LN_S = @LN_S@ LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@ LTLIBOBJS = @LTLIBOBJS@
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
LT_VERSION_INFO = @LT_VERSION_INFO@ LT_VERSION_INFO = @LT_VERSION_INFO@
MAINT = @MAINT@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
@ -292,7 +280,6 @@ pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@ psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@ srcdir = @srcdir@
@ -322,13 +309,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bin/Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bin/Makefile'; \
$(am__cd) $(top_srcdir) && \ $(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu bin/Makefile $(AUTOMAKE) --gnu bin/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \
*config.status*) \ *config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -363,14 +351,8 @@ mostlyclean-compile:
distclean-compile: distclean-compile:
-rm -f *.tab.c -rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/devs.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/devs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sine.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sine.Po@am__quote@
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade)
.cxx.o: .cxx.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@ -478,10 +460,8 @@ cscopelist-am: $(am__tagged_files)
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES) distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \ list='$(DISTFILES)'; \
@ -551,8 +531,7 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
mostlyclean-am mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -f ./$(DEPDIR)/devs.Po -rm -rf ./$(DEPDIR)
-rm -f ./$(DEPDIR)/sine.Po
-rm -f Makefile -rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \ distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags distclean-tags
@ -598,8 +577,7 @@ install-ps-am:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/devs.Po -rm -rf ./$(DEPDIR)
-rm -f ./$(DEPDIR)/sine.Po
-rm -f Makefile -rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
@ -620,9 +598,9 @@ uninstall-am:
.MAKE: install-am install-strip .MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
ctags ctags-am distclean distclean-compile distclean-generic \ ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \ distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \ html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \ install-data-am install-dvi install-dvi-am install-exec \
@ -634,8 +612,6 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am tags tags-am uninstall uninstall-am
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded. # Otherwise a system limit (for SysV at least) may be exceeded.

Binary file not shown.

View file

@ -1,348 +0,0 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1999-2021 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN* | MSYS*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/* | msys/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

Binary file not shown.

Binary file not shown.

BIN
bindings/cpp/configure vendored

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16.5 from Makefile.am. # Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2021 Free Software Foundation, Inc. # Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -14,17 +14,7 @@
@SET_MAKE@ @SET_MAKE@
VPATH = @srcdir@ VPATH = @srcdir@
am__is_gnu_make = { \ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \ am__make_running_with_option = \
case $${target_option-} in \ case $${target_option-} in \
?) ;; \ ?) ;; \
@ -88,11 +78,11 @@ POST_UNINSTALL = :
build_triplet = @build@ build_triplet = @build@
host_triplet = @host@ host_triplet = @host@
subdir = doc subdir = doc
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES = CONFIG_CLEAN_VPATH_FILES =
@ -116,7 +106,6 @@ am__can_run_installinfo = \
*) (install-info --version) >/dev/null 2>&1;; \ *) (install-info --version) >/dev/null 2>&1;; \
esac esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(srcdir)/Makefile.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
@ -130,9 +119,8 @@ AWK = @AWK@
CC = @CC@ CC = @CC@
CCDEPMODE = @CCDEPMODE@ CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@ CXX = @CXX@
CXXCPP = @CXXCPP@ CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@ CXXDEPMODE = @CXXDEPMODE@
@ -148,7 +136,6 @@ ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@ ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
FGREP = @FGREP@ FGREP = @FGREP@
GREP = @GREP@ GREP = @GREP@
@ -165,7 +152,6 @@ LIBTOOL = @LIBTOOL@
LIPO = @LIPO@ LIPO = @LIPO@
LN_S = @LN_S@ LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@ LTLIBOBJS = @LTLIBOBJS@
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
LT_VERSION_INFO = @LT_VERSION_INFO@ LT_VERSION_INFO = @LT_VERSION_INFO@
MAINT = @MAINT@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
@ -237,7 +223,6 @@ pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@ psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@ srcdir = @srcdir@
@ -262,13 +247,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
$(am__cd) $(top_srcdir) && \ $(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile $(AUTOMAKE) --gnu doc/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \
*config.status*) \ *config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -291,10 +277,8 @@ ctags CTAGS:
cscope cscopelist: cscope cscopelist:
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES) distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \ list='$(DISTFILES)'; \
@ -438,8 +422,6 @@ uninstall-am:
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am tags-am uninstall uninstall-am
.PRECIOUS: Makefile
#INCLUDES = -I$(srcdir)/$(PACPP_ROOT)/include -I$(top_srcdir)/include #INCLUDES = -I$(srcdir)/$(PACPP_ROOT)/include -I$(top_srcdir)/include
docs: docs:

View file

@ -8,44 +8,44 @@
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
void printSupportedStandardSampleRates( void printSupportedStandardSampleRates(
const portaudio::DirectionSpecificStreamParameters &inputParameters, const portaudio::DirectionSpecificStreamParameters &inputParameters,
const portaudio::DirectionSpecificStreamParameters &outputParameters) const portaudio::DirectionSpecificStreamParameters &outputParameters)
{ {
static double STANDARD_SAMPLE_RATES[] = { static double STANDARD_SAMPLE_RATES[] = {
8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0, 8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0,
44100.0, 48000.0, 88200.0, 96000.0, -1 }; // negative terminated list 44100.0, 48000.0, 88200.0, 96000.0, -1 }; // negative terminated list
int printCount = 0; int printCount = 0;
for (int i = 0; STANDARD_SAMPLE_RATES[i] > 0; ++i) for (int i = 0; STANDARD_SAMPLE_RATES[i] > 0; ++i)
{ {
portaudio::StreamParameters tmp = portaudio::StreamParameters(inputParameters, outputParameters, STANDARD_SAMPLE_RATES[i], 0, paNoFlag); portaudio::StreamParameters tmp = portaudio::StreamParameters(inputParameters, outputParameters, STANDARD_SAMPLE_RATES[i], 0, paNoFlag);
if (tmp.isSupported()) if (tmp.isSupported())
{ {
if (printCount == 0) if (printCount == 0)
{ {
std::cout << " " << STANDARD_SAMPLE_RATES[i]; // 8.2 std::cout << " " << STANDARD_SAMPLE_RATES[i]; // 8.2
printCount = 1; printCount = 1;
} }
else if (printCount == 4) else if (printCount == 4)
{ {
std::cout << "," << std::endl; std::cout << "," << std::endl;
std::cout << " " << STANDARD_SAMPLE_RATES[i]; // 8.2 std::cout << " " << STANDARD_SAMPLE_RATES[i]; // 8.2
printCount = 1; printCount = 1;
} }
else else
{ {
std::cout << ", " << STANDARD_SAMPLE_RATES[i]; // 8.2 std::cout << ", " << STANDARD_SAMPLE_RATES[i]; // 8.2
++printCount; ++printCount;
} }
} }
} }
if (printCount == 0) if (printCount == 0)
std::cout << "None" << std::endl; std::cout << "None" << std::endl;
else else
std::cout << std::endl; std::cout << std::endl;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -53,125 +53,125 @@ void printSupportedStandardSampleRates(
int main(int, char*[]); int main(int, char*[]);
int main(int, char*[]) int main(int, char*[])
{ {
try try
{ {
portaudio::AutoSystem autoSys; portaudio::AutoSystem autoSys;
portaudio::System &sys = portaudio::System::instance(); portaudio::System &sys = portaudio::System::instance();
std::cout << "PortAudio version number = " << sys.version() << std::endl; std::cout << "PortAudio version number = " << sys.version() << std::endl;
std::cout << "PortAudio version text = '" << sys.versionText() << "'" << std::endl; std::cout << "PortAudio version text = '" << sys.versionText() << "'" << std::endl;
int numDevices = sys.deviceCount(); int numDevices = sys.deviceCount();
std::cout << "Number of devices = " << numDevices << std::endl; std::cout << "Number of devices = " << numDevices << std::endl;
for (portaudio::System::DeviceIterator i = sys.devicesBegin(); i != sys.devicesEnd(); ++i) for (portaudio::System::DeviceIterator i = sys.devicesBegin(); i != sys.devicesEnd(); ++i)
{ {
std::cout << "--------------------------------------- device #" << (*i).index() << std::endl; std::cout << "--------------------------------------- device #" << (*i).index() << std::endl;
// Mark global and API specific default devices: // Mark global and API specific default devices:
bool defaultDisplayed = false; bool defaultDisplayed = false;
if ((*i).isSystemDefaultInputDevice()) if ((*i).isSystemDefaultInputDevice())
{ {
std::cout << "[ Default Input"; std::cout << "[ Default Input";
defaultDisplayed = true; defaultDisplayed = true;
} }
else if ((*i).isHostApiDefaultInputDevice()) else if ((*i).isHostApiDefaultInputDevice())
{ {
std::cout << "[ Default " << (*i).hostApi().name() << " Input"; std::cout << "[ Default " << (*i).hostApi().name() << " Input";
defaultDisplayed = true; defaultDisplayed = true;
} }
if ((*i).isSystemDefaultOutputDevice()) if ((*i).isSystemDefaultOutputDevice())
{ {
std::cout << (defaultDisplayed ? "," : "["); std::cout << (defaultDisplayed ? "," : "[");
std::cout << " Default Output"; std::cout << " Default Output";
defaultDisplayed = true; defaultDisplayed = true;
} }
else if ((*i).isHostApiDefaultOutputDevice()) else if ((*i).isHostApiDefaultOutputDevice())
{ {
std::cout << (defaultDisplayed ? "," : "["); std::cout << (defaultDisplayed ? "," : "[");
std::cout << " Default " << (*i).hostApi().name() << " Output"; std::cout << " Default " << (*i).hostApi().name() << " Output";
defaultDisplayed = true; defaultDisplayed = true;
} }
if (defaultDisplayed) if (defaultDisplayed)
std::cout << " ]" << std::endl; std::cout << " ]" << std::endl;
// Print device info: // Print device info:
std::cout << "Name = " << (*i).name() << std::endl; std::cout << "Name = " << (*i).name() << std::endl;
std::cout << "Host API = " << (*i).hostApi().name() << std::endl; std::cout << "Host API = " << (*i).hostApi().name() << std::endl;
std::cout << "Max inputs = " << (*i).maxInputChannels() << ", Max outputs = " << (*i).maxOutputChannels() << std::endl; std::cout << "Max inputs = " << (*i).maxInputChannels() << ", Max outputs = " << (*i).maxOutputChannels() << std::endl;
std::cout << "Default low input latency = " << (*i).defaultLowInputLatency() << std::endl; // 8.3 std::cout << "Default low input latency = " << (*i).defaultLowInputLatency() << std::endl; // 8.3
std::cout << "Default low output latency = " << (*i).defaultLowOutputLatency() << std::endl; // 8.3 std::cout << "Default low output latency = " << (*i).defaultLowOutputLatency() << std::endl; // 8.3
std::cout << "Default high input latency = " << (*i).defaultHighInputLatency() << std::endl; // 8.3 std::cout << "Default high input latency = " << (*i).defaultHighInputLatency() << std::endl; // 8.3
std::cout << "Default high output latency = " << (*i).defaultHighOutputLatency() << std::endl; // 8.3 std::cout << "Default high output latency = " << (*i).defaultHighOutputLatency() << std::endl; // 8.3
#ifdef WIN32 #ifdef WIN32
// ASIO specific latency information: // ASIO specific latency information:
if ((*i).hostApi().typeId() == paASIO) if ((*i).hostApi().typeId() == paASIO)
{ {
portaudio::AsioDeviceAdapter asioDevice((*i)); portaudio::AsioDeviceAdapter asioDevice((*i));
std::cout << "ASIO minimum buffer size = " << asioDevice.minBufferSize() << std::endl; std::cout << "ASIO minimum buffer size = " << asioDevice.minBufferSize() << std::endl;
std::cout << "ASIO maximum buffer size = " << asioDevice.maxBufferSize() << std::endl; std::cout << "ASIO maximum buffer size = " << asioDevice.maxBufferSize() << std::endl;
std::cout << "ASIO preferred buffer size = " << asioDevice.preferredBufferSize() << std::endl; std::cout << "ASIO preferred buffer size = " << asioDevice.preferredBufferSize() << std::endl;
if (asioDevice.granularity() == -1) if (asioDevice.granularity() == -1)
std::cout << "ASIO buffer granularity = power of 2" << std::endl; std::cout << "ASIO buffer granularity = power of 2" << std::endl;
else else
std::cout << "ASIO buffer granularity = " << asioDevice.granularity() << std::endl; std::cout << "ASIO buffer granularity = " << asioDevice.granularity() << std::endl;
} }
#endif // WIN32 #endif // WIN32
std::cout << "Default sample rate = " << (*i).defaultSampleRate() << std::endl; // 8.2 std::cout << "Default sample rate = " << (*i).defaultSampleRate() << std::endl; // 8.2
// Poll for standard sample rates: // Poll for standard sample rates:
portaudio::DirectionSpecificStreamParameters inputParameters((*i), (*i).maxInputChannels(), portaudio::INT16, true, 0.0, NULL); portaudio::DirectionSpecificStreamParameters inputParameters((*i), (*i).maxInputChannels(), portaudio::INT16, true, 0.0, NULL);
portaudio::DirectionSpecificStreamParameters outputParameters((*i), (*i).maxOutputChannels(), portaudio::INT16, true, 0.0, NULL); portaudio::DirectionSpecificStreamParameters outputParameters((*i), (*i).maxOutputChannels(), portaudio::INT16, true, 0.0, NULL);
if (inputParameters.numChannels() > 0) if (inputParameters.numChannels() > 0)
{ {
std::cout << "Supported standard sample rates" << std::endl; std::cout << "Supported standard sample rates" << std::endl;
std::cout << " for half-duplex 16 bit " << inputParameters.numChannels() << " channel input = " << std::endl; std::cout << " for half-duplex 16 bit " << inputParameters.numChannels() << " channel input = " << std::endl;
printSupportedStandardSampleRates(inputParameters, portaudio::DirectionSpecificStreamParameters::null()); printSupportedStandardSampleRates(inputParameters, portaudio::DirectionSpecificStreamParameters::null());
} }
if (outputParameters.numChannels() > 0) if (outputParameters.numChannels() > 0)
{ {
std::cout << "Supported standard sample rates" << std::endl; std::cout << "Supported standard sample rates" << std::endl;
std::cout << " for half-duplex 16 bit " << outputParameters.numChannels() << " channel output = " << std::endl; std::cout << " for half-duplex 16 bit " << outputParameters.numChannels() << " channel output = " << std::endl;
printSupportedStandardSampleRates(portaudio::DirectionSpecificStreamParameters::null(), outputParameters); printSupportedStandardSampleRates(portaudio::DirectionSpecificStreamParameters::null(), outputParameters);
} }
if (inputParameters.numChannels() > 0 && outputParameters.numChannels() > 0) if (inputParameters.numChannels() > 0 && outputParameters.numChannels() > 0)
{ {
std::cout << "Supported standard sample rates" << std::endl; std::cout << "Supported standard sample rates" << std::endl;
std::cout << " for full-duplex 16 bit " << inputParameters.numChannels() << " channel input, " << outputParameters.numChannels() << " channel output = " << std::endl; std::cout << " for full-duplex 16 bit " << inputParameters.numChannels() << " channel input, " << outputParameters.numChannels() << " channel output = " << std::endl;
printSupportedStandardSampleRates(inputParameters, outputParameters); printSupportedStandardSampleRates(inputParameters, outputParameters);
} }
} }
std::cout << "----------------------------------------------" << std::endl; std::cout << "----------------------------------------------" << std::endl;
} }
catch (const portaudio::PaException &e) catch (const portaudio::PaException &e)
{ {
std::cout << "A PortAudio error occurred: " << e.paErrorText() << std::endl; std::cout << "A PortAudio error occured: " << e.paErrorText() << std::endl;
} }
catch (const portaudio::PaCppException &e) catch (const portaudio::PaCppException &e)
{ {
std::cout << "A PortAudioCpp error occurred: " << e.what() << std::endl; std::cout << "A PortAudioCpp error occured: " << e.what() << std::endl;
} }
catch (const std::exception &e) catch (const std::exception &e)
{ {
std::cout << "A generic exception occurred: " << e.what() << std::endl; std::cout << "A generic exception occured: " << e.what() << std::endl;
} }
catch (...) catch (...)
{ {
std::cout << "An unknown exception occurred." << std::endl; std::cout << "An unknown exception occured." << std::endl;
} }
return 0; return 0;
} }

View file

@ -20,50 +20,50 @@ const int TABLE_SIZE = 200;
class SineGenerator class SineGenerator
{ {
public: public:
SineGenerator(int tableSize) : tableSize_(tableSize), leftPhase_(0), rightPhase_(0) SineGenerator(int tableSize) : tableSize_(tableSize), leftPhase_(0), rightPhase_(0)
{ {
const double PI = 3.14159265; const double PI = 3.14159265;
table_ = new float[tableSize]; table_ = new float[tableSize];
for (int i = 0; i < tableSize; ++i) for (int i = 0; i < tableSize; ++i)
{ {
table_[i] = 0.125f * (float)sin(((double)i/(double)tableSize)*PI*2.); table_[i] = 0.125f * (float)sin(((double)i/(double)tableSize)*PI*2.);
} }
} }
~SineGenerator() ~SineGenerator()
{ {
delete[] table_; delete[] table_;
} }
int generate(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, int generate(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags) const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)
{ {
assert(outputBuffer != NULL); assert(outputBuffer != NULL);
float **out = static_cast<float **>(outputBuffer); float **out = static_cast<float **>(outputBuffer);
for (unsigned int i = 0; i < framesPerBuffer; ++i) for (unsigned int i = 0; i < framesPerBuffer; ++i)
{ {
out[0][i] = table_[leftPhase_]; out[0][i] = table_[leftPhase_];
out[1][i] = table_[rightPhase_]; out[1][i] = table_[rightPhase_];
leftPhase_ += 1; leftPhase_ += 1;
if (leftPhase_ >= tableSize_) if (leftPhase_ >= tableSize_)
leftPhase_ -= tableSize_; leftPhase_ -= tableSize_;
rightPhase_ += 3; rightPhase_ += 3;
if (rightPhase_ >= tableSize_) if (rightPhase_ >= tableSize_)
rightPhase_ -= tableSize_; rightPhase_ -= tableSize_;
} }
return paContinue; return paContinue;
} }
private: private:
float *table_; float *table_;
int tableSize_; int tableSize_;
int leftPhase_; int leftPhase_;
int rightPhase_; int rightPhase_;
}; };
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -72,64 +72,66 @@ private:
int main(int, char *[]); int main(int, char *[]);
int main(int, char *[]) int main(int, char *[])
{ {
try try
{ {
// Create a SineGenerator object: // Create a SineGenerator object:
SineGenerator sineGenerator(TABLE_SIZE); SineGenerator sineGenerator(TABLE_SIZE);
std::cout << "Setting up PortAudio..." << std::endl; std::cout << "Setting up PortAudio..." << std::endl;
// Set up the System: // Set up the System:
portaudio::AutoSystem autoSys; portaudio::AutoSystem autoSys;
portaudio::System &sys = portaudio::System::instance(); portaudio::System &sys = portaudio::System::instance();
// Set up the parameters required to open a (Callback)Stream: // Set up the parameters required to open a (Callback)Stream:
portaudio::DirectionSpecificStreamParameters outParams(sys.defaultOutputDevice(), 2, portaudio::FLOAT32, false, sys.defaultOutputDevice().defaultLowOutputLatency(), NULL); portaudio::DirectionSpecificStreamParameters outParams(sys.defaultOutputDevice(), 2, portaudio::FLOAT32, false, sys.defaultOutputDevice().defaultLowOutputLatency(), NULL);
portaudio::StreamParameters params(portaudio::DirectionSpecificStreamParameters::null(), outParams, SAMPLE_RATE, FRAMES_PER_BUFFER, paClipOff); portaudio::StreamParameters params(portaudio::DirectionSpecificStreamParameters::null(), outParams, SAMPLE_RATE, FRAMES_PER_BUFFER, paClipOff);
std::cout << "Opening stereo output stream..." << std::endl; std::cout << "Opening stereo output stream..." << std::endl;
// Create (and open) a new Stream, using the SineGenerator::generate function as a callback: // Create (and open) a new Stream, using the SineGenerator::generate function as a callback:
portaudio::MemFunCallbackStream<SineGenerator> stream(params, sineGenerator, &SineGenerator::generate); portaudio::MemFunCallbackStream<SineGenerator> stream(params, sineGenerator, &SineGenerator::generate);
std::cout << "Starting playback for " << NUM_SECONDS << " seconds." << std::endl; std::cout << "Starting playback for " << NUM_SECONDS << " seconds." << std::endl;
// Start the Stream (audio playback starts): // Start the Stream (audio playback starts):
stream.start(); stream.start();
// Wait for 5 seconds: // Wait for 5 seconds:
sys.sleep(NUM_SECONDS * 1000); sys.sleep(NUM_SECONDS * 1000);
std::cout << "Closing stream..." <<std::endl; std::cout << "Closing stream..." <<std::endl;
// Stop the Stream (not strictly needed as termintating the System will also stop all open Streams): // Stop the Stream (not strictly needed as termintating the System will also stop all open Streams):
stream.stop(); stream.stop();
// Close the Stream (not strictly needed as terminating the System will also close all open Streams): // Close the Stream (not strictly needed as terminating the System will also close all open Streams):
stream.close(); stream.close();
// Terminate the System (not strictly needed as the AutoSystem will also take care of this when it // Terminate the System (not strictly needed as the AutoSystem will also take care of this when it
// goes out of scope): // goes out of scope):
sys.terminate(); sys.terminate();
std::cout << "Test finished." << std::endl; std::cout << "Test finished." << std::endl;
} }
catch (const portaudio::PaException &e) catch (const portaudio::PaException &e)
{ {
std::cout << "A PortAudio error occurred: " << e.paErrorText() << std::endl; std::cout << "A PortAudio error occured: " << e.paErrorText() << std::endl;
} }
catch (const portaudio::PaCppException &e) catch (const portaudio::PaCppException &e)
{ {
std::cout << "A PortAudioCpp error occurred: " << e.what() << std::endl; std::cout << "A PortAudioCpp error occured: " << e.what() << std::endl;
} }
catch (const std::exception &e) catch (const std::exception &e)
{ {
std::cout << "A generic exception occurred: " << e.what() << std::endl; std::cout << "A generic exception occured: " << e.what() << std::endl;
} }
catch (...) catch (...)
{ {
std::cout << "An unknown exception occurred." << std::endl; std::cout << "An unknown exception occured." << std::endl;
} }
return 0; return 0;
} }

View file

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16.5 from Makefile.am. # Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2021 Free Software Foundation, Inc. # Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -15,17 +15,7 @@
@SET_MAKE@ @SET_MAKE@
VPATH = @srcdir@ VPATH = @srcdir@
am__is_gnu_make = { \ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \ am__make_running_with_option = \
case $${target_option-} in \ case $${target_option-} in \
?) ;; \ ?) ;; \
@ -89,12 +79,12 @@ POST_UNINSTALL = :
build_triplet = @build@ build_triplet = @build@
host_triplet = @host@ host_triplet = @host@
subdir = include subdir = include
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(pkginclude_HEADERS)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(pkginclude_HEADERS) \
$(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES = CONFIG_CLEAN_VPATH_FILES =
@ -163,7 +153,8 @@ am__define_uniq_tagged_files = \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)` done | $(am__uniquify_input)`
am__DIST_COMMON = $(srcdir)/Makefile.in ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
@ -177,9 +168,8 @@ AWK = @AWK@
CC = @CC@ CC = @CC@
CCDEPMODE = @CCDEPMODE@ CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@ CXX = @CXX@
CXXCPP = @CXXCPP@ CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@ CXXDEPMODE = @CXXDEPMODE@
@ -195,7 +185,6 @@ ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@ ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
FGREP = @FGREP@ FGREP = @FGREP@
GREP = @GREP@ GREP = @GREP@
@ -212,7 +201,6 @@ LIBTOOL = @LIBTOOL@
LIPO = @LIPO@ LIPO = @LIPO@
LN_S = @LN_S@ LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@ LTLIBOBJS = @LTLIBOBJS@
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
LT_VERSION_INFO = @LT_VERSION_INFO@ LT_VERSION_INFO = @LT_VERSION_INFO@
MAINT = @MAINT@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
@ -284,7 +272,6 @@ pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@ psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@ srcdir = @srcdir@
@ -329,13 +316,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \
$(am__cd) $(top_srcdir) && \ $(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu include/Makefile $(AUTOMAKE) --gnu include/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \
*config.status*) \ *config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -425,10 +413,8 @@ cscopelist-am: $(am__tagged_files)
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES) distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \ list='$(DISTFILES)'; \
@ -577,8 +563,6 @@ uninstall-am: uninstall-pkgincludeHEADERS
ps ps-am tags tags-am uninstall uninstall-am \ ps ps-am tags tags-am uninstall uninstall-am \
uninstall-pkgincludeHEADERS uninstall-pkgincludeHEADERS
.PRECIOUS: Makefile
# portaudiocpp/AsioDeviceAdapter.hxx # portaudiocpp/AsioDeviceAdapter.hxx

View file

@ -4,41 +4,41 @@
namespace portaudio namespace portaudio
{ {
// Forward declaration(s): // Forward declaration(s):
class Device; class Device;
// Declaration(s): // Declaration(s):
////// //////
/// @brief Adapts the given Device to an ASIO specific extension. /// @brief Adapts the given Device to an ASIO specific extension.
/// ///
/// Deleting the AsioDeviceAdapter does not affect the underlying /// Deleting the AsioDeviceAdapter does not affect the underlaying
/// Device. /// Device.
////// //////
class AsioDeviceAdapter class AsioDeviceAdapter
{ {
public: public:
AsioDeviceAdapter(Device &device); AsioDeviceAdapter(Device &device);
Device &device(); Device &device();
long minBufferSize() const; long minBufferSize() const;
long maxBufferSize() const; long maxBufferSize() const;
long preferredBufferSize() const; long preferredBufferSize() const;
long granularity() const; long granularity() const;
void showControlPanel(void *systemSpecific); void showControlPanel(void *systemSpecific);
const char *inputChannelName(int channelIndex) const; const char *inputChannelName(int channelIndex) const;
const char *outputChannelName(int channelIndex) const; const char *outputChannelName(int channelIndex) const;
private: private:
Device *device_; Device *device_;
long minBufferSize_; long minBufferSize_;
long maxBufferSize_; long maxBufferSize_;
long preferredBufferSize_; long preferredBufferSize_;
long granularity_; long granularity_;
}; };
} }
#endif // INCLUDED_PORTAUDIO_ASIODEVICEADAPTER_HXX #endif // INCLUDED_PORTAUDIO_ASIODEVICEADAPTER_HXX

View file

@ -11,48 +11,48 @@ namespace portaudio
{ {
////// //////
/// @brief A RAII idiom class to ensure automatic clean-up when an exception is /// @brief A RAII idiom class to ensure automatic clean-up when an exception is
/// raised. /// raised.
/// ///
/// A simple helper class which uses the 'Resource Acquisition is Initialization' /// A simple helper class which uses the 'Resource Acquisition is Initialization'
/// idiom (RAII). Use this class to initialize/terminate the System rather than /// idiom (RAII). Use this class to initialize/terminate the System rather than
/// using System directly. AutoSystem must be created on stack and must be valid /// using System directly. AutoSystem must be created on stack and must be valid
/// throughout the time you wish to use PortAudioCpp. Your 'main' function might be /// throughout the time you wish to use PortAudioCpp. Your 'main' function might be
/// a good place for it. /// a good place for it.
/// ///
/// To avoid having to type portaudio::System::instance().xyz() all the time, it's usually /// To avoid having to type portaudio::System::instance().xyz() all the time, it's usually
/// a good idea to make a reference to the System which can be accessed directly. /// a good idea to make a reference to the System which can be accessed directly.
/// @verbatim /// @verbatim
/// portaudio::AutoSys autoSys; /// portaudio::AutoSys autoSys;
/// portaudio::System &sys = portaudio::System::instance(); /// portaudio::System &sys = portaudio::System::instance();
/// @endverbatim /// @endverbatim
////// //////
class AutoSystem class AutoSystem
{ {
public: public:
AutoSystem(bool initialize = true) AutoSystem(bool initialize = true)
{ {
if (initialize) if (initialize)
System::initialize(); System::initialize();
} }
~AutoSystem() ~AutoSystem()
{ {
if (System::exists()) if (System::exists())
System::terminate(); System::terminate();
} }
void initialize() void initialize()
{ {
System::initialize(); System::initialize();
} }
void terminate() void terminate()
{ {
System::terminate(); System::terminate();
} }
}; };
} // namespace portaudio } // namespace portaudio

View file

@ -12,28 +12,28 @@ namespace portaudio
////// //////
/// @brief Stream class for blocking read/write-style input and output. /// @brief Stream class for blocking read/write-style input and output.
////// //////
class BlockingStream : public Stream class BlockingStream : public Stream
{ {
public: public:
BlockingStream(); BlockingStream();
BlockingStream(const StreamParameters &parameters); BlockingStream(const StreamParameters &parameters);
~BlockingStream(); ~BlockingStream();
void open(const StreamParameters &parameters); void open(const StreamParameters &parameters);
void read(void *buffer, unsigned long numFrames); void read(void *buffer, unsigned long numFrames);
void write(const void *buffer, unsigned long numFrames); void write(const void *buffer, unsigned long numFrames);
signed long availableReadSize() const; signed long availableReadSize() const;
signed long availableWriteSize() const; signed long availableWriteSize() const;
private: private:
BlockingStream(const BlockingStream &); // non-copyable BlockingStream(const BlockingStream &); // non-copyable
BlockingStream &operator=(const BlockingStream &); // non-copyable BlockingStream &operator=(const BlockingStream &); // non-copyable
}; };
@ -42,3 +42,4 @@ namespace portaudio
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
#endif // INCLUDED_PORTAUDIO_BLOCKINGSTREAM_HXX #endif // INCLUDED_PORTAUDIO_BLOCKINGSTREAM_HXX

View file

@ -12,7 +12,7 @@
// Forward declaration(s) // Forward declaration(s)
namespace portaudio namespace portaudio
{ {
class StreamParameters; class StreamParameters;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -20,29 +20,30 @@ namespace portaudio
// Declaration(s): // Declaration(s):
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// @brief Callback stream using a free function with C linkage. It's important that the function /// @brief Callback stream using a free function with C linkage. It's important that the function
/// the passed function pointer points to is declared ``extern "C"''. /// the passed function pointer points to is declared ``extern "C"''.
////// //////
class CFunCallbackStream : public CallbackStream class CFunCallbackStream : public CallbackStream
{ {
public: public:
CFunCallbackStream(); CFunCallbackStream();
CFunCallbackStream(const StreamParameters &parameters, PaStreamCallback *funPtr, void *userData); CFunCallbackStream(const StreamParameters &parameters, PaStreamCallback *funPtr, void *userData);
~CFunCallbackStream(); ~CFunCallbackStream();
void open(const StreamParameters &parameters, PaStreamCallback *funPtr, void *userData); void open(const StreamParameters &parameters, PaStreamCallback *funPtr, void *userData);
private: private:
CFunCallbackStream(const CFunCallbackStream &); // non-copyable CFunCallbackStream(const CFunCallbackStream &); // non-copyable
CFunCallbackStream &operator=(const CFunCallbackStream &); // non-copyable CFunCallbackStream &operator=(const CFunCallbackStream &); // non-copyable
}; };
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // portaudio } // portaudio
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
#endif // INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX #endif // INCLUDED_PORTAUDIO_MEMFUNCALLBACKSTREAM_HXX

View file

@ -9,34 +9,34 @@
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// @brief Interface for an object that's callable as a PortAudioCpp callback object (ie that implements the /// @brief Interface for an object that's callable as a PortAudioCpp callback object (ie that implements the
/// paCallbackFun method). /// paCallbackFun method).
////// //////
class CallbackInterface class CallbackInterface
{ {
public: public:
virtual ~CallbackInterface() {} virtual ~CallbackInterface() {}
virtual int paCallbackFun(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, virtual int paCallbackFun(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags) = 0; const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags) = 0;
}; };
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
namespace impl namespace impl
{ {
extern "C" extern "C"
{ {
int callbackInterfaceToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, int callbackInterfaceToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
void *userData); void *userData);
} // extern "C" } // extern "C"
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -14,23 +14,23 @@ namespace portaudio
{ {
////// //////
/// @brief Base class for all Streams which use a callback-based mechanism. /// @brief Base class for all Streams which use a callback-based mechanism.
////// //////
class CallbackStream : public Stream class CallbackStream : public Stream
{ {
protected: protected:
CallbackStream(); CallbackStream();
virtual ~CallbackStream(); virtual ~CallbackStream();
public: public:
// stream info (time-varying) // stream info (time-varying)
double cpuLoad() const; double cpuLoad() const;
private: private:
CallbackStream(const CallbackStream &); // non-copyable CallbackStream(const CallbackStream &); // non-copyable
CallbackStream &operator=(const CallbackStream &); // non-copyable CallbackStream &operator=(const CallbackStream &); // non-copyable
}; };
} // namespace portaudio } // namespace portaudio

View file

@ -12,7 +12,7 @@
// Forward declaration(s): // Forward declaration(s):
namespace portaudio namespace portaudio
{ {
class StreamParameters; class StreamParameters;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -22,61 +22,61 @@ namespace portaudio
{ {
namespace impl namespace impl
{ {
extern "C" extern "C"
{ {
int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
void *userData); void *userData);
} // extern "C" } // extern "C"
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// @brief Callback stream using a C++ function (either a free function or a static function) /// @brief Callback stream using a C++ function (either a free function or a static function)
/// callback. /// callback.
////// //////
class FunCallbackStream : public CallbackStream class FunCallbackStream : public CallbackStream
{ {
public: public:
typedef int (*CallbackFunPtr)(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, typedef int (*CallbackFunPtr)(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
void *userData); void *userData);
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
////// //////
/// @brief Simple structure containing a function pointer to the C++ callback function and a /// @brief Simple structure containing a function pointer to the C++ callback function and a
/// (void) pointer to the user supplied data. /// (void) pointer to the user supplied data.
////// //////
struct CppToCCallbackData struct CppToCCallbackData
{ {
CppToCCallbackData(); CppToCCallbackData();
CppToCCallbackData(CallbackFunPtr funPtr, void *userData); CppToCCallbackData(CallbackFunPtr funPtr, void *userData);
void init(CallbackFunPtr funPtr, void *userData); void init(CallbackFunPtr funPtr, void *userData);
CallbackFunPtr funPtr; CallbackFunPtr funPtr;
void *userData; void *userData;
}; };
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
FunCallbackStream(); FunCallbackStream();
FunCallbackStream(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData); FunCallbackStream(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData);
~FunCallbackStream(); ~FunCallbackStream();
void open(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData); void open(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData);
private: private:
FunCallbackStream(const FunCallbackStream &); // non-copyable FunCallbackStream(const FunCallbackStream &); // non-copyable
FunCallbackStream &operator=(const FunCallbackStream &); // non-copyable FunCallbackStream &operator=(const FunCallbackStream &); // non-copyable
CppToCCallbackData adapterData_; CppToCCallbackData adapterData_;
void open(const StreamParameters &parameters); void open(const StreamParameters &parameters);
}; };
} // portaudio } // portaudio

View file

@ -14,8 +14,8 @@
// Forward declaration(s): // Forward declaration(s):
namespace portaudio namespace portaudio
{ {
class System; class System;
class HostApi; class HostApi;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -24,67 +24,68 @@ namespace portaudio
namespace portaudio namespace portaudio
{ {
////// //////
/// @brief Class which represents a PortAudio device in the System. /// @brief Class which represents a PortAudio device in the System.
/// ///
/// A single physical device in the system may have multiple PortAudio /// A single physical device in the system may have multiple PortAudio
/// Device representations using different HostApi 's though. A Device /// Device representations using different HostApi 's though. A Device
/// can be half-duplex or full-duplex. A half-duplex Device can be used /// can be half-duplex or full-duplex. A half-duplex Device can be used
/// to create a half-duplex Stream. A full-duplex Device can be used to /// to create a half-duplex Stream. A full-duplex Device can be used to
/// create a full-duplex Stream. If supported by the HostApi, two /// create a full-duplex Stream. If supported by the HostApi, two
/// half-duplex Devices can even be used to create a full-duplex Stream. /// half-duplex Devices can even be used to create a full-duplex Stream.
/// ///
/// Note that Device objects are very light-weight and can be passed around /// Note that Device objects are very light-weight and can be passed around
/// by-value. /// by-value.
////// //////
class Device class Device
{ {
public: public:
// query info: name, max in channels, max out channels, // query info: name, max in channels, max out channels,
// default low/high input/output latency, default sample rate // default low/hight input/output latency, default sample rate
PaDeviceIndex index() const; PaDeviceIndex index() const;
const char *name() const; const char *name() const;
int maxInputChannels() const; int maxInputChannels() const;
int maxOutputChannels() const; int maxOutputChannels() const;
PaTime defaultLowInputLatency() const; PaTime defaultLowInputLatency() const;
PaTime defaultHighInputLatency() const; PaTime defaultHighInputLatency() const;
PaTime defaultLowOutputLatency() const; PaTime defaultLowOutputLatency() const;
PaTime defaultHighOutputLatency() const; PaTime defaultHighOutputLatency() const;
double defaultSampleRate() const; double defaultSampleRate() const;
bool isInputOnlyDevice() const; // extended bool isInputOnlyDevice() const; // extended
bool isOutputOnlyDevice() const; // extended bool isOutputOnlyDevice() const; // extended
bool isFullDuplexDevice() const; // extended bool isFullDuplexDevice() const; // extended
bool isSystemDefaultInputDevice() const; // extended bool isSystemDefaultInputDevice() const; // extended
bool isSystemDefaultOutputDevice() const; // extended bool isSystemDefaultOutputDevice() const; // extended
bool isHostApiDefaultInputDevice() const; // extended bool isHostApiDefaultInputDevice() const; // extended
bool isHostApiDefaultOutputDevice() const; // extended bool isHostApiDefaultOutputDevice() const; // extended
bool operator==(const Device &rhs) const; bool operator==(const Device &rhs) const;
bool operator!=(const Device &rhs) const; bool operator!=(const Device &rhs) const;
// host api reference // host api reference
HostApi &hostApi(); HostApi &hostApi();
const HostApi &hostApi() const; const HostApi &hostApi() const;
private: private:
PaDeviceIndex index_; PaDeviceIndex index_;
const PaDeviceInfo *info_; const PaDeviceInfo *info_;
private: private:
friend class System; friend class System;
explicit Device(PaDeviceIndex index); explicit Device(PaDeviceIndex index);
~Device(); ~Device();
Device(const Device &); // non-copyable Device(const Device &); // non-copyable
Device &operator=(const Device &); // non-copyable Device &operator=(const Device &); // non-copyable
}; };
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
#endif // INCLUDED_PORTAUDIO_DEVICE_HXX #endif // INCLUDED_PORTAUDIO_DEVICE_HXX

View file

@ -15,7 +15,7 @@
// Forward declaration(s): // Forward declaration(s):
namespace portaudio namespace portaudio
{ {
class Device; class Device;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -24,50 +24,50 @@ namespace portaudio
namespace portaudio namespace portaudio
{ {
////// //////
/// @brief All parameters for one direction (either in or out) of a Stream. Together with /// @brief All parameters for one direction (either in or out) of a Stream. Together with
/// parameters common to both directions, two DirectionSpecificStreamParameters can make up /// parameters common to both directions, two DirectionSpecificStreamParameters can make up
/// a StreamParameters object which contains all parameters for a Stream. /// a StreamParameters object which contains all parameters for a Stream.
////// //////
class DirectionSpecificStreamParameters class DirectionSpecificStreamParameters
{ {
public: public:
static DirectionSpecificStreamParameters null(); static DirectionSpecificStreamParameters null();
DirectionSpecificStreamParameters(); DirectionSpecificStreamParameters();
DirectionSpecificStreamParameters(const Device &device, int numChannels, SampleDataFormat format, DirectionSpecificStreamParameters(const Device &device, int numChannels, SampleDataFormat format,
bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo); bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo);
// Set up methods: // Set up methods:
void setDevice(const Device &device); void setDevice(const Device &device);
void setNumChannels(int numChannels); void setNumChannels(int numChannels);
void setSampleFormat(SampleDataFormat format, bool interleaved = true); void setSampleFormat(SampleDataFormat format, bool interleaved = true);
void setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved = true); void setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved = true);
void setSuggestedLatency(PaTime latency); void setSuggestedLatency(PaTime latency);
void setHostApiSpecificStreamInfo(void *streamInfo); void setHostApiSpecificStreamInfo(void *streamInfo);
// Accessor methods: // Accessor methods:
PaStreamParameters *paStreamParameters(); PaStreamParameters *paStreamParameters();
const PaStreamParameters *paStreamParameters() const; const PaStreamParameters *paStreamParameters() const;
Device &device() const; Device &device() const;
int numChannels() const; int numChannels() const;
SampleDataFormat sampleFormat() const; SampleDataFormat sampleFormat() const;
bool isSampleFormatInterleaved() const; bool isSampleFormatInterleaved() const;
bool isSampleFormatHostApiSpecific() const; bool isSampleFormatHostApiSpecific() const;
PaSampleFormat hostApiSpecificSampleFormat() const; PaSampleFormat hostApiSpecificSampleFormat() const;
PaTime suggestedLatency() const; PaTime suggestedLatency() const;
void *hostApiSpecificStreamInfo() const; void *hostApiSpecificStreamInfo() const;
private: private:
PaStreamParameters paStreamParameters_; PaStreamParameters paStreamParameters_;
}; };
} // namespace portaudio } // namespace portaudio

View file

@ -12,92 +12,92 @@
namespace portaudio namespace portaudio
{ {
////// //////
/// @brief Base class for all exceptions PortAudioCpp can throw. /// @brief Base class for all exceptions PortAudioCpp can throw.
/// ///
/// Class is derived from std::exception. /// Class is derived from std::exception.
////// //////
class Exception : public std::exception class Exception : public std::exception
{ {
public: public:
virtual ~Exception() throw() {} virtual ~Exception() throw() {}
virtual const char *what() const throw() = 0; virtual const char *what() const throw() = 0;
}; };
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// @brief Wrapper for PortAudio error codes to C++ exceptions. /// @brief Wrapper for PortAudio error codes to C++ exceptions.
/// ///
/// It wraps up PortAudio's error handling mechanism using /// It wraps up PortAudio's error handling mechanism using
/// C++ exceptions and is derived from std::exception for /// C++ exceptions and is derived from std::exception for
/// easy exception handling and to ease integration with /// easy exception handling and to ease integration with
/// other code. /// other code.
/// ///
/// To know what exceptions each function may throw, look up /// To know what exceptions each function may throw, look up
/// the errors that can occur in the PortAudio documentation /// the errors that can occure in the PortAudio documentation
/// for the equivalent functions. /// for the equivalent functions.
/// ///
/// Some functions are likely to throw an exception (such as /// Some functions are likely to throw an exception (such as
/// Stream::open(), etc) and these should always be called in /// Stream::open(), etc) and these should always be called in
/// try{} catch{} blocks and the thrown exceptions should be /// try{} catch{} blocks and the thrown exceptions should be
/// handled properly (ie. the application shouldn't just abort, /// handled properly (ie. the application shouldn't just abort,
/// but merely display a warning dialog to the user or something). /// but merely display a warning dialog to the user or something).
/// However nearly all functions in PortAudioCpp are capable /// However nearly all functions in PortAudioCpp are capable
/// of throwing exceptions. When a function like Stream::isStopped() /// of throwing exceptions. When a function like Stream::isStopped()
/// throws an exception, it's such an exceptional state that it's /// throws an exception, it's such an exceptional state that it's
/// not likely that it can be recovered. PaExceptions such as these /// not likely that it can be recovered. PaExceptions such as these
/// can ``safely'' be left to be handled by some outer catch-all-like /// can ``safely'' be left to be handled by some outer catch-all-like
/// mechanism for unrecoverable errors. /// mechanism for unrecoverable errors.
////// //////
class PaException : public Exception class PaException : public Exception
{ {
public: public:
explicit PaException(PaError error); explicit PaException(PaError error);
const char *what() const throw(); const char *what() const throw();
PaError paError() const; PaError paError() const;
const char *paErrorText() const; const char *paErrorText() const;
bool isHostApiError() const; // extended bool isHostApiError() const; // extended
long lastHostApiError() const; long lastHostApiError() const;
const char *lastHostApiErrorText() const; const char *lastHostApiErrorText() const;
bool operator==(const PaException &rhs) const; bool operator==(const PaException &rhs) const;
bool operator!=(const PaException &rhs) const; bool operator!=(const PaException &rhs) const;
private: private:
PaError error_; PaError error_;
}; };
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// @brief Exceptions specific to PortAudioCpp (ie. exceptions which do not have an /// @brief Exceptions specific to PortAudioCpp (ie. exceptions which do not have an
/// equivalent PortAudio error code). /// equivalent PortAudio error code).
////// //////
class PaCppException : public Exception class PaCppException : public Exception
{ {
public: public:
enum ExceptionSpecifier enum ExceptionSpecifier
{ {
UNABLE_TO_ADAPT_DEVICE UNABLE_TO_ADAPT_DEVICE
}; };
PaCppException(ExceptionSpecifier specifier); PaCppException(ExceptionSpecifier specifier);
const char *what() const throw(); const char *what() const throw();
ExceptionSpecifier specifier() const; ExceptionSpecifier specifier() const;
bool operator==(const PaCppException &rhs) const; bool operator==(const PaCppException &rhs) const;
bool operator!=(const PaCppException &rhs) const; bool operator!=(const PaCppException &rhs) const;
private: private:
ExceptionSpecifier specifier_; ExceptionSpecifier specifier_;
}; };
} // namespace portaudio } // namespace portaudio
@ -105,3 +105,4 @@ namespace portaudio
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
#endif // INCLUDED_PORTAUDIO_EXCEPTION_HXX #endif // INCLUDED_PORTAUDIO_EXCEPTION_HXX

View file

@ -12,7 +12,7 @@
// Forward declaration(s): // Forward declaration(s):
namespace portaudio namespace portaudio
{ {
class Device; class Device;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -22,50 +22,50 @@ namespace portaudio
{ {
////// //////
/// @brief HostApi represents a host API (usually type of driver) in the System. /// @brief HostApi represents a host API (usually type of driver) in the System.
/// ///
/// A single System can support multiple HostApi's each one typically having /// A single System can support multiple HostApi's each one typically having
/// a set of Devices using that HostApi (usually driver type). All Devices in /// a set of Devices using that HostApi (usually driver type). All Devices in
/// the HostApi can be enumerated and the default input/output Device for this /// the HostApi can be enumerated and the default input/output Device for this
/// HostApi can be retrieved. /// HostApi can be retreived.
////// //////
class HostApi class HostApi
{ {
public: public:
typedef System::DeviceIterator DeviceIterator; typedef System::DeviceIterator DeviceIterator;
// query info: id, name, numDevices // query info: id, name, numDevices
PaHostApiTypeId typeId() const; PaHostApiTypeId typeId() const;
PaHostApiIndex index() const; PaHostApiIndex index() const;
const char *name() const; const char *name() const;
int deviceCount() const; int deviceCount() const;
// iterate devices // iterate devices
DeviceIterator devicesBegin(); DeviceIterator devicesBegin();
DeviceIterator devicesEnd(); DeviceIterator devicesEnd();
// default devices // default devices
Device &defaultInputDevice() const; Device &defaultInputDevice() const;
Device &defaultOutputDevice() const; Device &defaultOutputDevice() const;
// comparison operators // comparison operators
bool operator==(const HostApi &rhs) const; bool operator==(const HostApi &rhs) const;
bool operator!=(const HostApi &rhs) const; bool operator!=(const HostApi &rhs) const;
private: private:
const PaHostApiInfo *info_; const PaHostApiInfo *info_;
Device **devices_; Device **devices_;
private: private:
friend class System; friend class System;
explicit HostApi(PaHostApiIndex index); explicit HostApi(PaHostApiIndex index);
~HostApi(); ~HostApi();
HostApi(const HostApi &); // non-copyable HostApi(const HostApi &); // non-copyable
HostApi &operator=(const HostApi &); // non-copyable HostApi &operator=(const HostApi &); // non-copyable
}; };
} }
@ -73,3 +73,4 @@ namespace portaudio
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
#endif // INCLUDED_PORTAUDIO_HOSTAPI_HXX #endif // INCLUDED_PORTAUDIO_HOSTAPI_HXX

View file

@ -12,8 +12,8 @@
// Forward declaration(s) // Forward declaration(s)
namespace portaudio namespace portaudio
{ {
class StreamParameters; class StreamParameters;
class CallbackInterface; class CallbackInterface;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -23,23 +23,23 @@ namespace portaudio
{ {
////// //////
/// @brief Callback stream using an instance of an object that's derived from the CallbackInterface /// @brief Callback stream using an instance of an object that's derived from the CallbackInterface
/// interface. /// interface.
////// //////
class InterfaceCallbackStream : public CallbackStream class InterfaceCallbackStream : public CallbackStream
{ {
public: public:
InterfaceCallbackStream(); InterfaceCallbackStream();
InterfaceCallbackStream(const StreamParameters &parameters, CallbackInterface &instance); InterfaceCallbackStream(const StreamParameters &parameters, CallbackInterface &instance);
~InterfaceCallbackStream(); ~InterfaceCallbackStream();
void open(const StreamParameters &parameters, CallbackInterface &instance); void open(const StreamParameters &parameters, CallbackInterface &instance);
private: private:
InterfaceCallbackStream(const InterfaceCallbackStream &); // non-copyable InterfaceCallbackStream(const InterfaceCallbackStream &); // non-copyable
InterfaceCallbackStream &operator=(const InterfaceCallbackStream &); // non-copyable InterfaceCallbackStream &operator=(const InterfaceCallbackStream &); // non-copyable
}; };
} // portaudio } // portaudio

View file

@ -17,87 +17,87 @@ namespace portaudio
{ {
////// //////
/// @brief Callback stream using a class's member function as a callback. Template argument T is the type of the /// @brief Callback stream using a class's member function as a callback. Template argument T is the type of the
/// class of which a member function is going to be used. /// class of which a member function is going to be used.
/// ///
/// Example usage: /// Example usage:
/// @verbatim MemFunCallback<MyClass> stream = MemFunCallbackStream(parameters, *this, &MyClass::myCallbackFunction); @endverbatim /// @verbatim MemFunCallback<MyClass> stream = MemFunCallbackStream(parameters, *this, &MyClass::myCallbackFunction); @endverbatim
////// //////
template<typename T> template<typename T>
class MemFunCallbackStream : public CallbackStream class MemFunCallbackStream : public CallbackStream
{ {
public: public:
typedef int (T::*CallbackFunPtr)(const void *, void *, unsigned long, const PaStreamCallbackTimeInfo *, typedef int (T::*CallbackFunPtr)(const void *, void *, unsigned long, const PaStreamCallbackTimeInfo *,
PaStreamCallbackFlags); PaStreamCallbackFlags);
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
MemFunCallbackStream() MemFunCallbackStream()
{ {
} }
MemFunCallbackStream(const StreamParameters &parameters, T &instance, CallbackFunPtr memFun) : adapter_(instance, memFun) MemFunCallbackStream(const StreamParameters &parameters, T &instance, CallbackFunPtr memFun) : adapter_(instance, memFun)
{ {
open(parameters); open(parameters);
} }
~MemFunCallbackStream() ~MemFunCallbackStream()
{ {
close(); close();
} }
void open(const StreamParameters &parameters, T &instance, CallbackFunPtr memFun) void open(const StreamParameters &parameters, T &instance, CallbackFunPtr memFun)
{ {
// XXX: need to check if already open? // XXX: need to check if already open?
adapter_.init(instance, memFun); adapter_.init(instance, memFun);
open(parameters); open(parameters);
} }
private: private:
MemFunCallbackStream(const MemFunCallbackStream &); // non-copyable MemFunCallbackStream(const MemFunCallbackStream &); // non-copyable
MemFunCallbackStream &operator=(const MemFunCallbackStream &); // non-copyable MemFunCallbackStream &operator=(const MemFunCallbackStream &); // non-copyable
////// //////
/// @brief Inner class which adapts a member function callback to a CallbackInterface compliant /// @brief Inner class which adapts a member function callback to a CallbackInterface compliant
/// class (so it can be adapted using the paCallbackAdapter function). /// class (so it can be adapted using the paCallbackAdapter function).
////// //////
class MemFunToCallbackInterfaceAdapter : public CallbackInterface class MemFunToCallbackInterfaceAdapter : public CallbackInterface
{ {
public: public:
MemFunToCallbackInterfaceAdapter() {} MemFunToCallbackInterfaceAdapter() {}
MemFunToCallbackInterfaceAdapter(T &instance, CallbackFunPtr memFun) : instance_(&instance), memFun_(memFun) {} MemFunToCallbackInterfaceAdapter(T &instance, CallbackFunPtr memFun) : instance_(&instance), memFun_(memFun) {}
void init(T &instance, CallbackFunPtr memFun) void init(T &instance, CallbackFunPtr memFun)
{ {
instance_ = &instance; instance_ = &instance;
memFun_ = memFun; memFun_ = memFun;
} }
int paCallbackFun(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, int paCallbackFun(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags) const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags)
{ {
return (instance_->*memFun_)(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags); return (instance_->*memFun_)(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags);
} }
private: private:
T *instance_; T *instance_;
CallbackFunPtr memFun_; CallbackFunPtr memFun_;
}; };
MemFunToCallbackInterfaceAdapter adapter_; MemFunToCallbackInterfaceAdapter adapter_;
void open(const StreamParameters &parameters) void open(const StreamParameters &parameters)
{ {
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter, parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter,
static_cast<void *>(&adapter_)); static_cast<void *>(&adapter_));
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
}; };
} // portaudio } // portaudio

View file

@ -6,7 +6,7 @@
////// //////
/// @mainpage PortAudioCpp /// @mainpage PortAudioCpp
/// ///
/// <h1>PortAudioCpp - A Native C++ Binding of PortAudio V19</h1> /// <h1>PortAudioCpp - A Native C++ Binding of PortAudio V19</h1>
/// <h2>PortAudio</h2> /// <h2>PortAudio</h2>
/// <p> /// <p>
/// PortAudio is a portable and mature C API for accessing audio hardware. It offers both callback-based and blocking /// PortAudio is a portable and mature C API for accessing audio hardware. It offers both callback-based and blocking
@ -50,7 +50,7 @@
/// Other platforms should be easily supported as PortAudioCpp is platform-independent and (reasonably) C++ standard compliant. /// Other platforms should be easily supported as PortAudioCpp is platform-independent and (reasonably) C++ standard compliant.
/// </p> /// </p>
/// <p> /// <p>
/// This documentation mainly provides information specific to PortAudioCpp. For a more complete explanation of all of the /// This documentation mainly provides information specific to PortAudioCpp. For a more complete explaination of all of the
/// concepts used, please consult the PortAudio documentation. /// concepts used, please consult the PortAudio documentation.
/// </p> /// </p>
/// <p> /// <p>

View file

@ -11,21 +11,21 @@ namespace portaudio
{ {
////// //////
/// @brief PortAudio sample data formats. /// @brief PortAudio sample data formats.
/// ///
/// Small helper enum to wrap the PortAudio defines. /// Small helper enum to wrap the PortAudio defines.
////// //////
enum SampleDataFormat enum SampleDataFormat
{ {
INVALID_FORMAT = 0, INVALID_FORMAT = 0,
FLOAT32 = paFloat32, FLOAT32 = paFloat32,
INT32 = paInt32, INT32 = paInt32,
INT24 = paInt24, INT24 = paInt24,
INT16 = paInt16, INT16 = paInt16,
INT8 = paInt8, INT8 = paInt8,
UINT8 = paUInt8 UINT8 = paUInt8
}; };
} // namespace portaudio } // namespace portaudio

View file

@ -8,7 +8,7 @@
// Forward declaration(s): // Forward declaration(s):
namespace portaudio namespace portaudio
{ {
class StreamParameters; class StreamParameters;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -18,64 +18,65 @@ namespace portaudio
{ {
////// //////
/// @brief A Stream represents an active or inactive input and/or output data /// @brief A Stream represents an active or inactive input and/or output data
/// stream in the System. /// stream in the System.
/// ///
/// Concrete Stream classes should ensure themselves being in a closed state at /// Concrete Stream classes should ensure themselves being in a closed state at
/// destruction (i.e. by calling their own close() method in their deconstructor). /// destruction (i.e. by calling their own close() method in their deconstructor).
/// Following good C++ programming practices, care must be taken to ensure no /// Following good C++ programming practices, care must be taken to ensure no
/// exceptions are thrown by the deconstructor of these classes. As a consequence, /// exceptions are thrown by the deconstructor of these classes. As a consequence,
/// clients need to explicitly call close() to ensure the stream closed successfully. /// clients need to explicitly call close() to ensure the stream closed successfully.
/// ///
/// The Stream object can be used to manipulate the Stream's state. Also, time-constant /// The Stream object can be used to manipulate the Stream's state. Also, time-constant
/// and time-varying information about the Stream can be retrieved. /// and time-varying information about the Stream can be retreived.
////// //////
class Stream class Stream
{ {
public: public:
// Opening/closing: // Opening/closing:
virtual ~Stream(); virtual ~Stream();
virtual void close(); virtual void close();
bool isOpen() const; bool isOpen() const;
// Additional set up: // Additional set up:
void setStreamFinishedCallback(PaStreamFinishedCallback *callback); void setStreamFinishedCallback(PaStreamFinishedCallback *callback);
// State management: // State management:
void start(); void start();
void stop(); void stop();
void abort(); void abort();
bool isStopped() const; bool isStopped() const;
bool isActive() const; bool isActive() const;
// Stream info (time-constant, but might become time-variant soon): // Stream info (time-constant, but might become time-variant soon):
PaTime inputLatency() const; PaTime inputLatency() const;
PaTime outputLatency() const; PaTime outputLatency() const;
double sampleRate() const; double sampleRate() const;
// Stream info (time-varying): // Stream info (time-varying):
PaTime time() const; PaTime time() const;
// Accessors for PortAudio PaStream, useful for interfacing // Accessors for PortAudio PaStream, useful for interfacing
// with PortAudio add-ons (such as PortMixer) for instance: // with PortAudio add-ons (such as PortMixer) for instance:
const PaStream *paStream() const; const PaStream *paStream() const;
PaStream *paStream(); PaStream *paStream();
protected: protected:
Stream(); // abstract class Stream(); // abstract class
PaStream *stream_; PaStream *stream_;
private: private:
Stream(const Stream &); // non-copyable Stream(const Stream &); // non-copyable
Stream &operator=(const Stream &); // non-copyable Stream &operator=(const Stream &); // non-copyable
}; };
} // namespace portaudio } // namespace portaudio
#endif // INCLUDED_PORTAUDIO_STREAM_HXX #endif // INCLUDED_PORTAUDIO_STREAM_HXX

View file

@ -13,61 +13,61 @@
namespace portaudio namespace portaudio
{ {
////// //////
/// @brief The entire set of parameters needed to configure and open /// @brief The entire set of parameters needed to configure and open
/// a Stream. /// a Stream.
/// ///
/// It contains parameters of input, output and shared parameters. /// It contains parameters of input, output and shared parameters.
/// Using the isSupported() method, the StreamParameters can be /// Using the isSupported() method, the StreamParameters can be
/// checked if opening a Stream using this StreamParameters would /// checked if opening a Stream using this StreamParameters would
/// succeed or not. Accessors are provided to higher-level parameters /// succeed or not. Accessors are provided to higher-level parameters
/// aswell as the lower-level parameters which are mainly intended for /// aswell as the lower-level parameters which are mainly intended for
/// internal use. /// internal use.
////// //////
class StreamParameters class StreamParameters
{ {
public: public:
StreamParameters(); StreamParameters();
StreamParameters(const DirectionSpecificStreamParameters &inputParameters, StreamParameters(const DirectionSpecificStreamParameters &inputParameters,
const DirectionSpecificStreamParameters &outputParameters, double sampleRate, const DirectionSpecificStreamParameters &outputParameters, double sampleRate,
unsigned long framesPerBuffer, PaStreamFlags flags); unsigned long framesPerBuffer, PaStreamFlags flags);
// Set up for direction-specific: // Set up for direction-specific:
void setInputParameters(const DirectionSpecificStreamParameters &parameters); void setInputParameters(const DirectionSpecificStreamParameters &parameters);
void setOutputParameters(const DirectionSpecificStreamParameters &parameters); void setOutputParameters(const DirectionSpecificStreamParameters &parameters);
// Set up for common parameters: // Set up for common parameters:
void setSampleRate(double sampleRate); void setSampleRate(double sampleRate);
void setFramesPerBuffer(unsigned long framesPerBuffer); void setFramesPerBuffer(unsigned long framesPerBuffer);
void setFlag(PaStreamFlags flag); void setFlag(PaStreamFlags flag);
void unsetFlag(PaStreamFlags flag); void unsetFlag(PaStreamFlags flag);
void clearFlags(); void clearFlags();
// Validation: // Validation:
bool isSupported() const; bool isSupported() const;
// Accessors (direction-specific): // Accessors (direction-specific):
DirectionSpecificStreamParameters &inputParameters(); DirectionSpecificStreamParameters &inputParameters();
const DirectionSpecificStreamParameters &inputParameters() const; const DirectionSpecificStreamParameters &inputParameters() const;
DirectionSpecificStreamParameters &outputParameters(); DirectionSpecificStreamParameters &outputParameters();
const DirectionSpecificStreamParameters &outputParameters() const; const DirectionSpecificStreamParameters &outputParameters() const;
// Accessors (common): // Accessors (common):
double sampleRate() const; double sampleRate() const;
unsigned long framesPerBuffer() const; unsigned long framesPerBuffer() const;
PaStreamFlags flags() const; PaStreamFlags flags() const;
bool isFlagSet(PaStreamFlags flag) const; bool isFlagSet(PaStreamFlags flag) const;
private: private:
// Half-duplex specific parameters: // Half-duplex specific parameters:
DirectionSpecificStreamParameters inputParameters_; DirectionSpecificStreamParameters inputParameters_;
DirectionSpecificStreamParameters outputParameters_; DirectionSpecificStreamParameters outputParameters_;
// Common parameters: // Common parameters:
double sampleRate_; double sampleRate_;
unsigned long framesPerBuffer_; unsigned long framesPerBuffer_;
PaStreamFlags flags_; PaStreamFlags flags_;
}; };
} // namespace portaudio } // namespace portaudio

View file

@ -10,9 +10,9 @@
// Forward declaration(s): // Forward declaration(s):
namespace portaudio namespace portaudio
{ {
class Device; class Device;
class Stream; class Stream;
class HostApi; class HostApi;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -22,85 +22,86 @@ namespace portaudio
{ {
////// //////
/// @brief System singleton which represents the PortAudio system. /// @brief System singleton which represents the PortAudio system.
/// ///
/// The System is used to initialize/terminate PortAudio and provide /// The System is used to initialize/terminate PortAudio and provide
/// a single access point to the PortAudio System (instance()). /// a single acccess point to the PortAudio System (instance()).
/// It can be used to iterate through all HostApi 's in the System as /// It can be used to iterate through all HostApi 's in the System as
/// well as all devices in the System. It also provides some utility /// well as all devices in the System. It also provides some utility
/// functionality of PortAudio. /// functionality of PortAudio.
/// ///
/// Terminating the System will also abort and close the open streams. /// Terminating the System will also abort and close the open streams.
/// The Stream objects will need to be deallocated by the client though /// The Stream objects will need to be deallocated by the client though
/// (it's usually a good idea to have them cleaned up automatically). /// (it's usually a good idea to have them cleaned up automatically).
////// //////
class System class System
{ {
public: public:
class HostApiIterator; // forward declaration class HostApiIterator; // forward declaration
class DeviceIterator; // forward declaration class DeviceIterator; // forward declaration
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
static int version(); static int version();
static const char *versionText(); static const char *versionText();
static void initialize(); static void initialize();
static void terminate(); static void terminate();
static System &instance(); static System &instance();
static bool exists(); static bool exists();
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
// host apis: // host apis:
HostApiIterator hostApisBegin(); HostApiIterator hostApisBegin();
HostApiIterator hostApisEnd(); HostApiIterator hostApisEnd();
HostApi &defaultHostApi(); HostApi &defaultHostApi();
HostApi &hostApiByTypeId(PaHostApiTypeId type); HostApi &hostApiByTypeId(PaHostApiTypeId type);
HostApi &hostApiByIndex(PaHostApiIndex index); HostApi &hostApiByIndex(PaHostApiIndex index);
int hostApiCount(); int hostApiCount();
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
// devices: // devices:
DeviceIterator devicesBegin(); DeviceIterator devicesBegin();
DeviceIterator devicesEnd(); DeviceIterator devicesEnd();
Device &defaultInputDevice(); Device &defaultInputDevice();
Device &defaultOutputDevice(); Device &defaultOutputDevice();
Device &deviceByIndex(PaDeviceIndex index); Device &deviceByIndex(PaDeviceIndex index);
int deviceCount(); int deviceCount();
static Device &nullDevice(); static Device &nullDevice();
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
// misc: // misc:
void sleep(long msec); void sleep(long msec);
int sizeOfSample(PaSampleFormat format); int sizeOfSample(PaSampleFormat format);
private: private:
System(); System();
~System(); ~System();
static System *instance_; static System *instance_;
static int initCount_; static int initCount_;
static HostApi **hostApis_; static HostApi **hostApis_;
static Device **devices_; static Device **devices_;
static Device *nullDevice_; static Device *nullDevice_;
}; };
} // namespace portaudio } // namespace portaudio
#endif // INCLUDED_PORTAUDIO_SYSTEM_HXX #endif // INCLUDED_PORTAUDIO_SYSTEM_HXX

View file

@ -13,8 +13,8 @@
// Forward declaration(s): // Forward declaration(s):
namespace portaudio namespace portaudio
{ {
class Device; class Device;
class HostApi; class HostApi;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -24,38 +24,38 @@ namespace portaudio
{ {
////// //////
/// @brief Iterator class for iterating through all Devices in a System. /// @brief Iterator class for iterating through all Devices in a System.
/// ///
/// Devices will be iterated by iterating all Devices in each /// Devices will be iterated by iterating all Devices in each
/// HostApi in the System. Compliant with the STL bidirectional /// HostApi in the System. Compliant with the STL bidirectional
/// iterator concept. /// iterator concept.
////// //////
class System::DeviceIterator class System::DeviceIterator
{ {
public: public:
typedef std::bidirectional_iterator_tag iterator_category; typedef std::bidirectional_iterator_tag iterator_category;
typedef Device value_type; typedef Device value_type;
typedef ptrdiff_t difference_type; typedef ptrdiff_t difference_type;
typedef Device * pointer; typedef Device * pointer;
typedef Device & reference; typedef Device & reference;
Device &operator*() const; Device &operator*() const;
Device *operator->() const; Device *operator->() const;
DeviceIterator &operator++(); DeviceIterator &operator++();
DeviceIterator operator++(int); DeviceIterator operator++(int);
DeviceIterator &operator--(); DeviceIterator &operator--();
DeviceIterator operator--(int); DeviceIterator operator--(int);
bool operator==(const DeviceIterator &rhs) const; bool operator==(const DeviceIterator &rhs) const;
bool operator!=(const DeviceIterator &rhs) const; bool operator!=(const DeviceIterator &rhs) const;
private: private:
friend class System; friend class System;
friend class HostApi; friend class HostApi;
Device **ptr_; Device **ptr_;
}; };
} // namespace portaudio } // namespace portaudio
@ -63,3 +63,4 @@ namespace portaudio
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
#endif // INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX #endif // INCLUDED_PORTAUDIO_SYSTEMDEVICEITERATOR_HXX

View file

@ -13,7 +13,7 @@
// Forward declaration(s): // Forward declaration(s):
namespace portaudio namespace portaudio
{ {
class HostApi; class HostApi;
} }
// --------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------
@ -23,35 +23,35 @@ namespace portaudio
{ {
////// //////
/// @brief Iterator class for iterating through all HostApis in a System. /// @brief Iterator class for iterating through all HostApis in a System.
/// ///
/// Compliant with the STL bidirectional iterator concept. /// Compliant with the STL bidirectional iterator concept.
////// //////
class System::HostApiIterator class System::HostApiIterator
{ {
public: public:
typedef std::bidirectional_iterator_tag iterator_category; typedef std::bidirectional_iterator_tag iterator_category;
typedef Device value_type; typedef Device value_type;
typedef ptrdiff_t difference_type; typedef ptrdiff_t difference_type;
typedef HostApi * pointer; typedef HostApi * pointer;
typedef HostApi & reference; typedef HostApi & reference;
HostApi &operator*() const; HostApi &operator*() const;
HostApi *operator->() const; HostApi *operator->() const;
HostApiIterator &operator++(); HostApiIterator &operator++();
HostApiIterator operator++(int); HostApiIterator operator++(int);
HostApiIterator &operator--(); HostApiIterator &operator--();
HostApiIterator operator--(int); HostApiIterator operator--(int);
bool operator==(const HostApiIterator &rhs) const; bool operator==(const HostApiIterator &rhs) const;
bool operator!=(const HostApiIterator &rhs) const; bool operator!=(const HostApiIterator &rhs) const;
private: private:
friend class System; friend class System;
HostApi **ptr_; HostApi **ptr_;
}; };
} // namespace portaudio } // namespace portaudio

Binary file not shown.

View file

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16.5 from Makefile.am. # Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994-2021 Free Software Foundation, Inc. # Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -15,17 +15,7 @@
@SET_MAKE@ @SET_MAKE@
VPATH = @srcdir@ VPATH = @srcdir@
am__is_gnu_make = { \ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \ am__make_running_with_option = \
case $${target_option-} in \ case $${target_option-} in \
?) ;; \ ?) ;; \
@ -89,11 +79,12 @@ POST_UNINSTALL = :
build_triplet = @build@ build_triplet = @build@
host_triplet = @host@ host_triplet = @host@
subdir = lib subdir = lib
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/../../depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES = CONFIG_CLEAN_VPATH_FILES =
@ -156,20 +147,8 @@ AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @ am__v_at_0 = @
am__v_at_1 = am__v_at_1 =
depcomp = $(SHELL) $(top_srcdir)/depcomp depcomp = $(SHELL) $(top_srcdir)/../../depcomp
am__maybe_remake_depfiles = depfiles am__depfiles_maybe = depfiles
am__depfiles_remade = ./$(DEPDIR)/BlockingStream.Plo \
./$(DEPDIR)/CFunCallbackStream.Plo \
./$(DEPDIR)/CallbackInterface.Plo \
./$(DEPDIR)/CallbackStream.Plo \
./$(DEPDIR)/CppFunCallbackStream.Plo ./$(DEPDIR)/Device.Plo \
./$(DEPDIR)/DirectionSpecificStreamParameters.Plo \
./$(DEPDIR)/Exception.Plo ./$(DEPDIR)/HostApi.Plo \
./$(DEPDIR)/InterfaceCallbackStream.Plo \
./$(DEPDIR)/MemFunCallbackStream.Plo ./$(DEPDIR)/Stream.Plo \
./$(DEPDIR)/StreamParameters.Plo ./$(DEPDIR)/System.Plo \
./$(DEPDIR)/SystemDeviceIterator.Plo \
./$(DEPDIR)/SystemHostApiIterator.Plo
am__mv = mv -f am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@ -213,7 +192,8 @@ am__define_uniq_tagged_files = \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)` done | $(am__uniquify_input)`
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
@ -227,9 +207,8 @@ AWK = @AWK@
CC = @CC@ CC = @CC@
CCDEPMODE = @CCDEPMODE@ CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@ CXX = @CXX@
CXXCPP = @CXXCPP@ CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@ CXXDEPMODE = @CXXDEPMODE@
@ -245,7 +224,6 @@ ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@ ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
FGREP = @FGREP@ FGREP = @FGREP@
GREP = @GREP@ GREP = @GREP@
@ -262,7 +240,6 @@ LIBTOOL = @LIBTOOL@
LIPO = @LIPO@ LIPO = @LIPO@
LN_S = @LN_S@ LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@ LTLIBOBJS = @LTLIBOBJS@
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
LT_VERSION_INFO = @LT_VERSION_INFO@ LT_VERSION_INFO = @LT_VERSION_INFO@
MAINT = @MAINT@ MAINT = @MAINT@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
@ -334,7 +311,6 @@ pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@ psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@ srcdir = @srcdir@
@ -382,13 +358,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
$(am__cd) $(top_srcdir) && \ $(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu lib/Makefile $(AUTOMAKE) --gnu lib/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \
*config.status*) \ *config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \ *) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac; esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@ -444,28 +421,22 @@ mostlyclean-compile:
distclean-compile: distclean-compile:
-rm -f *.tab.c -rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BlockingStream.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BlockingStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CFunCallbackStream.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CFunCallbackStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CallbackInterface.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CallbackInterface.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CallbackStream.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CallbackStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppFunCallbackStream.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppFunCallbackStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Device.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Device.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DirectionSpecificStreamParameters.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DirectionSpecificStreamParameters.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exception.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exception.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HostApi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HostApi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InterfaceCallbackStream.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InterfaceCallbackStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemFunCallbackStream.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemFunCallbackStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Stream.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Stream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamParameters.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamParameters.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/System.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/System.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SystemDeviceIterator.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SystemDeviceIterator.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SystemHostApiIterator.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SystemHostApiIterator.Plo@am__quote@
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade)
.cxx.o: .cxx.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@ -657,10 +628,8 @@ cscopelist-am: $(am__tagged_files)
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES) distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \ list='$(DISTFILES)'; \
@ -733,22 +702,7 @@ clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
mostlyclean-am mostlyclean-am
distclean: distclean-am distclean: distclean-am
-rm -f ./$(DEPDIR)/BlockingStream.Plo -rm -rf ./$(DEPDIR)
-rm -f ./$(DEPDIR)/CFunCallbackStream.Plo
-rm -f ./$(DEPDIR)/CallbackInterface.Plo
-rm -f ./$(DEPDIR)/CallbackStream.Plo
-rm -f ./$(DEPDIR)/CppFunCallbackStream.Plo
-rm -f ./$(DEPDIR)/Device.Plo
-rm -f ./$(DEPDIR)/DirectionSpecificStreamParameters.Plo
-rm -f ./$(DEPDIR)/Exception.Plo
-rm -f ./$(DEPDIR)/HostApi.Plo
-rm -f ./$(DEPDIR)/InterfaceCallbackStream.Plo
-rm -f ./$(DEPDIR)/MemFunCallbackStream.Plo
-rm -f ./$(DEPDIR)/Stream.Plo
-rm -f ./$(DEPDIR)/StreamParameters.Plo
-rm -f ./$(DEPDIR)/System.Plo
-rm -f ./$(DEPDIR)/SystemDeviceIterator.Plo
-rm -f ./$(DEPDIR)/SystemHostApiIterator.Plo
-rm -f Makefile -rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \ distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags distclean-tags
@ -794,22 +748,7 @@ install-ps-am:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/BlockingStream.Plo -rm -rf ./$(DEPDIR)
-rm -f ./$(DEPDIR)/CFunCallbackStream.Plo
-rm -f ./$(DEPDIR)/CallbackInterface.Plo
-rm -f ./$(DEPDIR)/CallbackStream.Plo
-rm -f ./$(DEPDIR)/CppFunCallbackStream.Plo
-rm -f ./$(DEPDIR)/Device.Plo
-rm -f ./$(DEPDIR)/DirectionSpecificStreamParameters.Plo
-rm -f ./$(DEPDIR)/Exception.Plo
-rm -f ./$(DEPDIR)/HostApi.Plo
-rm -f ./$(DEPDIR)/InterfaceCallbackStream.Plo
-rm -f ./$(DEPDIR)/MemFunCallbackStream.Plo
-rm -f ./$(DEPDIR)/Stream.Plo
-rm -f ./$(DEPDIR)/StreamParameters.Plo
-rm -f ./$(DEPDIR)/System.Plo
-rm -f ./$(DEPDIR)/SystemDeviceIterator.Plo
-rm -f ./$(DEPDIR)/SystemHostApiIterator.Plo
-rm -f Makefile -rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic maintainer-clean-am: distclean-am maintainer-clean-generic
@ -830,9 +769,9 @@ uninstall-am: uninstall-libLTLIBRARIES
.MAKE: install-am install-strip .MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
ctags ctags-am distclean distclean-compile distclean-generic \ ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \ distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \ html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \ install-data-am install-dvi install-dvi-am install-exec \
@ -844,8 +783,6 @@ uninstall-am: uninstall-libLTLIBRARIES
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded. # Otherwise a system limit (for SysV at least) may be exceeded.

File diff suppressed because it is too large Load diff

View file

@ -9,73 +9,75 @@
namespace portaudio namespace portaudio
{ {
AsioDeviceAdapter::AsioDeviceAdapter(Device &device) AsioDeviceAdapter::AsioDeviceAdapter(Device &device)
{ {
if (device.hostApi().typeId() != paASIO) if (device.hostApi().typeId() != paASIO)
throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE); throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE);
device_ = &device; device_ = &device;
PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_, PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_,
&preferredBufferSize_, &granularity_); &preferredBufferSize_, &granularity_);
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
Device &AsioDeviceAdapter::device() Device &AsioDeviceAdapter::device()
{ {
return *device_; return *device_;
} }
long AsioDeviceAdapter::minBufferSize() const long AsioDeviceAdapter::minBufferSize() const
{ {
return minBufferSize_; return minBufferSize_;
} }
long AsioDeviceAdapter::maxBufferSize() const long AsioDeviceAdapter::maxBufferSize() const
{ {
return maxBufferSize_; return maxBufferSize_;
} }
long AsioDeviceAdapter::preferredBufferSize() const long AsioDeviceAdapter::preferredBufferSize() const
{ {
return preferredBufferSize_; return preferredBufferSize_;
} }
long AsioDeviceAdapter::granularity() const long AsioDeviceAdapter::granularity() const
{ {
return granularity_; return granularity_;
} }
void AsioDeviceAdapter::showControlPanel(void *systemSpecific) void AsioDeviceAdapter::showControlPanel(void *systemSpecific)
{ {
PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific); PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific);
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const
{ {
const char *channelName; const char *channelName;
PaError err = PaAsio_GetInputChannelName(device_->index(), channelIndex, &channelName); PaError err = PaAsio_GetInputChannelName(device_->index(), channelIndex, &channelName);
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
return channelName; return channelName;
} }
const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const
{ {
const char *channelName; const char *channelName;
PaError err = PaAsio_GetOutputChannelName(device_->index(), channelIndex, &channelName); PaError err = PaAsio_GetOutputChannelName(device_->index(), channelIndex, &channelName);
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
return channelName; return channelName;
} }
} }

View file

@ -8,90 +8,93 @@
namespace portaudio namespace portaudio
{ {
// -------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------
BlockingStream::BlockingStream() BlockingStream::BlockingStream()
{ {
} }
BlockingStream::BlockingStream(const StreamParameters &parameters) BlockingStream::BlockingStream(const StreamParameters &parameters)
{ {
open(parameters); open(parameters);
} }
BlockingStream::~BlockingStream() BlockingStream::~BlockingStream()
{ {
try try
{ {
close(); close();
} }
catch (...) catch (...)
{ {
// ignore all errors // ignore all errors
} }
} }
// -------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------
void BlockingStream::open(const StreamParameters &parameters) void BlockingStream::open(const StreamParameters &parameters)
{ {
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), NULL, NULL); parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), NULL, NULL);
if (err != paNoError) if (err != paNoError)
{ {
throw PaException(err); throw PaException(err);
} }
} }
// -------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------
void BlockingStream::read(void *buffer, unsigned long numFrames) void BlockingStream::read(void *buffer, unsigned long numFrames)
{ {
PaError err = Pa_ReadStream(stream_, buffer, numFrames); PaError err = Pa_ReadStream(stream_, buffer, numFrames);
if (err != paNoError) if (err != paNoError)
{ {
throw PaException(err); throw PaException(err);
} }
} }
void BlockingStream::write(const void *buffer, unsigned long numFrames) void BlockingStream::write(const void *buffer, unsigned long numFrames)
{ {
PaError err = Pa_WriteStream(stream_, buffer, numFrames); PaError err = Pa_WriteStream(stream_, buffer, numFrames);
if (err != paNoError) if (err != paNoError)
{ {
throw PaException(err); throw PaException(err);
} }
} }
// -------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------
signed long BlockingStream::availableReadSize() const signed long BlockingStream::availableReadSize() const
{ {
signed long avail = Pa_GetStreamReadAvailable(stream_); signed long avail = Pa_GetStreamReadAvailable(stream_);
if (avail < 0) if (avail < 0)
{ {
throw PaException(avail); throw PaException(avail);
} }
return avail; return avail;
} }
signed long BlockingStream::availableWriteSize() const signed long BlockingStream::availableWriteSize() const
{ {
signed long avail = Pa_GetStreamWriteAvailable(stream_); signed long avail = Pa_GetStreamWriteAvailable(stream_);
if (avail < 0) if (avail < 0)
{ {
throw PaException(avail); throw PaException(avail);
} }
return avail; return avail;
} }
// -------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------
} // portaudio } // portaudio

View file

@ -5,37 +5,37 @@
namespace portaudio namespace portaudio
{ {
CFunCallbackStream::CFunCallbackStream() CFunCallbackStream::CFunCallbackStream()
{ {
} }
CFunCallbackStream::CFunCallbackStream(const StreamParameters &parameters, PaStreamCallback *funPtr, void *userData) CFunCallbackStream::CFunCallbackStream(const StreamParameters &parameters, PaStreamCallback *funPtr, void *userData)
{ {
open(parameters, funPtr, userData); open(parameters, funPtr, userData);
} }
CFunCallbackStream::~CFunCallbackStream() CFunCallbackStream::~CFunCallbackStream()
{ {
try try
{ {
close(); close();
} }
catch (...) catch (...)
{ {
// ignore all errors // ignore all errors
} }
} }
// ---------------------------------------------------------------------------------== // ---------------------------------------------------------------------------------==
void CFunCallbackStream::open(const StreamParameters &parameters, PaStreamCallback *funPtr, void *userData) void CFunCallbackStream::open(const StreamParameters &parameters, PaStreamCallback *funPtr, void *userData)
{ {
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), funPtr, userData); parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), funPtr, userData);
if (err != paNoError) if (err != paNoError)
{ {
throw PaException(err); throw PaException(err);
} }
} }
} }

View file

@ -3,21 +3,23 @@
namespace portaudio namespace portaudio
{ {
namespace impl namespace impl
{ {
////// //////
/// Adapts any CallbackInterface object to a C-callable function (ie this function). A /// Adapts any CallbackInterface object to a C-callable function (ie this function). A
/// pointer to the object should be passed as ``userData'' when setting up the callback. /// pointer to the object should be passed as ``userData'' when setting up the callback.
////// //////
int callbackInterfaceToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, int callbackInterfaceToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData) const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
{ {
CallbackInterface *cb = static_cast<CallbackInterface *>(userData); CallbackInterface *cb = static_cast<CallbackInterface *>(userData);
return cb->paCallbackFun(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags); return cb->paCallbackFun(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags);
} }
} // namespace impl } // namespace impl
} // namespace portaudio } // namespace portaudio

View file

@ -2,19 +2,19 @@
namespace portaudio namespace portaudio
{ {
CallbackStream::CallbackStream() CallbackStream::CallbackStream()
{ {
} }
CallbackStream::~CallbackStream() CallbackStream::~CallbackStream()
{ {
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
double CallbackStream::cpuLoad() const double CallbackStream::cpuLoad() const
{ {
return Pa_GetStreamCpuLoad(stream_); return Pa_GetStreamCpuLoad(stream_);
} }
} // namespace portaudio } // namespace portaudio

View file

@ -5,77 +5,77 @@
namespace portaudio namespace portaudio
{ {
namespace impl namespace impl
{ {
////// //////
/// Adapts any a C++ callback to a C-callable function (ie this function). A /// Adapts any a C++ callback to a C-callable function (ie this function). A
/// pointer to a struct with the C++ function pointer and the actual user data should be /// pointer to a struct with the C++ function pointer and the actual user data should be
/// passed as the ``userData'' parameter when setting up the callback. /// passed as the ``userData'' parameter when setting up the callback.
////// //////
int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData) const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
{ {
FunCallbackStream::CppToCCallbackData *data = static_cast<FunCallbackStream::CppToCCallbackData *>(userData); FunCallbackStream::CppToCCallbackData *data = static_cast<FunCallbackStream::CppToCCallbackData *>(userData);
return data->funPtr(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags, data->userData); return data->funPtr(inputBuffer, outputBuffer, numFrames, timeInfo, statusFlags, data->userData);
} }
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
FunCallbackStream::CppToCCallbackData::CppToCCallbackData() FunCallbackStream::CppToCCallbackData::CppToCCallbackData()
{ {
} }
FunCallbackStream::CppToCCallbackData::CppToCCallbackData(CallbackFunPtr funPtr, void *userData) : funPtr(funPtr), userData(userData) FunCallbackStream::CppToCCallbackData::CppToCCallbackData(CallbackFunPtr funPtr, void *userData) : funPtr(funPtr), userData(userData)
{ {
} }
void FunCallbackStream::CppToCCallbackData::init(CallbackFunPtr funPtr, void *userData) void FunCallbackStream::CppToCCallbackData::init(CallbackFunPtr funPtr, void *userData)
{ {
this->funPtr = funPtr; this->funPtr = funPtr;
this->userData = userData; this->userData = userData;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
FunCallbackStream::FunCallbackStream() FunCallbackStream::FunCallbackStream()
{ {
} }
FunCallbackStream::FunCallbackStream(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData) : adapterData_(funPtr, userData) FunCallbackStream::FunCallbackStream(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData) : adapterData_(funPtr, userData)
{ {
open(parameters); open(parameters);
} }
FunCallbackStream::~FunCallbackStream() FunCallbackStream::~FunCallbackStream()
{ {
try try
{ {
close(); close();
} }
catch (...) catch (...)
{ {
// ignore all errors // ignore all errors
} }
} }
void FunCallbackStream::open(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData) void FunCallbackStream::open(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData)
{ {
adapterData_.init(funPtr, userData); adapterData_.init(funPtr, userData);
open(parameters); open(parameters);
} }
void FunCallbackStream::open(const StreamParameters &parameters) void FunCallbackStream::open(const StreamParameters &parameters)
{ {
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::cppCallbackToPaCallbackAdapter, parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::cppCallbackToPaCallbackAdapter,
static_cast<void *>(&adapterData_)); static_cast<void *>(&adapterData_));
if (err != paNoError) if (err != paNoError)
{ {
throw PaException(err); throw PaException(err);
} }
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} }

View file

@ -9,158 +9,160 @@
namespace portaudio namespace portaudio
{ {
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
Device::Device(PaDeviceIndex index) : index_(index) Device::Device(PaDeviceIndex index) : index_(index)
{ {
if (index == paNoDevice) if (index == paNoDevice)
info_ = NULL; info_ = NULL;
else else
info_ = Pa_GetDeviceInfo(index); info_ = Pa_GetDeviceInfo(index);
} }
Device::~Device() Device::~Device()
{ {
} }
PaDeviceIndex Device::index() const PaDeviceIndex Device::index() const
{ {
return index_; return index_;
} }
const char *Device::name() const const char *Device::name() const
{ {
if (info_ == NULL) if (info_ == NULL)
return ""; return "";
return info_->name; return info_->name;
} }
int Device::maxInputChannels() const int Device::maxInputChannels() const
{ {
if (info_ == NULL) if (info_ == NULL)
return 0; return 0;
return info_->maxInputChannels; return info_->maxInputChannels;
} }
int Device::maxOutputChannels() const int Device::maxOutputChannels() const
{ {
if (info_ == NULL) if (info_ == NULL)
return 0; return 0;
return info_->maxOutputChannels; return info_->maxOutputChannels;
} }
PaTime Device::defaultLowInputLatency() const PaTime Device::defaultLowInputLatency() const
{ {
if (info_ == NULL) if (info_ == NULL)
return static_cast<PaTime>(0.0); return static_cast<PaTime>(0.0);
return info_->defaultLowInputLatency; return info_->defaultLowInputLatency;
} }
PaTime Device::defaultHighInputLatency() const PaTime Device::defaultHighInputLatency() const
{ {
if (info_ == NULL) if (info_ == NULL)
return static_cast<PaTime>(0.0); return static_cast<PaTime>(0.0);
return info_->defaultHighInputLatency; return info_->defaultHighInputLatency;
} }
PaTime Device::defaultLowOutputLatency() const PaTime Device::defaultLowOutputLatency() const
{ {
if (info_ == NULL) if (info_ == NULL)
return static_cast<PaTime>(0.0); return static_cast<PaTime>(0.0);
return info_->defaultLowOutputLatency; return info_->defaultLowOutputLatency;
} }
PaTime Device::defaultHighOutputLatency() const PaTime Device::defaultHighOutputLatency() const
{ {
if (info_ == NULL) if (info_ == NULL)
return static_cast<PaTime>(0.0); return static_cast<PaTime>(0.0);
return info_->defaultHighOutputLatency; return info_->defaultHighOutputLatency;
} }
double Device::defaultSampleRate() const double Device::defaultSampleRate() const
{ {
if (info_ == NULL) if (info_ == NULL)
return 0.0; return 0.0;
return info_->defaultSampleRate; return info_->defaultSampleRate;
} }
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
bool Device::isInputOnlyDevice() const bool Device::isInputOnlyDevice() const
{ {
return (maxOutputChannels() == 0); return (maxOutputChannels() == 0);
} }
bool Device::isOutputOnlyDevice() const bool Device::isOutputOnlyDevice() const
{ {
return (maxInputChannels() == 0); return (maxInputChannels() == 0);
} }
bool Device::isFullDuplexDevice() const bool Device::isFullDuplexDevice() const
{ {
return (maxInputChannels() > 0 && maxOutputChannels() > 0); return (maxInputChannels() > 0 && maxOutputChannels() > 0);
} }
bool Device::isSystemDefaultInputDevice() const bool Device::isSystemDefaultInputDevice() const
{ {
return (System::instance().defaultInputDevice() == *this); return (System::instance().defaultInputDevice() == *this);
} }
bool Device::isSystemDefaultOutputDevice() const bool Device::isSystemDefaultOutputDevice() const
{ {
return (System::instance().defaultOutputDevice() == *this); return (System::instance().defaultOutputDevice() == *this);
} }
bool Device::isHostApiDefaultInputDevice() const bool Device::isHostApiDefaultInputDevice() const
{ {
return (hostApi().defaultInputDevice() == *this); return (hostApi().defaultInputDevice() == *this);
} }
bool Device::isHostApiDefaultOutputDevice() const bool Device::isHostApiDefaultOutputDevice() const
{ {
return (hostApi().defaultOutputDevice() == *this); return (hostApi().defaultOutputDevice() == *this);
} }
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
bool Device::operator==(const Device &rhs) const bool Device::operator==(const Device &rhs) const
{ {
return (index_ == rhs.index_); return (index_ == rhs.index_);
} }
bool Device::operator!=(const Device &rhs) const bool Device::operator!=(const Device &rhs) const
{ {
return !(*this == rhs); return !(*this == rhs);
} }
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
HostApi &Device::hostApi() HostApi &Device::hostApi()
{ {
// NOTE: will cause an exception when called for the null device // NOTE: will cause an exception when called for the null device
if (info_ == NULL) if (info_ == NULL)
throw PaException(paInternalError); throw PaException(paInternalError);
return System::instance().hostApiByIndex(info_->hostApi); return System::instance().hostApiByIndex(info_->hostApi);
} }
const HostApi &Device::hostApi() const const HostApi &Device::hostApi() const
{ {
// NOTE; will cause an exception when called for the null device // NOTE; will cause an exception when called for the null device
if (info_ == NULL) if (info_ == NULL)
throw PaException(paInternalError); throw PaException(paInternalError);
return System::instance().hostApiByIndex(info_->hostApi); return System::instance().hostApiByIndex(info_->hostApi);
} }
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -5,159 +5,159 @@
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Returns a `nil' DirectionSpecificStreamParameters object. This can be used to /// Returns a `nil' DirectionSpecificStreamParameters object. This can be used to
/// specify that one direction of a Stream is not required (i.e. when creating /// specify that one direction of a Stream is not required (i.e. when creating
/// a half-duplex Stream). All fields of the null DirectionSpecificStreamParameters /// a half-duplex Stream). All fields of the null DirectionSpecificStreamParameters
/// object are invalid except for the device and the number of channel, which are set /// object are invalid except for the device and the number of channel, which are set
/// to paNoDevice and 0 respectively. /// to paNoDevice and 0 respectively.
////// //////
DirectionSpecificStreamParameters DirectionSpecificStreamParameters::null() DirectionSpecificStreamParameters DirectionSpecificStreamParameters::null()
{ {
DirectionSpecificStreamParameters tmp; DirectionSpecificStreamParameters tmp;
tmp.paStreamParameters_.device = paNoDevice; tmp.paStreamParameters_.device = paNoDevice;
tmp.paStreamParameters_.channelCount = 0; tmp.paStreamParameters_.channelCount = 0;
return tmp; return tmp;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Default constructor -- all parameters will be uninitialized. /// Default constructor -- all parameters will be uninitialized.
////// //////
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters() DirectionSpecificStreamParameters::DirectionSpecificStreamParameters()
{ {
} }
////// //////
/// Constructor which sets all required fields. /// Constructor which sets all required fields.
////// //////
DirectionSpecificStreamParameters::DirectionSpecificStreamParameters(const Device &device, int numChannels, DirectionSpecificStreamParameters::DirectionSpecificStreamParameters(const Device &device, int numChannels,
SampleDataFormat format, bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo) SampleDataFormat format, bool interleaved, PaTime suggestedLatency, void *hostApiSpecificStreamInfo)
{ {
setDevice(device); setDevice(device);
setNumChannels(numChannels); setNumChannels(numChannels);
setSampleFormat(format, interleaved); setSampleFormat(format, interleaved);
setSuggestedLatency(suggestedLatency); setSuggestedLatency(suggestedLatency);
setHostApiSpecificStreamInfo(hostApiSpecificStreamInfo); setHostApiSpecificStreamInfo(hostApiSpecificStreamInfo);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
void DirectionSpecificStreamParameters::setDevice(const Device &device) void DirectionSpecificStreamParameters::setDevice(const Device &device)
{ {
paStreamParameters_.device = device.index(); paStreamParameters_.device = device.index();
} }
void DirectionSpecificStreamParameters::setNumChannels(int numChannels) void DirectionSpecificStreamParameters::setNumChannels(int numChannels)
{ {
paStreamParameters_.channelCount = numChannels; paStreamParameters_.channelCount = numChannels;
} }
void DirectionSpecificStreamParameters::setSampleFormat(SampleDataFormat format, bool interleaved) void DirectionSpecificStreamParameters::setSampleFormat(SampleDataFormat format, bool interleaved)
{ {
paStreamParameters_.sampleFormat = static_cast<PaSampleFormat>(format); paStreamParameters_.sampleFormat = static_cast<PaSampleFormat>(format);
if (!interleaved) if (!interleaved)
paStreamParameters_.sampleFormat |= paNonInterleaved; paStreamParameters_.sampleFormat |= paNonInterleaved;
} }
void DirectionSpecificStreamParameters::setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved) void DirectionSpecificStreamParameters::setHostApiSpecificSampleFormat(PaSampleFormat format, bool interleaved)
{ {
paStreamParameters_.sampleFormat = format; paStreamParameters_.sampleFormat = format;
paStreamParameters_.sampleFormat |= paCustomFormat; paStreamParameters_.sampleFormat |= paCustomFormat;
if (!interleaved) if (!interleaved)
paStreamParameters_.sampleFormat |= paNonInterleaved; paStreamParameters_.sampleFormat |= paNonInterleaved;
} }
void DirectionSpecificStreamParameters::setSuggestedLatency(PaTime latency) void DirectionSpecificStreamParameters::setSuggestedLatency(PaTime latency)
{ {
paStreamParameters_.suggestedLatency = latency; paStreamParameters_.suggestedLatency = latency;
} }
void DirectionSpecificStreamParameters::setHostApiSpecificStreamInfo(void *streamInfo) void DirectionSpecificStreamParameters::setHostApiSpecificStreamInfo(void *streamInfo)
{ {
paStreamParameters_.hostApiSpecificStreamInfo = streamInfo; paStreamParameters_.hostApiSpecificStreamInfo = streamInfo;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters() PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters()
{ {
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice) if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
return &paStreamParameters_; return &paStreamParameters_;
else else
return NULL; return NULL;
} }
const PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters() const const PaStreamParameters *DirectionSpecificStreamParameters::paStreamParameters() const
{ {
if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice) if (paStreamParameters_.channelCount > 0 && paStreamParameters_.device != paNoDevice)
return &paStreamParameters_; return &paStreamParameters_;
else else
return NULL; return NULL;
} }
Device &DirectionSpecificStreamParameters::device() const Device &DirectionSpecificStreamParameters::device() const
{ {
return System::instance().deviceByIndex(paStreamParameters_.device); return System::instance().deviceByIndex(paStreamParameters_.device);
} }
int DirectionSpecificStreamParameters::numChannels() const int DirectionSpecificStreamParameters::numChannels() const
{ {
return paStreamParameters_.channelCount; return paStreamParameters_.channelCount;
} }
////// //////
/// Returns the (non host api-specific) sample format, without including /// Returns the (non host api-specific) sample format, without including
/// the paNonInterleaved flag. If the sample format is host api-spefific, /// the paNonInterleaved flag. If the sample format is host api-spefific,
/// INVALID_FORMAT (0) will be returned. /// INVALID_FORMAT (0) will be returned.
////// //////
SampleDataFormat DirectionSpecificStreamParameters::sampleFormat() const SampleDataFormat DirectionSpecificStreamParameters::sampleFormat() const
{ {
if (isSampleFormatHostApiSpecific()) if (isSampleFormatHostApiSpecific())
return INVALID_FORMAT; return INVALID_FORMAT;
else else
return static_cast<SampleDataFormat>(paStreamParameters_.sampleFormat & ~paNonInterleaved); return static_cast<SampleDataFormat>(paStreamParameters_.sampleFormat & ~paNonInterleaved);
} }
bool DirectionSpecificStreamParameters::isSampleFormatInterleaved() const bool DirectionSpecificStreamParameters::isSampleFormatInterleaved() const
{ {
return ((paStreamParameters_.sampleFormat & paNonInterleaved) == 0); return ((paStreamParameters_.sampleFormat & paNonInterleaved) == 0);
} }
bool DirectionSpecificStreamParameters::isSampleFormatHostApiSpecific() const bool DirectionSpecificStreamParameters::isSampleFormatHostApiSpecific() const
{ {
return ((paStreamParameters_.sampleFormat & paCustomFormat) == 0); return ((paStreamParameters_.sampleFormat & paCustomFormat) == 0);
} }
////// //////
/// Returns the host api-specific sample format, without including any /// Returns the host api-specific sample format, without including any
/// paCustomFormat or paNonInterleaved flags. Will return 0 if the sample format is /// paCustomFormat or paNonInterleaved flags. Will return 0 if the sample format is
/// not host api-specific. /// not host api-specific.
////// //////
PaSampleFormat DirectionSpecificStreamParameters::hostApiSpecificSampleFormat() const PaSampleFormat DirectionSpecificStreamParameters::hostApiSpecificSampleFormat() const
{ {
if (isSampleFormatHostApiSpecific()) if (isSampleFormatHostApiSpecific())
return paStreamParameters_.sampleFormat & ~paCustomFormat & ~paNonInterleaved; return paStreamParameters_.sampleFormat & ~paCustomFormat & ~paNonInterleaved;
else else
return 0; return 0;
} }
PaTime DirectionSpecificStreamParameters::suggestedLatency() const PaTime DirectionSpecificStreamParameters::suggestedLatency() const
{ {
return paStreamParameters_.suggestedLatency; return paStreamParameters_.suggestedLatency;
} }
void *DirectionSpecificStreamParameters::hostApiSpecificStreamInfo() const void *DirectionSpecificStreamParameters::hostApiSpecificStreamInfo() const
{ {
return paStreamParameters_.hostApiSpecificStreamInfo; return paStreamParameters_.hostApiSpecificStreamInfo;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -2,120 +2,122 @@
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
// PaException: // PaException:
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Wraps a PortAudio error into a PortAudioCpp PaException. /// Wraps a PortAudio error into a PortAudioCpp PaException.
////// //////
PaException::PaException(PaError error) : error_(error) PaException::PaException(PaError error) : error_(error)
{ {
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Alias for paErrorText(), to have std::exception compliance. /// Alias for paErrorText(), to have std::exception compliance.
////// //////
const char *PaException::what() const throw() const char *PaException::what() const throw()
{ {
return paErrorText(); return paErrorText();
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Returns the PortAudio error code (PaError). /// Returns the PortAudio error code (PaError).
////// //////
PaError PaException::paError() const PaError PaException::paError() const
{ {
return error_; return error_;
} }
////// //////
/// Returns the error as a (zero-terminated) text string. /// Returns the error as a (zero-terminated) text string.
////// //////
const char *PaException::paErrorText() const const char *PaException::paErrorText() const
{ {
return Pa_GetErrorText(error_); return Pa_GetErrorText(error_);
} }
////// //////
/// Returns true is the error is a HostApi error. /// Returns true is the error is a HostApi error.
////// //////
bool PaException::isHostApiError() const bool PaException::isHostApiError() const
{ {
return (error_ == paUnanticipatedHostError); return (error_ == paUnanticipatedHostError);
} }
////// //////
/// Returns the last HostApi error (which is the current one if /// Returns the last HostApi error (which is the current one if
/// isHostApiError() returns true) as an error code. /// isHostApiError() returns true) as an error code.
////// //////
long PaException::lastHostApiError() const long PaException::lastHostApiError() const
{ {
return Pa_GetLastHostErrorInfo()->errorCode; return Pa_GetLastHostErrorInfo()->errorCode;
} }
////// //////
/// Returns the last HostApi error (which is the current one if /// Returns the last HostApi error (which is the current one if
/// isHostApiError() returns true) as a (zero-terminated) text /// isHostApiError() returns true) as a (zero-terminated) text
/// string, if it's available. /// string, if it's available.
////// //////
const char *PaException::lastHostApiErrorText() const const char *PaException::lastHostApiErrorText() const
{ {
return Pa_GetLastHostErrorInfo()->errorText; return Pa_GetLastHostErrorInfo()->errorText;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
bool PaException::operator==(const PaException &rhs) const bool PaException::operator==(const PaException &rhs) const
{ {
return (error_ == rhs.error_); return (error_ == rhs.error_);
} }
bool PaException::operator!=(const PaException &rhs) const bool PaException::operator!=(const PaException &rhs) const
{ {
return !(*this == rhs); return !(*this == rhs);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
// PaCppException: // PaCppException:
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
PaCppException::PaCppException(ExceptionSpecifier specifier) : specifier_(specifier) PaCppException::PaCppException(ExceptionSpecifier specifier) : specifier_(specifier)
{ {
} }
const char *PaCppException::what() const throw() const char *PaCppException::what() const throw()
{ {
switch (specifier_) switch (specifier_)
{ {
case UNABLE_TO_ADAPT_DEVICE: case UNABLE_TO_ADAPT_DEVICE:
{ {
return "Unable to adapt the given device to the specified host api specific device extension"; return "Unable to adapt the given device to the specified host api specific device extension";
} }
} }
return "Unknown exception"; return "Unknown exception";
} }
PaCppException::ExceptionSpecifier PaCppException::specifier() const PaCppException::ExceptionSpecifier PaCppException::specifier() const
{ {
return specifier_; return specifier_;
} }
bool PaCppException::operator==(const PaCppException &rhs) const bool PaCppException::operator==(const PaCppException &rhs) const
{ {
return (specifier_ == rhs.specifier_); return (specifier_ == rhs.specifier_);
} }
bool PaCppException::operator!=(const PaCppException &rhs) const bool PaCppException::operator!=(const PaCppException &rhs) const
{ {
return !(*this == rhs); return !(*this == rhs);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -8,114 +8,114 @@
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
HostApi::HostApi(PaHostApiIndex index) : devices_(NULL) HostApi::HostApi(PaHostApiIndex index) : devices_(NULL)
{ {
try try
{ {
info_ = Pa_GetHostApiInfo(index); info_ = Pa_GetHostApiInfo(index);
// Create and populate devices array: // Create and populate devices array:
int numDevices = deviceCount(); int numDevices = deviceCount();
devices_ = new Device*[numDevices]; devices_ = new Device*[numDevices];
for (int i = 0; i < numDevices; ++i) for (int i = 0; i < numDevices; ++i)
{ {
PaDeviceIndex deviceIndex = Pa_HostApiDeviceIndexToDeviceIndex(index, i); PaDeviceIndex deviceIndex = Pa_HostApiDeviceIndexToDeviceIndex(index, i);
if (deviceIndex < 0) if (deviceIndex < 0)
{ {
throw PaException(deviceIndex); throw PaException(deviceIndex);
} }
devices_[i] = &System::instance().deviceByIndex(deviceIndex); devices_[i] = &System::instance().deviceByIndex(deviceIndex);
} }
} }
catch (const std::exception &e) catch (const std::exception &e)
{ {
// Delete any (partially) constructed objects (deconstructor isn't called): // Delete any (partially) constructed objects (deconstructor isn't called):
delete[] devices_; // devices_ is either NULL or valid delete[] devices_; // devices_ is either NULL or valid
// Re-throw exception: // Re-throw exception:
throw e; throw e;
} }
} }
HostApi::~HostApi() HostApi::~HostApi()
{ {
// Destroy devices array: // Destroy devices array:
delete[] devices_; delete[] devices_;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
PaHostApiTypeId HostApi::typeId() const PaHostApiTypeId HostApi::typeId() const
{ {
return info_->type; return info_->type;
} }
PaHostApiIndex HostApi::index() const PaHostApiIndex HostApi::index() const
{ {
PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(typeId()); PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(typeId());
if (index < 0) if (index < 0)
throw PaException(index); throw PaException(index);
return index; return index;
} }
const char *HostApi::name() const const char *HostApi::name() const
{ {
return info_->name; return info_->name;
} }
int HostApi::deviceCount() const int HostApi::deviceCount() const
{ {
return info_->deviceCount; return info_->deviceCount;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
HostApi::DeviceIterator HostApi::devicesBegin() HostApi::DeviceIterator HostApi::devicesBegin()
{ {
DeviceIterator tmp; DeviceIterator tmp;
tmp.ptr_ = &devices_[0]; // begin (first element) tmp.ptr_ = &devices_[0]; // begin (first element)
return tmp; return tmp;
} }
HostApi::DeviceIterator HostApi::devicesEnd() HostApi::DeviceIterator HostApi::devicesEnd()
{ {
DeviceIterator tmp; DeviceIterator tmp;
tmp.ptr_ = &devices_[deviceCount()]; // end (one past last element) tmp.ptr_ = &devices_[deviceCount()]; // end (one past last element)
return tmp; return tmp;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
Device &HostApi::defaultInputDevice() const Device &HostApi::defaultInputDevice() const
{ {
return System::instance().deviceByIndex(info_->defaultInputDevice); return System::instance().deviceByIndex(info_->defaultInputDevice);
} }
Device &HostApi::defaultOutputDevice() const Device &HostApi::defaultOutputDevice() const
{ {
return System::instance().deviceByIndex(info_->defaultOutputDevice); return System::instance().deviceByIndex(info_->defaultOutputDevice);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
bool HostApi::operator==(const HostApi &rhs) const bool HostApi::operator==(const HostApi &rhs) const
{ {
return (typeId() == rhs.typeId()); return (typeId() == rhs.typeId());
} }
bool HostApi::operator!=(const HostApi &rhs) const bool HostApi::operator!=(const HostApi &rhs) const
{ {
return !(*this == rhs); return !(*this == rhs);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -7,39 +7,39 @@
namespace portaudio namespace portaudio
{ {
// ---------------------------------------------------------------------------------== // ---------------------------------------------------------------------------------==
InterfaceCallbackStream::InterfaceCallbackStream() InterfaceCallbackStream::InterfaceCallbackStream()
{ {
} }
InterfaceCallbackStream::InterfaceCallbackStream(const StreamParameters &parameters, CallbackInterface &instance) InterfaceCallbackStream::InterfaceCallbackStream(const StreamParameters &parameters, CallbackInterface &instance)
{ {
open(parameters, instance); open(parameters, instance);
} }
InterfaceCallbackStream::~InterfaceCallbackStream() InterfaceCallbackStream::~InterfaceCallbackStream()
{ {
try try
{ {
close(); close();
} }
catch (...) catch (...)
{ {
// ignore all errors // ignore all errors
} }
} }
// ---------------------------------------------------------------------------------== // ---------------------------------------------------------------------------------==
void InterfaceCallbackStream::open(const StreamParameters &parameters, CallbackInterface &instance) void InterfaceCallbackStream::open(const StreamParameters &parameters, CallbackInterface &instance)
{ {
PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(),
parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter, static_cast<void *>(&instance)); parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter, static_cast<void *>(&instance));
if (err != paNoError) if (err != paNoError)
{ {
throw PaException(err); throw PaException(err);
} }
} }
} }

View file

@ -1,3 +1,4 @@
#include "portaudiocpp/MemFunCallbackStream.hxx" #include "portaudiocpp/MemFunCallbackStream.hxx"
// (... template class ...) // (... template class ...)

View file

@ -8,188 +8,188 @@
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
Stream::Stream() : stream_(NULL) Stream::Stream() : stream_(NULL)
{ {
} }
Stream::~Stream() Stream::~Stream()
{ {
// (can't call close here, // (can't call close here,
// the derived class should atleast call // the derived class should atleast call
// close() in it's deconstructor) // close() in it's deconstructor)
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Closes the Stream if it's open, else does nothing. /// Closes the Stream if it's open, else does nothing.
////// //////
void Stream::close() void Stream::close()
{ {
if (isOpen() && System::exists()) if (isOpen() && System::exists())
{ {
PaError err = Pa_CloseStream(stream_); PaError err = Pa_CloseStream(stream_);
stream_ = NULL; stream_ = NULL;
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
} }
////// //////
/// Returns true if the Stream is open. /// Returns true if the Stream is open.
////// //////
bool Stream::isOpen() const bool Stream::isOpen() const
{ {
return (stream_ != NULL); return (stream_ != NULL);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
void Stream::setStreamFinishedCallback(PaStreamFinishedCallback *callback) void Stream::setStreamFinishedCallback(PaStreamFinishedCallback *callback)
{ {
PaError err = Pa_SetStreamFinishedCallback(stream_, callback); PaError err = Pa_SetStreamFinishedCallback(stream_, callback);
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
void Stream::start() void Stream::start()
{ {
PaError err = Pa_StartStream(stream_); PaError err = Pa_StartStream(stream_);
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
void Stream::stop() void Stream::stop()
{ {
PaError err = Pa_StopStream(stream_); PaError err = Pa_StopStream(stream_);
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
void Stream::abort() void Stream::abort()
{ {
PaError err = Pa_AbortStream(stream_); PaError err = Pa_AbortStream(stream_);
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
bool Stream::isStopped() const bool Stream::isStopped() const
{ {
PaError ret = Pa_IsStreamStopped(stream_); PaError ret = Pa_IsStreamStopped(stream_);
if (ret < 0) if (ret < 0)
throw PaException(ret); throw PaException(ret);
return (ret == 1); return (ret == 1);
} }
bool Stream::isActive() const bool Stream::isActive() const
{ {
PaError ret = Pa_IsStreamActive(stream_); PaError ret = Pa_IsStreamActive(stream_);
if (ret < 0) if (ret < 0)
throw PaException(ret); throw PaException(ret);
return (ret == 1); return (ret == 1);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Returns the best known input latency for the Stream. This value may differ from the /// Returns the best known input latency for the Stream. This value may differ from the
/// suggested input latency set in the StreamParameters. Includes all sources of /// suggested input latency set in the StreamParameters. Includes all sources of
/// latency known to PortAudio such as internal buffering, and Host API reported latency. /// latency known to PortAudio such as internal buffering, and Host API reported latency.
/// Doesn't include any estimates of unknown latency. /// Doesn't include any estimates of unknown latency.
////// //////
PaTime Stream::inputLatency() const PaTime Stream::inputLatency() const
{ {
const PaStreamInfo *info = Pa_GetStreamInfo(stream_); const PaStreamInfo *info = Pa_GetStreamInfo(stream_);
if (info == NULL) if (info == NULL)
{ {
throw PaException(paInternalError); throw PaException(paInternalError);
return PaTime(0.0); return PaTime(0.0);
} }
return info->inputLatency; return info->inputLatency;
} }
////// //////
/// Returns the best known output latency for the Stream. This value may differ from the /// Returns the best known output latency for the Stream. This value may differ from the
/// suggested output latency set in the StreamParameters. Includes all sources of /// suggested output latency set in the StreamParameters. Includes all sources of
/// latency known to PortAudio such as internal buffering, and Host API reported latency. /// latency known to PortAudio such as internal buffering, and Host API reported latency.
/// Doesn't include any estimates of unknown latency. /// Doesn't include any estimates of unknown latency.
////// //////
PaTime Stream::outputLatency() const PaTime Stream::outputLatency() const
{ {
const PaStreamInfo *info = Pa_GetStreamInfo(stream_); const PaStreamInfo *info = Pa_GetStreamInfo(stream_);
if (info == NULL) if (info == NULL)
{ {
throw PaException(paInternalError); throw PaException(paInternalError);
return PaTime(0.0); return PaTime(0.0);
} }
return info->outputLatency; return info->outputLatency;
} }
////// //////
/// Returns the sample rate of the Stream. Usually this will be the /// Returns the sample rate of the Stream. Usually this will be the
/// best known estimate of the used sample rate. For instance when opening a /// best known estimate of the used sample rate. For instance when opening a
/// Stream setting 44100.0 Hz in the StreamParameters, the actual sample /// Stream setting 44100.0 Hz in the StreamParameters, the actual sample
/// rate might be something like 44103.2 Hz (due to imperfections in the /// rate might be something like 44103.2 Hz (due to imperfections in the
/// sound card hardware). /// sound card hardware).
////// //////
double Stream::sampleRate() const double Stream::sampleRate() const
{ {
const PaStreamInfo *info = Pa_GetStreamInfo(stream_); const PaStreamInfo *info = Pa_GetStreamInfo(stream_);
if (info == NULL) if (info == NULL)
{ {
throw PaException(paInternalError); throw PaException(paInternalError);
return 0.0; return 0.0;
} }
return info->sampleRate; return info->sampleRate;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
PaTime Stream::time() const PaTime Stream::time() const
{ {
return Pa_GetStreamTime(stream_); return Pa_GetStreamTime(stream_);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Accessor (const) for PortAudio PaStream pointer, useful for interfacing with /// Accessor (const) for PortAudio PaStream pointer, useful for interfacing with
/// PortAudio add-ons such as PortMixer for instance. Normally accessing this /// PortAudio add-ons such as PortMixer for instance. Normally accessing this
/// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's /// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's
/// functionality. /// functionality.
////// //////
const PaStream *Stream::paStream() const const PaStream *Stream::paStream() const
{ {
return stream_; return stream_;
} }
////// //////
/// Accessor (non-const) for PortAudio PaStream pointer, useful for interfacing with /// Accessor (non-const) for PortAudio PaStream pointer, useful for interfacing with
/// PortAudio add-ons such as PortMixer for instance. Normally accessing this /// PortAudio add-ons such as PortMixer for instance. Normally accessing this
/// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's /// pointer should not be needed as PortAudioCpp aims to provide all of PortAudio's
/// functionality. /// functionality.
////// //////
PaStream *Stream::paStream() PaStream *Stream::paStream()
{ {
return stream_; return stream_;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -6,155 +6,160 @@
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Default constructor; does nothing. /// Default constructor; does nothing.
////// //////
StreamParameters::StreamParameters() StreamParameters::StreamParameters()
{ {
} }
////// //////
/// Sets up the all parameters needed to open either a half-duplex or full-duplex Stream. /// Sets up the all parameters needed to open either a half-duplex or full-duplex Stream.
/// ///
/// @param inputParameters The parameters for the input direction of the to-be opened /// @param inputParameters The parameters for the input direction of the to-be opened
/// Stream or DirectionSpecificStreamParameters::null() for an output-only Stream. /// Stream or DirectionSpecificStreamParameters::null() for an output-only Stream.
/// @param outputParameters The parameters for the output direction of the to-be opened /// @param outputParameters The parameters for the output direction of the to-be opened
/// Stream or DirectionSpecificStreamParameters::null() for an input-only Stream. /// Stream or DirectionSpecificStreamParameters::null() for an input-only Stream.
/// @param sampleRate The to-be opened Stream's sample rate in Hz. /// @param sampleRate The to-be opened Stream's sample rate in Hz.
/// @param framesPerBuffer The number of frames per buffer for a CallbackStream, or /// @param framesPerBuffer The number of frames per buffer for a CallbackStream, or
/// the preferred buffer granularity for a BlockingStream. /// the preferred buffer granularity for a BlockingStream.
/// @param flags The flags for the to-be opened Stream; default paNoFlag. /// @param flags The flags for the to-be opened Stream; default paNoFlag.
////// //////
StreamParameters::StreamParameters(const DirectionSpecificStreamParameters &inputParameters, StreamParameters::StreamParameters(const DirectionSpecificStreamParameters &inputParameters,
const DirectionSpecificStreamParameters &outputParameters, double sampleRate, unsigned long framesPerBuffer, const DirectionSpecificStreamParameters &outputParameters, double sampleRate, unsigned long framesPerBuffer,
PaStreamFlags flags) : inputParameters_(inputParameters), outputParameters_(outputParameters), PaStreamFlags flags) : inputParameters_(inputParameters), outputParameters_(outputParameters),
sampleRate_(sampleRate), framesPerBuffer_(framesPerBuffer), flags_(flags) sampleRate_(sampleRate), framesPerBuffer_(framesPerBuffer), flags_(flags)
{ {
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
////// //////
/// Sets the requested sample rate. If this sample rate isn't supported by the hardware, the /// Sets the requested sample rate. If this sample rate isn't supported by the hardware, the
/// Stream will fail to open. The real-life sample rate used might differ slightly due to /// Stream will fail to open. The real-life sample rate used might differ slightly due to
/// imperfections in the sound card hardware; use Stream::sampleRate() to retrieve the /// imperfections in the sound card hardware; use Stream::sampleRate() to retreive the
/// best known estimate for this value. /// best known estimate for this value.
////// //////
void StreamParameters::setSampleRate(double sampleRate) void StreamParameters::setSampleRate(double sampleRate)
{ {
sampleRate_ = sampleRate; sampleRate_ = sampleRate;
} }
////// //////
/// Either the number of frames per buffer for a CallbackStream, or /// Either the number of frames per buffer for a CallbackStream, or
/// the preferred buffer granularity for a BlockingStream. See PortAudio /// the preferred buffer granularity for a BlockingStream. See PortAudio
/// documentation. /// documentation.
////// //////
void StreamParameters::setFramesPerBuffer(unsigned long framesPerBuffer) void StreamParameters::setFramesPerBuffer(unsigned long framesPerBuffer)
{ {
framesPerBuffer_ = framesPerBuffer; framesPerBuffer_ = framesPerBuffer;
} }
////// //////
/// Sets the specified flag or does nothing when the flag is already set. Doesn't /// Sets the specified flag or does nothing when the flag is already set. Doesn't
/// `unset' any previously existing flags (use clearFlags() for that). /// `unset' any previously existing flags (use clearFlags() for that).
////// //////
void StreamParameters::setFlag(PaStreamFlags flag) void StreamParameters::setFlag(PaStreamFlags flag)
{ {
flags_ |= flag; flags_ |= flag;
} }
////// //////
/// Unsets the specified flag or does nothing if the flag isn't set. Doesn't affect /// Unsets the specified flag or does nothing if the flag isn't set. Doesn't affect
/// any other flags. /// any other flags.
////// //////
void StreamParameters::unsetFlag(PaStreamFlags flag) void StreamParameters::unsetFlag(PaStreamFlags flag)
{ {
flags_ &= ~flag; flags_ &= ~flag;
} }
////// //////
/// Clears or `unsets' all set flags. /// Clears or `unsets' all set flags.
////// //////
void StreamParameters::clearFlags() void StreamParameters::clearFlags()
{ {
flags_ = paNoFlag; flags_ = paNoFlag;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
void StreamParameters::setInputParameters(const DirectionSpecificStreamParameters &parameters) void StreamParameters::setInputParameters(const DirectionSpecificStreamParameters &parameters)
{ {
inputParameters_ = parameters; inputParameters_ = parameters;
} }
void StreamParameters::setOutputParameters(const DirectionSpecificStreamParameters &parameters) void StreamParameters::setOutputParameters(const DirectionSpecificStreamParameters &parameters)
{ {
outputParameters_ = parameters; outputParameters_ = parameters;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
bool StreamParameters::isSupported() const bool StreamParameters::isSupported() const
{ {
return (Pa_IsFormatSupported(inputParameters_.paStreamParameters(), return (Pa_IsFormatSupported(inputParameters_.paStreamParameters(),
outputParameters_.paStreamParameters(), sampleRate_) == paFormatIsSupported); outputParameters_.paStreamParameters(), sampleRate_) == paFormatIsSupported);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
double StreamParameters::sampleRate() const double StreamParameters::sampleRate() const
{ {
return sampleRate_; return sampleRate_;
} }
unsigned long StreamParameters::framesPerBuffer() const unsigned long StreamParameters::framesPerBuffer() const
{ {
return framesPerBuffer_; return framesPerBuffer_;
} }
////// //////
/// Returns all currently set flags as a binary combined /// Returns all currently set flags as a binary combined
/// integer value (PaStreamFlags). Use isFlagSet() to /// integer value (PaStreamFlags). Use isFlagSet() to
/// avoid dealing with the bitmasks. /// avoid dealing with the bitmasks.
////// //////
PaStreamFlags StreamParameters::flags() const PaStreamFlags StreamParameters::flags() const
{ {
return flags_; return flags_;
} }
////// //////
/// Returns true if the specified flag is currently set /// Returns true if the specified flag is currently set
/// or false if it isn't. /// or false if it isn't.
////// //////
bool StreamParameters::isFlagSet(PaStreamFlags flag) const bool StreamParameters::isFlagSet(PaStreamFlags flag) const
{ {
return ((flags_ & flag) != 0); return ((flags_ & flag) != 0);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
DirectionSpecificStreamParameters &StreamParameters::inputParameters() DirectionSpecificStreamParameters &StreamParameters::inputParameters()
{ {
return inputParameters_; return inputParameters_;
} }
const DirectionSpecificStreamParameters &StreamParameters::inputParameters() const const DirectionSpecificStreamParameters &StreamParameters::inputParameters() const
{ {
return inputParameters_; return inputParameters_;
} }
DirectionSpecificStreamParameters &StreamParameters::outputParameters() DirectionSpecificStreamParameters &StreamParameters::outputParameters()
{ {
return outputParameters_; return outputParameters_;
} }
const DirectionSpecificStreamParameters &StreamParameters::outputParameters() const const DirectionSpecificStreamParameters &StreamParameters::outputParameters() const
{ {
return outputParameters_; return outputParameters_;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -12,296 +12,297 @@
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
// Static members: // Static members:
System *System::instance_ = NULL; System *System::instance_ = NULL;
int System::initCount_ = 0; int System::initCount_ = 0;
HostApi **System::hostApis_ = NULL; HostApi **System::hostApis_ = NULL;
Device **System::devices_ = NULL; Device **System::devices_ = NULL;
Device *System::nullDevice_ = NULL; Device *System::nullDevice_ = NULL;
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
int System::version() int System::version()
{ {
return Pa_GetVersion(); return Pa_GetVersion();
} }
const char *System::versionText() const char *System::versionText()
{ {
return Pa_GetVersionText(); return Pa_GetVersionText();
} }
void System::initialize() void System::initialize()
{ {
++initCount_; ++initCount_;
if (initCount_ == 1) if (initCount_ == 1)
{ {
// Create singleton: // Create singleton:
assert(instance_ == NULL); assert(instance_ == NULL);
instance_ = new System(); instance_ = new System();
// Initialize the PortAudio system: // Initialize the PortAudio system:
{ {
PaError err = Pa_Initialize(); PaError err = Pa_Initialize();
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
// Create and populate device array: // Create and populate device array:
{ {
int numDevices = instance().deviceCount(); int numDevices = instance().deviceCount();
devices_ = new Device*[numDevices]; devices_ = new Device*[numDevices];
for (int i = 0; i < numDevices; ++i) for (int i = 0; i < numDevices; ++i)
devices_[i] = new Device(i); devices_[i] = new Device(i);
} }
// Create and populate host api array: // Create and populate host api array:
{ {
int numHostApis = instance().hostApiCount(); int numHostApis = instance().hostApiCount();
hostApis_ = new HostApi*[numHostApis]; hostApis_ = new HostApi*[numHostApis];
for (int i = 0; i < numHostApis; ++i) for (int i = 0; i < numHostApis; ++i)
hostApis_[i] = new HostApi(i); hostApis_[i] = new HostApi(i);
} }
// Create null device: // Create null device:
nullDevice_ = new Device(paNoDevice); nullDevice_ = new Device(paNoDevice);
} }
} }
void System::terminate() void System::terminate()
{ {
PaError err = paNoError; PaError err = paNoError;
if (initCount_ == 1) if (initCount_ == 1)
{ {
// Destroy null device: // Destroy null device:
delete nullDevice_; delete nullDevice_;
// Destroy host api array: // Destroy host api array:
{ {
if (hostApis_ != NULL) if (hostApis_ != NULL)
{ {
int numHostApis = instance().hostApiCount(); int numHostApis = instance().hostApiCount();
for (int i = 0; i < numHostApis; ++i) for (int i = 0; i < numHostApis; ++i)
delete hostApis_[i]; delete hostApis_[i];
delete[] hostApis_; delete[] hostApis_;
hostApis_ = NULL; hostApis_ = NULL;
} }
} }
// Destroy device array: // Destroy device array:
{ {
if (devices_ != NULL) if (devices_ != NULL)
{ {
int numDevices = instance().deviceCount(); int numDevices = instance().deviceCount();
for (int i = 0; i < numDevices; ++i) for (int i = 0; i < numDevices; ++i)
delete devices_[i]; delete devices_[i];
delete[] devices_; delete[] devices_;
devices_ = NULL; devices_ = NULL;
} }
} }
// Terminate the PortAudio system: // Terminate the PortAudio system:
assert(instance_ != NULL); assert(instance_ != NULL);
err = Pa_Terminate(); err = Pa_Terminate();
// Destroy singleton: // Destroy singleton:
delete instance_; delete instance_;
instance_ = NULL; instance_ = NULL;
} }
if (initCount_ > 0) if (initCount_ > 0)
--initCount_; --initCount_;
if (err != paNoError) if (err != paNoError)
throw PaException(err); throw PaException(err);
} }
System &System::instance() System &System::instance()
{ {
assert(exists()); assert(exists());
return *instance_; return *instance_;
} }
bool System::exists() bool System::exists()
{ {
return (instance_ != NULL); return (instance_ != NULL);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
System::HostApiIterator System::hostApisBegin() System::HostApiIterator System::hostApisBegin()
{ {
System::HostApiIterator tmp; System::HostApiIterator tmp;
tmp.ptr_ = &hostApis_[0]; // begin (first element) tmp.ptr_ = &hostApis_[0]; // begin (first element)
return tmp; return tmp;
} }
System::HostApiIterator System::hostApisEnd() System::HostApiIterator System::hostApisEnd()
{ {
int count = hostApiCount(); int count = hostApiCount();
System::HostApiIterator tmp; System::HostApiIterator tmp;
tmp.ptr_ = &hostApis_[count]; // end (one past last element) tmp.ptr_ = &hostApis_[count]; // end (one past last element)
return tmp; return tmp;
} }
HostApi &System::defaultHostApi() HostApi &System::defaultHostApi()
{ {
PaHostApiIndex defaultHostApi = Pa_GetDefaultHostApi(); PaHostApiIndex defaultHostApi = Pa_GetDefaultHostApi();
if (defaultHostApi < 0) if (defaultHostApi < 0)
throw PaException(defaultHostApi); throw PaException(defaultHostApi);
return *hostApis_[defaultHostApi]; return *hostApis_[defaultHostApi];
} }
HostApi &System::hostApiByTypeId(PaHostApiTypeId type) HostApi &System::hostApiByTypeId(PaHostApiTypeId type)
{ {
PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(type); PaHostApiIndex index = Pa_HostApiTypeIdToHostApiIndex(type);
if (index < 0) if (index < 0)
throw PaException(index); throw PaException(index);
return *hostApis_[index]; return *hostApis_[index];
} }
HostApi &System::hostApiByIndex(PaHostApiIndex index) HostApi &System::hostApiByIndex(PaHostApiIndex index)
{ {
if (index < 0 || index >= hostApiCount()) if (index < 0 || index >= hostApiCount())
throw PaException(paInternalError); throw PaException(paInternalError);
return *hostApis_[index]; return *hostApis_[index];
} }
int System::hostApiCount() int System::hostApiCount()
{ {
PaHostApiIndex count = Pa_GetHostApiCount(); PaHostApiIndex count = Pa_GetHostApiCount();
if (count < 0) if (count < 0)
throw PaException(count); throw PaException(count);
return count; return count;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
System::DeviceIterator System::devicesBegin() System::DeviceIterator System::devicesBegin()
{ {
DeviceIterator tmp; DeviceIterator tmp;
tmp.ptr_ = &devices_[0]; tmp.ptr_ = &devices_[0];
return tmp; return tmp;
} }
System::DeviceIterator System::devicesEnd() System::DeviceIterator System::devicesEnd()
{ {
int count = deviceCount(); int count = deviceCount();
DeviceIterator tmp; DeviceIterator tmp;
tmp.ptr_ = &devices_[count]; tmp.ptr_ = &devices_[count];
return tmp; return tmp;
} }
////// //////
/// Returns the System's default input Device, or the null Device if none /// Returns the System's default input Device, or the null Device if none
/// was available. /// was available.
////// //////
Device &System::defaultInputDevice() Device &System::defaultInputDevice()
{ {
PaDeviceIndex index = Pa_GetDefaultInputDevice(); PaDeviceIndex index = Pa_GetDefaultInputDevice();
return deviceByIndex(index); return deviceByIndex(index);
} }
////// //////
/// Returns the System's default output Device, or the null Device if none /// Returns the System's default output Device, or the null Device if none
/// was available. /// was available.
////// //////
Device &System::defaultOutputDevice() Device &System::defaultOutputDevice()
{ {
PaDeviceIndex index = Pa_GetDefaultOutputDevice(); PaDeviceIndex index = Pa_GetDefaultOutputDevice();
return deviceByIndex(index); return deviceByIndex(index);
} }
////// //////
/// Returns the Device for the given index. /// Returns the Device for the given index.
/// Will throw a paInternalError equivalent PaException if the given index /// Will throw a paInternalError equivalent PaException if the given index
/// is out of range. /// is out of range.
////// //////
Device &System::deviceByIndex(PaDeviceIndex index) Device &System::deviceByIndex(PaDeviceIndex index)
{ {
if (index < -1 || index >= deviceCount()) if (index < -1 || index >= deviceCount())
{ {
throw PaException(paInternalError); throw PaException(paInternalError);
} }
if (index == -1) if (index == -1)
return System::instance().nullDevice(); return System::instance().nullDevice();
return *devices_[index]; return *devices_[index];
} }
int System::deviceCount() int System::deviceCount()
{ {
PaDeviceIndex count = Pa_GetDeviceCount(); PaDeviceIndex count = Pa_GetDeviceCount();
if (count < 0) if (count < 0)
throw PaException(count); throw PaException(count);
return count; return count;
} }
Device &System::nullDevice() Device &System::nullDevice()
{ {
return *nullDevice_; return *nullDevice_;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
void System::sleep(long msec) void System::sleep(long msec)
{ {
Pa_Sleep(msec); Pa_Sleep(msec);
} }
int System::sizeOfSample(PaSampleFormat format) int System::sizeOfSample(PaSampleFormat format)
{ {
PaError err = Pa_GetSampleSize(format); PaError err = Pa_GetSampleSize(format);
if (err < 0) if (err < 0)
{ {
throw PaException(err); throw PaException(err);
return 0; return 0;
} }
return err; return err;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
System::System() System::System()
{ {
// (left blank intentionally) // (left blank intentionally)
} }
System::~System() System::~System()
{ {
// (left blank intentionally) // (left blank intentionally)
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -2,57 +2,59 @@
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
Device &System::DeviceIterator::operator*() const Device &System::DeviceIterator::operator*() const
{ {
return **ptr_; return **ptr_;
} }
Device *System::DeviceIterator::operator->() const Device *System::DeviceIterator::operator->() const
{ {
return &**this; return &**this;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
System::DeviceIterator &System::DeviceIterator::operator++() System::DeviceIterator &System::DeviceIterator::operator++()
{ {
++ptr_; ++ptr_;
return *this; return *this;
} }
System::DeviceIterator System::DeviceIterator::operator++(int) System::DeviceIterator System::DeviceIterator::operator++(int)
{ {
System::DeviceIterator prev = *this; System::DeviceIterator prev = *this;
++*this; ++*this;
return prev; return prev;
} }
System::DeviceIterator &System::DeviceIterator::operator--() System::DeviceIterator &System::DeviceIterator::operator--()
{ {
--ptr_; --ptr_;
return *this; return *this;
} }
System::DeviceIterator System::DeviceIterator::operator--(int) System::DeviceIterator System::DeviceIterator::operator--(int)
{ {
System::DeviceIterator prev = *this; System::DeviceIterator prev = *this;
--*this; --*this;
return prev; return prev;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
bool System::DeviceIterator::operator==(const System::DeviceIterator &rhs) const bool System::DeviceIterator::operator==(const System::DeviceIterator &rhs) const
{ {
return (ptr_ == rhs.ptr_); return (ptr_ == rhs.ptr_);
} }
bool System::DeviceIterator::operator!=(const System::DeviceIterator &rhs) const bool System::DeviceIterator::operator!=(const System::DeviceIterator &rhs) const
{ {
return !(*this == rhs); return !(*this == rhs);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -2,57 +2,58 @@
namespace portaudio namespace portaudio
{ {
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
HostApi &System::HostApiIterator::operator*() const HostApi &System::HostApiIterator::operator*() const
{ {
return **ptr_; return **ptr_;
} }
HostApi *System::HostApiIterator::operator->() const HostApi *System::HostApiIterator::operator->() const
{ {
return &**this; return &**this;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
System::HostApiIterator &System::HostApiIterator::operator++() System::HostApiIterator &System::HostApiIterator::operator++()
{ {
++ptr_; ++ptr_;
return *this; return *this;
} }
System::HostApiIterator System::HostApiIterator::operator++(int) System::HostApiIterator System::HostApiIterator::operator++(int)
{ {
System::HostApiIterator prev = *this; System::HostApiIterator prev = *this;
++*this; ++*this;
return prev; return prev;
} }
System::HostApiIterator &System::HostApiIterator::operator--() System::HostApiIterator &System::HostApiIterator::operator--()
{ {
--ptr_; --ptr_;
return *this; return *this;
} }
System::HostApiIterator System::HostApiIterator::operator--(int) System::HostApiIterator System::HostApiIterator::operator--(int)
{ {
System::HostApiIterator prev = *this; System::HostApiIterator prev = *this;
--*this; --*this;
return prev; return prev;
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
bool System::HostApiIterator::operator==(const System::HostApiIterator &rhs) const bool System::HostApiIterator::operator==(const System::HostApiIterator &rhs) const
{ {
return (ptr_ == rhs.ptr_); return (ptr_ == rhs.ptr_);
} }
bool System::HostApiIterator::operator!=(const System::HostApiIterator &rhs) const bool System::HostApiIterator::operator!=(const System::HostApiIterator &rhs) const
{ {
return !(*this == rhs); return !(*this == rhs);
} }
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
} // namespace portaudio } // namespace portaudio

View file

@ -55,9 +55,9 @@
JNIEXPORT jint JNICALL Java_com_portaudio_BlockingStream_getReadAvailable JNIEXPORT jint JNICALL Java_com_portaudio_BlockingStream_getReadAvailable
(JNIEnv *env, jobject blockingStream) (JNIEnv *env, jobject blockingStream)
{ {
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( stream == NULL ) return 0; if( stream == NULL ) return 0;
return Pa_GetStreamReadAvailable( stream ); return Pa_GetStreamReadAvailable( stream );
} }
/* /*
@ -68,9 +68,9 @@ JNIEXPORT jint JNICALL Java_com_portaudio_BlockingStream_getReadAvailable
JNIEXPORT jint JNICALL Java_com_portaudio_BlockingStream_getWriteAvailable JNIEXPORT jint JNICALL Java_com_portaudio_BlockingStream_getWriteAvailable
(JNIEnv *env, jobject blockingStream) (JNIEnv *env, jobject blockingStream)
{ {
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( stream == NULL ) return 0; if( stream == NULL ) return 0;
return Pa_GetStreamWriteAvailable( stream ); return Pa_GetStreamWriteAvailable( stream );
} }
@ -82,33 +82,33 @@ JNIEXPORT jint JNICALL Java_com_portaudio_BlockingStream_getWriteAvailable
JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_writeFloats JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_writeFloats
(JNIEnv *env, jobject blockingStream, jfloatArray buffer, jint numFrames) (JNIEnv *env, jobject blockingStream, jfloatArray buffer, jint numFrames)
{ {
jfloat *carr; jfloat *carr;
jint err; jint err;
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( buffer == NULL ) if( buffer == NULL )
{ {
(*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"), (*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"),
"null stream buffer"); "null stream buffer");
return FALSE; return FALSE;
} }
carr = (*env)->GetFloatArrayElements(env, buffer, NULL); carr = (*env)->GetFloatArrayElements(env, buffer, NULL);
if (carr == NULL) if (carr == NULL)
{ {
(*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"), (*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"),
"invalid stream buffer"); "invalid stream buffer");
return FALSE; return FALSE;
} }
err = Pa_WriteStream( stream, carr, numFrames ); err = Pa_WriteStream( stream, carr, numFrames );
(*env)->ReleaseFloatArrayElements(env, buffer, carr, 0); (*env)->ReleaseFloatArrayElements(env, buffer, carr, 0);
if( err == paOutputUnderflowed ) if( err == paOutputUnderflowed )
{ {
return TRUE; return TRUE;
} }
else else
{ {
jpa_CheckError( env, err ); jpa_CheckError( env, err );
return FALSE; return FALSE;
} }
} }
/* /*
@ -119,33 +119,33 @@ JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_writeFloats
JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_readFloats JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_readFloats
(JNIEnv *env, jobject blockingStream, jfloatArray buffer, jint numFrames) (JNIEnv *env, jobject blockingStream, jfloatArray buffer, jint numFrames)
{ {
jfloat *carr; jfloat *carr;
jint err; jint err;
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( buffer == NULL ) if( buffer == NULL )
{ {
(*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"), (*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"),
"null stream buffer"); "null stream buffer");
return FALSE; return FALSE;
} }
carr = (*env)->GetFloatArrayElements(env, buffer, NULL); carr = (*env)->GetFloatArrayElements(env, buffer, NULL);
if (carr == NULL) if (carr == NULL)
{ {
(*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"), (*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"),
"invalid stream buffer"); "invalid stream buffer");
return FALSE; return FALSE;
} }
err = Pa_ReadStream( stream, carr, numFrames ); err = Pa_ReadStream( stream, carr, numFrames );
(*env)->ReleaseFloatArrayElements(env, buffer, carr, 0); (*env)->ReleaseFloatArrayElements(env, buffer, carr, 0);
if( err == paInputOverflowed ) if( err == paInputOverflowed )
{ {
return TRUE; return TRUE;
} }
else else
{ {
jpa_CheckError( env, err ); jpa_CheckError( env, err );
return FALSE; return FALSE;
} }
} }
/* /*
@ -156,33 +156,33 @@ JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_readFloats
JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_writeShorts JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_writeShorts
(JNIEnv *env, jobject blockingStream, jfloatArray buffer, jint numFrames) (JNIEnv *env, jobject blockingStream, jfloatArray buffer, jint numFrames)
{ {
jshort *carr; jshort *carr;
jint err; jint err;
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( buffer == NULL ) if( buffer == NULL )
{ {
(*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"), (*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"),
"null stream buffer"); "null stream buffer");
return FALSE; return FALSE;
} }
carr = (*env)->GetShortArrayElements(env, buffer, NULL); carr = (*env)->GetShortArrayElements(env, buffer, NULL);
if (carr == NULL) if (carr == NULL)
{ {
(*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"), (*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"),
"invalid stream buffer"); "invalid stream buffer");
return FALSE; return FALSE;
} }
err = Pa_WriteStream( stream, carr, numFrames ); err = Pa_WriteStream( stream, carr, numFrames );
(*env)->ReleaseShortArrayElements(env, buffer, carr, 0); (*env)->ReleaseShortArrayElements(env, buffer, carr, 0);
if( err == paOutputUnderflowed ) if( err == paOutputUnderflowed )
{ {
return TRUE; return TRUE;
} }
else else
{ {
jpa_CheckError( env, err ); jpa_CheckError( env, err );
return FALSE; return FALSE;
} }
} }
/* /*
@ -193,33 +193,33 @@ JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_writeShorts
JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_readShorts JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_readShorts
(JNIEnv *env, jobject blockingStream, jfloatArray buffer, jint numFrames) (JNIEnv *env, jobject blockingStream, jfloatArray buffer, jint numFrames)
{ {
jshort *carr; jshort *carr;
jint err; jint err;
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( buffer == NULL ) if( buffer == NULL )
{ {
(*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"), (*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"),
"null stream buffer"); "null stream buffer");
return FALSE; return FALSE;
} }
carr = (*env)->GetShortArrayElements(env, buffer, NULL); carr = (*env)->GetShortArrayElements(env, buffer, NULL);
if (carr == NULL) if (carr == NULL)
{ {
(*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"), (*env)->ThrowNew( env, (*env)->FindClass(env,"java/lang/RuntimeException"),
"invalid stream buffer"); "invalid stream buffer");
return FALSE; return FALSE;
} }
err = Pa_ReadStream( stream, carr, numFrames ); err = Pa_ReadStream( stream, carr, numFrames );
(*env)->ReleaseShortArrayElements(env, buffer, carr, 0); (*env)->ReleaseShortArrayElements(env, buffer, carr, 0);
if( err == paInputOverflowed ) if( err == paInputOverflowed )
{ {
return TRUE; return TRUE;
} }
else else
{ {
jpa_CheckError( env, err ); jpa_CheckError( env, err );
return FALSE; return FALSE;
} }
} }
/* /*
@ -230,9 +230,9 @@ JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_readShorts
JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_start JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_start
(JNIEnv *env, jobject blockingStream ) (JNIEnv *env, jobject blockingStream )
{ {
PaStream *stream = jpa_GetStreamPointer( env, blockingStream ); PaStream *stream = jpa_GetStreamPointer( env, blockingStream );
int err = Pa_StartStream( stream ); int err = Pa_StartStream( stream );
jpa_CheckError( env, err ); jpa_CheckError( env, err );
} }
/* /*
@ -243,9 +243,9 @@ JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_start
JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_stop JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_stop
(JNIEnv *env, jobject blockingStream ) (JNIEnv *env, jobject blockingStream )
{ {
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
int err = Pa_StopStream( stream ); int err = Pa_StopStream( stream );
jpa_CheckError( env, err ); jpa_CheckError( env, err );
} }
/* /*
* Class: com_portaudio_BlockingStream * Class: com_portaudio_BlockingStream
@ -255,9 +255,9 @@ JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_stop
JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_abort JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_abort
(JNIEnv *env, jobject blockingStream ) (JNIEnv *env, jobject blockingStream )
{ {
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
int err = Pa_AbortStream( stream ); int err = Pa_AbortStream( stream );
jpa_CheckError( env, err ); jpa_CheckError( env, err );
} }
/* /*
@ -268,15 +268,15 @@ JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_abort
JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_close JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_close
(JNIEnv *env, jobject blockingStream ) (JNIEnv *env, jobject blockingStream )
{ {
jclass cls; jclass cls;
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( stream != NULL ) if( stream != NULL )
{ {
int err = Pa_CloseStream( stream ); int err = Pa_CloseStream( stream );
jpa_CheckError( env, err ); jpa_CheckError( env, err );
cls = (*env)->GetObjectClass(env, blockingStream); cls = (*env)->GetObjectClass(env, blockingStream);
jpa_SetLongField( env, cls, blockingStream, "nativeStream", (jlong) 0 ); jpa_SetLongField( env, cls, blockingStream, "nativeStream", (jlong) 0 );
} }
} }
/* /*
@ -287,11 +287,11 @@ JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_close
JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_isStopped JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_isStopped
(JNIEnv *env, jobject blockingStream ) (JNIEnv *env, jobject blockingStream )
{ {
int err; int err;
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( stream == NULL ) return 1; if( stream == NULL ) return 1;
err = Pa_IsStreamStopped( stream ); err = Pa_IsStreamStopped( stream );
return (jpa_CheckError( env, err ) > 0); return (jpa_CheckError( env, err ) > 0);
} }
/* /*
* Class: com_portaudio_BlockingStream * Class: com_portaudio_BlockingStream
@ -301,11 +301,11 @@ JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_isStopped
JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_isActive JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_isActive
(JNIEnv *env, jobject blockingStream ) (JNIEnv *env, jobject blockingStream )
{ {
int err; int err;
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( stream == NULL ) return 0; if( stream == NULL ) return 0;
err = Pa_IsStreamActive( stream ); err = Pa_IsStreamActive( stream );
return (jpa_CheckError( env, err ) > 0); return (jpa_CheckError( env, err ) > 0);
} }
@ -317,9 +317,9 @@ JNIEXPORT jboolean JNICALL Java_com_portaudio_BlockingStream_isActive
JNIEXPORT jdouble JNICALL Java_com_portaudio_BlockingStream_getTime JNIEXPORT jdouble JNICALL Java_com_portaudio_BlockingStream_getTime
(JNIEnv *env, jobject blockingStream ) (JNIEnv *env, jobject blockingStream )
{ {
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
if( stream == NULL ) return 0.0; if( stream == NULL ) return 0.0;
return Pa_GetStreamTime( stream ); return Pa_GetStreamTime( stream );
} }
@ -332,20 +332,21 @@ JNIEXPORT void JNICALL Java_com_portaudio_BlockingStream_getInfo
(JNIEnv *env, jobject blockingStream, jobject streamInfo) (JNIEnv *env, jobject blockingStream, jobject streamInfo)
{ {
PaStream *stream =jpa_GetStreamPointer( env, blockingStream ); PaStream *stream =jpa_GetStreamPointer( env, blockingStream );
const PaStreamInfo *info = Pa_GetStreamInfo( stream ); const PaStreamInfo *info = Pa_GetStreamInfo( stream );
if( streamInfo == NULL ) if( streamInfo == NULL )
{ {
jpa_ThrowError( env, "Invalid stream." ); jpa_ThrowError( env, "Invalid stream." );
} }
else else
{ {
/* Get a reference to obj's class */ /* Get a reference to obj's class */
jclass cls = (*env)->GetObjectClass(env, streamInfo); jclass cls = (*env)->GetObjectClass(env, streamInfo);
jpa_SetIntField( env, cls, streamInfo, "structVersion", info->structVersion ); jpa_SetIntField( env, cls, streamInfo, "structVersion", info->structVersion );
jpa_SetDoubleField( env, cls, streamInfo, "inputLatency", info->inputLatency ); jpa_SetDoubleField( env, cls, streamInfo, "inputLatency", info->inputLatency );
jpa_SetDoubleField( env, cls, streamInfo, "outputLatency", info->outputLatency ); jpa_SetDoubleField( env, cls, streamInfo, "outputLatency", info->outputLatency );
jpa_SetDoubleField( env, cls, streamInfo, "sampleRate", info->sampleRate ); jpa_SetDoubleField( env, cls, streamInfo, "sampleRate", info->sampleRate );
} }
} }

View file

@ -48,7 +48,7 @@
JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getVersion JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getVersion
(JNIEnv *env, jclass clazz) (JNIEnv *env, jclass clazz)
{ {
return Pa_GetVersion(); return Pa_GetVersion();
} }
/* /*
@ -59,7 +59,7 @@ JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getVersion
JNIEXPORT jstring JNICALL Java_com_portaudio_PortAudio_getVersionText JNIEXPORT jstring JNICALL Java_com_portaudio_PortAudio_getVersionText
(JNIEnv *env, jclass clazz) (JNIEnv *env, jclass clazz)
{ {
return (*env)->NewStringUTF(env, Pa_GetVersionText() ); return (*env)->NewStringUTF(env, Pa_GetVersionText() );
} }
/* /*
@ -70,8 +70,8 @@ JNIEXPORT jstring JNICALL Java_com_portaudio_PortAudio_getVersionText
JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_initialize JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_initialize
(JNIEnv *env, jclass clazz) (JNIEnv *env, jclass clazz)
{ {
PaError err = Pa_Initialize(); PaError err = Pa_Initialize();
jpa_CheckError( env, err ); jpa_CheckError( env, err );
} }
/* /*
@ -82,8 +82,8 @@ JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_initialize
JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_terminate JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_terminate
(JNIEnv *env, jclass clazz) (JNIEnv *env, jclass clazz)
{ {
PaError err = Pa_Terminate(); PaError err = Pa_Terminate();
jpa_CheckError( env, err ); jpa_CheckError( env, err );
} }
/* /*
@ -94,8 +94,8 @@ JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_terminate
JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDeviceCount JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDeviceCount
(JNIEnv *env, jclass clazz) (JNIEnv *env, jclass clazz)
{ {
jint count = Pa_GetDeviceCount(); jint count = Pa_GetDeviceCount();
return jpa_CheckError( env, count ); return jpa_CheckError( env, count );
} }
/* /*
@ -106,27 +106,27 @@ JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDeviceCount
JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_getDeviceInfo JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_getDeviceInfo
(JNIEnv *env, jclass clazz, jint index, jobject deviceInfo) (JNIEnv *env, jclass clazz, jint index, jobject deviceInfo)
{ {
const PaDeviceInfo *info; const PaDeviceInfo *info;
/* Get a reference to obj's class */ /* Get a reference to obj's class */
jclass cls = (*env)->GetObjectClass(env, deviceInfo); jclass cls = (*env)->GetObjectClass(env, deviceInfo);
info = Pa_GetDeviceInfo( index ); info = Pa_GetDeviceInfo( index );
if( info == NULL ) if( info == NULL )
{ {
jpa_ThrowError( env, "Pa_GetDeviceInfo returned NULL." ); jpa_ThrowError( env, "Pa_GetDeviceInfo returned NULL." );
} }
else else
{ {
jpa_SetStringField( env, cls, deviceInfo, "name", info->name ); jpa_SetStringField( env, cls, deviceInfo, "name", info->name );
jpa_SetIntField( env, cls, deviceInfo, "maxInputChannels", info->maxInputChannels ); jpa_SetIntField( env, cls, deviceInfo, "maxInputChannels", info->maxInputChannels );
jpa_SetIntField( env, cls, deviceInfo, "maxOutputChannels", info->maxOutputChannels ); jpa_SetIntField( env, cls, deviceInfo, "maxOutputChannels", info->maxOutputChannels );
jpa_SetIntField( env, cls, deviceInfo, "hostApi", info->hostApi ); jpa_SetIntField( env, cls, deviceInfo, "hostApi", info->hostApi );
jpa_SetDoubleField( env, cls, deviceInfo, "defaultSampleRate", info->defaultSampleRate ); jpa_SetDoubleField( env, cls, deviceInfo, "defaultSampleRate", info->defaultSampleRate );
jpa_SetDoubleField( env, cls, deviceInfo, "defaultLowInputLatency", info->defaultLowInputLatency ); jpa_SetDoubleField( env, cls, deviceInfo, "defaultLowInputLatency", info->defaultLowInputLatency );
jpa_SetDoubleField( env, cls, deviceInfo, "defaultLowInputLatency", info->defaultHighInputLatency ); jpa_SetDoubleField( env, cls, deviceInfo, "defaultLowInputLatency", info->defaultHighInputLatency );
jpa_SetDoubleField( env, cls, deviceInfo, "defaultLowOutputLatency", info->defaultLowOutputLatency ); jpa_SetDoubleField( env, cls, deviceInfo, "defaultLowOutputLatency", info->defaultLowOutputLatency );
jpa_SetDoubleField( env, cls, deviceInfo, "defaultHighOutputLatency", info->defaultHighOutputLatency ); jpa_SetDoubleField( env, cls, deviceInfo, "defaultHighOutputLatency", info->defaultHighOutputLatency );
} }
} }
/* /*
@ -137,8 +137,8 @@ JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_getDeviceInfo
JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getHostApiCount JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getHostApiCount
(JNIEnv *env, jclass clazz) (JNIEnv *env, jclass clazz)
{ {
jint count = Pa_GetHostApiCount(); jint count = Pa_GetHostApiCount();
return jpa_CheckError( env, count ); return jpa_CheckError( env, count );
} }
@ -150,7 +150,7 @@ JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getHostApiCount
JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_hostApiTypeIdToHostApiIndex JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_hostApiTypeIdToHostApiIndex
(JNIEnv *env, jclass clazz, jint hostApiType) (JNIEnv *env, jclass clazz, jint hostApiType)
{ {
return Pa_HostApiTypeIdToHostApiIndex( (PaHostApiTypeId) hostApiType ); return Pa_HostApiTypeIdToHostApiIndex( (PaHostApiTypeId) hostApiType );
} }
/* /*
@ -161,7 +161,7 @@ JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_hostApiTypeIdToHostApiIndex
JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_hostApiDeviceIndexToDeviceIndex JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_hostApiDeviceIndexToDeviceIndex
(JNIEnv *env, jclass clazz, jint hostApiIndex, jint apiDeviceIndex) (JNIEnv *env, jclass clazz, jint hostApiIndex, jint apiDeviceIndex)
{ {
return Pa_HostApiDeviceIndexToDeviceIndex( hostApiIndex, apiDeviceIndex ); return Pa_HostApiDeviceIndexToDeviceIndex( hostApiIndex, apiDeviceIndex );
} }
@ -173,24 +173,24 @@ JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_hostApiDeviceIndexToDeviceIn
JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_getHostApiInfo JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_getHostApiInfo
(JNIEnv *env, jclass clazz, jint index, jobject hostApiInfo) (JNIEnv *env, jclass clazz, jint index, jobject hostApiInfo)
{ {
const PaHostApiInfo *info; const PaHostApiInfo *info;
/* Get a reference to obj's class */ /* Get a reference to obj's class */
jclass cls = (*env)->GetObjectClass(env, hostApiInfo); jclass cls = (*env)->GetObjectClass(env, hostApiInfo);
info = Pa_GetHostApiInfo( index ); info = Pa_GetHostApiInfo( index );
if( info == NULL ) if( info == NULL )
{ {
jpa_ThrowError( env, "Pa_GetHostApiInfo returned NULL." ); jpa_ThrowError( env, "Pa_GetHostApiInfo returned NULL." );
} }
else else
{ {
jpa_SetIntField( env, cls, hostApiInfo, "version", info->structVersion ); jpa_SetIntField( env, cls, hostApiInfo, "version", info->structVersion );
jpa_SetIntField( env, cls, hostApiInfo, "type", info->type ); jpa_SetIntField( env, cls, hostApiInfo, "type", info->type );
jpa_SetStringField( env, cls, hostApiInfo, "name", info->name ); jpa_SetStringField( env, cls, hostApiInfo, "name", info->name );
jpa_SetIntField( env, cls, hostApiInfo, "deviceCount", info->deviceCount ); jpa_SetIntField( env, cls, hostApiInfo, "deviceCount", info->deviceCount );
jpa_SetIntField( env, cls, hostApiInfo, "defaultInputDevice", info->defaultInputDevice ); jpa_SetIntField( env, cls, hostApiInfo, "defaultInputDevice", info->defaultInputDevice );
jpa_SetIntField( env, cls, hostApiInfo, "defaultOutputDevice", info->defaultOutputDevice ); jpa_SetIntField( env, cls, hostApiInfo, "defaultOutputDevice", info->defaultOutputDevice );
} }
} }
/* /*
@ -201,8 +201,8 @@ JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_getHostApiInfo
JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultInputDevice JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultInputDevice
(JNIEnv *env, jclass clazz) (JNIEnv *env, jclass clazz)
{ {
jint deviceId = Pa_GetDefaultInputDevice(); jint deviceId = Pa_GetDefaultInputDevice();
return jpa_CheckError( env, deviceId ); return jpa_CheckError( env, deviceId );
} }
/* /*
@ -213,8 +213,8 @@ JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultInputDevice
JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultOutputDevice JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultOutputDevice
(JNIEnv *env, jclass clazz) (JNIEnv *env, jclass clazz)
{ {
jint deviceId = Pa_GetDefaultOutputDevice(); jint deviceId = Pa_GetDefaultOutputDevice();
return jpa_CheckError( env, deviceId ); return jpa_CheckError( env, deviceId );
} }
/* /*
@ -225,8 +225,8 @@ JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultOutputDevice
JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultHostApi JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultHostApi
(JNIEnv *env, jclass clazz) (JNIEnv *env, jclass clazz)
{ {
jint deviceId = Pa_GetDefaultHostApi(); jint deviceId = Pa_GetDefaultHostApi();
return jpa_CheckError( env, deviceId ); return jpa_CheckError( env, deviceId );
} }
/* /*
@ -237,13 +237,13 @@ JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_getDefaultHostApi
JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_isFormatSupported JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_isFormatSupported
(JNIEnv *env, jclass clazz, jobject inParams, jobject outParams, jint sampleRate ) (JNIEnv *env, jclass clazz, jobject inParams, jobject outParams, jint sampleRate )
{ {
PaStreamParameters myInParams, *paInParams; PaStreamParameters myInParams, *paInParams;
PaStreamParameters myOutParams, *paOutParams; PaStreamParameters myOutParams, *paOutParams;
paInParams = jpa_FillStreamParameters( env, inParams, &myInParams ); paInParams = jpa_FillStreamParameters( env, inParams, &myInParams );
paOutParams = jpa_FillStreamParameters( env, outParams, &myOutParams ); paOutParams = jpa_FillStreamParameters( env, outParams, &myOutParams );
return Pa_IsFormatSupported( paInParams, paOutParams, sampleRate ); return Pa_IsFormatSupported( paInParams, paOutParams, sampleRate );
} }
@ -255,25 +255,25 @@ JNIEXPORT jint JNICALL Java_com_portaudio_PortAudio_isFormatSupported
JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_openStream JNIEXPORT void JNICALL Java_com_portaudio_PortAudio_openStream
(JNIEnv *env, jclass clazz, jobject blockingStream, jobject inParams, jobject outParams, jint sampleRate, jint framesPerBuffer, jint flags ) (JNIEnv *env, jclass clazz, jobject blockingStream, jobject inParams, jobject outParams, jint sampleRate, jint framesPerBuffer, jint flags )
{ {
int err; int err;
PaStreamParameters myInParams, *paInParams; PaStreamParameters myInParams, *paInParams;
PaStreamParameters myOutParams, *paOutParams; PaStreamParameters myOutParams, *paOutParams;
PaStream *stream; PaStream *stream;
paInParams = jpa_FillStreamParameters( env, inParams, &myInParams ); paInParams = jpa_FillStreamParameters( env, inParams, &myInParams );
paOutParams = jpa_FillStreamParameters( env, outParams, &myOutParams ); paOutParams = jpa_FillStreamParameters( env, outParams, &myOutParams );
err = Pa_OpenStream( &stream, paInParams, paOutParams, sampleRate, framesPerBuffer, flags, NULL, NULL ); err = Pa_OpenStream( &stream, paInParams, paOutParams, sampleRate, framesPerBuffer, flags, NULL, NULL );
if( jpa_CheckError( env, err ) == 0 ) if( jpa_CheckError( env, err ) == 0 )
{ {
jclass cls = (*env)->GetObjectClass(env, blockingStream); jclass cls = (*env)->GetObjectClass(env, blockingStream);
jpa_SetLongField( env, cls, blockingStream, "nativeStream", (jlong) stream ); jpa_SetLongField( env, cls, blockingStream, "nativeStream", (jlong) stream );
if( paInParams != NULL ) if( paInParams != NULL )
{ {
jpa_SetIntField( env, cls, blockingStream, "inputFormat", paInParams->sampleFormat ); jpa_SetIntField( env, cls, blockingStream, "inputFormat", paInParams->sampleFormat );
} }
if( paOutParams != NULL ) if( paOutParams != NULL )
{ {
jpa_SetIntField( env, cls, blockingStream, "outputFormat", paOutParams->sampleFormat ); jpa_SetIntField( env, cls, blockingStream, "outputFormat", paOutParams->sampleFormat );
} }
} }
} }

View file

@ -45,14 +45,14 @@ jint jpa_GetIntField( JNIEnv *env, jclass cls, jobject obj, const char *fieldNam
/* Look for the instance field maxInputChannels in cls */ /* Look for the instance field maxInputChannels in cls */
jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "I"); jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "I");
if (fid == NULL) if (fid == NULL)
{ {
jpa_ThrowError( env, "Cannot find integer JNI field." ); jpa_ThrowError( env, "Cannot find integer JNI field." );
return 0; return 0;
}
else
{
return (*env)->GetIntField(env, obj, fid );
} }
else
{
return (*env)->GetIntField(env, obj, fid );
}
} }
void jpa_SetIntField( JNIEnv *env, jclass cls, jobject obj, const char *fieldName, jint value ) void jpa_SetIntField( JNIEnv *env, jclass cls, jobject obj, const char *fieldName, jint value )
@ -60,13 +60,13 @@ void jpa_SetIntField( JNIEnv *env, jclass cls, jobject obj, const char *fieldNam
/* Look for the instance field maxInputChannels in cls */ /* Look for the instance field maxInputChannels in cls */
jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "I"); jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "I");
if (fid == NULL) if (fid == NULL)
{ {
jpa_ThrowError( env, "Cannot find integer JNI field." ); jpa_ThrowError( env, "Cannot find integer JNI field." );
}
else
{
(*env)->SetIntField(env, obj, fid, value );
} }
else
{
(*env)->SetIntField(env, obj, fid, value );
}
} }
jlong jpa_GetLongField( JNIEnv *env, jclass cls, jobject obj, const char *fieldName ) jlong jpa_GetLongField( JNIEnv *env, jclass cls, jobject obj, const char *fieldName )
@ -74,14 +74,14 @@ jlong jpa_GetLongField( JNIEnv *env, jclass cls, jobject obj, const char *fieldN
/* Look for the instance field maxInputChannels in cls */ /* Look for the instance field maxInputChannels in cls */
jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "J"); jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "J");
if (fid == NULL) if (fid == NULL)
{ {
jpa_ThrowError( env, "Cannot find long JNI field." ); jpa_ThrowError( env, "Cannot find long JNI field." );
return 0L; return 0L;
}
else
{
return (*env)->GetLongField(env, obj, fid );
} }
else
{
return (*env)->GetLongField(env, obj, fid );
}
} }
void jpa_SetLongField( JNIEnv *env, jclass cls, jobject obj, const char *fieldName, jlong value ) void jpa_SetLongField( JNIEnv *env, jclass cls, jobject obj, const char *fieldName, jlong value )
@ -89,13 +89,13 @@ void jpa_SetLongField( JNIEnv *env, jclass cls, jobject obj, const char *fieldNa
/* Look for the instance field maxInputChannels in cls */ /* Look for the instance field maxInputChannels in cls */
jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "J"); jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "J");
if (fid == NULL) if (fid == NULL)
{ {
jpa_ThrowError( env, "Cannot find long JNI field." ); jpa_ThrowError( env, "Cannot find long JNI field." );
}
else
{
(*env)->SetLongField(env, obj, fid, value );
} }
else
{
(*env)->SetLongField(env, obj, fid, value );
}
} }
@ -104,13 +104,13 @@ void jpa_SetDoubleField( JNIEnv *env, jclass cls, jobject obj, const char *field
/* Look for the instance field maxInputChannels in cls */ /* Look for the instance field maxInputChannels in cls */
jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "D"); jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "D");
if (fid == NULL) if (fid == NULL)
{ {
jpa_ThrowError( env, "Cannot find double JNI field." ); jpa_ThrowError( env, "Cannot find double JNI field." );
}
else
{
(*env)->SetDoubleField(env, obj, fid, value );
} }
else
{
(*env)->SetDoubleField(env, obj, fid, value );
}
} }
@ -119,14 +119,14 @@ jdouble jpa_GetDoubleField( JNIEnv *env, jclass cls, jobject obj, const char *fi
/* Look for the instance field maxInputChannels in cls */ /* Look for the instance field maxInputChannels in cls */
jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "D"); jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "D");
if (fid == NULL) if (fid == NULL)
{ {
jpa_ThrowError( env, "Cannot find double JNI field." ); jpa_ThrowError( env, "Cannot find double JNI field." );
return 0; return 0;
}
else
{
return (*env)->GetDoubleField(env, obj, fid );
} }
else
{
return (*env)->GetDoubleField(env, obj, fid );
}
} }
void jpa_SetStringField( JNIEnv *env, jclass cls, jobject obj, const char *fieldName, const char *value ) void jpa_SetStringField( JNIEnv *env, jclass cls, jobject obj, const char *fieldName, const char *value )
@ -134,75 +134,75 @@ void jpa_SetStringField( JNIEnv *env, jclass cls, jobject obj, const char *field
/* Look for the instance field maxInputChannels in cls */ /* Look for the instance field maxInputChannels in cls */
jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "Ljava/lang/String;"); jfieldID fid = (*env)->GetFieldID(env, cls, fieldName, "Ljava/lang/String;");
if (fid == NULL) if (fid == NULL)
{ {
jpa_ThrowError( env, "Cannot find String JNI field." ); jpa_ThrowError( env, "Cannot find String JNI field." );
}
else
{
jstring jstr = (*env)->NewStringUTF(env, value);
if (jstr == NULL)
{
jpa_ThrowError( env, "Cannot create new String." );
}
else
{
(*env)->SetObjectField(env, obj, fid, jstr );
}
} }
else
{
jstring jstr = (*env)->NewStringUTF(env, value);
if (jstr == NULL)
{
jpa_ThrowError( env, "Cannot create new String." );
}
else
{
(*env)->SetObjectField(env, obj, fid, jstr );
}
}
} }
PaStreamParameters *jpa_FillStreamParameters( JNIEnv *env, jobject jstreamParam, PaStreamParameters *myParams ) PaStreamParameters *jpa_FillStreamParameters( JNIEnv *env, jobject jstreamParam, PaStreamParameters *myParams )
{ {
jclass cls; jclass cls;
if( jstreamParam == NULL ) return NULL; // OK, not an error if( jstreamParam == NULL ) return NULL; // OK, not an error
cls = (*env)->GetObjectClass(env, jstreamParam); cls = (*env)->GetObjectClass(env, jstreamParam);
myParams->channelCount = jpa_GetIntField( env, cls, jstreamParam, "channelCount" ); myParams->channelCount = jpa_GetIntField( env, cls, jstreamParam, "channelCount" );
myParams->device = jpa_GetIntField( env, cls, jstreamParam, "device" ); myParams->device = jpa_GetIntField( env, cls, jstreamParam, "device" );
myParams->sampleFormat = jpa_GetIntField( env, cls, jstreamParam, "sampleFormat" ); myParams->sampleFormat = jpa_GetIntField( env, cls, jstreamParam, "sampleFormat" );
myParams->suggestedLatency = jpa_GetDoubleField( env, cls, jstreamParam, "suggestedLatency" ); myParams->suggestedLatency = jpa_GetDoubleField( env, cls, jstreamParam, "suggestedLatency" );
myParams->hostApiSpecificStreamInfo = NULL; myParams->hostApiSpecificStreamInfo = NULL;
return myParams; return myParams;
} }
// Create an exception that will be thrown when we return from the JNI call. // Create an exception that will be thrown when we return from the JNI call.
jint jpa_ThrowError( JNIEnv *env, const char *message ) jint jpa_ThrowError( JNIEnv *env, const char *message )
{ {
return (*env)->ThrowNew(env, (*env)->FindClass( env, "java/lang/RuntimeException"), return (*env)->ThrowNew(env, (*env)->FindClass( env, "java/lang/RuntimeException"),
message ); message );
} }
// Throw an exception on error. // Throw an exception on error.
jint jpa_CheckError( JNIEnv *env, PaError err ) jint jpa_CheckError( JNIEnv *env, PaError err )
{ {
if( err == -1 ) if( err == -1 )
{ {
return jpa_ThrowError( env, "-1, possibly no available default device" ); return jpa_ThrowError( env, "-1, possibly no available default device" );
} }
else if( err < 0 ) else if( err < 0 )
{ {
if( err == paUnanticipatedHostError ) if( err == paUnanticipatedHostError )
{ {
const PaHostErrorInfo *hostErrorInfo = Pa_GetLastHostErrorInfo(); const PaHostErrorInfo *hostErrorInfo = Pa_GetLastHostErrorInfo();
return jpa_ThrowError( env, hostErrorInfo->errorText ); return jpa_ThrowError( env, hostErrorInfo->errorText );
} }
else else
{ {
return jpa_ThrowError( env, Pa_GetErrorText( err ) ); return jpa_ThrowError( env, Pa_GetErrorText( err ) );
} }
} }
else else
{ {
return err; return err;
} }
} }
// Get the stream pointer from a BlockingStream long field. // Get the stream pointer from a BlockingStream long field.
PaStream *jpa_GetStreamPointer( JNIEnv *env, jobject blockingStream ) PaStream *jpa_GetStreamPointer( JNIEnv *env, jobject blockingStream )
{ {
jclass cls = (*env)->GetObjectClass(env, blockingStream); jclass cls = (*env)->GetObjectClass(env, blockingStream);
return (PaStream *) jpa_GetLongField( env, cls, blockingStream, "nativeStream" ); return (PaStream *) jpa_GetLongField( env, cls, blockingStream, "nativeStream" );
} }

View file

@ -219,7 +219,7 @@ public class TestBasic extends TestCase
e.printStackTrace(); e.printStackTrace();
} }
assertTrue( "caught no exception", (caught != null) ); assertTrue( "caught no expection", (caught != null) );
assertTrue( "exception should say stream is stopped", caught assertTrue( "exception should say stream is stopped", caught
.getMessage().contains( "stopped" ) ); .getMessage().contains( "stopped" ) );
@ -233,7 +233,7 @@ public class TestBasic extends TestCase
caught = e; caught = e;
e.printStackTrace(); e.printStackTrace();
} }
assertTrue( "caught no exception", (caught != null) ); assertTrue( "caught no expection", (caught != null) );
assertTrue( "exception should say stream is stopped", caught assertTrue( "exception should say stream is stopped", caught
.getMessage().contains( "null" ) ); .getMessage().contains( "null" ) );
@ -251,7 +251,7 @@ public class TestBasic extends TestCase
e.printStackTrace(); e.printStackTrace();
} }
assertTrue( "caught no exception", (caught != null) ); assertTrue( "caught no expection", (caught != null) );
assertTrue( "exception should say tried to", caught.getMessage() assertTrue( "exception should say tried to", caught.getMessage()
.contains( "Tried to write short" ) ); .contains( "Tried to write short" ) );

View file

@ -35,25 +35,18 @@ Pa_GetStreamReadAvailable @31
Pa_GetStreamWriteAvailable @32 Pa_GetStreamWriteAvailable @32
Pa_GetSampleSize @33 Pa_GetSampleSize @33
Pa_Sleep @34 Pa_Sleep @34
Pa_GetVersionInfo @35 Pa_RefreshDeviceList @35
Pa_SetDevicesChangedCallback @36
PaAsio_GetAvailableBufferSizes @50 PaAsio_GetAvailableBufferSizes @50
PaAsio_ShowControlPanel @51 PaAsio_ShowControlPanel @51
PaUtil_InitializeX86PlainConverters @52 PaUtil_InitializeX86PlainConverters @52
PaAsio_GetInputChannelName @53 PaAsio_GetInputChannelName @53
PaAsio_GetOutputChannelName @54 PaAsio_GetOutputChannelName @54
PaUtil_SetDebugPrintFunction @55 PaUtil_SetDebugPrintFunction @55
PaWasapi_GetAudioClient @56 PaWasapi_GetDeviceDefaultFormat @56
PaWasapi_UpdateDeviceList @57 PaWasapi_GetDeviceRole @57
PaWasapi_GetDeviceCurrentFormat @58 PaWasapi_ThreadPriorityBoost @58
PaWasapi_GetDeviceDefaultFormat @59 PaWasapi_ThreadPriorityRevert @59
PaWasapi_GetDeviceMixFormat @60 PaWasapi_GetFramesPerHostBuffer @60
PaWasapi_GetDeviceRole @61 PaWasapi_GetJackDescription @61
PaWasapi_ThreadPriorityBoost @62 PaWasapi_GetJackCount @62
PaWasapi_ThreadPriorityRevert @63
PaWasapi_GetFramesPerHostBuffer @64
PaWasapi_GetJackCount @65
PaWasapi_GetJackDescription @66
PaWasapi_SetStreamStateHandler @68
PaWasapiWinrt_SetDefaultDeviceId @67
PaWasapiWinrt_PopulateDeviceList @69
PaWasapi_GetIMMDevice @70

View file

@ -1827,6 +1827,10 @@
RelativePath="..\..\src\os\win\pa_win_wdmks_utils.c" RelativePath="..\..\src\os\win\pa_win_wdmks_utils.c"
> >
</File> </File>
<File
RelativePath="..\..\src\os\win\pa_win_hotplug.c"
>
</File>
<File <File
RelativePath="..\..\src\os\win\pa_x86_plain_converters.c" RelativePath="..\..\src\os\win\pa_x86_plain_converters.c"
> >

View file

@ -24,7 +24,7 @@ This DLL contains all 5 current Win32 PA APIS (MME/DS/ASIO/WASAPI/WDMKS)
Service pack 5: Service pack 5:
Latest known URL: Latest known URL:
http://msdn2.microsoft.com/en-us/vstudio/aa718363.aspx http://msdn2.microsoft.com/en-us/vstudio/aa718363.aspx
Yes there EXISTS a service pack 6 , but the processor pack (below) isn't compatible with it. Yes there EXISTS a service pack 6 , but the processor pack (below) isnt compatible with it.
Processor Pack(only works with above SP5) Processor Pack(only works with above SP5)
Latest known URL: Latest known URL:

View file

@ -1,12 +0,0 @@
#!/bin/bash
#
# Clear the Git commit SHA in the include file.
# This should be run before checking in code to Git.
#
revision_filename=src/common/pa_gitrevision.h
# Update the include file with the current GIT revision.
echo "#define PA_GIT_REVISION unknown" > ${revision_filename}
echo ${revision_filename} now contains
cat ${revision_filename}

12
clear_svnrevision.sh Executable file
View file

@ -0,0 +1,12 @@
#!/bin/bash
#
# Clear the SVN revision in the include file.
# This should be run before checking in code to SVN.
#
revision_filename=src/common/pa_svnrevision.h
# Update the include file with the current SVN revision.
echo "#define PA_SVN_REVISION unknown" > ${revision_filename}
echo ${revision_filename} now contains
cat ${revision_filename}

View file

@ -0,0 +1,59 @@
# $Id: $
#
# - Try to find the DirectX SDK
# Once done this will define
#
# DXSDK_FOUND - system has DirectX SDK
# DXSDK_ROOT_DIR - path to the DirectX SDK base directory
# DXSDK_INCLUDE_DIR - the DirectX SDK include directory
# DXSDK_LIBRARY_DIR - DirectX SDK libraries path
#
# DXSDK_DSOUND_LIBRARY - Path to dsound.lib
#
if(WIN32)
else(WIN32)
message(FATAL_ERROR "FindDXSDK.cmake: Unsupported platform ${CMAKE_SYSTEM_NAME}" )
endif(WIN32)
find_path(DXSDK_ROOT_DIR
include/dxsdkver.h
HINTS
$ENV{DXSDK_DIR}
)
find_path(DXSDK_INCLUDE_DIR
dxsdkver.h
PATHS
${DXSDK_ROOT_DIR}/include
)
IF(CMAKE_CL_64)
find_path(DXSDK_LIBRARY_DIR
dsound.lib
PATHS
${DXSDK_ROOT_DIR}/lib/x64
)
ELSE(CMAKE_CL_64)
find_path(DXSDK_LIBRARY_DIR
dsound.lib
PATHS
${DXSDK_ROOT_DIR}/lib/x86
)
ENDIF(CMAKE_CL_64)
find_library(DXSDK_DSOUND_LIBRARY
dsound.lib
PATHS
${DXSDK_LIBRARY_DIR}
)
# handle the QUIETLY and REQUIRED arguments and set DXSDK_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(DXSDK DEFAULT_MSG DXSDK_ROOT_DIR DXSDK_INCLUDE_DIR)
MARK_AS_ADVANCED(
DXSDK_ROOT_DIR DXSDK_INCLUDE_DIR
DXSDK_LIBRARY_DIR DXSDK_DSOUND_LIBRARY
)

View file

@ -1,41 +0,0 @@
# - Try to find jack
# Once done this will define
# JACK_FOUND - System has jack
# JACK_INCLUDE_DIRS - The jack include directories
# JACK_LIBRARIES - The libraries needed to use jack
# JACK_DEFINITIONS - Compiler switches required for using jack
if (JACK_LIBRARIES AND JACK_INCLUDE_DIRS)
# in cache already
set(JACK_FOUND TRUE)
else (JACK_LIBRARIES AND JACK_INCLUDE_DIRS)
set(JACK_DEFINITIONS "")
# Look for pkg-config and use it (if available) to find package
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_search_module(JACK QUIET jack)
endif (PKG_CONFIG_FOUND)
if (NOT JACK_FOUND)
find_path(JACK_INCLUDE_DIR jack/jack.h HINTS ${JACK_INCLUDEDIR} ${JACK_INCLUDE_DIRS} PATH_SUFFIXES jack)
find_library(JACK_LIBRARY NAMES jack HINTS ${JACK_LIBDIR} ${JACK_LIBRARY_DIRS})
set(JACK_LIBRARIES ${JACK_LIBRARY})
set(JACK_INCLUDE_DIRS ${JACK_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
# Set JACK_FOUND if the library and include paths were found
find_package_handle_standard_args(jack DEFAULT_MSG JACK_LIBRARY JACK_INCLUDE_DIR)
# Don't show include/library paths in cmake GUI
mark_as_advanced(JACK_INCLUDE_DIR JACK_LIBRARY)
endif (NOT JACK_FOUND)
endif (JACK_LIBRARIES AND JACK_INCLUDE_DIRS)

View file

@ -1,21 +0,0 @@
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
foreach(file ${files})
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
exec_program(
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
OUTPUT_VARIABLE rm_out
RETURN_VALUE rm_retval
)
if(NOT "${rm_retval}" STREQUAL 0)
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
endif(NOT "${rm_retval}" STREQUAL 0)
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
endforeach(file)

View file

@ -1,12 +0,0 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include
Name: PortAudio
Description: Portable audio I/O
Requires:
Version: @PA_PKGCONFIG_VERSION@
Libs: -L${libdir} -lportaudio @PA_PKGCONFIG_LDFLAGS@
Cflags: -I${includedir} @PA_PKGCONFIG_CFLAGS@

View file

@ -1 +0,0 @@
include("${CMAKE_CURRENT_LIST_DIR}/portaudioTargets.cmake")

View file

@ -38,25 +38,16 @@ Pa_GetStreamReadAvailable @31
Pa_GetStreamWriteAvailable @32 Pa_GetStreamWriteAvailable @32
Pa_GetSampleSize @33 Pa_GetSampleSize @33
Pa_Sleep @34 Pa_Sleep @34
Pa_GetVersionInfo @35
@DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetAvailableBufferSizes @50 @DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetAvailableBufferSizes @50
@DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_ShowControlPanel @51 @DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_ShowControlPanel @51
@DEF_EXCLUDE_X86_PLAIN_CONVERTERS@PaUtil_InitializeX86PlainConverters @52 PaUtil_InitializeX86PlainConverters @52
@DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetInputChannelName @53 @DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetInputChannelName @53
@DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetOutputChannelName @54 @DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetOutputChannelName @54
PaUtil_SetDebugPrintFunction @55 PaUtil_SetDebugPrintFunction @55
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetAudioClient @56 @DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceDefaultFormat @56
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_UpdateDeviceList @57 @DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceRole @57
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceCurrentFormat @58 @DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_ThreadPriorityBoost @58
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceDefaultFormat @59 @DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_ThreadPriorityRevert @59
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceMixFormat @60 @DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetFramesPerHostBuffer @60
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetDeviceRole @61 @DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetJackDescription @61
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_ThreadPriorityBoost @62 @DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetJackCount @62
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_ThreadPriorityRevert @63
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetFramesPerHostBuffer @64
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetJackCount @65
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetJackDescription @66
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_SetStreamStateHandler @68
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapiWinrt_SetDefaultDeviceId @67
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapiWinrt_PopulateDeviceList @69
@DEF_EXCLUDE_WASAPI_SYMBOLS@PaWasapi_GetIMMDevice @70

BIN
config.guess vendored

Binary file not shown.

BIN
config.sub vendored

Binary file not shown.

BIN
configure vendored

Binary file not shown.

View file

@ -11,15 +11,6 @@ dnl Init autoconf and make sure configure is being called
dnl from the right directory dnl from the right directory
AC_INIT([include/portaudio.h]) AC_INIT([include/portaudio.h])
dnl This is is for testing compilation on Mac OS
PAMAC_TEST_PROGRAM="
/* cdefs.h checks for supported architectures. */
#include <sys/cdefs.h>
int main() {
return 0;
}
"
dnl Define build, build_cpu, build_vendor, build_os dnl Define build, build_cpu, build_vendor, build_os
AC_CANONICAL_BUILD AC_CANONICAL_BUILD
dnl Define host, host_cpu, host_vendor, host_os dnl Define host, host_cpu, host_vendor, host_os
@ -213,22 +204,73 @@ case "${host_os}" in
AC_DEFINE(PA_USE_COREAUDIO,1) AC_DEFINE(PA_USE_COREAUDIO,1)
CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix -Wno-deprecated" CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/unix -Wno-deprecated -Werror"
LIBS="-framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework CoreFoundation -framework CoreServices" LIBS="-framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon"
if test "x$enable_mac_universal" = "xyes" ; then if test "x$enable_mac_universal" = "xyes" ; then
mac_version_min="-mmacosx-version-min=10.6" case `xcodebuild -version | sed -n 's/Xcode \(.*\)/\1/p'` in
mac_sysroot="-isysroot $(xcrun --sdk macosx --show-sdk-path)"
[12]*|3.0|3.1)
dnl In pre-3.2 versions of Xcode, xcodebuild doesn't
dnl support -sdk, so we can't use that to look for
dnl SDKs. However, in those versions of Xcode, the
dnl SDKs are under /Developer/SDKs, so we can just look
dnl there. Also, we assume they had no SDKs later
dnl than 10.5, as 3.2 was the version that came with
dnl 10.6, at least if the Wikipedia page for Xcode
dnl is to be believed.
if [[ -d /Developer/SDKs/MacOSX10.5.sdk ]] ; then
mac_version_min="-mmacosx-version-min=10.3"
mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
else
mac_version_min="-mmacosx-version-min=10.3"
mac_sysroot="-isysroot /Developer/SDKs/MacOSX10.4u.sdk"
fi
;;
*)
dnl In 3.2 and later, xcodebuild supports -sdk, and, in
dnl 4.3 and later, the SDKs aren't under /Developer/SDKs
dnl as there *is* no /Developer, so we use -sdk to check
dnl what SDKs are available and to get the full path of
dnl the SDKs.
if xcodebuild -version -sdk macosx10.5 Path >/dev/null 2>&1 ; then
mac_version_min="-mmacosx-version-min=10.3"
mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.5 Path`"
elif xcodebuild -version -sdk macosx10.6 Path >/dev/null 2>&1 ; then
mac_version_min="-mmacosx-version-min=10.4"
mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.6 Path`"
elif xcodebuild -version -sdk macosx10.7 Path >/dev/null 2>&1 ; then
mac_version_min="-mmacosx-version-min=10.4"
mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.7 Path`"
elif xcodebuild -version -sdk macosx10.8 Path >/dev/null 2>&1 ; then
mac_version_min="-mmacosx-version-min=10.4"
mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.8 Path`"
elif xcodebuild -version -sdk macosx10.9 Path >/dev/null 2>&1 ; then
mac_version_min="-mmacosx-version-min=10.4"
mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.9 Path`"
elif xcodebuild -version -sdk macosx10.10 Path >/dev/null 2>&1 ; then
mac_version_min="-mmacosx-version-min=10.4"
mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.10 Path`"
elif xcodebuild -version -sdk macosx10.11 Path >/dev/null 2>&1 ; then
mac_version_min="-mmacosx-version-min=10.4"
mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.11 Path`"
elif xcodebuild -version -sdk macosx10.12 Path >/dev/null 2>&1 ; then
mac_version_min="-mmacosx-version-min=10.4"
mac_sysroot="-isysroot `xcodebuild -version -sdk macosx10.12 Path`"
else
AC_MSG_ERROR([Could not find 10.5 to 10.12 SDK.])
fi
esac
dnl Pick which architectures to build for based on what dnl Pick which architectures to build for based on what
dnl the compiler and SDK supports. dnl the compiler supports.
mac_arches="" mac_arches=""
for arch in x86_64 arm64 for arch in i386 x86_64 ppc ppc64
do do
save_CFLAGS="$CFLAGS" save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -arch $arch" CFLAGS="$CFLAGS -arch $arch"
AC_COMPILE_IFELSE( AC_TRY_COMPILE([], [return 0;],
[AC_LANG_SOURCE([$PAMAC_TEST_PROGRAM])],
[ [
if [[ -z "$mac_arches" ]] ; then if [[ -z "$mac_arches" ]] ; then
mac_arches="-arch $arch" mac_arches="-arch $arch"
@ -265,7 +307,6 @@ case "${host_os}" in
#VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\""
#CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO"
CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_DS -DPA_USE_DS=1" CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_DS -DPA_USE_DS=1"
INCLUDES="$INCLUDES pa_win_ds.h pa_win_waveformat.h"
fi fi
if [[ "x$with_asio" = "xyes" ]]; then if [[ "x$with_asio" = "xyes" ]]; then
@ -274,7 +315,6 @@ case "${host_os}" in
LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" LIBS="${LIBS} -lwinmm -lm -lole32 -luuid"
DLL_LIBS="${DLL_LIBS} -lwinmm -lm -lole32 -luuid" DLL_LIBS="${DLL_LIBS} -lwinmm -lm -lole32 -luuid"
CFLAGS="$CFLAGS -ffast-math -fomit-frame-pointer -I\$(top_srcdir)/src/hostapi/asio -I$ASIODIR/host/pc -I$ASIODIR/common -I$ASIODIR/host -UPA_USE_ASIO -DPA_USE_ASIO=1 -DWINDOWS" CFLAGS="$CFLAGS -ffast-math -fomit-frame-pointer -I\$(top_srcdir)/src/hostapi/asio -I$ASIODIR/host/pc -I$ASIODIR/common -I$ASIODIR/host -UPA_USE_ASIO -DPA_USE_ASIO=1 -DWINDOWS"
INCLUDES="$INCLUDES pa_asio.h"
dnl Setting the windows version flags below resolves a conflict between Interlocked* dnl Setting the windows version flags below resolves a conflict between Interlocked*
dnl definitions in mingw winbase.h and Interlocked* hacks in ASIO SDK combase.h dnl definitions in mingw winbase.h and Interlocked* hacks in ASIO SDK combase.h
@ -293,7 +333,6 @@ case "${host_os}" in
#VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\""
#CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO" #CFLAGS="$CFLAGS -I$VC98 -DPA_NO_WMME -DPA_NO_ASIO"
CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_WDMKS -DPA_USE_WDMKS=1" CFLAGS="$CFLAGS -I$DXDIR/include -UPA_USE_WDMKS -DPA_USE_WDMKS=1"
INCLUDES="$INCLUDES pa_win_wdmks.h"
fi fi
if [[ "x$with_wmme" = "xyes" ]]; then if [[ "x$with_wmme" = "xyes" ]]; then
@ -301,15 +340,13 @@ case "${host_os}" in
LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" LIBS="${LIBS} -lwinmm -lm -lole32 -luuid"
DLL_LIBS="${DLL_LIBS} -lwinmm" DLL_LIBS="${DLL_LIBS} -lwinmm"
CFLAGS="$CFLAGS -UPA_USE_WMME -DPA_USE_WMME=1" CFLAGS="$CFLAGS -UPA_USE_WMME -DPA_USE_WMME=1"
INCLUDES="$INCLUDES pa_win_wmme.h pa_win_waveformat.h"
fi fi
if [[ "x$with_wasapi" = "xyes" ]]; then if [[ "x$with_wasapi" = "xyes" ]]; then
add_objects src/hostapi/wasapi/pa_win_wasapi.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o add_objects src/hostapi/wasapi/pa_win_wasapi.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o
LIBS="${LIBS} -lwinmm -lm -lole32 -luuid" LIBS="${LIBS} -lwinmm -lm -lole32 -luuid"
DLL_LIBS="${DLL_LIBS} -lwinmm -lole32" DLL_LIBS="${DLL_LIBS} -lwinmm -lole32"
CFLAGS="$CFLAGS -UPA_USE_WASAPI -DPA_USE_WASAPI=1" CFLAGS="$CFLAGS -I\$(top_srcdir)/src/hostapi/wasapi/mingw-include -UPA_USE_WASAPI -DPA_USE_WASAPI=1"
INCLUDES="$INCLUDES pa_win_wasapi.h pa_win_waveformat.h"
fi fi
;; ;;

20207
configure~

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -112,7 +112,7 @@ Many of the tests in the /tests directory of the PortAudio distribution implemen
@subsection read_write_io_method The Read/Write I/O Method @subsection read_write_io_method The Read/Write I/O Method
As an alternative to the callback I/O method, PortAudio provides a synchronous read/write interface for acquiring and playing audio. This can be useful for applications that don't require the lowest possibly latency, or don't warrant the increased complexity of synchronising with an asynchronous callback function. This I/O method is also useful when calling PortAudio from programming languages that don't support asynchronous callbacks. As an alternative to the callback I/O method, PortAudio provides a synchronous read/write interface for acquiring and playing audio. This can be useful for applications that don't require the lowest possibly latency, or don't warrant the increased complexity of synchronising with an asynchronous callback funciton. This I/O method is also useful when calling PortAudio from programming languages that don't support asynchronous callbacks.
To open a Stream in read/write mode you pass a NULL stream callback function pointer to Pa_OpenStream(). To open a Stream in read/write mode you pass a NULL stream callback function pointer to Pa_OpenStream().

View file

@ -8,16 +8,16 @@ The library provides functions that allow your software to acquire and output re
@section start_here Start here @section start_here Start here
- @ref api_overview <br> - @ref api_overview<br>
A top-down view of the PortAudio API, its capabilities, functions and data structures A top-down view of the PortAudio API, its capabilities, functions and data structures
- @ref tutorial_start <br> - @ref tutorial_start<br>
Get started writing code with PortAudio tutorials Get started writing code with PortAudio tutorials
- @ref examples_src "Examples"<br> - @ref examples_src "Examples"<br>
Simple example programs demonstrating PortAudio usage Simple example programs demonstrating PortAudio usage
- @ref License <br> - @ref License<br>
PortAudio is licenced under the MIT Expat open source licence. We make a non-binding request for you to contribute your changes back to the project. PortAudio is licenced under the MIT Expat open source licence. We make a non-binding request for you to contribute your changes back to the project.
@ -34,9 +34,12 @@ Documentation for non-portable platform-specific host API extensions
- <a href="http://www.portaudio.com">The PortAudio website</a> - <a href="http://www.portaudio.com">The PortAudio website</a>
- <a href="http://www.portaudio.com/contacts.html">Our mailing list for users and developers</a><br> - <a href="http://music.columbia.edu/mailman/listinfo/portaudio/">Our mailing list for users and developers</a><br>
- <a href="https://github.com/PortAudio/portaudio/wiki">The PortAudio wiki</a> - <a href="http://www.assembla.com/spaces/portaudio/wiki">The PortAudio wiki</a>
- @ref java_binding<br>
Documentation for the Java JNI interface to PortAudio
@section developer_resources Developer Resources @section developer_resources Developer Resources
@ -44,16 +47,14 @@ Documentation for non-portable platform-specific host API extensions
- @ref srcguide - @ref srcguide
@endif @endif
- <a href="https://github.com/PortAudio/portaudio/">Our repository on GitHub</a> - <a href="http://www.assembla.com/spaces/portaudio/wiki">Our wiki and issue tracking system</a>
- <a href="https://github.com/PortAudio/portaudio/wiki/DeveloperGuidelines">Developer guidelines</a> - <a href="https://www.assembla.com/spaces/portaudio/wiki/DeveloperGuidelines">Developer guidelines</a>
- <a href="https://github.com/PortAudio/portaudio/wiki/ImplementationStyleGuidelines">Implementation style guidelines</a> - <a href="https://www.assembla.com/spaces/portaudio/wiki/ImplementationStyleGuidelines">Implementation style guidelines</a>
If you're interested in helping out with PortAudio development we're more than happy for you to be involved. Just drop by the PortAudio mailing list and ask how you can help. Or <a href="http://www.assembla.com/spaces/portaudio/tickets">check out the starter tickets</a>.
If you're interested in helping out with PortAudio development we're more than happy for you to be involved.
Just drop by the PortAudio mailing list and ask how you can help.
Or check out these <a href="https://github.com/PortAudio/portaudio/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22">
recommended starter issues</a>.
@section older_api_versions Older API Versions @section older_api_versions Older API Versions

View file

@ -1,57 +1,29 @@
/** @page compile_cmake PortAudio on Windows, OS X or Linux via. CMake /** @page compile_cmake Creating MSVC Build Files via CMake
@ingroup tutorial @ingroup tutorial
@section cmake_building Building PortAudio stand-alone on Windows, OS X or Linux This is a simple "How-to" for creating build files for Microsoft Visual C++ via CMake and the CMakeLists.txt file
CMake can be used to generate Visual Studio solutions on Windows, Makefiles (on Linux and OS X) and build metadata for other build systems for PortAudio. You should obtain a recent version of CMake from [http://www.cmake.org] if you do not have one already. If you are unfamiliar with CMake, this section will provide some information on using CMake to build PortAudio. 1. Install CMake if you haven't got it already ([http://www.cmake.org], minimum version required is 2.8).
On Linux, CMake serves a very similar purpose to an autotools "configure" script - except it can generate build metadata apart from Makefiles. The equivalent of the following on POSIX'y systems: 2. If you want ASIO support you need to D/L the ASIO2 SDK from Steinberg, and place it according to \ref compile_windows_asio_msvc
build_path> {portaudio path}/configure --prefix=/install_location 3. Run the CMake GUI application and browse to <b>source files</b> directory and <b>build</b> directory:
build_path> make a. The <b>source files</b> directory (<i>"Where is the source code"</i>) is where the portaudio CMakeLists.txt file is located.
build_path> make install b. The <b>build</b> directory (<i>"Where to build the binaries"</i>) is pretty much anywhere you like. A common practice though is to have the build directory located <b>outside</b> the
source files tree (a so called "out-of-source build")
Would be: 4. Click <i>Configure</i>. This will prompt you to select which build files to generate. <b>Note</b> Only Microsoft Visual C++ build files currently supported!
build_path> cmake {portaudio path} -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/install_location 5. In the CMake option list, enable the PORTAUDIO_xxx options you need, then click <i>Configure</i> again (Note that after this there are no options marked with red color)
build_path> make
build_path> make install
The "-G" option specifies the type of build metadata which will be generated. You can obtain a list of supported build metadata formats by invoking (on any platform): 6. Click <i>Generate</i> and you'll now (hopefully) have your VS build files in your previously defined <b>build</b> directory.
cmake -G Both ASIO and DirectX SDK are automatically searched for by the CMake script, so if you have DirectX SDK installed and have placed the ASIO2 SDK according to point 2 above, you should be able to build portaudio with !DirectSound and ASIO support.
"make install" should install the same set of files that are installed using the usual configure script included with PortAudio along with a few extra files (similar to pkg-config metadata files) which make it easier for other CMake projects to use the installed libraries. Should you later on decide to change a portaudio option, just jump in at step 5 above (MSVC will then prompt you to reload projects/solutions/workspace)
On Windows, you can use CMake to generate Visual Studio project files which can be used to create the PortAudio libraries. The following serves as an example (and should be done from a directory outside the PortAudio tree) which will create Visual Studio 2015 project files targeting a 64-bit build: --- Robert Bielik
C:\PABUILD> cmake {portaudio path} -G "Visual Studio 14 2015 Win64" Back to the Tutorial: \ref tutorial_start
After executing the above, you can either open the generated solution with Visual Studio or use CMake to invoke the build process. The following shows an example of how to build a release configuration (assuming the above command was executed previously in the same directory):
C:\PABUILD> cmake --build . --config Release
If you want ASIO support you need to obtain the ASIO2 SDK from Steinberg and place it according to \ref compile_windows_asio_msvc. Both ASIO and the DirectX SDK are automatically searched for by the CMake script - if they are found, they will be enabled by default.
@section cmake_using Using PortAudio in your CMake project
PortAudio defines the following CMake targets:
- "portaudio_static" for a static library and
- "portaudio" for a dynamic library
If you installed PortAudio as described above in \ref cmake_building and the install prefix you used (CMAKE_INSTALL_PREFIX) is in your system PATH or CMAKE_MODULE_PATH CMake variable, you should be able to use:
find_package(portaudio)
To define the "portaudio_static" and "portaudio" targets in your CMake project.
If you do not want to install portaudio into your system but would rather just have it get built as part of your own project (which may be particularly convenient on Windows), you may also use:
add_subdirectory("path to PortAudio location" "some binary directory" EXCLUDE_FROM_ALL)
EXCLUDE_FROM_ALL is not strictly necessary, but will ensure that targets which you don't use in your project won't get built.
Back to \ref tutorial_start
*/ */

View file

@ -47,7 +47,7 @@ On some systems you may need to use:
cp /usr/local/lib/libportaudio.a /YOUR/PROJECT/DIR cp /usr/local/lib/libportaudio.a /YOUR/PROJECT/DIR
@endcode @endcode
You may also need to copy portaudio.h, located in the include/ directory of PortAudio into your project. Note that you will usually need to link with the appropriate libraries that you used, such as ALSA and JACK, as well as with librt and libpthread. For example: You may also need to copy portaudio.h, located in the include/ directory of PortAudio into your project. Note that you will usually need to link with the approriate libraries that you used, such as ALSA and JACK, as well as with librt and libpthread. For example:
@code @code
gcc main.c libportaudio.a -lrt -lm -lasound -ljack -pthread -o YOUR_BINARY gcc main.c libportaudio.a -lrt -lm -lasound -ljack -pthread -o YOUR_BINARY

View file

@ -3,11 +3,11 @@
@section comp_mac_ca_1 Requirements @section comp_mac_ca_1 Requirements
* OS X 10.6 or later. PortAudio v19.7 currently only compiles and runs on OS X version 10.6 or later. * OS X 10.4 or later. PortAudio v19 currently only compiles and runs on OS X version 10.4 or later. Because of its heavy reliance on memory barriers, it's not clear how easy it would be to back-port PortAudio to OS X version 10.3. Leopard support requires the 2007 snapshot or later.
* Apple's Xcode and its related tools installed in the default location. There is no Xcode project for PortAudio. * Apple's Xcode and its related tools installed in the default location. There is no Xcode project for PortAudio.
* Mac 10.6 SDK. Look for "/Developer/SDKs/MacOSX10.6.sdk" folder on your system. It may be installed with XCode. If not then you can download it from Apple Developer Connection. http://connect.apple.com/ * Mac 10.4 SDK. Look for "/Developer/SDKs/MacOSX10.4u.sdk" folder on your system. It may be installed with XCode. If not then you can download it from Apple Developer Connection. http://connect.apple.com/
@section comp_mac_ca_2 Building @section comp_mac_ca_2 Building
@ -29,7 +29,7 @@ There are a variety of other options for building PortAudio. The default describ
@subsection comp_mac_ca_3.1 Building Non-Universal Libraries @subsection comp_mac_ca_3.1 Building Non-Universal Libraries
By default, PortAudio is built as a universal binary. This includes 64-bit versions if you are compiling on 10.6, Snow Leopard. If you want a "thin", or single architecture library, you have two options: By default, PortAudio is built as a universal binary. This includes 64-bit versions if you are compiling on 10.5, Leopard. If you want a "thin", or single architecture library, you have two options:
* build a non-universal library using configure options. * build a non-universal library using configure options.
* use lipo(1) on whatever part of the library you plan to use. * use lipo(1) on whatever part of the library you plan to use.
@ -44,11 +44,11 @@ To build a non-universal library for the host architecture, simply use the <i>--
./configure --disable-mac-universal && make ./configure --disable-mac-universal && make
@endcode @endcode
The <i>--disable-mac-universal</i> option may also be used in conjunction with environment variables to give you more control over the universal binary build process. For example, to build a universal binary for the i386 and ppc architectures using the 10.6 sdk, you might specify this configure command line: The <i>--disable-mac-universal</i> option may also be used in conjunction with environment variables to give you more control over the universal binary build process. For example, to build a universal binary for the i386 and ppc architectures using the 10.4u sdk (which is the default on 10.4, but not 10.5), you might specify this configure command line:
@code @code
CFLAGS="-O2 -g -Wall -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6" \ CFLAGS="-O2 -g -Wall -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.3" \
LDFLAGS="-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6" \ LDFLAGS="-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.3" \
./configure --disable-mac-universal --disable-dependency-tracking ./configure --disable-mac-universal --disable-dependency-tracking
@endcode @endcode
@ -99,7 +99,7 @@ You will need to add the following frameworks to your XCode project:
- AudioToolbox.framework - AudioToolbox.framework
- AudioUnit.framework - AudioUnit.framework
- CoreServices.framework - CoreServices.framework
- CoreFoundation.framework - Carbon.framework
@section comp_mac_ca_5 Using the Library in Other Projects @section comp_mac_ca_5 Using the Library in Other Projects

View file

@ -3,10 +3,7 @@
@section comp_mingw1 Portaudio for Windows With MinGW @section comp_mingw1 Portaudio for Windows With MinGW
<strong>This document contains old or out-of-date information. Please see <i>The following document is still being reviewed</i>
a draft of new MinGW information on our
Wiki: <a href="https://github.com/PortAudio/portaudio/wiki/Notes_about_building_PortAudio_with_MinGW">
PortAudio Wiki: Notes about building PortAudio with MinGW</a></strong>
= MinGW/MSYS = = MinGW/MSYS =

Some files were not shown because too many files have changed in this diff Show more