From f58741b57ddd6024c765f5d7ef1eb62f3e8030a3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Sun, 25 Jun 2017 21:49:15 +0200 Subject: [PATCH] Add test case for directives-only/rewrite-includes Use run_second_cpp = false (also known sometimes as "cpp1"), but instruct the preprocessor to only handle include directives. Make sure that any headers are still processed, and that both the #define and -D work as usual (with regular preprocessing). --- test/suites/cpp1.bash | 65 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 test/suites/cpp1.bash diff --git a/test/suites/cpp1.bash b/test/suites/cpp1.bash new file mode 100644 index 000000000..eefa1f41d --- /dev/null +++ b/test/suites/cpp1.bash @@ -0,0 +1,65 @@ +SUITE_cpp1_PROBE() { + touch test.c + if $COMPILER_TYPE_GCC; then + if ! $UNCACHED_COMPILE -E -fdirectives-only test.c >/dev/null 2>&1; then + echo "-fdirectives-only not supported by compiler" + return + fi + elif $COMPILER_TYPE_CLANG; then + if ! $UNCACHED_COMPILE -E -frewrite-includes test.c >/dev/null 2>&1; then + echo "-frewrite-includes not supported by compiler" + return + fi + else + echo "Unknown compiler: $COMPILER" + return + fi +} + +SUITE_cpp1_SETUP() { + export CCACHE_NOCPP2=1 + echo "#define FOO 1" >test1.h + backdate test1.h + echo "#include \"test1.h\"" >test1.c + echo "#define BAR 2" >>test1.c + echo "int foo(int x) { return FOO; }" >>test1.c + echo "int bar(int x) { return BAR; }" >>test1.c + echo "int baz(int x) { return BAZ; }" >>test1.c +} + +SUITE_cpp1() { + if $COMPILER_TYPE_GCC; then + cpp_flag="-fdirectives-only" + elif $COMPILER_TYPE_CLANG; then + cpp_flag="-frewrite-includes" + fi + cpp_flag="$cpp_flag -DBAZ=3" + + # ------------------------------------------------------------------------- + TEST "Base case" + + $UNCACHED_COMPILE $cpp_flag -c -o reference_test1.o test1.c + + $CCACHE_COMPILE $cpp_flag -c test1.c + expect_stat 'cache hit (direct)' 0 + expect_stat 'cache hit (preprocessed)' 0 + expect_stat 'cache miss' 1 + expect_stat 'files in cache' 1 + expect_equal_object_files reference_test1.o test1.o + + unset CCACHE_NODIRECT + + $CCACHE_COMPILE $cpp_flag -c test1.c + expect_stat 'cache hit (direct)' 0 + expect_stat 'cache hit (preprocessed)' 1 + expect_stat 'cache miss' 1 + expect_stat 'files in cache' 2 + expect_equal_object_files reference_test1.o test1.o + + $CCACHE_COMPILE $cpp_flag -c test1.c + expect_stat 'cache hit (direct)' 1 + expect_stat 'cache hit (preprocessed)' 1 + expect_stat 'cache miss' 1 + expect_stat 'files in cache' 2 + expect_equal_object_files reference_test1.o test1.o +} -- 2.47.2