Issue #568: fix the strtoll and strtoull handing so config.h ends up creating defines for those only when needed, which should exclude mingw environments.

This commit is contained in:
Eric Haszlakiewicz
2020-04-09 20:58:28 +00:00
parent b64bdfe381
commit 545464322b
3 changed files with 28 additions and 29 deletions

View File

@@ -166,30 +166,27 @@ if (HAVE_SYSLOG_H)
check_symbol_exists(vsyslog "syslog.h" HAVE_VSYSLOG)
endif()
if (MSVC)
check_symbol_exists(strtoll "stdlib.h" HAVE_STRTOLL)
check_symbol_exists(strtoull "stdlib.h" HAVE_STRTOULL)
check_symbol_exists(strtoll "stdlib.h" HAVE_STRTOLL)
check_symbol_exists(strtoull "stdlib.h" HAVE_STRTOULL)
set(json_c_strtoll "strtoll")
if (NOT HAVE_STRTOLL)
# Use _strtoi64 if strtoll is not available.
check_symbol_exists(_strtoi64 "stdlib.h" __have_strtoi64)
if (__have_strtoi64)
set(HAVE_STRTOLL 1)
set(json_c_strtoll "_strtoi64")
# could do the same for strtoull, if needed
endif()
endif()
set(json_c_strtoll "strtoll")
if (NOT HAVE_STRTOLL)
# Use _strtoi64 if strtoll is not available.
check_symbol_exists(_strtoi64 "stdlib.h" __have_strtoi64)
if (__have_strtoi64)
#set(HAVE_STRTOLL 1)
set(json_c_strtoll "_strtoi64")
endif()
endif()
set(json_c_strtoull "strtoull")
if (NOT HAVE_STRTOULL)
# Use _strtoui64 if strtoull is not available.
check_symbol_exists(_strtoui64 "stdlib.h" __have_strtoui64)
if (__have_strtoui64)
set(HAVE_STRTOULL 1)
set(json_c_strtoull "_strtoui64")
endif()
endif()
set(json_c_strtoull "strtoull")
if (NOT HAVE_STRTOULL)
# Use _strtoui64 if strtoull is not available.
check_symbol_exists(_strtoui64 "stdlib.h" __have_strtoui64)
if (__have_strtoui64)
#set(HAVE_STRTOULL 1)
set(json_c_strtoull "_strtoui64")
endif()
endif()

View File

@@ -136,9 +136,16 @@
#cmakedefine HAVE_VSYSLOG @HAVE_VSYSLOG@
#cmakedefine HAVE_STRTOLL
#cmakedefine strtoll @json_c_strtoll@
#if !defined(HAVE_STRTOLL)
#define strtoll @json_c_strtoll@
/* #cmakedefine json_c_strtoll @json_c_strtoll@*/
#endif
#cmakedefine HAVE_STRTOULL
#cmakedefine strtoull @json_c_strtoull@
#if !defined(HAVE_STRTOULL)
#define strtoull @json_c_strtoull@
/* #cmakedefine json_c_strtoull @json_c_strtoull@ */
#endif
/* Have __thread */
#cmakedefine HAVE___THREAD

View File

@@ -39,11 +39,6 @@
#endif /* HAVE_UNISTD_H */
#ifdef WIN32
#if MSC_VER < 1800
/* strtoll/strtoull is available only since Visual Studio 2013 */
#define strtoll _strtoi64
#define strtoull _strtoui64
#endif
#define WIN32_LEAN_AND_MEAN
#include <io.h>
#include <windows.h>