Joel Rosdahl [Mon, 23 Apr 2018 20:04:12 +0000 (22:04 +0200)]
Merge branch '3.4-maint'
* 3.4-maint:
Use double when calculating cache thresholds
Add a 32-bit build target, using multilib (-m32)
Convert float config to double, add rounding
Upgrade clang to 5.0, for the Travis docker
Make sure to export ASAN_OPTIONS properly
Add small helper to run all Travis tests
Make sure to call configure with right path
Add a travis-build container, for running locally
Look for -fdebug-prefix-map feature explicitly
Improve the Travis build matrix
Fix log printing of before/after cleanup
Remove irrelevant variable assignment in wipe_dir
win32: Fix CCACHE_COMPILERCHECK=mtime test case
This is not the actual Travis docker container, but it
should be similar enough for doing local verification:
make travis
make travis CC=clang
make travis CC=clang CFLAGS="-fsanitize=address -g" ASAN_OPTIONS="detect_leaks=0"
make travis CC=i686-w64-mingw32-gcc HOST="--host=i686-w64-mingw32" TEST="unittest/run.exe"
Previously if compiler command was an .sh script, win32 version
automatically added an .EXE extension to the command line and
then test case failed. With this change .sh files won't get
appended by an EXE extension and test case successfully runs
Joel Rosdahl [Tue, 13 Mar 2018 14:02:16 +0000 (15:02 +0100)]
Merge branch '3.4-maint'
* 3.4-maint:
Clean up
win32: Silence compiler warnings
cleanup: Improve robustness when multiple cleanups run concurrently
cleanup: Log size before cleaning
Add x_try_unlink utility function
test: Use helper functions instead of custom code
test: Improve error messages from expect_{equal,different}_files
Joel Rosdahl [Mon, 12 Mar 2018 21:25:28 +0000 (22:25 +0100)]
cleanup: Improve robustness when multiple cleanups run concurrently
The file count/size counters are now intentionally subtracted even if
there file to delete has disappeared since the final cache size
calculation will be incorrect if they aren’t. This can happen when there
are several parallel ongoing cleanups of the same subdirectory.
Also removed the “delete sibling files” logic; it’s unnecessary for all
siblings except .stderr since that’s the only file in a result that is
optional. Any other missing file will be detected by
get_file_from_cache.
Joel Rosdahl [Sun, 11 Mar 2018 15:08:37 +0000 (16:08 +0100)]
Merge branch '3.4-maint'
* 3.4-maint:
Update NEWS
Clean up
Support out-of-source builds
Be consistent with “Clang” and “NVCC” names in NEWS
Don’t apply Clang workaround for PCH dependencies for other compilers
Joel Rosdahl [Sun, 4 Mar 2018 09:45:50 +0000 (10:45 +0100)]
Improve man page generation
* Use AsciiDoc’s a2x tool instead of running xsltproc explicitly.
* Stow away ccache.1 in doc.
* Make AsciiDoc literals stand out as bold in the man page. We can now
use properly literals instead of emphasis in the manual.
Allow a pre-computed checksum file for precompiled headers
Having large precompiled header files slows down direct mode off
CCache considerably. Allow CCache to check against a (much smaller)
pre-computed checksum file instead of the precompiled header file
itself. This checksum file will be used in the manifest instead of
the actual precompiled header file.
Note that to make this to work, the build system needs to keep a
checksum file in sync with the precompiled header.
The behavior can be activated by the `pch_external_checksum` option.
Joel Rosdahl [Tue, 6 Feb 2018 20:49:55 +0000 (21:49 +0100)]
Treat unreadable conf file like missing instead of a fatal error
This reverts 0b18af47 and implements a better solution.
The major reason is to keep ccache transparent, i.e. to still have the
following behavior:
* If ccache returns exit code == 0, then any produced stderr comes from
the compiler and only from the compiler.
* If ccache returns exit code != 0, then ccache may print error messages
of its own.
The reason is that autoconf configure scripts have been known to fail
tests if the compiler emits anything to stderr even if the produced
result actually works. (And printing to stdout is also a no-no.)
Fail if boolean env vars are set with common negative strings
Boolean environment variables have strange semantics: if the variable
is set then the configuration setting is considered "true". This means
users can easily be mistaken that eg CCACHE_DISABLE=false means that
the "disable" setting is set to false.
To avoid too much backwards-incompatibility, we now exit with an error if
some common negative-sounding (case-insensitive) values:
"0", "false", "disable", "no".
All other values (including the empty string) are still considered to mean
"true".
Joel Rosdahl [Mon, 29 Jan 2018 19:57:18 +0000 (20:57 +0100)]
test: Rearrange files into test and unittest directories
* The unit tests formerly located in the test directory have been moved
to the unittest directory.
* The integration test suite test.sh has been made a bash script and
renamed to test/run. Its test suites are located in test/suites.
Joel Rosdahl [Sat, 27 Jan 2018 21:18:37 +0000 (22:18 +0100)]
test: Split into one file per suite
The test.sh file has simply grown unpleasantly large, so it's time to
split it up. Some suites still refer to stuff defined in earlier suites,
but we'll have to live with that for now.
Clemens Rabe [Wed, 23 Aug 2017 07:33:23 +0000 (09:33 +0200)]
Bug fixes and tests for nvcc
Feature: Added cuda compiler in separate travis job and implemented
tests for nvcc.
Feature: Added support for nvcc compiler options --compiler-bindir/-ccbin,
--output-directory/-odir and --libdevice-directory/-ldir.
Added tests for these options in test.sh.
Bug fix: Original patch had a statement to avoid using the preprocessed
input files for nvcc when run_second_cpp is false. Otherwise,
when a build is necessary and the preprocessed output was used,
nvcc results with a compiler error. The patch simply ensures
run_second_cpp is always set to true for the cuda compiler.
Bug fix: The -optf and -odir options are only accepted for nvcc. For other
compilers, they behave like '-o ptf' resp. '-o dir'.
A test was added to check this behaviour.