build: fix compilation with mingw-w64/Clang

This fixes the build in mingw-w64/Clang on MSYS2. It also disables the
use of gnu_printf in Clang, which was what was causing most of the
warnings. The Clang-compiled mpv binary appears to work, but there are
no guarantees yet, since until now mpv has only been tested with
mingw-w64/GCC on Windows.

Fixes #3800
This commit is contained in:
James Ross-Gowan 2016-11-17 22:46:18 +11:00
parent a3c27786c6
commit 40b626fd9b
3 changed files with 3 additions and 3 deletions

View File

@ -10,7 +10,7 @@
/** Use gcc attribute to check printf fns. a1 is the 1-based index of
* the parameter containing the format, and a2 the index of the first
* argument. **/
#ifdef __MINGW32__
#if defined(__MINGW32__) && !defined(__clang__)
// MinGW maps "printf" to the non-standard MSVCRT functions, even if
// __USE_MINGW_ANSI_STDIO is defined and set to 1. We need to use "gnu_printf",
// which isn't necessarily available on other GCC compatible compilers.

View File

@ -27,7 +27,7 @@
#endif
// Broken crap with __USE_MINGW_ANSI_STDIO
#ifdef __MINGW32__
#if defined(__MINGW32__) && defined(__GNUC__) && !defined(__clang__)
#undef TA_PRF
#define TA_PRF(a1, a2) __attribute__ ((format (gnu_printf, a1, a2)))
#endif

View File

@ -119,7 +119,7 @@ main_dependencies = [
'name': 'mingw',
'desc': 'MinGW',
'deps': [ 'os-win32' ],
'func': check_statement('stddef.h', 'int x = __MINGW32__;'
'func': check_statement('stdlib.h', 'int x = __MINGW32__;'
'int y = __MINGW64_VERSION_MAJOR'),
}, {
'name': 'posix',