[FFmpeg-devel] Can't use __musl__ macro

Brad Smith brad at comstyle.com
Fri Aug 30 06:50:53 EEST 2024


On 2024-08-29 9:47 a.m., Ramiro Polla wrote:
> Hi,
>
> 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.


More information about the ffmpeg-devel mailing list