On 8/29/2016 7:13 PM, James Almer wrote: > On 8/29/2016 5:31 PM, Timo Rothenpieler wrote: >> On 8/29/2016 8:43 PM, James Almer wrote: >>> On 8/27/2016 9:58 AM, Timo Rothenpieler wrote: >>>> @@ -5996,6 +5992,22 @@ enabled vdpau && enabled xlib && >>>> check_lib2 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 >>>> -lvdpau && >>>> enable vdpau_x11 >>>> >>>> +case $target_os in >>>> + mingw32*|mingw64*|win32|win64|linux|cygwin*) >>>> + disabled nvenc || enable nvenc >>>> + ;; >>>> + *) >>>> + disable nvenc >>>> + ;; >>>> +esac >>>> + >>>> +if enabled nvenc; then >>>> + { >>>> + echo '#include "compat/nvenc/nvEncodeAPI.h"' >>>> + echo 'int main(void) { return 0; }' >>>> + } | check_cc -I$source_path || disable nvenc >>> >>> In what situation could this test fail? nvenc is only enabled if $target_os >>> is one of the supported ones, and the test does nothing but compile the >>> header. >> >> Strange/broken compiler like ancient MinGW or Cygwin, or old MSVC. > > I don't think anything in those could break compilation of this header. It > doesn't seem to use any api, define or struct from windows only headers > aside from RECT, GUID and __stdcall. > If any of the nvenc files from libavcodec depends on something that could > be missing in old and broken compilers then a more specific check should > be done for it.
Indeed, the fact this test succeeds on pretty much every target revealed that nvenc.c isn't compiling with msvc 2012, probably because of c99-to-89. http://fate.ffmpeg.org/log.cgi?time=20160829225456&log=compile&slot=x86_32-msvc11-windows-native And mingw32 (Not mingw-w64) but in this case because of missing defines. http://fate.ffmpeg.org/log.cgi?time=20160829044509&log=compile&slot=x86_64-freebsd10-mingw32 It also broke gcc-asan on linux x86. http://fate.ffmpeg.org/log.cgi?time=20160830020159&log=compile&slot=x86_64-archlinux-gcc-asan > >> >>> If it only supports x86 then you can just check "enabled x86" instead. >> >> NVENC is not supported on FreeBSD or OSX for example. > > I figured as much seeing the OS list above. What i meant was that if the > check was meant to make sure it's only enabled on x86 linux/windows > targets, and not for example ARM like when building for WinRT, then you > could simply check for supported OSes and x86 arch. > > This test succeeds on every Linux/Windows target. It includes only > stdint.h, stdlib.h, windows.h if necessary, and defines RECT and GUID > on non-Windows platforms. > See http://fate.ffmpeg.org/. All the nvenc files are being compiled on > every platform (arm, aarch64, alpha, mips, etc). > >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel