• D
    oslib-win32: only provide localtime_r/gmtime_r if missing · 4d9310f4
    Daniel P. Berrange 提交于
    The oslib-win32 file currently provides a localtime_r and
    gmtime_r replacement unconditionally. Some versions of
    Mingw-w64 would provide crude macros for localtime_r/gmtime_r
    which QEMU takes care to disable. Latest versions of Mingw-w64
    now provide actual functions for localtime_r/gmtime_r, but
    with a twist that you have to include unistd.h or pthread.h
    before including time.h.  By luck some files in QEMU have
    such an include order, resulting in compile errors:
    
      CC    util/osdep.o
    In file included from include/qemu-common.h:48:0,
                     from util/osdep.c:48:
    include/sysemu/os-win32.h:77:12: error: redundant redeclaration of 'gmtime_r' [-Werror=redundant-decls]
     struct tm *gmtime_r(const time_t *timep, struct tm *result);
                ^
    In file included from include/qemu-common.h:35:0,
                     from util/osdep.c:48:
    /usr/i686-w64-mingw32/sys-root/mingw/include/time.h:272:107: note: previous definition of 'gmtime_r' was here
    In file included from include/qemu-common.h:48:0,
                     from util/osdep.c:48:
    include/sysemu/os-win32.h:79:12: error: redundant redeclaration of 'localtime_r' [-Werror=redundant-decls]
     struct tm *localtime_r(const time_t *timep, struct tm *result);
                ^
    In file included from include/qemu-common.h:35:0,
                     from util/osdep.c:48:
    /usr/i686-w64-mingw32/sys-root/mingw/include/time.h:269:107: note: previous definition of 'localtime_r' was here
    
    This change adds a configure test to see if localtime_r
    exits, and only enables the QEMU impl if missing. We also
    re-arrange qemu-common.h try attempt to guarantee that all
    source files get unistd.h before time.h and thus see the
    localtime_r/gmtime_r defs.
    
    [sw: Use "official" spellings for Mingw-w64, MinGW in comments.]
    [sw: Terminate sentences with a dot in comments.]
    Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
    Reviewed-by: NDenis V. Lunev <den@openvz.org>
    Signed-off-by: NStefan Weil <sw@weilnetz.de>
    4d9310f4
oslib-win32.c 13.9 KB