[ros-diffs] [cfinck] 34306: - Get our Win32 version of ccache to compile warning-free under MSVC (tested with 2008 at /W4) and GCC (tested with RosBE-Windows 1.2 at -Wall -pedantic) - Fix the MSVC project file - Add a Makefile for compiling with mingw32-gcc

cfinck at svn.reactos.org cfinck at svn.reactos.org
Sat Jul 5 16:37:47 CEST 2008


Author: cfinck
Date: Sat Jul  5 09:37:46 2008
New Revision: 34306

URL: http://svn.reactos.org/svn/reactos?rev=34306&view=rev
Log:
- Get our Win32 version of ccache to compile warning-free under MSVC (tested with 2008 at /W4) and GCC (tested with RosBE-Windows 1.2 at -Wall -pedantic)
- Fix the MSVC project file
- Add a Makefile for compiling with mingw32-gcc

Added:
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/Makefile
Modified:
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/   (props changed)
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache-win32.vcproj
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.c
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.h
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/config.h
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/getopt.c
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/snprintf.c
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/util.c
    trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/win32-dirent.c

Propchange: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Jul  5 09:37:46 2008
@@ -1,0 +1,7 @@
+*.exe
+*.user
+*.ncb
+*.suo
+*.sln
+Debug
+Release

