diff options
Diffstat (limited to 'test-ports/ports-dep-args/devel/ccache/files/patch-ccache.c')
-rw-r--r-- | test-ports/ports-dep-args/devel/ccache/files/patch-ccache.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/test-ports/ports-dep-args/devel/ccache/files/patch-ccache.c b/test-ports/ports-dep-args/devel/ccache/files/patch-ccache.c new file mode 100644 index 00000000..c38b96a9 --- /dev/null +++ b/test-ports/ports-dep-args/devel/ccache/files/patch-ccache.c @@ -0,0 +1,62 @@ +- Determine whether cc(1) is clang or gcc at compile-time. +- Don't hash -fcolor-diagnostics; make will auto use it while make -j will not. + There's no reason to not use the cache in either of these cases if it is + already available. +-bdrewery + +--- ccache.c.orig 2016-10-26 14:31:19.000000000 -0700 ++++ ccache.c 2017-02-03 14:24:35.466505000 -0800 +@@ -1468,6 +1468,11 @@ compiler_is_clang(struct args *args) + { + char *name = basename(args->argv[0]); + bool result = strstr(name, "clang") != NULL; ++#ifdef CC_IS_CLANG ++ if (strcmp(name, "cc") == 0 || strcmp(name, "CC") == 0 || ++ strcmp(name, "c++") == 0) ++ result = true; ++#endif + free(name); + return result; + } +@@ -1477,6 +1482,11 @@ compiler_is_gcc(struct args *args) + { + char *name = basename(args->argv[0]); + bool result = strstr(name, "gcc") || strstr(name, "g++"); ++#ifdef CC_IS_GCC ++ if (strcmp(name, "cc") == 0 || strcmp(name, "CC") == 0 || ++ strcmp(name, "c++") == 0) ++ result = true; ++#endif + free(name); + return result; + } +@@ -1592,6 +1602,7 @@ calculate_common_hash(struct args *args, + free(p); + } + ++#if 0 + // Possibly hash GCC_COLORS (for color diagnostics). + if (compiler_is_gcc(args)) { + const char *gcc_colors = getenv("GCC_COLORS"); +@@ -1600,6 +1611,7 @@ calculate_common_hash(struct args *args, + hash_string(hash, gcc_colors); + } + } ++#endif + } + + // Update a hash sum with information specific to the direct and preprocessor +@@ -1629,6 +1641,13 @@ calculate_object_hash(struct args *args, + continue; + } + ++ /* Colors do not affect compilation. */ ++ if (str_startswith(args->argv[i], "-fcolor-diagnostics") || ++ str_eq(args->argv[i], "-fdiagnostics-color") || ++ str_eq(args->argv[i], "-fdiagnostics-color=always")) { ++ continue; ++ } ++ + // The -fdebug-prefix-map option may be used in combination with + // CCACHE_BASEDIR to reuse results across different directories. Skip it + // from hashing. |