[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v6 4/4] win32: Simplify gmtime_r detection not depends on if
From: |
Daniel P . Berrangé |
Subject: |
Re: [PATCH v6 4/4] win32: Simplify gmtime_r detection not depends on if _POSIX_C_SOURCE are defined on msys2/mingw |
Date: |
Fri, 2 Oct 2020 16:36:36 +0100 |
User-agent: |
Mutt/1.14.6 (2020-07-11) |
On Fri, Oct 02, 2020 at 01:32:30AM +0800, Yonggang Luo wrote:
> We remove the CONFIG_LOCALTIME_R detection option in configure, and move the
> check
> existence of gmtime_r from configure into C header and source directly by
> using macro
> `_POSIX_THREAD_SAFE_FUNCTIONS`.
> Before this patch, the configure script are always assume the compiler
> doesn't define
> _POSIX_C_SOURCE macro at all, but that's not true, because thirdparty library
> such
> as ncursesw may define -D_POSIX_C_SOURCE in it's pkg-config file. And that C
> Flags will
> added -D_POSIX_C_SOURCE into each QEMU_CFLAGS. And that's causing the
> following compiling error:
> n file included from C:/work/xemu/qemu/include/qemu/osdep.h:119,
> from ../softmmu/main.c:25:
> C:/work/xemu/qemu/include/sysemu/os-win32.h:53:12: error: redundant
> redeclaration of 'gmtime_r' [-Werror=redundant-decls]
> 53 | struct tm *gmtime_r(const time_t *timep, struct tm *result);
> | ^~~~~~~~
> In file included from C:/work/xemu/qemu/include/qemu/osdep.h:94,
> from ../softmmu/main.c:25:
> C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/time.h:284:36: note:
> previous definition of 'gmtime_r' was here
> 284 | __forceinline struct tm *__CRTDECL gmtime_r(const time_t *_Time,
> struct tm *_Tm) {
> | ^~~~~~~~
> In file included from C:/work/xemu/qemu/include/qemu/osdep.h:119,
> from ../softmmu/main.c:25:
> C:/work/xemu/qemu/include/sysemu/os-win32.h:55:12: error: redundant
> redeclaration of 'localtime_r' [-Werror=redundant-decls]
> 55 | struct tm *localtime_r(const time_t *timep, struct tm *result);
> | ^~~~~~~~~~~
> In file included from C:/work/xemu/qemu/include/qemu/osdep.h:94,
> from ../softmmu/main.c:25:
> C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/time.h:281:36: note:
> previous definition of 'localtime_r' was here
> 281 | __forceinline struct tm *__CRTDECL localtime_r(const time_t *_Time,
> struct tm *_Tm) {
> | ^~~~~~~~~~~
> Compiling C object libcommon.fa.p/hw_gpio_zaurus.c.obj
> In file included from C:/work/xemu/qemu/include/qemu/osdep.h:119,
> from ../hw/i2c/smbus_slave.c:16:
> C:/work/xemu/qemu/include/sysemu/os-win32.h:53:12: error: redundant
> redeclaration of 'gmtime_r' [-Werror=redundant-decls]
> 53 | struct tm *gmtime_r(const time_t *timep, struct tm *result);
> | ^~~~~~~~
> In file included from C:/work/xemu/qemu/include/qemu/osdep.h:94,
> from ../hw/i2c/smbus_slave.c:16:
> C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/time.h:284:36: note:
> previous definition of 'gmtime_r' was here
> 284 | __forceinline struct tm *__CRTDECL gmtime_r(const time_t *_Time,
> struct tm *_Tm) {
> | ^~~~~~~~
> In file included from C:/work/xemu/qemu/include/qemu/osdep.h:119,
> from ../hw/i2c/smbus_slave.c:16:
> C:/work/xemu/qemu/include/sysemu/os-win32.h:55:12: error: redundant
> redeclaration of 'localtime_r' [-Werror=redundant-decls]
> 55 | struct tm *localtime_r(const time_t *timep, struct tm *result);
> | ^~~~~~~~~~~
> In file included from C:/work/xemu/qemu/include/qemu/osdep.h:94,
> from ../hw/i2c/smbus_slave.c:16:
> C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/time.h:281:36: note:
> previous definition of 'localtime_r' was here
> 281 | __forceinline struct tm *__CRTDECL localtime_r(const time_t *_Time,
> struct tm *_Tm) {
> | ^~~~~~~~~~~
> Compiling C object libcommon.fa.p/hw_dma_xilinx_axidma.c.obj
>
> After this patch, whenever ncursesw or other thirdparty libraries tried to
> define or not
> define _POSIX_C_SOURCE, the source will building properly. Because now, we
> don't make any
> assumption if _POSIX_C_SOURCE are defined. We solely relied on if the macro
> `_POSIX_THREAD_SAFE_FUNCTIONS`
> are defined in msys2/mingw header.
>
> The _POSIX_THREAD_SAFE_FUNCTIONS are defined in mingw header like this:
>
> ```
> #if defined(_POSIX_C_SOURCE) && !defined(_POSIX_THREAD_SAFE_FUNCTIONS)
> #define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
> #endif
>
> #ifdef _POSIX_THREAD_SAFE_FUNCTIONS
> __forceinline struct tm *__CRTDECL localtime_r(const time_t *_Time, struct tm
> *_Tm) {
> return localtime_s(_Tm, _Time) ? NULL : _Tm;
> }
> __forceinline struct tm *__CRTDECL gmtime_r(const time_t *_Time, struct tm
> *_Tm) {
> return gmtime_s(_Tm, _Time) ? NULL : _Tm;
> }
> __forceinline char *__CRTDECL ctime_r(const time_t *_Time, char *_Str) {
> return ctime_s(_Str, 0x7fffffff, _Time) ? NULL : _Str;
> }
> __forceinline char *__CRTDECL asctime_r(const struct tm *_Tm, char * _Str) {
> return asctime_s(_Str, 0x7fffffff, _Tm) ? NULL : _Str;
> }
> #endif
> ```
>
> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> ---
> configure | 34 ----------------------------------
> include/sysemu/os-win32.h | 4 ++--
> util/oslib-win32.c | 4 ++--
> 3 files changed, 4 insertions(+), 38 deletions(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- [PATCH v6 2/4] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw, (continued)
- [PATCH v6 2/4] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw, Yonggang Luo, 2020/10/01
- Re: [PATCH v6 2/4] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw, Daniel P . Berrangé, 2020/10/02
- Re: [PATCH v6 2/4] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw, Yonggang Luo, 2020/10/02
- Re: [PATCH v6 2/4] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw, Daniel P . Berrangé, 2020/10/02
- Re: [PATCH v6 2/4] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw, Paolo Bonzini, 2020/10/02
- Re: [PATCH v6 2/4] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw, Yonggang Luo, 2020/10/02
- Re: [PATCH v6 2/4] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw, Paolo Bonzini, 2020/10/02
- Re: [PATCH v6 2/4] curses: Fixes compiler error that complain don't have langinfo.h on msys2/mingw, Yonggang Luo, 2020/10/02
[PATCH v6 3/4] curses: Fixes curses compiling errors., Yonggang Luo, 2020/10/01
[PATCH v6 4/4] win32: Simplify gmtime_r detection not depends on if _POSIX_C_SOURCE are defined on msys2/mingw, Yonggang Luo, 2020/10/01
- Re: [PATCH v6 4/4] win32: Simplify gmtime_r detection not depends on if _POSIX_C_SOURCE are defined on msys2/mingw,
Daniel P . Berrangé <=
Re: [PATCH v6 0/4] Fixes curses on msys2/mingw, Paolo Bonzini, 2020/10/01