================
@@ -0,0 +1,71 @@
+// Check that a relocated module is rebuilt and no error occurs.
+// This is required when a incremental build adds a newer version of an
+// already built library into a preexisting search path.
+// In this example, on the second scan, `DepThatLoadsOldPCMs` is resolved
first and
+// populates `MovedDep` into memory.
+// Then when `InvalidatedDep` is loaded, it's input file is out of date
+// and requires a rebuild.
+// When that happens the compiler notices `MovedDep` is in a earlier search
path.
+
+
+// RUN: rm -rf %t
+// RUN: split-file %s %t
+// RUN: sed -e "s|DIR|%/t|g" %t/compile-commands.json.in >
%t/compile-commands.json
+
+// RUN: clang-scan-deps -format experimental-full -j 1 \
+// RUN: -compilation-database %t/compile-commands.json -o %t/deps1.json
+// RUN: cat %t/deps1.json | FileCheck %s --check-prefix=DEPS1
+
+// Model update where same framework appears in earlier search path.
+// This can occur on an incremental build where dependency relationships are
updated.
+// RUN: sleep 1
+// RUN: mkdir %t/preferred_frameworks/
+// RUN: cp -R %t/fallback_frameworks/MovedDep.framework
%t/preferred_frameworks/
+// RUN: touch
%t/fallback_frameworks/InvalidatedDep.framework/Modules/module.modulemap
+
+// RUN: clang-scan-deps -format experimental-full -j 1 \
+// RUN: -compilation-database %t/compile-commands.json -o %t/deps2.json
+// RUN: cat %t/deps2.json | FileCheck %s --check-prefix=DEPS2
+
+// DEPS1: "clang-module-deps": [],
+// DEPS1-NEXT: "clang-modulemap-file":
"{{.*}}fallback_frameworks{{.*}}MovedDep.framework
+// DEPS1: "name": "MovedDep"
+
+// DEPS2: "clang-module-deps": [],
+// DEPS2-NEXT: "clang-modulemap-file":
"{{.*}}preferred_frameworks{{.*}}MovedDep.framework
+// DEPS2: "name": "MovedDep"
+
+//--- compile-commands.json.in
+[
+{
+ "directory": "DIR",
+ "command": "clang -c DIR/tu1.c -fmodules -fmodules-cache-path=DIR/cache
-FDIR/preferred_frameworks -FDIR/fallback_frameworks
-fbuild-session-file=DIR/session.timestamp
-fmodules-validate-once-per-build-session -o DIR/tu1.o ",
----------------
lei137 wrote:
`-F` is a Darwin/Apple-specific option and is unsupported by Clang when
targeting Linux . Is this only entended for Darwin targets?
https://github.com/llvm/llvm-project/pull/231244
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits