diff --git a/src/cache_hash.cpp b/src/cache_hash.cpp index 66e8a94153..cd0cc5324d 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 feb3cae95a..4529abcc83 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));