]> git.ipfire.org Git - thirdparty/ccache.git/log
thirdparty/ccache.git
6 years agoDon’t pass -Werror and compilation-only options to the preprocessor
Joel Rosdahl [Fri, 19 Jul 2019 07:22:04 +0000 (09:22 +0200)] 
Don’t pass -Werror and compilation-only options to the preprocessor

Clang emits warnings when it sees unused options, so when ccache runs
the Clang preprocessor separately, options that are not used by the
preprocessor will produce warnings. This means that the user may get
warnings which would not be present when not using ccache. And if
-Werror is present then the preprocessing step fails, which needless to
say is not optimal.

To work around this:

* Options known to have the above mentioned problem are not passed to
  the preprocessor.
* In addition, -Werror is also not passed to the preprocessor so that
  options not properly marked as “compiler only” will only trigger
  warnings, not errors.

Fixes #312.

6 years agoRename stripped_args to common_args
Joel Rosdahl [Sat, 11 May 2019 20:19:45 +0000 (22:19 +0200)] 
Rename stripped_args to common_args

6 years agoDon’t build tar.bz2 release archive
Joel Rosdahl [Wed, 17 Jul 2019 18:38:30 +0000 (20:38 +0200)] 
Don’t build tar.bz2 release archive

bz2 seems more or less obsolete since xz compresses better (and
decompresses faster), and gz is more ubiquitous.

6 years agoAvoid letting “-gdwarf*” force “run_second_cpp = true”
Joel Rosdahl [Tue, 2 Jul 2019 12:26:39 +0000 (14:26 +0200)] 
Avoid letting “-gdwarf*” force “run_second_cpp = true”

Fixes #394.

6 years agoDon’t enable unit test verbosity in Travis
Joel Rosdahl [Sat, 29 Jun 2019 18:38:56 +0000 (20:38 +0200)] 
Don’t enable unit test verbosity in Travis

It’s way too spammy.

6 years agoVerify value in “ccache -o key=value”
Joel Rosdahl [Mon, 17 Jun 2019 20:29:12 +0000 (22:29 +0200)] 
Verify value in “ccache -o key=value”

Based on a suggestion by Henri Houder.

6 years agoconst-ify parameters to confitem verifier/formatter
Joel Rosdahl [Mon, 17 Jun 2019 20:28:51 +0000 (22:28 +0200)] 
const-ify parameters to confitem verifier/formatter

6 years agoImprove solution to #405
Joel Rosdahl [Sun, 26 May 2019 12:02:02 +0000 (14:02 +0200)] 
Improve solution to #405

Instead of changing the global stats_file value temporarily in
update_manifest, pass which file to update explicitly to
stats_update_size.

6 years agoRemove .xml files in the doc directory on “make distclean”
Joel Rosdahl [Thu, 23 May 2019 18:46:21 +0000 (20:46 +0200)] 
Remove .xml files in the doc directory on “make distclean”

6 years agoMention xsltproc in INSTALL.md
Joel Rosdahl [Tue, 21 May 2019 19:52:27 +0000 (21:52 +0200)] 
Mention xsltproc in INSTALL.md

Related to #425.

6 years agoTweak formatting of manual text and code comments
Joel Rosdahl [Mon, 20 May 2019 19:25:27 +0000 (21:25 +0200)] 
Tweak formatting of manual text and code comments

