From a3a0005fca11be23796d651ef46ce61252920481 Mon Sep 17 00:00:00 2001 From: David Reid Date: Sat, 11 Jul 2026 10:31:50 +1000 Subject: [PATCH 1/2] CMake: Fix a possible build error relating to the SteamAudio example. Public issue https://github.com/mackron/miniaudio/pull/1135 --- CMakeLists.txt | 82 +++++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 38 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 01e22dab..5a89ed49 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -414,58 +414,64 @@ endif() # SteamAudio has an annoying SDK setup. In the lib folder there is a folder for each platform. We need to specify the # platform we're compiling for. -if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") - # Assume 64-bit. Now we need to check if it's for Windows or Linux. +string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" MINIAUDIO_PROCESSOR_LOWER) + +set(STEAMAUDIO_ARCH "") + +if(MINIAUDIO_PROCESSOR_LOWER MATCHES "^(x86_64|amd64)$") if(WIN32) set(STEAMAUDIO_ARCH windows-x64) - else() + elseif(UNIX AND NOT APPLE) set(STEAMAUDIO_ARCH linux-x64) endif() -else() - # Assume 32-bit. Now we need to check if it's for Windows or Linux. +elseif(MINIAUDIO_PROCESSOR_LOWER MATCHES "^(x86|i[3-6]86)$") if(WIN32) set(STEAMAUDIO_ARCH windows-x86) - else() + elseif(UNIX AND NOT APPLE) set(STEAMAUDIO_ARCH linux-x86) endif() endif() -# When searching for SteamAudio, we'll support installing it in the external/steamaudio directory. -set(STEAMAUDIO_FIND_LIBRARY_HINTS) -list(APPEND STEAMAUDIO_FIND_LIBRARY_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/external/steamaudio/lib/${STEAMAUDIO_ARCH}) +if(STEAMAUDIO_ARCH) + # When searching for SteamAudio, we'll support installing it in the external/steamaudio directory. + set(STEAMAUDIO_FIND_LIBRARY_HINTS) + list(APPEND STEAMAUDIO_FIND_LIBRARY_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/external/steamaudio/lib/${STEAMAUDIO_ARCH}) -if(WIN32) -else() - list(APPEND STEAMAUDIO_FIND_LIBRARY_HINTS /opt/steamaudio/lib/${STEAMAUDIO_ARCH}) - list(APPEND STEAMAUDIO_FIND_LIBRARY_HINTS /usr/local/steamaudio/lib/${STEAMAUDIO_ARCH}) -endif() - -set(STEAMAUDIO_FIND_HEADER_HINTS) -list(APPEND STEAMAUDIO_FIND_HEADER_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/external/steamaudio/include) - -if(WIN32) -else() - list(APPEND STEAMAUDIO_FIND_HEADER_HINTS /opt/steamaudio/include) - list(APPEND STEAMAUDIO_FIND_HEADER_HINTS /usr/local/steamaudio/include) -endif() - - -find_library(STEAMAUDIO_LIBRARY NAMES phonon HINTS ${STEAMAUDIO_FIND_LIBRARY_HINTS}) -if(STEAMAUDIO_LIBRARY) - message(STATUS "Found SteamAudio: ${STEAMAUDIO_LIBRARY}") - - find_path(STEAMAUDIO_INCLUDE_DIR - NAMES phonon.h - HINTS ${STEAMAUDIO_FIND_HEADER_HINTS} - ) - if(STEAMAUDIO_INCLUDE_DIR) - message(STATUS "Found phonon.h in ${STEAMAUDIO_INCLUDE_DIR}") - set(HAS_STEAMAUDIO TRUE) + if(WIN32) else() - message(STATUS "Could not find phonon.h. miniaudio_engine_steamaudio will be excluded.") + list(APPEND STEAMAUDIO_FIND_LIBRARY_HINTS /opt/steamaudio/lib/${STEAMAUDIO_ARCH}) + list(APPEND STEAMAUDIO_FIND_LIBRARY_HINTS /usr/local/steamaudio/lib/${STEAMAUDIO_ARCH}) + endif() + + set(STEAMAUDIO_FIND_HEADER_HINTS) + list(APPEND STEAMAUDIO_FIND_HEADER_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/external/steamaudio/include) + + if(WIN32) + else() + list(APPEND STEAMAUDIO_FIND_HEADER_HINTS /opt/steamaudio/include) + list(APPEND STEAMAUDIO_FIND_HEADER_HINTS /usr/local/steamaudio/include) + endif() + + + find_library(STEAMAUDIO_LIBRARY NAMES phonon HINTS ${STEAMAUDIO_FIND_LIBRARY_HINTS}) + if(STEAMAUDIO_LIBRARY) + message(STATUS "Found SteamAudio: ${STEAMAUDIO_LIBRARY}") + + find_path(STEAMAUDIO_INCLUDE_DIR + NAMES phonon.h + HINTS ${STEAMAUDIO_FIND_HEADER_HINTS} + ) + if(STEAMAUDIO_INCLUDE_DIR) + message(STATUS "Found phonon.h in ${STEAMAUDIO_INCLUDE_DIR}") + set(HAS_STEAMAUDIO TRUE) + else() + message(STATUS "Could not find phonon.h. miniaudio_engine_steamaudio will be excluded.") + endif() + else() + message(STATUS "SteamAudio not found. miniaudio_engine_steamaudio will be excluded.") endif() else() - message(STATUS "SteamAudio not found. miniaudio_engine_steamaudio will be excluded.") + message(STATUS "SteamAudio is not supported on ${CMAKE_SYSTEM_PROCESSOR}. miniaudio_engine_steamaudio will be excluded.") endif() From dd644e92694947f5ce9cc63868bc0dbceb68c49c Mon Sep 17 00:00:00 2001 From: David Reid Date: Sat, 11 Jul 2026 10:41:12 +1000 Subject: [PATCH 2/2] Add placeholder RISC-V architecture detection. Public issue https://github.com/mackron/miniaudio/pull/1135 --- miniaudio.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/miniaudio.h b/miniaudio.h index 163aedea..6463425c 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -11660,12 +11660,24 @@ IMPLEMENTATION #define MA_ARM64 #endif +#if defined(__riscv) + #if defined(__riscv_xlen) + #if __riscv_xlen == 64 + #define MA_RISCV64 + #elif __riscv_xlen == 32 + #define MA_RISCV32 + #endif + #endif +#endif + #if defined(__x86_64__) || (defined(_M_X64) && !defined(_M_ARM64EC)) #define MA_X64 #elif defined(__i386) || defined(_M_IX86) #define MA_X86 #elif defined(MA_ARM32) || defined(MA_ARM64) #define MA_ARM +#elif defined(MA_RISCV32) || defined(MA_RISCV64) +#define MA_RISCV #endif /* Intrinsics Support */