[FFmpeg-devel] Can't use __musl__ macro

Ramiro Polla ramiro.polla at gmail.com
Fri Aug 30 14:07:21 EEST 2024


On 2024-08-30 05:50, Brad Smith wrote:
> On 2024-08-29 9:47 a.m., Ramiro Polla wrote:
>> On Mon, Aug 12, 2024 at 7:16 AM Lance Fredrickson
>> <lancethepants at gmail.com>  wrote:
>>> In commit 9e674b31606c805dd31b4bb754364a72a5877238 of ffmpeg this change
>>> tries to detect musl libc by way of a "__musl__" macro.  This macro
>>> however, doesn't exist in musl. This results in an "incompatible pointer
>>> type" error under gcc-14.2 as detection falls through to the #else
>>> definition. This was in version 6.1.2 and looks like it is still present
>>> in master.  I can't say what the correct fix would be, I just manually
>>> patched for now.
>> musl tries to make itself undetectable. Instead of relying on system
>> #ifdefs which may or may not be correct, we should instead check for
>> the proper signature at configure time.
>>
>> I sent a patch for this (look for the thread "[PATCH] configure:
>> improve check for POSIX ioctl").
>>
>> I tested it with musl, glibc, and the android ndk. Brad, could you
>> test that this works as expected on BSD?
> 
> Here is the config output.. test_code cc sys/ioctl.h int ioctl(int, int, 
> ...); test_cc BEGIN /tmp/ffconf.of6GnZkt/test.c 1 #include <sys/ioctl.h> 
> 2 int main(void) { int ioctl(int, int, ...);; return 0; } END 
> /tmp/ffconf.of6GnZkt/test.c cc -D_ISOC11_SOURCE -D_FILE_OFFSET_BITS=64 
> -D_LARGEFILE_SOURCE -DPIC -std=c17 -fomit-frame-pointer -fPIC 
> -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/X11R6/include -pthread 
> -I/usr/X11R6/include -I/usr/X11R6/include/libdrm -c -o 
> /tmp/ffconf.of6GnZkt/test.o /tmp/ffc onf.of6GnZkt/test.c 
> /tmp/ffconf.of6GnZkt/test.c:2:22: error: conflicting types for 'ioctl' 
> int main(void) { int ioctl(int, int, ...);; return 0; } ^ 
> /usr/include/sys/ioctl.h:52:5: note: previous declaration is here int 
> ioctl(int, unsigned long, ...); ^ 1 error generated.
> 

Thanks! I assume the build worked as well since configure detected that 
it's not POSIX ioctl.


More information about the ffmpeg-devel mailing list