6 years agoFix PCH detection in depend mode (+test improvements) (#427)
Luboš Luňák [Mon, 20 May 2019 19:18:16 +0000 (21:18 +0200)] 
Fix PCH detection in depend mode (+test improvements) (#427)

* do not refer to Clang's PTH in tests

The PTH feature has been removed (https://reviews.llvm.org/D54547)
and according to the commit it has never really been used. Maybe this
made sense somewhen in the past, but now those .pth files must be PCHs
internally. This commit actually just changes the .pth extensions
to .pch to avoid confusion, technically nothing should change
except for filenames.

* try to share PCH tests between GCC and Clang

Clang is supposed to be a drop-in for GCC, so in general it should
be able to handle everything GCC can. That's not completely true
in practice, there are differences, but it doesn't make sense
to completely duplicate a testcase just because there are some
differences. So start creating a shared common base for the PCH
tests and do separately only tests that act differently.

* more sharing of PCH tests between GCC and Clang

There's e.g. no need to do all kinds of complex tests with both
.gch and .pch with Clang, except for checking that Clang finds
one of them if none is specified explicitly.

* log also when pch usage is detect from pragma pch_preprocess

* try harder to verify in tests that ccache detects PCH changes

Some of the tests did that, e.g. those 'file changed', but e.g. the cached
.gch creation did not. So try to intentionally change the .gch/.h and test
that it leads to a cache miss. Otherwise there might be a hit simply
because ccache failed to detect PCH usage and ignores the .gch completely.

* clean up #include vs -fpch-preprocess in pch tests

As the manpage says, -fpch-preprocess is needed only with the #include
form, otherwise it's pointless.

* do not mention sloppiness in pch tests, only no sloppiness

Since sloppiness is normally required, so no point in stating the obvious.

* test also -include-pch with clang

* hash also pch introduced only using -include

GCC does not output the pch in the .d dependencies file, so without
this there would be false cache hits.

* be consistent about sloppiness in pch tests

create pch -> pch_defines
use pch -> time_macros

* test CCACHE_PCH_EXTSUM more thoroughly and also with -include

* pch test for .gch file being in an extra directory

* doc corrections for how to use PCH with ccache

- ccache will fail to properly detect that -include a.h means using
  a.h.gch if it requires using path from -I (they are not searched)
- -fpch-preprocess does nothing with Clang, it doesn't output
  pragma GCC pch_preprocess and so #include form for PCHs doesn't work

* explain better problems of -MD/-MMD in depend mode

6 years agoHint about not running autogen.sh when building from release archive
Joel Rosdahl [Sat, 11 May 2019 15:24:11 +0000 (17:24 +0200)] 
Hint about not running autogen.sh when building from release archive

Related to #418.

6 years agoClean up detection of CI environment
Joel Rosdahl [Sat, 11 May 2019 15:00:21 +0000 (17:00 +0200)] 
Clean up detection of CI environment

“RUN_FROM_BUILD_FARM” was set by the old Samba build farm, so switch to
checking “TRAVIS” instead. Also, keep running in dev mode in Travis.

6 years agoclang's -ftime-trace is too hard (#424)
Luboš Luňák [Sat, 11 May 2019 14:54:00 +0000 (16:54 +0200)] 
clang's -ftime-trace is too hard (#424)

It produces extra .json file with timing information about the compilation.

6 years agoHandle unknown manifest version gracefully in --dump-manifest
Joel Rosdahl [Sun, 5 May 2019 19:54:27 +0000 (21:54 +0200)] 
Handle unknown manifest version gracefully in --dump-manifest

Previously “ccache --dump-manifest file” would crash with an assert when
the file did not have the expected version.

6 years agoFix make check with "funny" locales (#420)
Luboš Luňák [Sat, 11 May 2019 14:38:33 +0000 (16:38 +0200)] 
Fix make check with "funny" locales (#420)

'ch' in cs_CZ locale is technically just one character, so directory
name 'ccache' fails the test

6 years agoTweak comment
Joel Rosdahl [Thu, 2 May 2019 19:29:06 +0000 (21:29 +0200)] 
Tweak comment

6 years agoUpdate the correct stats file for manifest (#405)
Anders Björklund [Thu, 2 May 2019 19:28:38 +0000 (21:28 +0200)] 
Update the correct stats file for manifest (#405)

There are global variables used for updating stats,
and those were wrong for the manifest file update.

So make sure to reset those variables, before adding
the manifest (this means flushing the pending updates)

6 years agoFix source comment and documentation typos (#403)
luzpaz [Wed, 1 May 2019 19:10:24 +0000 (15:10 -0400)] 
Fix source comment and documentation typos (#403)

Found via `codespell -q 3 -L uint,thru -S ./src/zlib`

6 years agoPrepare for v3.7.1 v3.7.1
Joel Rosdahl [Wed, 1 May 2019 14:27:59 +0000 (16:27 +0200)] 
Prepare for v3.7.1

6 years agoPrepare for v3.7.1
Joel Rosdahl [Wed, 1 May 2019 14:27:39 +0000 (16:27 +0200)] 
Prepare for v3.7.1

6 years agoAvoid -Wextra-semi-stmt warnings from Clang
Joel Rosdahl [Wed, 1 May 2019 14:20:16 +0000 (16:20 +0200)] 
Avoid -Wextra-semi-stmt warnings from Clang

6 years agoUpdate NEWS
Joel Rosdahl [Wed, 1 May 2019 14:10:31 +0000 (16:10 +0200)] 
Update NEWS

6 years agoFix usage of ferror after fclose
Joel Rosdahl [Wed, 1 May 2019 14:10:18 +0000 (16:10 +0200)] 
Fix usage of ferror after fclose

6 years agoImprove fix in #400 to handle more cases
Joel Rosdahl [Wed, 1 May 2019 12:51:45 +0000 (14:51 +0200)] 
Improve fix in #400 to handle more cases

The dependency file name can come from e.g. DEPENDENCIES_OUTPUT as well,
so hash information about a /dev/null .d file after the argument
processing loop instead.

6 years agoTweak code style
Joel Rosdahl [Wed, 1 May 2019 12:25:16 +0000 (14:25 +0200)] 
Tweak code style

6 years agoHash information to make results with -MF /dev/null unique (#400)
Anders F Björklund [Mon, 29 Apr 2019 18:01:38 +0000 (20:01 +0200)] 
Hash information to make results with -MF /dev/null unique (#400)

If we first run with -MF /dev/null, then we will get a
"cache file missing" error on the next run - avoid that.

Make sure to cache the special /dev/null value, so that
it differs from the normal (ignored) dep file name...

6 years agoRevert "Bail out on “-MF /dev/null”"
Joel Rosdahl [Wed, 1 May 2019 12:21:41 +0000 (14:21 +0200)] 
Revert "Bail out on “-MF /dev/null”"

This reverts commit 253301e7ac56a9d2bed1f03a91ba73be102a0d42.

6 years agoBail out on “-MF /dev/null”
Joel Rosdahl [Wed, 1 May 2019 11:58:18 +0000 (13:58 +0200)] 
Bail out on “-MF /dev/null”

This is an alternative fix for #397, based on the observation/assumption
that using “-MF /dev/null” is only ever used as part of a compiler probe
call in combination with “-c /dev/null -o /dev/null”, so there is little
reason to cache the result. The advantage of just bailing out is to
reduce the number of special cases we have to handle.

6 years agoFix “Help wanted”/”Good first issues” links
Joel Rosdahl [Mon, 29 Apr 2019 19:03:13 +0000 (21:03 +0200)] 
Fix “Help wanted”/”Good first issues” links

6 years agoSupport using -MF /dev/null argument (#398)
Anders Björklund [Sun, 28 Apr 2019 20:50:03 +0000 (22:50 +0200)] 
Support using -MF /dev/null argument (#398)

This is sometimes used when detecting capabilities.

6 years agoSort entries in LICENSE.adoc
Joel Rosdahl [Sun, 28 Apr 2019 20:09:20 +0000 (22:09 +0200)] 
Sort entries in LICENSE.adoc

6 years agoMake uncrustify ignore newlines for enums
Joel Rosdahl [Sun, 28 Apr 2019 11:57:54 +0000 (13:57 +0200)] 
Make uncrustify ignore newlines for enums

Uncrustify doesn’t properly understand enums as return values and
ignoring newlines is an easy workaround.

6 years agoTweak typedef of the stat format function
Joel Rosdahl [Sun, 28 Apr 2019 11:56:35 +0000 (13:56 +0200)] 
Tweak typedef of the stat format function

Typedef-ing the function as a pointer type works better with uncrustify.

6 years agoCalculate length correctly in win32argvtos
Joel Rosdahl [Thu, 25 Apr 2019 19:21:53 +0000 (21:21 +0200)] 
Calculate length correctly in win32argvtos

6 years agoFix NULL argument in profile directory trace (#395)
Loïc Yhuel [Thu, 25 Apr 2019 19:19:10 +0000 (21:19 +0200)] 
Fix NULL argument in profile directory trace (#395)

With -fprofile-*=path, we currently print :
"Setting profile directory to (null)".

This fixes the build with gcc 9, which failed with :
error: ‘%s’ directive argument is null [-Werror=format-overflow=]

6 years agoFix memory and temporary file leak
Joel Rosdahl [Thu, 25 Apr 2019 18:37:37 +0000 (20:37 +0200)] 
Fix memory and temporary file leak

6 years agoFix code style
Joel Rosdahl [Thu, 25 Apr 2019 18:25:57 +0000 (20:25 +0200)] 
Fix code style

6 years agoHandle @file syntax on Windows correctly (#392)
Mike Blumenkrantz [Thu, 25 Apr 2019 18:24:01 +0000 (14:24 -0400)] 
Handle @file syntax on Windows correctly (#392)

* add length return to win32argvtos()

this is useful for determining the length of the generated argument string

* correctly handle @file syntax on Windows

the @file syntax means that the process reads command arguments from the
specified file. this is commonly used in order to shorten commands which
would otherwise be longer than the maximum length limit: many build systems
do this in all cases to avoid hitting this limit.

when a command exceeds 8192 characters on on Windows, ccache now writes
the parsed/modified arguments to a tmpfile and then runs the command using
that tmpfile with @tmpfile in order to preserve this mechanism and avoid hitting
the length limit

fixes #95

6 years agoPrepare for v3.7 v3.7
Joel Rosdahl [Tue, 23 Apr 2019 18:40:15 +0000 (20:40 +0200)] 
Prepare for v3.7

6 years agoDon’t include email addresses in authors list
Joel Rosdahl [Mon, 22 Apr 2019 19:19:36 +0000 (21:19 +0200)] 
Don’t include email addresses in authors list

Not all users have real email addresses anyway, and I don’t see any real
use for maintaining a “correct” list of addresses.

6 years agoFix Clang analyzer warning about uninitialized value
Joel Rosdahl [Mon, 22 Apr 2019 18:56:41 +0000 (20:56 +0200)] 
Fix Clang analyzer warning about uninitialized value

6 years agoUpdate NEWS
Joel Rosdahl [Mon, 22 Apr 2019 18:25:33 +0000 (20:25 +0200)] 
Update NEWS

6 years agoThe clang --analyze option is too hard (for now) (#389)
Anders Björklund [Mon, 22 Apr 2019 17:57:04 +0000 (19:57 +0200)] 
The clang --analyze option is too hard (for now) (#389)

The scan-build wrapper seems to use -analyze.

6 years agoUpgrade minitrace to latest master (#387)
Anders Björklund [Mon, 22 Apr 2019 15:19:27 +0000 (17:19 +0200)] 
Upgrade minitrace to latest master (#387)

6 years agoRename perf/perf.py to misc/performance
Joel Rosdahl [Mon, 22 Apr 2019 14:16:01 +0000 (16:16 +0200)] 
Rename perf/perf.py to misc/performance

No need for it to occupy a directory of its own.

6 years agoConvert Python scripts to Python 3 and Blacken them
Joel Rosdahl [Mon, 22 Apr 2019 14:13:13 +0000 (16:13 +0200)] 
Convert Python scripts to Python 3 and Blacken them

Because 2019.

6 years agoImprove docs for (and name of) utility scripts for tracing
Joel Rosdahl [Mon, 22 Apr 2019 13:47:18 +0000 (15:47 +0200)] 
Improve docs for (and name of) utility scripts for tracing

6 years agoSimplify trace_stop signature
Joel Rosdahl [Mon, 22 Apr 2019 13:45:34 +0000 (15:45 +0200)] 
Simplify trace_stop signature

6 years agoFix minitrace.c compilation error with GCC 7.3
Joel Rosdahl [Mon, 22 Apr 2019 13:22:07 +0000 (15:22 +0200)] 
Fix minitrace.c compilation error with GCC 7.3

The error/warning looks like this:

src/minitrace.c: In function ‘mtr_flush’:
src/minitrace.c:256:54: error: ‘%.*s’ directive output may be truncated writing up to 700 bytes into a region of size 252 [-Werror=format-truncation=]
     snprintf(arg_buf, ARRAY_SIZE(arg_buf), "\"%s\":\"%.*s\"", raw->arg_name, 700, raw->a_str);
                                                      ^~~~
In file included from /usr/include/stdio.h:862:0,
                 from src/minitrace.c:9:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:64:10: note: ‘__builtin___snprintf_chk’ output 6 or more bytes (assuming 706) into a destination of size 256
   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        __bos (__s), __fmt, __va_arg_pack ());
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

6 years agoUpdate NEWS
Joel Rosdahl [Mon, 22 Apr 2019 13:17:22 +0000 (15:17 +0200)] 
Update NEWS

6 years agoRevert "Support for Fortran 77"
Joel Rosdahl [Mon, 22 Apr 2019 13:15:23 +0000 (15:15 +0200)] 
Revert "Support for Fortran 77"

This reverts commit c0875cf2dae56f66076ee01e0ca6e723ba999199.

Fixes #342.

6 years agoFix bugs in the newly introduced tracing mode (#386)
Anders Björklund [Mon, 22 Apr 2019 13:09:18 +0000 (15:09 +0200)] 
Fix bugs in the newly introduced tracing mode (#386)

* The tracefile variable is not used anymore

This caused trace files to be left in /tmp

* Fix crash in tracing mode, caused by logging

Unfortunately cc_log() requires conf to work

6 years agoUpdate NEWS
Joel Rosdahl [Sun, 21 Apr 2019 20:14:16 +0000 (22:14 +0200)] 
Update NEWS

6 years agoTweak manuals and code related to tracing
Joel Rosdahl [Sun, 21 Apr 2019 20:12:06 +0000 (22:12 +0200)] 
Tweak manuals and code related to tracing

6 years agoAdd optional support for microsecond tracing (#280)
Anders Björklund [Sun, 21 Apr 2019 19:59:03 +0000 (21:59 +0200)] 
Add optional support for microsecond tracing (#280)

* Add third-party minitrace library for tracing
* Add a time_seconds helper, for portability
* Add basic tracing support, using minitrace
* Add script to combine multiple trace.json

6 years agoUse localtime_r instead of localtime
Joel Rosdahl [Sun, 21 Apr 2019 15:44:23 +0000 (17:44 +0200)] 
Use localtime_r instead of localtime

This pleases linters that dislike localtime(3).

6 years agoRemove NEWS entry for #374
Joel Rosdahl [Tue, 16 Apr 2019 04:48:34 +0000 (06:48 +0200)] 
Remove NEWS entry for #374

The bug does not exist in any released version.

6 years agoUpdate NEWS
Joel Rosdahl [Mon, 15 Apr 2019 19:41:38 +0000 (21:41 +0200)] 
Update NEWS

6 years agoTweak source code comments
Joel Rosdahl [Mon, 15 Apr 2019 19:40:41 +0000 (21:40 +0200)] 
Tweak source code comments

6 years agoTouch up NEWS.adoc
Joel Rosdahl [Mon, 15 Apr 2019 19:35:38 +0000 (21:35 +0200)] 
Touch up NEWS.adoc

* Use “-” for bullets consistently.
* Use “curly quotation marks” instead of ``asciidoctor'' quotation style
  for readability, and similar for apostrophes.

6 years agoCopy rather than link depend from the cache (#379)
Anders Björklund [Mon, 15 Apr 2019 19:35:08 +0000 (21:35 +0200)] 
Copy rather than link depend from the cache (#379)

The depends are small enough to avoid the copy, since it leads
to issues with mv when using automake to generate the Makefile.

6 years agoImprove handling of debug levels
Joel Rosdahl [Sat, 13 Apr 2019 20:52:23 +0000 (22:52 +0200)] 
Improve handling of debug levels

Fixes #368.

* Remember if we have seen any option on level 3.
* Let “-g0”, “-ggdb0” and similar cancel out any previously seen “-g”
  options except “-gsplit-dwarf”. This is based on observations on how
  GCC 7.3 behaves.
* Delay acting on seen debug options until after we have processed all
  arguments. This way we can avoid e.g. hashing the current directory if
  we get “-g3 -g0”.

6 years agoReuse previous depend mode hash result to avoid some extra work
Joel Rosdahl [Thu, 11 Apr 2019 20:12:13 +0000 (22:12 +0200)] 
Reuse previous depend mode hash result to avoid some extra work

6 years agoRemove now unnecessary hash copy
Joel Rosdahl [Thu, 11 Apr 2019 20:11:43 +0000 (22:11 +0200)] 
Remove now unnecessary hash copy

6 years agoRewrite mdfour routines to not modify state when computing the result
Joel Rosdahl [Thu, 11 Apr 2019 20:10:43 +0000 (22:10 +0200)] 
Rewrite mdfour routines to not modify state when computing the result

This makes the interface much more intuitive, at the minor expense of
having to copy 32-96 extra bytes (unnecessary if the hash state won’t be
fed with more bytes) when fetching the result.

This change is also partly motivated by the code that handles several
-arch options – it calls get_object_name_from_cpp multiple times to
compute a combined hash, but that function also computes the hash result
each time.

6 years agoPass correct LDFLAGS in .travis.sh and the travis target
Joel Rosdahl [Thu, 11 Apr 2019 20:04:38 +0000 (22:04 +0200)] 
Pass correct LDFLAGS in .travis.sh and the travis target

The change in 48b34a49469a11abae79ce24ebe1c12b5711fbe0 was not fully
propagated to .travis.sh.

6 years agoAdd asserts to do_hash_buffer to detect misuse
Joel Rosdahl [Wed, 10 Apr 2019 20:28:46 +0000 (22:28 +0200)] 
Add asserts to do_hash_buffer to detect misuse

Related to issue #374.

6 years agoFix bad calculation of object hash in the depend mode
Joel Rosdahl [Wed, 10 Apr 2019 20:22:24 +0000 (22:22 +0200)] 
Fix bad calculation of object hash in the depend mode

When the depend mode is enabled, there is a code path where the direct
mode hash state is finalized and then more bytes are fed into it to
create a hash sum for the depend mode. The effect is that the last 0-63
bytes (depending on the number of previously hashed bytes) of the data
used for the depend mode will be ignored, which means that the contents
of the last 0-2 or so header files in the .d file are not accounted for
in the object hash used in the depend mode.

Fix this by making a copy of the direct mode hash state before computing
the hash result in calculate_object_hash().

Fixes #374.

6 years agoDon’t finalize hash buffer state in the unify mode code
Joel Rosdahl [Wed, 10 Apr 2019 20:19:32 +0000 (22:19 +0200)] 
Don’t finalize hash buffer state in the unify mode code

The hash state needs to stay unfinalized since more bytes are fed into
it later.

Related to issue #374.

6 years agoImprove debug logging of file hashes in depend mode
Joel Rosdahl [Mon, 8 Apr 2019 19:43:12 +0000 (21:43 +0200)] 
Improve debug logging of file hashes in depend mode

Previously raw bytes were written to the .ccache-text-input file but now
human-readable hex string versions are written instead.

6 years agoBail out on too hard compiler option “-gtoggle”
Joel Rosdahl [Wed, 3 Apr 2019 19:39:03 +0000 (21:39 +0200)] 
Bail out on too hard compiler option “-gtoggle”

6 years agoUpdate ccache.samba.org URLs to refer to ccache.dev
Joel Rosdahl [Wed, 3 Apr 2019 17:12:48 +0000 (19:12 +0200)] 
Update ccache.samba.org URLs to refer to ccache.dev

6 years agoUpdate NEWS
Joel Rosdahl [Tue, 2 Apr 2019 19:28:31 +0000 (21:28 +0200)] 
Update NEWS

6 years agoInclude the presence of "-fxxx-prefix-map=" options in the hash (#370)
dianders [Tue, 2 Apr 2019 19:25:25 +0000 (12:25 -0700)] 
Include the presence of "-fxxx-prefix-map=" options in the hash (#370)

Recently I landed commit 980e032d14ba ("Allow treating "/dev/null" as
an input file (#365)") which sped up my kernel build a bunch.

Unfortunately I tested my change in isolation on the newest ccache
(AKA I constructed a simple test case and saw that it worked).  I only
tested it together with the Linux kernel when backported to an older
version of ccache.  A bit later I managed to get the newer version of
ccache fully integrated into my build system and tested my path there.
Then I noticed a problem because the new ccache contained the commit
919af39ccaca ("Support gcc-8 -ffile-prefix-map")

Specifically my compiler doesn't support the
-fmacro-prefix-map=... option and thus my change and the ccache change
to support -fmacro-prefix-map caused caused my kernel build to fail.
It couldn't detect that -fmacro-prefix-map wasn't supported.  The
kernel effectively will make these two calls:

  $(CC) $(opts)
  $(CC) $(opts) -fmacro-prefix-map=...

Since the newer ccache doesn't use "-fmacro-prefix-map=" when
computing its hash it will return the cached results from the first
call: AKA no compiler error.  Now the kernel Makefile will decide that
the "-fmacro-prefix-map=" is supported and will continue to use it,
which is bad.

It seems like an easy fix to all this is to add the _presence_ of the
"-fxxx-prefix-map=" options into the hash.  Those that want to use
these options to reuse cache objects still can--they just need to make
sure that none of the invocations of the compiler totally omit the
option.

6 years agoRevert "Handle -g0 properly (#371)"
Joel Rosdahl [Tue, 2 Apr 2019 19:01:16 +0000 (21:01 +0200)] 
Revert "Handle -g0 properly (#371)"

This reverts ccache/ccache#371.

6 years agoHandle -g0 properly (#371)
Pavol Sakac [Tue, 2 Apr 2019 18:57:38 +0000 (20:57 +0200)] 
Handle -g0 properly (#371)

6 years agotest: Remove left-over depend_different_headers.bash
Joel Rosdahl [Tue, 2 Apr 2019 18:54:49 +0000 (20:54 +0200)] 
test: Remove left-over depend_different_headers.bash

As noted by Pavol Sakac. It should have been removed as part of bdc40d35a3a6.

6 years agoDon’t create missing output directory
Joel Rosdahl [Mon, 1 Apr 2019 19:46:21 +0000 (21:46 +0200)] 
Don’t create missing output directory

This mimics the compiler behavior for “-o out/obj.o” when “out” doesn’t
exist.

Fixes #353.

6 years agoDocument the --hash-file option
Joel Rosdahl [Mon, 1 Apr 2019 19:07:07 +0000 (21:07 +0200)] 
Document the --hash-file option

6 years agoUpdate NEWS
Joel Rosdahl [Sun, 31 Mar 2019 20:20:09 +0000 (22:20 +0200)] 
Update NEWS

6 years agoAdd --print-stats command for machine-parsable statistics output
Joel Rosdahl [Sun, 31 Mar 2019 20:14:03 +0000 (22:14 +0200)] 
Add --print-stats command for machine-parsable statistics output

6 years agoRefactor stats_summary
Joel Rosdahl [Sun, 31 Mar 2019 19:47:22 +0000 (21:47 +0200)] 
Refactor stats_summary

In preparation for adding “--print-stats”.

6 years agoRename --print-config to --show-config
Joel Rosdahl [Sun, 31 Mar 2019 19:25:32 +0000 (21:25 +0200)] 
Rename --print-config to --show-config

“--show-*” will be the human-readable variant and “--print-*” the
machine-parsable variant.

6 years agoDocument -k/--get-config
Joel Rosdahl [Sun, 31 Mar 2019 18:49:05 +0000 (20:49 +0200)] 
Document -k/--get-config

6 years agoDocument the --dump-manifest option
Joel Rosdahl [Sun, 31 Mar 2019 18:45:23 +0000 (20:45 +0200)] 
Document the --dump-manifest option

6 years agoRearrange description of options in the help text into sections
Joel Rosdahl [Sun, 31 Mar 2019 18:45:13 +0000 (20:45 +0200)] 
Rearrange description of options in the help text into sections

Also sorted options according to their long form.

6 years agoIgnore unknown keys in configuration files
Joel Rosdahl [Sun, 31 Mar 2019 18:06:05 +0000 (20:06 +0200)] 
Ignore unknown keys in configuration files

This way legacy ccache versions can still work with modern ccache
configuration keys in the configuration files. The downside is of course
that errors like typos no longer will be corrected.

6 years agoOptimize when to rewrite absolute paths into relative in .d file
Joel Rosdahl [Sun, 31 Mar 2019 11:22:17 +0000 (13:22 +0200)] 
Optimize when to rewrite absolute paths into relative in .d file

As discussed in PR #366.

6 years agoEnable generating relative paths in dependency file in depend mode (#366)
Pavol Sakac [Sun, 31 Mar 2019 11:09:10 +0000 (13:09 +0200)] 
Enable generating relative paths in dependency file in depend mode (#366)

This was previously only done if preprocessor was run.

6 years agoMark the manifest file as used on direct cache hit
Joel Rosdahl [Wed, 27 Mar 2019 20:46:49 +0000 (21:46 +0100)] 
Mark the manifest file as used on direct cache hit

Fixes #367.

6 years agoDeduce output filename from source filename without or ending with dot
Joel Rosdahl [Wed, 27 Mar 2019 20:22:28 +0000 (21:22 +0100)] 
Deduce output filename from source filename without or ending with dot

6 years agoUpdate NEWS
Joel Rosdahl [Tue, 26 Mar 2019 20:12:14 +0000 (21:12 +0100)] 
Update NEWS

6 years agotest: Merge depend_different_headers suite with the depend suite
Joel Rosdahl [Tue, 26 Mar 2019 20:07:43 +0000 (21:07 +0100)] 
test: Merge depend_different_headers suite with the depend suite

6 years agodepend mode: Support multiple versions of dependencies (#363)
Pavol Sakac [Sun, 24 Mar 2019 12:56:24 +0000 (13:56 +0100)] 
depend mode: Support multiple versions of dependencies (#363)

Depend mode fix for a case with unchaged common hash (unchanged source file and
other parameters that affect the hash), but with changes in the header file[s]
the source file depends on. This allows for multiple versions of the object
file and dependency file to exist for one common hash. Added unit tests in
test/suites/depend_different_headers.bash to test this behavior.

6 years agoUpdate NEWS
Joel Rosdahl [Thu, 21 Mar 2019 21:06:41 +0000 (22:06 +0100)] 
Update NEWS

6 years agoFix deletion of tmp_stderr in depend mode
Joel Rosdahl [Thu, 21 Mar 2019 21:04:22 +0000 (22:04 +0100)] 
Fix deletion of tmp_stderr in depend mode

If the compiler produced stderr, a temporary file leaks if depend mode
is enabled. Also, if the compiler does not produce stderr and depend
mode is enable, an unnecessary unlink is attempted.

Fix this by restructuring logic related to deletion of the temporary
file.

6 years agoAdd dianders to .mailcap
Joel Rosdahl [Thu, 21 Mar 2019 19:55:26 +0000 (20:55 +0100)] 
Add dianders to .mailcap

6 years agoUpdate NEWS
Joel Rosdahl [Thu, 21 Mar 2019 19:53:41 +0000 (20:53 +0100)] 
Update NEWS