if (found_pch || found_fpch_preprocess) {
using_precompiled_header = true;
- if (!(sloppiness & SLOPPY_PCH_DEFINES)
- || !(sloppiness & SLOPPY_TIME_MACROS)) {
+ if (!(sloppiness & SLOPPY_TIME_MACROS)) {
cc_log("You have to specify \"pch_defines,time_macros\" sloppiness when"
" using precompiled headers to get direct hits");
cc_log("Disabling direct mode");
output_is_precompiled_header =
actual_language && strstr(actual_language, "-header") != NULL;
+ if (output_is_precompiled_header && !(sloppiness & SLOPPY_PCH_DEFINES)) {
+ cc_log("You have to specify \"pch_defines,time_macros\" sloppiness when"
+ " creating precompiled headers");
+ stats_update(STATS_CANTUSEPCH);
+ result = false;
+ goto out;
+ }
+
if (!found_c_opt) {
if (output_is_precompiled_header) {
args_add(stripped_args, "-c");
fi
##################################################################
- # Tests for creating a .gch.
+ # Tests for creating a .gch without opt-in.
backdate pch.h
- testname="create .gch, -c, no -o"
+ testname="create .gch, -c, no -o, without opt-in"
$CCACHE -zC >/dev/null
$CCACHE $COMPILER -c pch.h
checkstat 'cache hit (direct)' 0
checkstat 'cache hit (preprocessed)' 0
+ checkstat 'cache miss' 0
+ checkstat "can't use precompiled header" 1
+
+ testname="create .gch, no -c, -o, without opt-in"
+ $CCACHE -Cz >/dev/null
+ $CCACHE $COMPILER pch.h -o pch.gch
+ checkstat 'cache hit (direct)' 0
+ checkstat 'cache hit (preprocessed)' 0
+ checkstat 'cache miss' 0
+ checkstat "can't use precompiled header" 1
+
+ ##################################################################
+ # Tests for creating a .gch with opt-in.
+
+ backdate pch.h
+
+ testname="create .gch, -c, no -o, with opt-in"
+ $CCACHE -zC >/dev/null
+ CCACHE_SLOPPINESS=pch_defines,time_macros $CCACHE $COMPILER -c pch.h
+ checkstat 'cache hit (direct)' 0
+ checkstat 'cache hit (preprocessed)' 0
checkstat 'cache miss' 1
rm -f pch.h.gch
- $CCACHE $COMPILER -c pch.h
+ CCACHE_SLOPPINESS=pch_defines,time_macros $CCACHE $COMPILER -c pch.h
checkstat 'cache hit (direct)' 1
checkstat 'cache hit (preprocessed)' 0
checkstat 'cache miss' 1
test_failed "pch.h.gch missing"
fi
- testname="create .gch, no -c, -o"
+ testname="create .gch, no -c, -o, with opt-in"
$CCACHE -Cz >/dev/null
- $CCACHE $COMPILER pch.h -o pch.gch
+ CCACHE_SLOPPINESS=pch_defines,time_macros $CCACHE $COMPILER pch.h -o pch.gch
checkstat 'cache hit (direct)' 0
checkstat 'cache hit (preprocessed)' 0
checkstat 'cache miss' 1
- $CCACHE $COMPILER pch.h -o pch.gch
+ CCACHE_SLOPPINESS=pch_defines,time_macros $CCACHE $COMPILER pch.h -o pch.gch
checkstat 'cache hit (direct)' 1
checkstat 'cache hit (preprocessed)' 0
checkstat 'cache miss' 1