You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
197 lines
5.2 KiB
197 lines
5.2 KiB
Index: Makefile.in |
|
--- Makefile.in.orig 2004-09-13 12:38:30 +0200 |
|
+++ Makefile.in 2007-06-30 10:27:56 +0200 |
|
@@ -8,7 +8,9 @@ |
|
INSTALLCMD=@INSTALL@ |
|
|
|
CC=@CC@ |
|
-CFLAGS=@CFLAGS@ -I. |
|
+CPPFLAGS=@CPPFLAGS@ -I. |
|
+CFLAGS=$(CPPFLAGS) @CFLAGS@ |
|
+LDFLAGS=@LDFLAGS@ |
|
EXEEXT=@EXEEXT@ |
|
|
|
OBJS= ccache.o mdfour.o hash.o execute.o util.o args.o stats.o \ |
|
@@ -20,7 +22,7 @@ |
|
docs: ccache.1 web/ccache-man.html |
|
|
|
ccache$(EXEEXT): $(OBJS) $(HEADERS) |
|
- $(CC) $(CFLAGS) -o $@ $(OBJS) |
|
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) |
|
|
|
ccache.1: ccache.yo |
|
-yodl2man -o ccache.1 ccache.yo |
|
Index: ccache.1 |
|
--- ccache.1.orig 2004-09-13 12:38:30 +0200 |
|
+++ ccache.1 2007-06-30 10:27:56 +0200 |
|
@@ -234,6 +234,16 @@ |
|
incorrect setting of this debug info rarely causes problems\&. If you |
|
strike problems with gdb not using the correct directory then enable |
|
this option\&. |
|
+.IP |
|
+.IP "\fBCCACHE_NOHASH_SIZE_MTIME\fP" |
|
+This tells ccache to not hash the real compiler's size and modification |
|
+time. Normally this is the mechanism to detect compiler upgrades. |
|
+There are situations however, where even though the compiler's size or |
|
+modification time has changed you can safely use the cached objects |
|
+(e.g. if as part of your build system the compiler is built as well |
|
+and the compiler's source has not changed; or if the compiler has only |
|
+changes that do not affect code generation). Use this feature only if |
|
+you know what you are doing. |
|
.IP |
|
.IP "\fBCCACHE_UNIFY\fP" |
|
If you set the environment variable CCACHE_UNIFY |
|
Index: ccache.c |
|
--- ccache.c.orig 2004-09-13 12:38:30 +0200 |
|
+++ ccache.c 2007-06-30 10:27:56 +0200 |
|
@@ -158,9 +158,9 @@ |
|
struct stat st1, st2; |
|
int status; |
|
|
|
- x_asprintf(&tmp_stdout, "%s/tmp.stdout.%s", temp_dir, tmp_string()); |
|
- x_asprintf(&tmp_stderr, "%s/tmp.stderr.%s", temp_dir, tmp_string()); |
|
- x_asprintf(&tmp_hashname, "%s/tmp.hash.%s.o", temp_dir, tmp_string()); |
|
+ x_asprintf(&tmp_stdout, "%s.tmp.stdout.%s", hashname, tmp_string()); |
|
+ x_asprintf(&tmp_stderr, "%s.tmp.stderr.%s", hashname, tmp_string()); |
|
+ x_asprintf(&tmp_hashname, "%s.tmp.%s", hashname, tmp_string()); |
|
|
|
args_add(args, "-o"); |
|
args_add(args, tmp_hashname); |
|
@@ -331,8 +331,12 @@ |
|
hash_string(str_basename(args->argv[0])); |
|
} |
|
|
|
- hash_int(st.st_size); |
|
- hash_int(st.st_mtime); |
|
+ if (getenv("CCACHE_HASH_COMPILER")) { |
|
+ hash_file(args->argv[0]); |
|
+ } else if (!getenv("CCACHE_NOHASH_SIZE_MTIME")) { |
|
+ hash_int(st.st_size); |
|
+ hash_int(st.st_mtime); |
|
+ } |
|
|
|
/* possibly hash the current working directory */ |
|
if (getenv("CCACHE_HASHDIR")) { |
|
@@ -640,6 +644,8 @@ |
|
|
|
/* these are too hard */ |
|
if (strcmp(argv[i], "-fbranch-probabilities")==0 || |
|
+ strcmp(argv[i], "-coverage") == 0 || |
|
+ strcmp(argv[i], "-ftest-coverage") == 0 || |
|
strcmp(argv[i], "-M") == 0 || |
|
strcmp(argv[i], "-MM") == 0 || |
|
strcmp(argv[i], "-x") == 0) { |
|
Index: ccache.h |
|
--- ccache.h.orig 2004-09-13 12:38:30 +0200 |
|
+++ ccache.h 2007-06-30 10:27:56 +0200 |
|
@@ -6,11 +6,10 @@ |
|
#include <unistd.h> |
|
#include <stdlib.h> |
|
#include <errno.h> |
|
-#include <sys/stat.h> |
|
#include <sys/types.h> |
|
+#include <sys/stat.h> |
|
#include <sys/wait.h> |
|
#include <sys/mman.h> |
|
-#include <sys/file.h> |
|
#include <fcntl.h> |
|
#include <time.h> |
|
#include <string.h> |
|
@@ -19,6 +18,7 @@ |
|
#include <stdarg.h> |
|
#include <dirent.h> |
|
#include <limits.h> |
|
+#include <sys/file.h> |
|
#ifdef HAVE_PWD_H |
|
#include <pwd.h> |
|
#endif |
|
Index: cleanup.c |
|
--- cleanup.c.orig 2003-09-28 06:48:17 +0200 |
|
+++ cleanup.c 2007-06-30 10:27:56 +0200 |
|
@@ -57,6 +57,17 @@ |
|
free(p); |
|
return; |
|
} |
|
+ |
|
+ if (strstr(fname, ".tmp.") != NULL) { |
|
+ /* delete any tmp files older than 1 hour */ |
|
+ if (st->st_mtime + 3600 < time(NULL)) { |
|
+ unlink(fname); |
|
+ free(p); |
|
+ return; |
|
+ } |
|
+ } |
|
+ |
|
+ |
|
free(p); |
|
|
|
if (num_files == allocated) { |
|
Index: config.h.in |
|
--- config.h.in.orig 2003-09-28 06:48:17 +0200 |
|
+++ config.h.in 2007-06-30 10:27:56 +0200 |
|
@@ -19,6 +19,9 @@ |
|
/* Define to 1 if you have the `gethostname' function. */ |
|
#undef HAVE_GETHOSTNAME |
|
|
|
+/* Define to 1 if you have the `getpwuid' function. */ |
|
+#undef HAVE_GETPWUID |
|
+ |
|
/* Define to 1 if you have the <inttypes.h> header file. */ |
|
#undef HAVE_INTTYPES_H |
|
|
|
@@ -31,6 +34,9 @@ |
|
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ |
|
#undef HAVE_NDIR_H |
|
|
|
+/* Define to 1 if you have the <pwd.h> header file. */ |
|
+#undef HAVE_PWD_H |
|
+ |
|
/* Define to 1 if you have the `realpath' function. */ |
|
#undef HAVE_REALPATH |
|
|
|
@@ -98,3 +104,8 @@ |
|
|
|
/* Define _GNU_SOURCE so that we get all necessary prototypes */ |
|
#undef _GNU_SOURCE |
|
+ |
|
+/* Define on UNIX to activate XPG/5 features. */ |
|
+#if !defined(_XOPEN_SOURCE) |
|
+# define _XOPEN_SOURCE |
|
+#endif |
|
Index: util.c |
|
--- util.c.orig 2004-09-13 12:38:30 +0200 |
|
+++ util.c 2007-06-30 10:27:56 +0200 |
|
@@ -151,7 +151,7 @@ |
|
vasprintf(ptr, format, ap); |
|
va_end(ap); |
|
|
|
- if (!ptr) fatal("out of memory in x_asprintf"); |
|
+ if (!*ptr) fatal("out of memory in x_asprintf"); |
|
} |
|
|
|
/* |
|
@@ -187,14 +187,10 @@ |
|
{ |
|
void *p2; |
|
if (!ptr) return x_malloc(size); |
|
- p2 = malloc(size); |
|
+ p2 = realloc(ptr, size); |
|
if (!p2) { |
|
fatal("out of memory in x_realloc"); |
|
} |
|
- if (ptr) { |
|
- memcpy(p2, ptr, size); |
|
- free(ptr); |
|
- } |
|
return p2; |
|
} |
|
|
|
@@ -448,7 +444,7 @@ |
|
} |
|
} |
|
#endif |
|
- fatal("Unable to determine home directory"); |
|
+ fprintf(stderr, "ccache: Unable to determine home directory"); |
|
return NULL; |
|
} |
|
|
|
|