1*f91b6f81SVolodymyr Sapsai // RUN: rm -rf %t 2*f91b6f81SVolodymyr Sapsai // RUN: mkdir -p %t/implicit-invalidate-common 3*f91b6f81SVolodymyr Sapsai // RUN: cp -r %S/Inputs/implicit-invalidate-common %t/ 4*f91b6f81SVolodymyr Sapsai // RUN: echo '#include "A.h"' > %t/A.c 5*f91b6f81SVolodymyr Sapsai // RUN: echo '#include "B.h"' > %t/B.c 6*f91b6f81SVolodymyr Sapsai 7*f91b6f81SVolodymyr Sapsai // Build with an empty module cache. Module 'Common' should be built only once. 8*f91b6f81SVolodymyr Sapsai // 9*f91b6f81SVolodymyr Sapsai // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/Cache \ 10*f91b6f81SVolodymyr Sapsai // RUN: -fsyntax-only -I %t/implicit-invalidate-common -Rmodule-build \ 11*f91b6f81SVolodymyr Sapsai // RUN: %t/A.c 2> %t/initial_build.txt 12*f91b6f81SVolodymyr Sapsai // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/Cache \ 13*f91b6f81SVolodymyr Sapsai // RUN: -fsyntax-only -I %t/implicit-invalidate-common -Rmodule-build \ 14*f91b6f81SVolodymyr Sapsai // RUN: %t/B.c 2>> %t/initial_build.txt 15*f91b6f81SVolodymyr Sapsai // RUN: FileCheck %s --implicit-check-not "remark:" --input-file %t/initial_build.txt 16*f91b6f81SVolodymyr Sapsai 17*f91b6f81SVolodymyr Sapsai // Update module 'Common' and build with the populated module cache. Module 18*f91b6f81SVolodymyr Sapsai // 'Common' still should be built only once. Note that we are using the same 19*f91b6f81SVolodymyr Sapsai // flags for A.c and B.c to avoid building Common.pcm at different paths. 20*f91b6f81SVolodymyr Sapsai // 21*f91b6f81SVolodymyr Sapsai // RUN: echo ' // ' >> %t/implicit-invalidate-common/Common.h 22*f91b6f81SVolodymyr Sapsai // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/Cache \ 23*f91b6f81SVolodymyr Sapsai // RUN: -fsyntax-only -I %t/implicit-invalidate-common -Rmodule-build \ 24*f91b6f81SVolodymyr Sapsai // RUN: %t/A.c 2> %t/incremental_build.txt 25*f91b6f81SVolodymyr Sapsai // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/Cache \ 26*f91b6f81SVolodymyr Sapsai // RUN: -fsyntax-only -I %t/implicit-invalidate-common -Rmodule-build \ 27*f91b6f81SVolodymyr Sapsai // RUN: %t/B.c 2>> %t/incremental_build.txt 28*f91b6f81SVolodymyr Sapsai // RUN: FileCheck %s --implicit-check-not "remark:" --input-file %t/incremental_build.txt 29*f91b6f81SVolodymyr Sapsai 30*f91b6f81SVolodymyr Sapsai // CHECK: remark: building module 'A' 31*f91b6f81SVolodymyr Sapsai // CHECK: remark: building module 'Common' 32*f91b6f81SVolodymyr Sapsai // CHECK: remark: finished building module 'Common' 33*f91b6f81SVolodymyr Sapsai // CHECK: remark: finished building module 'A' 34*f91b6f81SVolodymyr Sapsai // CHECK: remark: building module 'B' 35*f91b6f81SVolodymyr Sapsai // CHECK: remark: finished building module 'B' 36