Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/freebsd/poudriere.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.c62
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.