xref: /llvm-project/clang/test/ClangScanDeps/module-format.c (revision 6a4eaf9b33d8091b7d09b2a30a3fc8993a01db31)
18fe8d69dSBen Langmuir // Check that the scanner produces raw ast files, even when builds produce the
28fe8d69dSBen Langmuir // obj format, and that the scanner can read obj format from PCH and modules
38fe8d69dSBen Langmuir // imported by PCH.
48fe8d69dSBen Langmuir 
58fe8d69dSBen Langmuir // Unsupported on AIX because we don't support the requisite "__clangast"
68fe8d69dSBen Langmuir // section in XCOFF yet.
78fe8d69dSBen Langmuir // UNSUPPORTED: target={{.*}}-aix{{.*}}
88fe8d69dSBen Langmuir 
98fe8d69dSBen Langmuir // REQUIRES: shell
108fe8d69dSBen Langmuir 
118fe8d69dSBen Langmuir // RUN: rm -rf %t && mkdir %t
128fe8d69dSBen Langmuir // RUN: cp %S/Inputs/modules-pch/* %t
138fe8d69dSBen Langmuir 
148fe8d69dSBen Langmuir // Scan dependencies of the PCH:
158fe8d69dSBen Langmuir //
168fe8d69dSBen Langmuir // RUN: rm -f %t/cdb_pch.json
178fe8d69dSBen Langmuir // RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch/cdb_pch.json > %t/cdb_pch.json
188fe8d69dSBen Langmuir // RUN: clang-scan-deps -compilation-database %t/cdb_pch.json -format experimental-full \
19*6a4eaf9bSJan Svoboda // RUN:   -module-files-dir %t/build -o %t/result_pch.json
208fe8d69dSBen Langmuir 
218fe8d69dSBen Langmuir // Explicitly build the PCH:
228fe8d69dSBen Langmuir //
238fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_pch.json --module-name=ModCommon1 > %t/mod_common_1.cc1.rsp
248fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_pch.json --module-name=ModCommon2 > %t/mod_common_2.cc1.rsp
258fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_pch.json --module-name=ModPCH > %t/mod_pch.cc1.rsp
268fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_pch.json --tu-index=0 > %t/pch.rsp
278fe8d69dSBen Langmuir //
288fe8d69dSBen Langmuir // RUN: %clang @%t/mod_common_1.cc1.rsp
298fe8d69dSBen Langmuir // RUN: %clang @%t/mod_common_2.cc1.rsp
308fe8d69dSBen Langmuir // RUN: %clang @%t/mod_pch.cc1.rsp
318fe8d69dSBen Langmuir // RUN: %clang @%t/pch.rsp
328fe8d69dSBen Langmuir 
338fe8d69dSBen Langmuir // Scan dependencies of the TU:
348fe8d69dSBen Langmuir //
358fe8d69dSBen Langmuir // RUN: rm -f %t/cdb_tu.json
368fe8d69dSBen Langmuir // RUN: sed "s|DIR|%/t|g" %S/Inputs/modules-pch/cdb_tu.json > %t/cdb_tu.json
378fe8d69dSBen Langmuir // RUN: clang-scan-deps -compilation-database %t/cdb_tu.json -format experimental-full \
388fe8d69dSBen Langmuir // RUN:   -module-files-dir %t/build > %t/result_tu.json
398fe8d69dSBen Langmuir 
408fe8d69dSBen Langmuir // Explicitly build the TU:
418fe8d69dSBen Langmuir //
428fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_tu.json --module-name=ModTU > %t/mod_tu.cc1.rsp
438fe8d69dSBen Langmuir // RUN: %deps-to-rsp %t/result_tu.json --tu-index=0 > %t/tu.rsp
448fe8d69dSBen Langmuir //
458fe8d69dSBen Langmuir // RUN: %clang @%t/mod_tu.cc1.rsp
468fe8d69dSBen Langmuir // RUN: %clang @%t/tu.rsp
478fe8d69dSBen Langmuir 
488fe8d69dSBen Langmuir // Check the module format for scanner modules:
498fe8d69dSBen Langmuir //
508fe8d69dSBen Langmuir // RUN: find %t/cache -name "*.pcm" -exec %clang_cc1 -module-file-info "{}" ";" | FileCheck %s -check-prefix=SCAN
518fe8d69dSBen Langmuir // SCAN: Module format: raw
528fe8d69dSBen Langmuir // SCAN: Module format: raw
538fe8d69dSBen Langmuir // SCAN: Module format: raw
548fe8d69dSBen Langmuir // SCAN: Module format: raw
558fe8d69dSBen Langmuir 
568fe8d69dSBen Langmuir // Check the module format for built modules:
578fe8d69dSBen Langmuir //
588fe8d69dSBen Langmuir // RUN: find %t/build -name "*.pcm" -exec %clang_cc1 -module-file-info "{}" ";" | FileCheck %s -check-prefix=BUILD
598fe8d69dSBen Langmuir // BUILD: Module format: obj
608fe8d69dSBen Langmuir // BUILD: Module format: obj
618fe8d69dSBen Langmuir // BUILD: Module format: obj
628fe8d69dSBen Langmuir // BUILD: Module format: obj
638fe8d69dSBen Langmuir 
648fe8d69dSBen Langmuir // FIXME: check pch format as well; -module-file-info does not work with a PCH
65