diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2018-08-06 11:26:19 -0700 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2018-08-08 01:51:51 -0700 |
commit | 4210f839e2e96d208a202afd0803a9bccebb4567 (patch) | |
tree | a1c614dda501f021bb0ee40d9294dd57a9aedaae /lib | |
parent | 62089d43ef5e37b7fdbb12247edc1e0bf30cc657 (diff) | |
download | spack-4210f839e2e96d208a202afd0803a9bccebb4567.tar.gz spack-4210f839e2e96d208a202afd0803a9bccebb4567.tar.bz2 spack-4210f839e2e96d208a202afd0803a9bccebb4567.tar.xz spack-4210f839e2e96d208a202afd0803a9bccebb4567.zip |
cc: restore ccache support in the wrapper, add a regression test
- Add back ccache support to the wrapper.
- Add a regression test to make sure ccache is working properly.
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/spack/env/cc | 15 | ||||
-rw-r--r-- | lib/spack/spack/test/cc.py | 25 |
2 files changed, 38 insertions, 2 deletions
diff --git a/lib/spack/env/cc b/lib/spack/env/cc index 5ffaf941e0..e8a0903d2a 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -481,8 +481,19 @@ for lib in "${libs[@]}"; do args+=("-l$lib"); done -full_command=("$command") -full_command+=("${args[@]}") +full_command=("$command" "${args[@]}") + +# prepend the ccache binary if we're using ccache +if [ -n "$SPACK_CCACHE_BINARY" ]; then + case "$lang_flags" in + C|CXX) # ccache only supports C languages + full_command=("${SPACK_CCACHE_BINARY}" "${full_command[@]}") + # workaround for stage being a temp folder + # see #3761#issuecomment-294352232 + export CCACHE_NOHASHDIR=yes + ;; + esac +fi # dump the full command if the caller supplies SPACK_TEST_COMMAND=dump-args if [[ $SPACK_TEST_COMMAND == dump-args ]]; then diff --git a/lib/spack/spack/test/cc.py b/lib/spack/spack/test/cc.py index 3d06890f55..517b7f1dd3 100644 --- a/lib/spack/spack/test/cc.py +++ b/lib/spack/spack/test/cc.py @@ -560,3 +560,28 @@ def test_ld_deps_partial(dep1): test_rpaths + ['-r'] + test_args_without_paths) + + +def test_ccache_prepend_for_cc(): + with set_env(SPACK_CCACHE_BINARY='ccache'): + check_cc( + 'dump-args', test_args, + ['ccache'] + # ccache prepended in cc mode + [real_cc] + + test_include_paths + + test_library_paths + + test_wl_rpaths + + pkg_wl_rpaths + + test_args_without_paths) + + +def test_no_ccache_prepend_for_fc(): + check_fc( + 'dump-args', test_args, + # no ccache for Fortran + [real_cc] + + test_include_paths + + test_library_paths + + test_wl_rpaths + + pkg_wl_rpaths + + test_args_without_paths) |