]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Allow (require) argument to -Werror for NVCC
authorJoel Rosdahl <joel@rosdahl.net>
Tue, 21 Jul 2020 17:45:58 +0000 (19:45 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Tue, 21 Jul 2020 17:45:58 +0000 (19:45 +0200)
Fixes #598.

src/ccache.c
test/suites/nvcc.bash

index 73509847e91df094dbadd00bc3bb50a0edc19030..5fb7b05dc83181d18f1cfda124392f3ea5b25c29 100644 (file)
@@ -2212,7 +2212,7 @@ calculate_object_hash(struct args *args, struct args *preprocessor_args,
                if ((str_eq(args->argv[i], "-ccbin")
                     || str_eq(args->argv[i], "--compiler-bindir"))
                    && i + 1 < args->argc
-                   && x_stat(args->argv[i+1], &st) == 0) {
+                   && stat(args->argv[i+1], &st) == 0) {
                        found_ccbin = true;
                        hash_delimiter(hash, "ccbin");
                        hash_nvcc_host_compiler(hash, &st, args->argv[i+1]);
@@ -2849,7 +2849,8 @@ cc_process_args(struct args *args,
                // Handle options that should not be passed to the preprocessor.
                if (compopt_affects_comp(argv[i])) {
                        args_add(compiler_only_args, argv[i]);
-                       if (compopt_takes_arg(argv[i])) {
+                       if (compopt_takes_arg(argv[i])
+                           || (guessed_compiler == GUESSED_NVCC && str_eq(argv[i], "-Werror"))) {
                                if (i == argc - 1) {
                                        cc_log("Missing argument to %s", argv[i]);
                                        stats_update(STATS_ARGS);
index c121a5774d3089b9cec336db30fed796079c137a..f7b2e9ef1aef161f55746fe898282f01d6a5507f 100644 (file)
@@ -286,6 +286,19 @@ nvcc_tests() {
     expect_stat 'cache miss' 1
     expect_stat 'files in cache' 1
     expect_equal_files reference_test1.o test_cpp.o
+
+    # -------------------------------------------------------------------------
+    TEST "Option -Werror"
+
+    $ccache_nvcc_cpp -Werror cross-execution-space-call test_cpp.cu
+    expect_stat 'cache hit (preprocessed)' 0
+    expect_stat 'cache miss' 1
+    expect_stat 'files in cache' 1
+
+    $ccache_nvcc_cpp -Werror cross-execution-space-call test_cpp.cu
+    expect_stat 'cache hit (preprocessed)' 1
+    expect_stat 'cache miss' 1
+    expect_stat 'files in cache' 1
 }
 
 SUITE_nvcc_PROBE() {