Fix nmake build mistakes in my last commit:

tif_config.vc.h:

  Always define HAVE_STRTOL/HAVE_STRTOUL.
  Define HAVE_STRTOLL/HAVE_STRTOULL if _MSC_VER >= 1900.

nmake.opt:

  Provide defaults suitable for MSVC prior to 14.0.

libport.h:

  The sense of the pre-processor logic was inverted from what it
  should be.  The intention is to only provide the prototype if the
  function is missing.
This commit is contained in:
Bob Friesenhahn 2020-01-26 19:17:23 -06:00
parent 58b16f47a8
commit 550f8708d2
3 changed files with 10 additions and 9 deletions

View File

@ -116,7 +116,9 @@
# else # else
# define HAVE_SNPRINTF 1 # define HAVE_SNPRINTF 1
# endif # endif
# if _MSC_VER >= 1920 /* Visual Studio 2019 has strtoll/strtoull */ # define HAVE_STRTOL 1
# define HAVE_STRTOUL 1
# if _MSC_VER >= 1900 /* Visual Studio 2015 added strtoll/strtoull */
# define HAVE_STRTOLL 1 # define HAVE_STRTOLL 1
# define HAVE_STRTOULL 1 # define HAVE_STRTOULL 1
# endif # endif

View File

@ -109,12 +109,11 @@ CHECK_JPEG_YCBCR_SUBSAMPLING = 1
####################### Compiler related options. ####################### ####################### Compiler related options. #######################
# #
# If your MSVC does not provide strtol() and strtoul(), then these
# should be set to 0. # Indicate if the compiler provides strtol/strtoul/strtoll/strtoull.
# Users of MSVC++ 14.0 ("Visual Studio 2015") and later should set all of these to 1
HAVE_STRTOL = 1 HAVE_STRTOL = 1
HAVE_STRTOUL = 1 HAVE_STRTOUL = 1
# Users of MSVC 19.20 ("Visual Studio 2019") and later should set these to 1
HAVE_STRTOLL = 0 HAVE_STRTOLL = 0
HAVE_STRTOULL = 0 HAVE_STRTOULL = 0

View File

@ -36,16 +36,16 @@ int strcasecmp(const char *s1, const char *s2);
# define HAVE_GETOPT 1 # define HAVE_GETOPT 1
#endif #endif
#if defined(HAVE_STRTOL) #if !defined(HAVE_STRTOL)
long strtol(const char *nptr, char **endptr, int base); long strtol(const char *nptr, char **endptr, int base);
#endif #endif
#if defined(HAVE_STRTOLL) #if !defined(HAVE_STRTOLL)
long long strtoll(const char *nptr, char **endptr, int base); long long strtoll(const char *nptr, char **endptr, int base);
#endif #endif
#if defined(HAVE_STRTOUL) #if !defined(HAVE_STRTOUL)
unsigned long strtoul(const char *nptr, char **endptr, int base); unsigned long strtoul(const char *nptr, char **endptr, int base);
#endif #endif
#if defined(HAVE_STRTOULL) #if !defined(HAVE_STRTOULL)
unsigned long long strtoull(const char *nptr, char **endptr, int base); unsigned long long strtoull(const char *nptr, char **endptr, int base);
#endif #endif