libsdl-org / SDL_mixer

An audio mixer that supports various file formats for Simple Directmedia Layer.
zlib License
430 stars 147 forks source link

Call to undeclared library function '_BitScanForward' with VS2022 ClanCl in WAVPACK #625

Closed eres-j closed 3 months ago

eres-j commented 3 months ago

Hi,

This issue is actually in https://github.com/libsdl-org/WavPack but it is not possible to open one in this repository. It is a fork but it looks more maintained than the original repo. I hope you don't mind if I open one here, not sure how to proceed with external library hosted in libsdl-org.

I recently let my project build using VS2022 ClangCl and got the following error in wavpack: SDL_mixer\external\wavpack\src\read_words.c(136,30): error : call to undeclared library function '_BitScanForward' with type 'unsigned char (unsigned long *, unsigned long)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]

Step to reproduce (in SDL_mixer\external\wavpack):

"%ProgramFiles%\CMake\bin\cmake.exe" -B build -G "Visual Studio 17 2022" -A x64 -T ClangCl
"%ProgramFiles%\CMake\bin\cmake.exe" --build "build" --config Release

Potential fix: I locally patched read_words.c by adding this at line 29

#if defined(_MSC_VER) && defined(__clang__)
#include <intrin.h>
#endif

The compiler also give some warnings which could be nice to fix as well:

SDL_mixer\external\wavpack\src\unpack_dsd.c(510,9): warning : variable 'skipped_terms' set but not used [-Wunused-but-set-variable]
SDL_mixer\external\wavpack\cli\wvtag.c(1351,37): warning : passing 'char *' to parameter of type 'const unsigned char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign]
SDL_mixer\external\wavpack\cli\wvunpack.c(3347,37): warning : passing 'char *' to parameter of type 'const unsigned char *' converts between pointers to integer types where one is of the unique plain 'char' type and the other is not [-Wpointer-sign]

Let me know if you need more information :)

eres-j commented 3 months ago

My bad... I don't know which repo I checked exactly but after searching again I've been able to open an issue there: https://github.com/dbry/WavPack/issues/184

Sorry for the noise.