Browse Source

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.

tags/json-c-0.14-20200419
Eric Haszlakiewicz 5 years ago
parent
commit
545464322b
3 changed files with 30 additions and 31 deletions
  1. +21
    -24
      CMakeLists.txt
  2. +9
    -2
      cmake/config.h.in
  3. +0
    -5
      json_util.c

+ 21
- 24
CMakeLists.txt 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)

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_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()
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")
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()




+ 9
- 2
cmake/config.h.in 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


+ 0
- 5
json_util.c 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>


Loading…
Cancel
Save