diff --git a/CMakeLists.txt b/CMakeLists.txt index 936e9ffd..3737929b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -573,59 +573,65 @@ 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) - # No standard locations on Windows. -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) - # No standard locations on Windows. -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) - find_path(STEAMAUDIO_INCLUDE_DIR - NAMES phonon.h - HINTS ${STEAMAUDIO_FIND_HEADER_HINTS} - ) - if(STEAMAUDIO_INCLUDE_DIR) - add_library (steamaudio INTERFACE) - target_include_directories(steamaudio INTERFACE ${STEAMAUDIO_INCLUDE_DIR}) - target_link_libraries (steamaudio INTERFACE ${STEAMAUDIO_LIBRARY}) + if(WIN32) + # No standard locations on Windows. 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) + # No standard locations on Windows. + 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) + find_path(STEAMAUDIO_INCLUDE_DIR + NAMES phonon.h + HINTS ${STEAMAUDIO_FIND_HEADER_HINTS} + ) + if(STEAMAUDIO_INCLUDE_DIR) + add_library (steamaudio INTERFACE) + target_include_directories(steamaudio INTERFACE ${STEAMAUDIO_INCLUDE_DIR}) + target_link_libraries (steamaudio INTERFACE ${STEAMAUDIO_LIBRARY}) + 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.") 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() diff --git a/miniaudio.h b/miniaudio.h index 00f0cb04..19b84505 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -4311,12 +4311,24 @@ typedef ma_uint16 wchar_t; #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