| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
As suggested by clang-tidy
(readability-suspicious-call-argument,-warnings-as-errors).
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
With the depend mode enabled, ccache executes the original command line
verbatim, potentially with the addition of a few extra options. However,
for clang or clang-cl it is not possible to simply append the additional
options to the end of the original command line since there may be a
"--" option to indicate the end of options.
Fix this by inserting the additional options directly after the compiler
instead of at the end.
Fixes #1273.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Closes #1035.
|
| |
|
|
|
|
|
|
| |
If the compiler can't be found then ccache exits early and doesn't print
the config and command line to the log. This makes it harder to debug
problems with finding the compiler, like issue #1249.
Improve this by logging "safe things" before searching for the compiler.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
After PR #1033 and [1], a stat call is made each time a note about an
include file is found in the preprocessed output. Such calls are very
performant on Linux (and therefore unnoticed until now), but apparently
costly on Windows.
Fix this by caching the calculation of relative paths in
process_preprocessed_file.
[1]: 9a05332915d2808f4713437006b3f7c812d9fd74
Closes #1245.
|
| |
|
|
|
|
|
| |
This fixes a problem where the original umask would be used when storing
a remote cache result in the local cache in from_cache.
Fixes #1235.
|
| |
|
|
|
|
| |
The base directory will now match case-insensitively with absolute paths
in preprocessed output, or from /showIncludes in the depend mode case,
when compiling with MSVC.
|
| | |
|
| | |
|
| |
|
|
| |
This is to please CodeQL's "Futile condition" check.
|
| |
|
|
|
|
|
|
|
|
| |
The I_MPI_CC and I_MPI_CXX variables affect which underlying compiler
ICC uses. Reference:
<https://www.intel.com/content/www/us/en/develop/documentation/
mpi-developer-reference-windows/top/environment-variable-reference/
compilation-environment-variables.html>.
Closes #1210.
|
| |
|
|
| |
Fixes #1205.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
When compiling an assembler file, -MD and -MMD don't produce any
dependency file, so don't expect one.
Also, make sure to fall back to running the real compiler in case an
expected output file is missing instead of exiting with an error.
Fixes #1189.
|
| | |
|
| |
|
|
|
|
|
| |
I think that this is more in line with what the namespace represents. I
also renamed ShowIncludesParser::tokenize to
MsvcShowIncludesOutput::get_includes since it's not returning generic
tokens but specifically includes files.
|
| | |
|
| |
|
|
| |
If MSVC is executed *without* /showIncludes, and ccache is configured with
depend mode, add /showIncludes and strip the extra output from stdout.
|
| |
|
|
|
|
|
|
|
| |
Based on -showIncludes, which prints included files on stdout with a
certain text prefix. Otherwise pretty similar to depend mode handling
for GCC.
This makes MSVC building way faster.
Co-authored-by: Luboš Luňák <l.lunak@centrum.cz>
|
| |
|
|
| |
As discussed in #1173.
|
| |
|
|
|
| |
When the cached data is read, the output to fd is binary
(Util::send_to_fd), so in order to maintain the original
line endings, the output must be stored as binary too.
|
| |
|
|
|
|
| |
This reverts commit 8b65880b5ad817156b58c58b5133aafc99b0a264.
See <https://github.com/ccache/ccache/pull/1158#issuecomment-1268748557>.
|
| |
|
| |
Co-authored-by: Luboš Luňák <l.lunak@centrum.cz>
|
| | |
|
| |
|
|
|
|
| |
I should not be necessary to distinguish between existence and
non-existence of -frandom-seed if random_seed sloppiness is requested,
so don't hash the "-frandom-seed=" part either.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Closes #1010.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is a feature request to be able not to use a local cache at all,
only a network cache. With such a feature, the names "primary storage"
and "secondary storage" make less sense since ccache would be operating
in "secondary only" mode, but then that storage would of course become
the primary (and only).
Let's rename "primary storage" to "local storage" and "secondary
storage" to "remote storage" – operating in "remote only" mode then
makes sense.
One of the original motivations to call networked storage "secondary" is
that the file storage can be used for local file systems as well, making
such storage "not quite remote", but in practice I guess the file
storage backend used primarily for network file systems.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
To avoid a race condition, ccache disables the direct mode if an include
file has a too new mtime or ctime. Previously this check used one second
resolution timestamps, which meant that a generated include file often
would disable direct mode hits for up to one second. Now ccache uses
timestamps with subsecond resolution (nanoseconds on Linux), so the
direct mode will in practice no longer have to be disabled for generated
include files.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With read-only secondary storage, it can happen that primary storage has
a manifest named M with a result entry R1, while secondary storage also
has a manifest M but with result R2. On a compilation that matches R2,
ccache will first succeed to look up M in primary storage, fail to find
R2 and then get M from secondary storage where R2 can be found. Since M
already exists locally, ccache will simply return the cache hit but not
store knowledge of R2 locally. On a rebuild of R2, ccache therefore
needs to fetch from secondary storage again.
The improvement brought by this commit is that ccache now merges the
manifests from primary and secondary storage and stores the merged
version in primary storage. In other words, ccache setups with read-only
secondary storage will be able to accumulate local header file
combinations and seamlessly combine them with changes from secondary
storage.
Closes #1049.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
PrimaryStorage::clean_dir relies on being able to classify temporary
files from the filename.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cache entries are now fully read into memory before (de)compressing,
checksumming and parsing, instead of streaming data like before. While
this increases memory usage when working with large object files, it
also simplifies the code a lot. Another motivation for this change is
that cache entry data is not streamed from secondary storage anyway, and
it makes sense to keep the architecture simple and similar for primary
and secondary storage code paths.
The cache entry format has modified so that the checksum covers the
potentially compressed payload (plus the header), not the uncompressed
payload (plus the header) like before. The checksum is now also stored
in an uncompressed epilogue. Since the cache entry format has been
changed, the input hash has been changed as well.
|
| | |
|
| |
|
|
|
| |
This is part of a larger refactoring effort with the goal of simplifying
how cache entries are read and processed.
|
| |
|
|
|
|
|
|
|
|
| |
- Result objects now only know and care about the result payload part of
a result cache entry.
- Result object are no longer tightly coupled with the primary storage
implementation.
This is part of a larger refactoring effort with the goal of simplifying
how cache entries are read and processed.
|
| | |
|
| | |
|
| |
|
|
| |
Closes #1149.
|
| | |
|
| |
|
|
| |
Closes #1090.
|