Added: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/Makefile
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/Makefile?rev=34306&view=auto
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/Makefile (added)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/Makefile [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -1,0 +1,24 @@
+# mingw32 makefile for ccache
+
+TARGET := ccache.exe
+
+.PHONY: all
+
+all: $(TARGET)
+
+CC=gcc
+CFLAGS := -Wall -pedantic -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0400 -O2
+LFLAGS := -s
+SRCS := args.c ccache.c cleanup.c execute.c getopt.c hash.c mdfour.c snprintf.c stats.c unify.c util.c win32-dirent.c
+OBJS := $(SRCS:.c=.o)
+
+$(TARGET): $(OBJS)
+	$(CC) $(LFLAGS) -o $@ $(OBJS)
+
+.c.o: $<
+	$(CC) $(CFLAGS) -c $< -o $@
+
+.PHONY: clean
+clean:
+	- at del $(TARGET)
+	- at del $(OBJS)

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache-win32.vcproj
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache-win32.vcproj?rev=34306&r1=34305&r2=34306&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache-win32.vcproj [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache-win32.vcproj [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -17,7 +17,7 @@
 	<Configurations>
 		<Configuration
 			Name="Debug|Win32"
-			OutputDirectory="."
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
 			IntermediateDirectory="$(ConfigurationName)"
 			ConfigurationType="1"
 			CharacterSet="1"
@@ -45,8 +45,8 @@
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="3"
 				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="4"
 			/>
 			<Tool
@@ -84,15 +84,12 @@
 				Name="VCAppVerifierTool"
 			/>
 			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
 				Name="VCPostBuildEventTool"
 			/>
 		</Configuration>
 		<Configuration
 			Name="Release|Win32"
-			OutputDirectory="C:\RosBE\4.1.3\bin"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
 			IntermediateDirectory="$(ConfigurationName)"
 			ConfigurationType="1"
 			CharacterSet="1"
@@ -115,11 +112,11 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="false"
 				DebugInformationFormat="3"
 			/>
 			<Tool
@@ -157,9 +154,6 @@
 			/>
 			<Tool
 				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
 			/>
 			<Tool
 				Name="VCPostBuildEventTool"
@@ -203,10 +197,6 @@
 				>
 			</File>
 			<File
-				RelativePath=".\mkstemps.c"
-				>
-			</File>
-			<File
 				RelativePath=".\snprintf.c"
 				>
 			</File>
@@ -253,12 +243,6 @@
 				>
 			</File>
 		</Filter>
-		<Filter
-			Name="Ressourcendateien"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
 	</Files>
 	<Globals>
 	</Globals>

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.c
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.c?rev=34306&r1=34305&r2=34306&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.c [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.c [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -126,7 +126,7 @@
 {
 	char *e;
 #ifdef _WIN32
-	STARTUPINFO si;
+	STARTUPINFOA si;
 	PROCESS_INFORMATION pi;
 	char* merged = build_command(orig_args->argv);
 #endif
@@ -150,7 +150,7 @@
 	/* strip any local args */
 	args_strip(orig_args, "--ccache-");
 
-	if ((e=getenv("CCACHE_PREFIX"))) {
+	if ((e=getenv("CCACHE_PREFIX")) != NULL) {
 		char *p = find_executable(e, MYNAME);
 		if (!p) {
 			perror(e);
@@ -160,10 +160,10 @@
 	}
 
 #ifdef _WIN32
-	ZeroMemory(&si, sizeof(STARTUPINFO));
+	ZeroMemory(&si, sizeof(STARTUPINFOA));
 	ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
 
-	si.cb = sizeof(STARTUPINFO);
+	si.cb = sizeof(STARTUPINFOA);
 
 	if(!CreateProcessA(orig_args->argv[0], merged, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
 	{
@@ -334,7 +334,7 @@
 	char *input_base;
 	char *tmp;
 	
-	if ((s = getenv("CCACHE_NLEVELS"))) {
+	if ((s = getenv("CCACHE_NLEVELS")) != NULL) {
 		nlevels = atoi(s);
 		if (nlevels < 1) nlevels = 1;
 		if (nlevels > 8) nlevels = 8;
@@ -646,7 +646,7 @@
 	}
 
 	/* support user override of the compiler */
-	if ((path=getenv("CCACHE_CC"))) {
+	if ((path=getenv("CCACHE_CC")) != NULL) {
 		base = strdup(path);
 	}
 
@@ -874,7 +874,7 @@
 	if (!output_file) {
 		char *p;
 		output_file = x_strdup(input_file);
-		if ((p = strrchr(output_file, PATH_SEP_CHAR))) {
+		if ((p = strrchr(output_file, PATH_SEP_CHAR)) != NULL) {
 			output_file = p+1;
 		}
 		p = strrchr(output_file, '.');
@@ -894,7 +894,7 @@
 		failed();
 	}
 
-	if ((e=getenv("CCACHE_PREFIX"))) {
+	if ((e=getenv("CCACHE_PREFIX")) != NULL) {
 		char *p = find_executable(e, MYNAME);
 		if (!p) {
 			perror(e);

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.h
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.h?rev=34306&r1=34305&r2=34306&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.h [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/ccache.h [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -44,7 +44,11 @@
  #define link(filename, linkname) CreateHardLinkA(linkname, filename, NULL)
  #define PROT_READ 0x0001
  #define MAP_PRIVATE 0x02
- typedef int mode_t;
+
+ #ifdef _MSC_VER
+  typedef unsigned int mode_t;
+ #endif
+
  #ifndef S_ISREG
   #define S_ISREG(m) ((m & _S_IFREG) == _S_IFREG)
  #endif
@@ -62,7 +66,10 @@
  #define PATH_SEP USUAL_PATH_SEP
  #define PATH_SEP_CHAR USUAL_PATH_SEP_CHAR
  #define DEV_NULL "/dev/null"
-#endif
+
+ char *x_realpath(const char *path);
+#endif
+
 #include <fcntl.h>
 #include <time.h>
 #include <string.h>
@@ -142,7 +149,6 @@
 int lock_fd(int fd);
 size_t file_size(struct stat *st);
 int safe_open(const char *fname);
-char *x_realpath(const char *path);
 char *gnu_getcwd(void);
 int create_empty_file(const char *fname);
 const char *get_home_directory(void);

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/config.h
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/config.h?rev=34306&r1=34305&r2=34306&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/config.h [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/config.h [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -1,4 +1,3 @@
-
 #define HAVE_STRING_H
 #define HAVE_STDLIB_H
-#define HAVE_CTYPE_H
+#define HAVE_CTYPE_H

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c?rev=34306&r1=34305&r2=34306&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/execute.c [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -92,7 +92,7 @@
     _close(fd);
 
     /* Spawn process (_exec* familly doesn't return) */
-    status = _spawnv(_P_WAIT, argv[0], argv);
+    status = _spawnv(_P_WAIT, argv[0], (const char* const*)argv);
 
  out:
     cc_log("%s:\n  stdout -> %s\n  stderr -> %s\n  process status=%i\n",
@@ -115,7 +115,13 @@
 */
 char is_exec_file(const char *fname, const char *exclude_name)
 {
-	struct stat st1, st2;
+    struct stat st2;
+
+#ifdef _WIN32
+    UNREFERENCED_PARAMETER(exclude_name);
+#else
+    struct stat st1;
+#endif
 
     if (access(fname, 0) == 0 &&
 #ifndef _WIN32 /* Symlinks not used under windows */

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/getopt.c
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/getopt.c?rev=34306&r1=34305&r2=34306&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/getopt.c [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/getopt.c [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -74,7 +74,7 @@
 		}
 	}					/* option letter okay? */
 	if ((optopt = (int)*place++) == (int)':' ||
-	    !(oli = strchr(ostr, optopt))) {
+	    (oli = strchr(ostr, optopt)) == NULL) {
 		/*
 		 * if the user didn't specify '-' as an option,
 		 * assume it means EOF.
@@ -84,7 +84,7 @@
 		if (!*place)
 			++optind;
 		if (opterr) {
-			if (!(p = strrchr(*nargv, '/')))
+			if ((p = strrchr(*nargv, '/')) == NULL)
 				p = *nargv;
 			else
 				++p;
@@ -103,7 +103,7 @@
 			optarg = place;
 		else if (nargc <= ++optind) {	/* no arg */
 			place = EMSG;
-			if (!(p = strrchr(*nargv, '/')))
+			if ((p = strrchr(*nargv, '/')) == NULL)
 				p = *nargv;
 			else
 				++p;

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/snprintf.c
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/snprintf.c?rev=34306&r1=34305&r2=34306&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/snprintf.c [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/snprintf.c [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -329,7 +329,7 @@
 					fvalue = va_arg (args, double);
 				break;
 			case 'c':
-				dopr_outch (buffer, &currlen, maxlen, va_arg (args, int));
+				dopr_outch (buffer, &currlen, maxlen, (char)va_arg (args, int));
 				break;
 			case 's':
 				strvalue = va_arg (args, char *);
@@ -348,7 +348,7 @@
 				if (cflags == DP_C_SHORT) {
 					short int *num;
 					num = va_arg (args, short int *);
-					*num = currlen;
+					*num = (short)currlen;
 				} else if (cflags == DP_C_LONG) {
 					long int *num;
 					num = va_arg (args, long int *);
@@ -437,7 +437,7 @@
 static void fmtint(char *buffer, size_t *currlen, size_t maxlen,
 		    long value, int base, int min, int max, int flags)
 {
-	int signvalue = 0;
+	char signvalue = 0;
 	unsigned long uvalue;
 	char convert[20];
 	int place = 0;
@@ -496,7 +496,7 @@
 	}
 
 	/* Sign */
-	if (signvalue) 
+	if (signvalue)
 		dopr_outch (buffer, currlen, maxlen, signvalue);
 
 	/* Zeros */
@@ -556,7 +556,7 @@
 static double my_modf(double x0, double *iptr)
 {
 	int i;
-	long l;
+	long l = 0;
 	double x = x0;
 	double f = 1.0;
 
@@ -590,7 +590,7 @@
 static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
 		   LDOUBLE fvalue, int min, int max, int flags)
 {
-	int signvalue = 0;
+	char signvalue = 0;
 	double ufvalue;
 	char iconvert[311];
 	char fconvert[311];

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/util.c
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/util.c?rev=34306&r1=34305&r2=34306&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/util.c [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/util.c [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -21,10 +21,7 @@
 static FILE *logfile;
 
 #ifdef _WIN32
-int fchmod(int fildes, mode_t mode)
-{
-    return 0;
-}
+#define fchmod(a, b)
 #endif
 
 #ifndef HAVE_MKSTEMP
@@ -255,7 +252,7 @@
 	d = opendir(dir);
 	if (!d) return;
 
-	while ((de = readdir(d))) {
+	while ((de = readdir(d)) != 0) {
 		char *fname;
 		struct stat st;
 
@@ -450,7 +447,7 @@
 {
 	unsigned size = 128;
 
-	while (1) {
+	for(;;) {
 		char *buffer = (char *)x_malloc(size);
 		if (_getcwd(buffer, size) == buffer) {
 			return buffer;
@@ -486,7 +483,7 @@
 #ifdef _WIN32
     static char szPath[MAX_PATH];
 
-    // "Documents and Settings\user\Application Data" is CSIDL_APPDATA
+    /* "Documents and Settings\user\Application Data" is CSIDL_APPDATA */
     if(SHGetSpecialFolderPathA(NULL, szPath, CSIDL_PROFILE, FALSE))
     {
         return szPath;

Modified: trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/win32-dirent.c
URL: http://svn.reactos.org/svn/reactos/trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/win32-dirent.c?rev=34306&r1=34305&r2=34306&view=diff
==============================================================================
--- trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/win32-dirent.c [iso-8859-1] (original)
+++ trunk/tools/RosBE/RosBE-Windows/Tools/ccache-2.4/win32-dirent.c [iso-8859-1] Sat Jul  5 09:37:46 2008
@@ -73,7 +73,7 @@
 
   entry.d_off = dir->filepos;
   strncpy (entry.d_name, find->cFileName, sizeof (entry.d_name));
-  entry.d_reclen = strlen (find->cFileName);
+  entry.d_reclen = (unsigned short)strlen (find->cFileName);
   dir->filepos++;
   return &entry;
 }



More information about the Ros-diffs mailing list