diff --git a/.gitmodules b/.gitmodules index e54658932..cff25548d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -126,3 +126,6 @@ path = externals/sdl3 url = https://github.com/shadexternals/sdl3.git +[submodule "externals/openal-soft"] + path = externals/openal-soft + url = https://github.com/shadexternals/openal-soft.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 8cef2df24..1de4416ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -228,6 +228,7 @@ find_package(glslang 15 CONFIG) find_package(half 1.12.0 MODULE) find_package(magic_enum 0.9.7 CONFIG) find_package(PNG 1.6 MODULE) +find_package(OpenAL CONFIG) find_package(RenderDoc 1.6.0 MODULE) find_package(SDL3_mixer 2.8.1 CONFIG) if (SDL3_mixer_FOUND) @@ -1112,7 +1113,7 @@ create_target_directory_groups(shadps4) target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient RenderDoc::API FFmpeg::ffmpeg Dear_ImGui gcn half::half ZLIB::ZLIB PNG::PNG) target_link_libraries(shadps4 PRIVATE Boost::headers GPUOpen::VulkanMemoryAllocator LibAtrac9 sirit Vulkan::Headers xxHash::xxhash Zydis::Zydis glslang::glslang SDL3::SDL3 SDL3_mixer::SDL3_mixer pugixml::pugixml) -target_link_libraries(shadps4 PRIVATE stb::headers libusb::usb lfreist-hwinfo::hwinfo nlohmann_json::nlohmann_json miniz fdk-aac CLI11::CLI11) +target_link_libraries(shadps4 PRIVATE stb::headers libusb::usb lfreist-hwinfo::hwinfo nlohmann_json::nlohmann_json miniz fdk-aac CLI11::CLI11 OpenAL::OpenAL) target_compile_definitions(shadps4 PRIVATE IMGUI_USER_CONFIG="imgui/imgui_config.h") target_compile_definitions(Dear_ImGui PRIVATE IMGUI_USER_CONFIG="${PROJECT_SOURCE_DIR}/src/imgui/imgui_config.h") diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 80a6ff7e2..0a079cac3 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -276,3 +276,35 @@ if (NOT TARGET CLI11::CLI11) set(CLI11_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) add_subdirectory(CLI11) endif() + +#openal +if (NOT TARGET OpenAL::OpenAL) +set(ALSOFT_ENABLE_MODULES OFF CACHE BOOL "" FORCE) +set(LIBTYPE "STATIC" CACHE STRING "" FORCE) +# Disable everything we don't need +set(ALSOFT_UTILS OFF CACHE BOOL "" FORCE) +set(ALSOFT_EXAMPLES OFF CACHE BOOL "" FORCE) +set(ALSOFT_TESTS OFF CACHE BOOL "" FORCE) +set(ALSOFT_INSTALL OFF CACHE BOOL "" FORCE) +set(ALSOFT_CONFIG OFF CACHE BOOL "" FORCE) + +# Backends (platform-specific) +if (WIN32) + set(ALSOFT_BACKEND_WASAPI ON CACHE BOOL "" FORCE) + set(ALSOFT_BACKEND_DSOUND OFF CACHE BOOL "" FORCE) + set(ALSOFT_BACKEND_WINMM OFF CACHE BOOL "" FORCE) +elseif (APPLE) + set(ALSOFT_BACKEND_COREAUDIO ON CACHE BOOL "" FORCE) +else() + set(ALSOFT_BACKEND_ALSA ON CACHE BOOL "" FORCE) + set(ALSOFT_BACKEND_PULSEAUDIO ON CACHE BOOL "" FORCE) + set(ALSOFT_BACKEND_PIPEWIRE OFF CACHE BOOL "" FORCE) +endif() +# Headless-safe +set(ALSOFT_BACKEND_NULL ON CACHE BOOL "" FORCE) + +# Static build +set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) + +add_subdirectory(openal-soft EXCLUDE_FROM_ALL) +endif() diff --git a/externals/openal-soft b/externals/openal-soft new file mode 160000 index 000000000..f120be6e2 --- /dev/null +++ b/externals/openal-soft @@ -0,0 +1 @@ +Subproject commit f120be6e2e7d2eb37a70f8adb5a98e5a645c5349