aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/steam-audio
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/steam-audio')
-rw-r--r--vcpkg/ports/steam-audio/fix-arm64-windows.patch13
-rw-r--r--vcpkg/ports/steam-audio/portfile.cmake75
-rw-r--r--vcpkg/ports/steam-audio/usage4
-rw-r--r--vcpkg/ports/steam-audio/use-vcpkg-deps.patch260
-rw-r--r--vcpkg/ports/steam-audio/vcpkg.json25
5 files changed, 377 insertions, 0 deletions
diff --git a/vcpkg/ports/steam-audio/fix-arm64-windows.patch b/vcpkg/ports/steam-audio/fix-arm64-windows.patch
new file mode 100644
index 0000000..0291784
--- /dev/null
+++ b/vcpkg/ports/steam-audio/fix-arm64-windows.patch
@@ -0,0 +1,13 @@
+diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
+index ab49461..9d53dce 100644
+--- a/core/CMakeLists.txt
++++ b/core/CMakeLists.txt
+@@ -43,6 +43,8 @@ endif()
+ if (IPL_OS_WINDOWS)
+ if (CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64")
+ set(IPL_CPU_ARMV8 TRUE)
++ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
++ set(IPL_CPU_ARMV8 TRUE)
+ elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
+ set(IPL_CPU_X64 TRUE)
+ else()
diff --git a/vcpkg/ports/steam-audio/portfile.cmake b/vcpkg/ports/steam-audio/portfile.cmake
new file mode 100644
index 0000000..21211bd
--- /dev/null
+++ b/vcpkg/ports/steam-audio/portfile.cmake
@@ -0,0 +1,75 @@
+if(VCPKG_TARGET_IS_UWP)
+ vcpkg_check_linkage(ONLY_DYNAMIC_CRT) # also sets STEAMAUDIO_STATIC_RUNTIME=OFF
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO ValveSoftware/steam-audio
+ REF "v${VERSION}"
+ SHA512 f237b355f50edf8953b4cba9a1134d32f62b4993a65a64c56b73974122c1de48ef18a0f8faa70221b95ec09b7b007567c711394af3fbabe49fad8feaac780ea0
+ HEAD_REF "v${VERSION}"
+ PATCHES
+ use-vcpkg-deps.patch
+ fix-arm64-windows.patch
+)
+
+if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS)
+ if("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x64")
+ set(MACOS_ARCH "x86_64")
+ elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64")
+ set(MACOS_ARCH "arm64")
+ else()
+ message(FATAL "Unsupported arch")
+ endif()
+ set(VCPKG_MACOS_ARCH "-DVCPKG_MACOS_ARCH=${MACOS_ARCH}")
+endif()
+
+# Set STEAMAUDIO_STATIC_RUNTIME, which is only used on Windows to set /M[TD]d?
+if(VCPKG_TARGET_IS_WINDOWS)
+ string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" STATIC_CRT)
+ set(WINDOWS_STATIC_RUNTIME "-DSTEAMAUDIO_STATIC_RUNTIME=${STATIC_CRT}")
+endif()
+
+# We need to find flatc for steam-audio
+find_program(FlatBuffers_EXECUTABLE NAMES flatc PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools/flatbuffers" "bin" NO_DEFAULT_PATHS)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}/core"
+ OPTIONS
+ -DFlatBuffers_EXECUTABLE=${FlatBuffers_EXECUTABLE}
+ -DSTEAMAUDIO_BUILD_TESTS=OFF
+ -DSTEAMAUDIO_BUILD_ITESTS=OFF
+ -DSTEAMAUDIO_BUILD_SAMPLES=OFF
+ -DSTEAMAUDIO_BUILD_BENCHMARKS=OFF
+ -DSTEAMAUDIO_BUILD_DOCS=OFF
+ -DSTEAMAUDIO_ENABLE_AVX=OFF # Windows only. Maybe expose as a feature?
+ # Below features all require closed source third party dependencies
+ ${WINDOWS_STATIC_RUNTIME}
+ -DSTEAMAUDIO_ENABLE_IPP=OFF
+ -DSTEAMAUDIO_ENABLE_FFTS=OFF
+ -DSTEAMAUDIO_ENABLE_EMBREE=OFF
+ -DSTEAMAUDIO_ENABLE_RADEONRAYS=OFF
+ -DSTEAMAUDIO_ENABLE_TRUEAUDIONEXT=OFF
+ ${VCPKG_MACOS_ARCH}
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_fixup_pkgconfig()
+vcpkg_cmake_config_fixup()
+
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/git" # readme/docs
+ "${CURRENT_PACKAGES_DIR}/debug/git"
+ "${CURRENT_PACKAGES_DIR}/root" # duplicate of THIRDPARTY.md
+ )
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+vcpkg_install_copyright(COMMENT
+[[steam-audio's license and third party notices are included below. In steam-audio's third party
+notices, PFFT and MySOFA are provided by other ports upon which this one depends. IPP, FFTS,
+Embree, RadeonRays, and TrueAudioNext are all disabled in this build. However, the CIPIC HRTF
+Database and Google Spherical Harmonics library components may be used here.]]
+ FILE_LIST "${SOURCE_PATH}/LICENSE.md" "${SOURCE_PATH}/core/THIRDPARTY.md")
diff --git a/vcpkg/ports/steam-audio/usage b/vcpkg/ports/steam-audio/usage
new file mode 100644
index 0000000..5131614
--- /dev/null
+++ b/vcpkg/ports/steam-audio/usage
@@ -0,0 +1,4 @@
+steam-audio provides CMake targets:
+
+ find_package(steam-audio CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE unofficial::steam-audio::phonon)
diff --git a/vcpkg/ports/steam-audio/use-vcpkg-deps.patch b/vcpkg/ports/steam-audio/use-vcpkg-deps.patch
new file mode 100644
index 0000000..348ae1a
--- /dev/null
+++ b/vcpkg/ports/steam-audio/use-vcpkg-deps.patch
@@ -0,0 +1,260 @@
+diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
+index ab49461..8b81aca 100644
+--- a/core/CMakeLists.txt
++++ b/core/CMakeLists.txt
+@@ -192,7 +192,7 @@ endif()
+
+ # macOS flags
+ if (IPL_OS_MACOS)
+- set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64")
++ set(CMAKE_OSX_ARCHITECTURES "${VCPKG_MACOS_ARCH}")
+ set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
+ add_compile_options(-Wno-extern-c-compat) # Suppress warning about empty API structs.
+ add_compile_options(-Wno-unknown-attributes) # Suppress warning in FlatBuffers.
+@@ -240,7 +240,7 @@ if (STEAMAUDIO_ENABLE_FFTS)
+ endif()
+
+ if (NOT FFT_LIBRARY)
+- find_package(PFFFT REQUIRED)
++ find_package(PFFFT CONFIG REQUIRED)
+ set(FFT_LIBRARY PFFFT)
+ endif()
+
+@@ -252,8 +252,8 @@ if (STEAMAUDIO_ENABLE_MKL)
+ endif()
+ endif()
+
+-find_package(MySOFA REQUIRED)
+-find_package(FlatBuffers REQUIRED)
++find_package(mysofa CONFIG REQUIRED)
++find_package(FlatBuffers CONFIG REQUIRED)
+
+ if (STEAMAUDIO_ENABLE_EMBREE)
+ find_package(ISPC 1.12 EXACT)
+diff --git a/core/src/core/CMakeLists.txt b/core/src/core/CMakeLists.txt
+index 7c9226f..56c4c44 100644
+--- a/core/src/core/CMakeLists.txt
++++ b/core/src/core/CMakeLists.txt
+@@ -176,7 +180,8 @@ endif()
+ #
+
+ add_library(hrtf OBJECT hrtf.cpp)
+-target_include_directories(hrtf PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
++target_include_directories(hrtf PUBLIC
++ "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
+
+
+ #
+@@ -582,7 +587,8 @@ if (STEAMAUDIO_BUILD_CSHARP_BINDINGS)
+ endif()
+
+ # This is needed so we can include generated headers
+-target_include_directories(core PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
++target_include_directories(core PUBLIC
++ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>")
+
+ if (IPL_OS_WINDOWS)
+ target_link_libraries(core PUBLIC delayimp)
+@@ -596,7 +602,7 @@ if (IPL_OS_LINUX)
+ target_link_libraries(core PUBLIC -Wl,--start-group)
+ endif()
+
+-target_link_libraries(core PUBLIC FlatBuffers::FlatBuffers)
++target_link_libraries(core PUBLIC flatbuffers::flatbuffers)
+
+ if (STEAMAUDIO_ENABLE_IPP AND (IPL_OS_WINDOWS OR IPL_OS_LINUX OR IPL_OS_MACOS))
+ target_link_libraries(core PUBLIC IPP::IPP)
+@@ -610,10 +616,10 @@ if (FFT_LIBRARY STREQUAL "IPP")
+ elseif (FFT_LIBRARY STREQUAL "FFTS")
+ target_link_libraries(core PUBLIC FFTS::FFTS)
+ elseif (FFT_LIBRARY STREQUAL "PFFFT")
+- target_link_libraries(core PUBLIC PFFFT::PFFFT)
++ target_link_libraries(core PUBLIC pffft::pffft)
+ endif()
+
+-target_link_libraries(core PUBLIC MySOFA::MySOFA)
++target_link_libraries(core PUBLIC $<IF:$<TARGET_EXISTS:mysofa::mysofa-shared>,mysofa::mysofa-shared,mysofa::mysofa-static>)
+ add_dependencies(core fbschemas)
+
+ if (STEAMAUDIO_ENABLE_EMBREE)
+@@ -639,7 +645,7 @@ source_group("OpenCL Files" FILES ${CL_SOURCE})
+
+ target_compile_definitions(core PRIVATE STEAMAUDIO_BUILDING_CORE)
+
+-target_precompile_headers(core PUBLIC pch.h)
++target_precompile_headers(core PRIVATE pch.h)
+
+
+ #
+@@ -671,7 +677,7 @@ if (IPL_OS_LINUX)
+ endif()
+
+ if (IPL_OS_WINDOWS AND IPL_CPU_X64 AND BUILD_SHARED_LIBS)
+- set_target_properties(phonon PROPERTIES LINK_FLAGS "/DELAYLOAD:opencl.dll /DELAYLOAD:gpuutilities.dll /DELAYLOAD:trueaudionext.dll")
++ #set_target_properties(phonon PROPERTIES LINK_FLAGS "/DELAYLOAD:opencl.dll /DELAYLOAD:gpuutilities.dll /DELAYLOAD:trueaudionext.dll")
+ endif()
+
+ if (IPL_OS_LINUX AND BUILD_SHARED_LIBS AND (NOT IPL_CPU_ARMV8))
+@@ -729,8 +735,8 @@ if (NOT FMOD_LIB_DIR STREQUAL "")
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/phonon.h ${FMOD_INCLUDE_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/phonon_version.h ${FMOD_INCLUDE_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/phonon_interfaces.h ${FMOD_INCLUDE_DIR}
+- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:PFFFT::PFFFT> ${FMOD_LIB_DIR}
+- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:MySOFA::MySOFA> ${FMOD_LIB_DIR}
++ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:pffft::pffft> ${FMOD_LIB_DIR}
++ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:$<IF:$<TARGET_EXISTS:mysofa::mysofa-shared>,mysofa::mysofa-shared,mysofa::mysofa-static>> ${FMOD_LIB_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:phonon> ${FMOD_LIB_DIR}
+ )
+ else()
+@@ -851,8 +857,8 @@ if (NOT UNITY_PLUGIN_DIR STREQUAL "")
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/phonon_version.h ${UNITY_INCLUDE_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/phonon_interfaces.h ${UNITY_INCLUDE_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:phonon> ${UNITY_LIB_DIR}
+- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:PFFFT::PFFFT> ${UNITY_PLUGIN_DIR}
+- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:MySOFA::MySOFA> ${UNITY_PLUGIN_DIR}
++ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:pffft::pffft> ${UNITY_PLUGIN_DIR}
++ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:$<IF:$<TARGET_EXISTS:mysofa::mysofa-shared>,mysofa::mysofa-shared,mysofa::mysofa-static>> ${UNITY_PLUGIN_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:phonon> ${UNITY_PLUGIN_DIR}
+ )
+ else()
+@@ -913,8 +919,8 @@ if (NOT UNREAL_PLUGIN_DIR STREQUAL "")
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/phonon.h ${UNREAL_INCLUDE_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/phonon_version.h ${UNREAL_INCLUDE_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/phonon_interfaces.h ${UNREAL_INCLUDE_DIR}
+- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:PFFFT::PFFFT> ${UNREAL_PLUGIN_DIR}
+- COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:MySOFA::MySOFA> ${UNREAL_PLUGIN_DIR}
++ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:pffft::pffft> ${UNREAL_PLUGIN_DIR}
++ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:$<IF:$<TARGET_EXISTS:mysofa::mysofa-shared>,mysofa::mysofa-shared,mysofa::mysofa-static>> ${UNREAL_PLUGIN_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:phonon> ${UNREAL_PLUGIN_DIR}
+ )
+ elseif (IPL_OS_MACOS)
+@@ -953,30 +959,34 @@ get_bin_subdir(IPL_BIN_SUBDIR)
+
+ install(
+ TARGETS phonon
+- ARCHIVE DESTINATION lib/${IPL_BIN_SUBDIR}
+- LIBRARY DESTINATION lib/${IPL_BIN_SUBDIR}
+- RUNTIME DESTINATION lib/${IPL_BIN_SUBDIR}
++ EXPORT steam-audio_exports
++ ARCHIVE DESTINATION lib
++ LIBRARY DESTINATION lib
++ RUNTIME DESTINATION bin
+ )
+
+ if (IPL_OS_MACOS)
+ install(
+ TARGETS phonon_bundle
+- ARCHIVE DESTINATION lib/${IPL_BIN_SUBDIR}
+- LIBRARY DESTINATION lib/${IPL_BIN_SUBDIR}
+- RUNTIME DESTINATION lib/${IPL_BIN_SUBDIR}
++ EXPORT steam-audio_exports
++ ARCHIVE DESTINATION lib
++ LIBRARY DESTINATION lib
++ RUNTIME DESTINATION bin
+ )
+ endif()
+
+-if (IPL_OS_WINDOWS)
+- install(
+- FILES ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/phonon.pdb
+- DESTINATION symbols/${IPL_BIN_SUBDIR}
+- )
+-elseif (IPL_OS_LINUX AND NOT IPL_CPU_ARMV8)
+- install(
+- FILES ${CMAKE_CURRENT_BINARY_DIR}/libphonon.so.dbg
+- DESTINATION symbols/${IPL_BIN_SUBDIR}
+- )
++if(BUILD_SHARED_LIBS)
++ if (IPL_OS_WINDOWS)
++ install(
++ FILES ${CMAKE_CURRENT_BINARY_DIR}/phonon.pdb
++ DESTINATION bin
++ )
++ elseif (IPL_OS_LINUX AND NOT IPL_CPU_ARMV8)
++ install(
++ FILES ${CMAKE_CURRENT_BINARY_DIR}/libphonon.so.dbg
++ DESTINATION bin
++ )
++ endif()
+ endif()
+
+ install(
+@@ -986,6 +996,7 @@ install(
+ DESTINATION include
+ )
+
++#[[
+ if (IPL_OS_WINDOWS AND IPL_CPU_X64)
+ install(
+ FILES ${CMAKE_HOME_DIRECTORY}/deps/trueaudionext/bin/windows-x64/$<LOWER_CASE:$<CONFIG>>/TrueAudioNext.dll
+@@ -993,5 +1004,30 @@ if (IPL_OS_WINDOWS AND IPL_CPU_X64)
+ DESTINATION lib/${IPL_BIN_SUBDIR}
+ )
+ endif()
++]]#
++
++export(EXPORT steam-audio_exports
++ NAMESPACE unofficial::steam-audio::
++ FILE ${CMAKE_CURRENT_BINARY_DIR}/steam-audioTargets.cmake
++)
++
++# required to resolve object libraries on import
++install(TARGETS core hrtf EXPORT steam-audio_exports)
++
++install(EXPORT steam-audio_exports
++ NAMESPACE unofficial::steam-audio::
++ FILE steam-audioTargets.cmake
++ DESTINATION share/steam-audio
++)
++
++include(CMakePackageConfigHelpers)
++configure_package_config_file(steam-audio-config.cmake.in
++ ${CMAKE_CURRENT_BINARY_DIR}/steam-audio-config.cmake
++ INSTALL_DESTINATION share/steam-audio)
++
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/steam-audio-config.cmake
++ DESTINATION share/steam-audio )
++
++
+
+ include(CMakeListsInternal.txt OPTIONAL)
+diff --git a/core/src/core/float4.h b/core/src/core/float4.h
+index a221372..03428db 100644
+--- a/core/src/core/float4.h
++++ b/core/src/core/float4.h
+@@ -41,7 +41,7 @@ namespace float4
+
+ }
+
+-#if defined(IPL_OS_WINDOWS)
++#if defined(IPL_OS_WINDOWS) && !defined(__clang__)
+
+ namespace ipl {
+
+diff --git a/core/src/core/pffft_fft.cpp b/core/src/core/pffft_fft.cpp
+index 0a37114..4f5debe 100644
+--- a/core/src/core/pffft_fft.cpp
++++ b/core/src/core/pffft_fft.cpp
+@@ -16,7 +16,7 @@
+
+ #include "fft.h"
+
+-#include <pffft.h>
++#include <pffft/pffft.h>
+
+ #include "array.h"
+ #include "array_math.h"
+diff --git a/core/src/core/steam-audio-config.cmake.in b/core/src/core/steam-audio-config.cmake.in
+new file mode 100644
+index 0000000..776f7aa
+--- /dev/null
++++ b/core/src/core/steam-audio-config.cmake.in
+@@ -0,0 +1,7 @@
++@PACKAGE_INIT@
++
++include(CMakeFindDependencyMacro)
++
++include(${CMAKE_CURRENT_LIST_DIR}/steam-audioTargets.cmake)
++
++check_required_components(steam-audio)
+\ No newline at end of file
diff --git a/vcpkg/ports/steam-audio/vcpkg.json b/vcpkg/ports/steam-audio/vcpkg.json
new file mode 100644
index 0000000..a7db5d5
--- /dev/null
+++ b/vcpkg/ports/steam-audio/vcpkg.json
@@ -0,0 +1,25 @@
+{
+ "name": "steam-audio",
+ "version": "4.7.0",
+ "description": "Valve's steam audio library",
+ "homepage": "https://github.com/ValveSoftware/steam-audio",
+ "license": "Apache-2.0",
+ "supports": "!uwp",
+ "dependencies": [
+ "flatbuffers",
+ {
+ "name": "flatbuffers",
+ "host": true
+ },
+ "libmysofa",
+ "pffft",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}