diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/steam-audio | |
Diffstat (limited to 'vcpkg/ports/steam-audio')
| -rw-r--r-- | vcpkg/ports/steam-audio/fix-arm64-windows.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/steam-audio/portfile.cmake | 75 | ||||
| -rw-r--r-- | vcpkg/ports/steam-audio/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/steam-audio/use-vcpkg-deps.patch | 260 | ||||
| -rw-r--r-- | vcpkg/ports/steam-audio/vcpkg.json | 25 |
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 + } + ] +} |