diff --git a/src/cache_hash.cpp b/src/cache_hash.cpp index 66e8a94153798af60a65a1272fab95024881ba2e..cd0cc5324da7a638aa4e1faf42c9fcafa3bd39cc 100644 --- a/src/cache_hash.cpp +++ b/src/cache_hash.cpp @@ -470,6 +470,11 @@ Error cache_add_dep_file(CacheHash *ch, Buf *dep_file_path, bool verbose) { Error err; Buf *contents = buf_alloc(); if ((err = os_fetch_file_path(dep_file_path, contents))) { + if (err == ErrorFileNotFound) + return err; + if (verbose) { + fprintf(stderr, "unable to read .d file: %s\n", err_str(err)); + } return ErrorReadingDepFile; } SplitIterator it = memSplit(buf_to_slice(contents), str("\r\n")); diff --git a/src/codegen.cpp b/src/codegen.cpp index feb3cae95adf7bef70f2c937370164107fefa819..4529abcc8318b3c9217ef6f4957e9d46bc6ba68d 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -8732,12 +8732,14 @@ static void gen_c_object(CodeGen *g, Buf *self_exe_path, CFile *c_file) { if ((err = cache_add_dep_file(cache_hash, out_dep_path, true))) { // Don't treat the absence of the .d file as a fatal error, the // compiler may not produce one eg. when compiling .s files - if (err != ErrorReadingDepFile) { + if (err != ErrorFileNotFound) { fprintf(stderr, "Failed to add C source dependencies to cache: %s\n", err_str(err)); exit(1); } } - os_delete_file(out_dep_path); + if (err != ErrorFileNotFound) { + os_delete_file(out_dep_path); + } if ((err = cache_final(cache_hash, &digest))) { fprintf(stderr, "Unable to finalize cache hash: %s\n", err_str(err));