diff --git a/mingw-w64-portaudio/PKGBUILD b/mingw-w64-portaudio/PKGBUILD new file mode 100644 index 0000000000..739ca7efaa --- /dev/null +++ b/mingw-w64-portaudio/PKGBUILD @@ -0,0 +1,50 @@ +# Maintainer: Alexey Pavlov + +_realname=portaudio +_mingw_suff=mingw-w64-${CARCH} +pkgname="${_mingw_suff}-${_realname}" +pkgver=19_20140130 +pkgrel=1 +pkgdesc="A free, cross-platform, open source, audio I/O library. (mingw-w64)" +arch=('any') +url="http://www.portaudio.com" +license=("custom") +makedepends=("${_mingw_suff}-gcc" "${_mingw_suff}-pkg-config") +depends=("${_mingw_suff}-gcc-libs") +options=(!libtool strip !makeflags staticlibs) +source=("http://www.portaudio.com/archives/pa_stable_v$pkgver.tgz" + mingw-w64-fix.patch + mingw-w64-cmake-allow-cxx.patch) +md5sums=('7f220406902af9dca009668e198cbd23' + '99da198098bd39e24333d6e4ab1bef4a' + '9ae34b0d0dee106c6a90dfc744bf096c') + +prepare() { + cd ${srcdir}/${_realname} + patch -p2 -i ${srcdir}/mingw-w64-fix.patch + patch -p2 -i ${srcdir}/mingw-w64-cmake-allow-cxx.patch + + autoconf +} + +build() { + export lt_cv_deplibs_check_method='pass_all' + mkdir -p "${srcdir}/build-${MINGW_CHOST}" + cd "${srcdir}/build-${MINGW_CHOST}" + ${srcdir}/${_realname}/configure \ + --prefix=${MINGW_PREFIX} \ + --build=${MINGW_CHOST} \ + --host=${MINGW_CHOST} \ + --target=${MINGW_CHOST} \ + --enable-shared \ + --enable-cxx \ + --with-dxdir=${MINGW_PREFIX}/${MINGW_CHOST} \ + --with-winapi=wmme,directx,wdmks + #wasapi, + make +} + +package() { + cd "${srcdir}/build-${MINGW_CHOST}" + make DESTDIR="$pkgdir" install +} diff --git a/mingw-w64-portaudio/mingw-w64-cmake-allow-cxx.patch b/mingw-w64-portaudio/mingw-w64-cmake-allow-cxx.patch new file mode 100644 index 0000000000..51266b3bac --- /dev/null +++ b/mingw-w64-portaudio/mingw-w64-cmake-allow-cxx.patch @@ -0,0 +1,55 @@ +--- origsrc/portaudio/CMakeLists.txt 2012-06-29 06:45:21.000000000 -0500 ++++ src/portaudio/CMakeLists.txt 2014-03-31 22:08:57.660359400 -0500 +@@ -318,6 +318,9 @@ CONFIGURE_FILE( cmake_support/template_p + CONFIGURE_FILE( cmake_support/options_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h @ONLY ) + + IF(WIN32) ++IF(PA_USE_WMME) ++TARGET_LINK_LIBRARIES(portaudio winmm) ++ENDIF(PA_USE_WMME) + # 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}) +@@ -335,9 +335,15 @@ SET_TARGET_PROPERTIES(portaudio PROPERTI + SET_TARGET_PROPERTIES(portaudio_static PROPERTIES OUTPUT_NAME portaudio_static_${TARGET_POSTFIX}) + ENDIF(WIN32) + ++OPTION(PA_BUILD_CXX "Include C++ bindings" OFF) + OPTION(PA_BUILD_TESTS "Include test projects" OFF) + OPTION(PA_BUILD_EXAMPLES "Include example projects" OFF) + ++# Prepared for inclusion of C++ bindings ++IF(PA_BUILD_CXX) ++SUBDIRS(bindings/cpp) ++ENDIF(PA_BUILD_CXX) ++ + # Prepared for inclusion of test files + IF(PA_BUILD_TESTS) + SUBDIRS(test) +--- origsrc/portaudio/bindings/cpp/CMakeLists.txt 1969-12-31 18:00:00.000000000 -0600 ++++ src/portaudio/bindings/cpp/CMakeLists.txt 2014-03-31 23:16:32.798796600 -0500 +@@ -0,0 +1,24 @@ ++INCLUDE_DIRECTORIES(include) ++ ++SET(PA_CXX_SOURCES ++ source/portaudiocpp/BlockingStream.cxx ++ source/portaudiocpp/CallbackInterface.cxx ++ source/portaudiocpp/CallbackStream.cxx ++ source/portaudiocpp/CFunCallbackStream.cxx ++ source/portaudiocpp/CppFunCallbackStream.cxx ++ source/portaudiocpp/Device.cxx ++ source/portaudiocpp/DirectionSpecificStreamParameters.cxx ++ source/portaudiocpp/Exception.cxx ++ source/portaudiocpp/HostApi.cxx ++ source/portaudiocpp/InterfaceCallbackStream.cxx ++ source/portaudiocpp/MemFunCallbackStream.cxx ++ source/portaudiocpp/Stream.cxx ++ source/portaudiocpp/StreamParameters.cxx ++ source/portaudiocpp/System.cxx ++ source/portaudiocpp/SystemDeviceIterator.cxx ++ source/portaudiocpp/SystemHostApiIterator.cxx) ++ ++ADD_LIBRARY(portaudiocpp SHARED ${PA_CXX_SOURCES}) ++TARGET_LINK_LIBRARIES(portaudiocpp portaudio) ++ ++ADD_LIBRARY(portaudiocpp_static STATIC ${PA_CXX_SOURCES}) diff --git a/mingw-w64-portaudio/mingw-w64-fix.patch b/mingw-w64-portaudio/mingw-w64-fix.patch new file mode 100644 index 0000000000..6a82910f3b --- /dev/null +++ b/mingw-w64-portaudio/mingw-w64-fix.patch @@ -0,0 +1,83 @@ +--- origsrc/portaudio/bindings/cpp/example/devs.cxx 2006-05-25 04:34:26.000000000 -0500 ++++ src/portaudio/bindings/cpp/example/devs.cxx 2014-03-31 21:51:17.916789100 -0500 +@@ -1,7 +1,7 @@ + #include + #include "portaudiocpp/PortAudioCpp.hxx" + +-#ifdef WIN32 ++#if PA_USE_ASIO + #include "portaudiocpp/AsioDeviceAdapter.hxx" + #endif + +@@ -109,7 +109,7 @@ int main(int, char*[]) + std::cout << "Default high input latency = " << (*i).defaultHighInputLatency() << std::endl; // 8.3 + std::cout << "Default high output latency = " << (*i).defaultHighOutputLatency() << std::endl; // 8.3 + +-#ifdef WIN32 ++#if PA_USE_ASIO + // ASIO specific latency information: + if ((*i).hostApi().typeId() == paASIO) + { +@@ -124,7 +124,7 @@ int main(int, char*[]) + else + std::cout << "ASIO buffer granularity = " << asioDevice.granularity() << std::endl; + } +-#endif // WIN32 ++#endif // PA_USE_ASIO + + std::cout << "Default sample rate = " << (*i).defaultSampleRate() << std::endl; // 8.2 + +--- origsrc/portaudio/configure.in 2014-01-16 11:49:33.000000000 -0600 ++++ src/portaudio/configure.in 2014-03-31 22:16:22.682370000 -0500 +@@ -287,7 +287,6 @@ case "${host_os}" in + + PADLL="portaudio.dll" + THREAD_CFLAGS="-mthreads" +- SHARED_FLAGS="-shared" + CFLAGS="$CFLAGS -I\$(top_srcdir)/src/os/win -DPA_USE_WMME=0 -DPA_USE_ASIO=0 -DPA_USE_WDMKS=0 -DPA_USE_DS=0 -DPA_USE_WASAPI=0" + + if [[ "x$with_directx" = "xyes" ]]; then +@@ -318,7 +317,7 @@ case "${host_os}" in + + if [[ "x$with_wdmks" = "xyes" ]]; then + DXDIR="$with_dxdir" +- add_objects src/hostapi/wdmks/pa_win_wdmks.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_wdmks_util.o src/os/win/pa_win_waveformat.o ++ add_objects src/hostapi/wdmks/pa_win_wdmks.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_wdmks_utils.o src/os/win/pa_win_waveformat.o + LIBS="${LIBS} -lwinmm -lm -luuid -lsetupapi -lole32" + DLL_LIBS="${DLL_LIBS} -lwinmm -lm -L$DXDIR/lib -luuid -lsetupapi -lole32" + #VC98="\"/c/Program Files/Microsoft Visual Studio/VC98/Include\"" +--- origsrc/portaudio/src/hostapi/wdmks/pa_win_wdmks.c 2012-12-28 10:54:25.000000000 -0600 ++++ src/portaudio/src/hostapi/wdmks/pa_win_wdmks.c 2014-03-31 21:52:17.791392200 -0500 +@@ -63,9 +63,11 @@ of a device for the duration of active s + + #ifdef __GNUC__ + #include ++#ifndef __MINGW64_VERSION_MAJOR + #define _WIN32_WINNT 0x0501 + #define WINVER 0x0501 + #endif ++#endif + + #include /* strlen() */ + #include +@@ -87,7 +89,9 @@ of a device for the duration of active s + #include "pa_win_wdmks.h" + + #include ++#ifndef __MINGW64_VERSION_MAJOR + #include ++#endif + #include + + #include +--- origsrc/portaudio/src/os/win/pa_x86_plain_converters.c 2013-04-07 09:15:24.000000000 -0500 ++++ src/portaudio/src/os/win/pa_x86_plain_converters.c 2014-03-31 22:07:49.570213100 -0500 +@@ -112,7 +112,7 @@ TODO: + 0011 1111 1000 0000 0000 0000 0000 0000 => 0x3F800000 + */ + +-#if defined(_WIN64) || defined(_WIN32_WCE) ++#if defined(_WIN64) || defined(_WIN32_WCE) || defined(__MINGW32__) + + /* + -EMT64/AMD64 uses different asm