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 + "$") # @@ -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 + "$") 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 $,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 $ ${FMOD_LIB_DIR} - COMMAND ${CMAKE_COMMAND} -E copy $ ${FMOD_LIB_DIR} + COMMAND ${CMAKE_COMMAND} -E copy $ ${FMOD_LIB_DIR} + COMMAND ${CMAKE_COMMAND} -E copy $,mysofa::mysofa-shared,mysofa::mysofa-static>> ${FMOD_LIB_DIR} COMMAND ${CMAKE_COMMAND} -E copy $ ${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 $ ${UNITY_LIB_DIR} - COMMAND ${CMAKE_COMMAND} -E copy $ ${UNITY_PLUGIN_DIR} - COMMAND ${CMAKE_COMMAND} -E copy $ ${UNITY_PLUGIN_DIR} + COMMAND ${CMAKE_COMMAND} -E copy $ ${UNITY_PLUGIN_DIR} + COMMAND ${CMAKE_COMMAND} -E copy $,mysofa::mysofa-shared,mysofa::mysofa-static>> ${UNITY_PLUGIN_DIR} COMMAND ${CMAKE_COMMAND} -E copy $ ${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 $ ${UNREAL_PLUGIN_DIR} - COMMAND ${CMAKE_COMMAND} -E copy $ ${UNREAL_PLUGIN_DIR} + COMMAND ${CMAKE_COMMAND} -E copy $ ${UNREAL_PLUGIN_DIR} + COMMAND ${CMAKE_COMMAND} -E copy $,mysofa::mysofa-shared,mysofa::mysofa-static>> ${UNREAL_PLUGIN_DIR} COMMAND ${CMAKE_COMMAND} -E copy $ ${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}/$/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/$>/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 +#include #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