mirror of
https://github.com/mpv-player/mpv
synced 2024-11-18 21:16:10 +01:00
647b360a0a
This is based on an older patch by James Ross-Gowan. It was rebased and cleaned up. Also, the DWM API usage present in the older patch was removed, because DWM reports nonsense rates at least on Windows 8.1 (they are rounded to integers, just like with the old GDI API - except the GDI API had a good excuse, as it could report only integers). Signed-off-by: wm4 <wm4@nowhere>
82 lines
2.9 KiB
Python
82 lines
2.9 KiB
Python
from waflib import Utils
|
|
|
|
def __get_cc_env_vars__(cc):
|
|
cmd = cc + ['-dM', '-E', '-']
|
|
try:
|
|
p = Utils.subprocess.Popen(cmd, stdin=Utils.subprocess.PIPE,
|
|
stdout=Utils.subprocess.PIPE,
|
|
stderr=Utils.subprocess.PIPE)
|
|
p.stdin.write('\n'.encode())
|
|
return p.communicate()[0]
|
|
except Exception:
|
|
return ""
|
|
|
|
def __test_and_add_flags__(ctx, flags):
|
|
for flag in flags:
|
|
ctx.check_cc(cflags=flag, uselib_store="compiler", mandatory=False)
|
|
ctx.env.CFLAGS += ctx.env.CFLAGS_compiler
|
|
|
|
def __add_generic_flags__(ctx):
|
|
ctx.env.CFLAGS += ["-D_ISOC99_SOURCE", "-D_GNU_SOURCE",
|
|
"-D_LARGEFILE_SOURCE", "-D_FILE_OFFSET_BITS=64",
|
|
"-D_LARGEFILE64_SOURCE",
|
|
"-std=c99", "-Wall"]
|
|
|
|
if ctx.is_optimization():
|
|
ctx.env.CFLAGS += ['-O2']
|
|
|
|
if ctx.is_debug_build():
|
|
ctx.env.CFLAGS += ['-g']
|
|
|
|
__test_and_add_flags__(ctx, ["-Werror=implicit-function-declaration",
|
|
"-Wno-error=deprecated-declarations",
|
|
"-Wno-error=unused-function",
|
|
"-Wempty-body",
|
|
"-Wdisabled-optimization",
|
|
"-Wstrict-prototypes",
|
|
"-Wno-format-zero-length",
|
|
"-Werror=format-security",
|
|
"-Wno-redundant-decls"])
|
|
|
|
def __add_gcc_flags__(ctx):
|
|
ctx.env.CFLAGS += ["-Wall", "-Wundef", "-Wmissing-prototypes", "-Wshadow",
|
|
"-Wno-switch", "-Wparentheses", "-Wpointer-arith",
|
|
"-Wno-pointer-sign"]
|
|
|
|
def __add_clang_flags__(ctx):
|
|
ctx.env.CFLAGS += ["-Wno-logical-op-parentheses", "-fcolor-diagnostics",
|
|
"-Wno-tautological-compare",
|
|
"-Wno-tautological-constant-out-of-range-compare" ]
|
|
|
|
def __add_mswin_flags__(ctx):
|
|
ctx.env.CFLAGS += ['-D_WIN32_WINNT=0x0601', '-DUNICODE', '-DCOBJMACROS',
|
|
'-U__STRICT_ANSI__']
|
|
|
|
def __add_mingw_flags__(ctx):
|
|
__add_mswin_flags__(ctx)
|
|
ctx.env.CFLAGS += ['-municode', '-D__USE_MINGW_ANSI_STDIO=1']
|
|
ctx.env.LAST_LINKFLAGS += ['-municode', '-mwindows']
|
|
|
|
def __add_cygwin_flags__(ctx):
|
|
__add_mswin_flags__(ctx)
|
|
ctx.env.CFLAGS += ['-mwin32']
|
|
|
|
__compiler_map__ = {
|
|
'__GNUC__': __add_gcc_flags__,
|
|
'__clang__': __add_clang_flags__,
|
|
'__MINGW32__': __add_mingw_flags__,
|
|
'__CYGWIN__': __add_cygwin_flags__,
|
|
}
|
|
|
|
def __apply_map__(ctx, fnmap):
|
|
if not getattr(ctx, 'CC_ENV_VARS', None):
|
|
ctx.CC_ENV_VARS = str(__get_cc_env_vars__(ctx.env.CC))
|
|
for k, fn in fnmap.items():
|
|
if ctx.CC_ENV_VARS.find(k) > 0:
|
|
fn(ctx)
|
|
|
|
def configure(ctx):
|
|
__add_generic_flags__(ctx)
|
|
__apply_map__(ctx, __compiler_map__)
|
|
|