From: inikep Date: Thu, 5 May 2016 09:53:42 +0000 (+0200) Subject: Compiler Options moved to util.h X-Git-Tag: v0.6.1^2~14^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c22e57bfb909c3e74eee658e06e2a342de329b9;p=thirdparty%2Fzstd.git Compiler Options moved to util.h --- diff --git a/lib/common/util.h b/lib/common/util.h index af3360d65..e427fc1a1 100644 --- a/lib/common/util.h +++ b/lib/common/util.h @@ -39,6 +39,28 @@ extern "C" { #endif +/* ************************************** +* Compiler Options +****************************************/ +#if defined(_MSC_VER) +# define _CRT_SECURE_NO_WARNINGS /* Disable some Visual warning messages for fopen, strncpy */ +# define _CRT_SECURE_NO_DEPRECATE /* VS2005 */ +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +# define snprintf sprintf_s /* snprintf unsupported by Visual <= 2012 */ +//# define snprintf _snprintf +#endif + +/* Unix Large Files support (>4GB) */ +#if !defined(__LP64__) /* No point defining Large file for 64 bit */ +# define _FILE_OFFSET_BITS 64 /* turn off_t into a 64-bit type for ftello, fseeko */ +# if defined(__sun__) /* Sun Solaris 32-bits requires specific definitions */ +# define _LARGEFILE_SOURCE /* fseeko, ftello */ +# else +# define _LARGEFILE64_SOURCE /* off64_t, fseeko64, ftello64 */ +# endif +#endif + + /*-**************************************** * Dependencies ******************************************/ @@ -63,7 +85,9 @@ extern "C" { #endif -/* Sleep functions: Windows - Posix - others */ +/*-**************************************** +* Sleep functions: Windows - Posix - others +******************************************/ #if defined(_WIN32) # include # define SET_HIGH_PRIORITY SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS) @@ -75,11 +99,11 @@ extern "C" { # include /* clock_t, nanosleep, clock, CLOCKS_PER_SEC */ # define SET_HIGH_PRIORITY setpriority(PRIO_PROCESS, 0, -20) # define UTIL_sleep(s) sleep(s) - #if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 199309L) - # define UTIL_sleepMilli(milli) { struct timespec t; t.tv_sec=0; t.tv_nsec=milli*1000000ULL; nanosleep(&t, NULL); } - #else - # define UTIL_sleepMilli(milli) /* disabled */ - #endif +# if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 199309L) +# define UTIL_sleepMilli(milli) { struct timespec t; t.tv_sec=0; t.tv_nsec=milli*1000000ULL; nanosleep(&t, NULL); } +# else +# define UTIL_sleepMilli(milli) /* disabled */ +# endif #else # define SET_HIGH_PRIORITY /* disabled */ # define UTIL_sleep(s) /* disabled */ @@ -191,6 +215,7 @@ UTIL_STATIC U32 UTIL_isDirectory(const char* infilename) #ifdef _WIN32 +# define UTIL_HAS_CREATEFILELIST UTIL_STATIC int UTIL_prepareFileList(const char *dirName, char** bufStart, char* bufEnd) { @@ -243,6 +268,7 @@ next: } #elif (defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__))) && defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L) /* snprintf, opendir */ +# define UTIL_HAS_CREATEFILELIST # include /* opendir, readdir */ # include /* PATH_MAX */ # include @@ -291,25 +317,28 @@ UTIL_STATIC int UTIL_prepareFileList(const char *dirName, char** bufStart, char* UTIL_STATIC int UTIL_prepareFileList(const char *dirName, char** bufStart, char* bufEnd) { + (void)bufStart; (void)bufEnd; fprintf(stderr, "Directory %s ignored (zstd compiled without _POSIX_C_SOURCE)\n", dirName); return 0; } -#endif // WIN32 +#endif // #ifdef _WIN32 -UTIL_STATIC int UTIL_createFileList(const char **inputNames, unsigned nbNames, unsigned maxListSize, char*** filenameTable) +UTIL_STATIC int UTIL_createFileList(const char **inputNames, unsigned nbNames, unsigned maxListSize, const char*** filenameTable, char** allocatedBuffer) { unsigned i, nbFiles = 0; char *pbuf, *bufend, *buf; buf = (char*)malloc(maxListSize); + if (!buf) { *filenameTable = NULL; return 0; } bufend = buf + maxListSize; - for (i=0, pbuf = buf; i= bufend) break; strncpy(pbuf, inputNames[i], bufend - pbuf); pbuf += len + 1; nbFiles++; @@ -318,7 +347,8 @@ UTIL_STATIC int UTIL_createFileList(const char **inputNames, unsigned nbNames, u nbFiles += UTIL_prepareFileList(inputNames[i], &pbuf, bufend); } - { char** fileTable = (char**)malloc((nbFiles+1) * sizeof(const char*)); + { const char** fileTable = (const char**)malloc((nbFiles+1) * sizeof(const char*)); + if (!fileTable) { free(buf); *filenameTable = NULL; return 0; } if (nbFiles == 0) fileTable[0] = buf; @@ -330,15 +360,16 @@ UTIL_STATIC int UTIL_createFileList(const char **inputNames, unsigned nbNames, u } *filenameTable = fileTable; + *allocatedBuffer = buf; } return nbFiles; } -UTIL_STATIC void UTIL_freeFileList(char** filenameTable) +UTIL_STATIC void UTIL_freeFileList(const char** filenameTable, char* buf) { - free(filenameTable[0]); /* free buffer */ + free(buf); free(filenameTable); } diff --git a/programs/bench.c b/programs/bench.c index 85c28e8c2..0007ef43f 100644 --- a/programs/bench.c +++ b/programs/bench.c @@ -23,24 +23,6 @@ - zstd source repository : https://github.com/Cyan4973/zstd */ -/* ************************************** -* Compiler Options -****************************************/ -/* Disable some Visual warning messages */ -#ifdef _MSC_VER -# define _CRT_SECURE_NO_WARNINGS /* fopen */ -# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ -#endif - -/* Unix Large Files support (>4GB) */ -#define _FILE_OFFSET_BITS 64 -#if (defined(__sun__) && (!defined(__LP64__))) /* Sun Solaris 32-bits requires specific definitions */ -# define _LARGEFILE_SOURCE -#elif ! defined(__LP64__) /* No point defining Large file for 64 bit */ -# define _LARGEFILE64_SOURCE -#endif - - /* ************************************* * Includes ***************************************/ @@ -59,7 +41,7 @@ * Compiler specifics ***************************************/ #if defined(_MSC_VER) -# define snprintf sprintf_s + #elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* part of */ #else @@ -78,6 +60,7 @@ #define TIMELOOP_MICROSEC 1*1000000ULL /* 1 second */ #define ACTIVEPERIOD_MICROSEC 70*1000000ULL /* 70 seconds */ #define COOLPERIOD_SEC 10 +#define MAX_LIST_SIZE (64*1024) #define KB *(1 <<10) #define MB *(1 <<20) @@ -535,7 +518,21 @@ int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles, if (nbFiles == 0) BMK_syntheticTest(cLevel, cLevelLast, compressibility); else + { +#ifdef UTIL_HAS_CREATEFILELIST + char* buf; + const char** filenameTable; + unsigned i; + nbFiles = UTIL_createFileList(fileNamesTable, nbFiles, MAX_LIST_SIZE, &filenameTable, &buf); + if (filenameTable) { + for (i=0; i4GB) */ -#define _FILE_OFFSET_BITS 64 -#if (defined(__sun__) && (!defined(__LP64__))) /* Sun Solaris 32-bits requires specific definitions */ -# define _LARGEFILE_SOURCE -#elif ! defined(__LP64__) /* No point defining Large file for 64 bit */ -# define _LARGEFILE64_SOURCE -#endif - - /*-************************************* * Includes ***************************************/ diff --git a/programs/fileio.c b/programs/fileio.c index 3c06d20d3..0bb751a0d 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -41,14 +41,6 @@ /* ************************************* * Compiler Options ***************************************/ -/* Disable some Visual warning messages */ -#ifdef _MSC_VER -# define _CRT_SECURE_NO_WARNINGS -# define _CRT_SECURE_NO_DEPRECATE /* VS2005 */ -# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ -#endif - -#define _FILE_OFFSET_BITS 64 /* Large file support on 32-bits unix */ #define _POSIX_SOURCE 1 /* enable fileno() within on unix */ diff --git a/programs/fullbench.c b/programs/fullbench.c index 3cc9dac77..d9707800b 100644 --- a/programs/fullbench.c +++ b/programs/fullbench.c @@ -22,22 +22,6 @@ - zstd homepage : http://www.zstd.net */ -/*_************************************ -* Compiler Options -**************************************/ -/* Disable some Visual warning messages */ -#define _CRT_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_DEPRECATE /* VS2005 */ - -/* Unix Large Files support (>4GB) */ -#if (defined(__sun__) && (!defined(__LP64__))) /* Sun Solaris 32-bits requires specific definitions */ -# define _LARGEFILE_SOURCE -# define _FILE_OFFSET_BITS 64 -#elif ! defined(__LP64__) /* No point defining Large file for 64 bit */ -# define _LARGEFILE64_SOURCE -#endif - - /*_************************************ * Includes **************************************/ diff --git a/programs/paramgrill.c b/programs/paramgrill.c index f36a6916f..05400d2f0 100644 --- a/programs/paramgrill.c +++ b/programs/paramgrill.c @@ -25,27 +25,11 @@ /*-************************************ * Compiler Options **************************************/ -/* Disable some Visual warning messages */ -#define _CRT_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_DEPRECATE /* VS2005 */ - -/* Unix Large Files support (>4GB) */ -#if (defined(__sun__) && (!defined(__LP64__))) /* Sun Solaris 32-bits requires specific definitions */ -# define _LARGEFILE_SOURCE -# define _FILE_OFFSET_BITS 64 -#elif ! defined(__LP64__) /* No point defining Large file for 64 bit */ -# define _LARGEFILE64_SOURCE -#endif - /* gettimeofday() are not supported by MSVC */ #if defined(_MSC_VER) || defined(_WIN32) # define BMK_LEGACY_TIMER 1 #endif -#if defined(_MSC_VER) -# define snprintf _snprintf /* snprintf unsupported by Visual <= 2012 */ -#endif - /*-************************************ * Dependencies diff --git a/visual/2013/fullbench/fullbench.vcxproj b/visual/2013/fullbench/fullbench.vcxproj index e98766713..0c51155f3 100644 --- a/visual/2013/fullbench/fullbench.vcxproj +++ b/visual/2013/fullbench/fullbench.vcxproj @@ -1,4 +1,4 @@ - + @@ -35,7 +35,7 @@ Application true v110 - Unicode + MultiByte Application @@ -49,7 +49,7 @@ false v110 true - Unicode + MultiByte diff --git a/visual/2013/zstd/zstd.vcxproj b/visual/2013/zstd/zstd.vcxproj index d31994d99..cf2d66509 100755 --- a/visual/2013/zstd/zstd.vcxproj +++ b/visual/2013/zstd/zstd.vcxproj @@ -1,4 +1,4 @@ - + @@ -87,7 +87,7 @@ Application true v110 - Unicode + MultiByte Application @@ -101,7 +101,7 @@ false true v110 - Unicode + MultiByte