xref: /llvm-project/clang/test/Driver/modules-print-library-module-manifest-path.cpp (revision 2c34632a9977a82ce6262d95f07addb772ba7014)
10e1e1fc8SChuanqi Xu // Test that -print-library-module-manifest-path finds the correct file.
20e1e1fc8SChuanqi Xu 
30e1e1fc8SChuanqi Xu // RUN: rm -rf %t && split-file %s %t && cd %t
40e1e1fc8SChuanqi Xu // RUN: mkdir -p %t/Inputs/usr/lib/x86_64-linux-gnu
50e1e1fc8SChuanqi Xu // RUN: touch %t/Inputs/usr/lib/x86_64-linux-gnu/libc++.so
62152094aSMark de Wever // RUN: touch %t/Inputs/usr/lib/x86_64-linux-gnu/libc++.a
70e1e1fc8SChuanqi Xu 
80e1e1fc8SChuanqi Xu // RUN: %clang -print-library-module-manifest-path \
90e1e1fc8SChuanqi Xu // RUN:     -stdlib=libc++ \
100e1e1fc8SChuanqi Xu // RUN:     -resource-dir=%t/Inputs/usr/lib/x86_64-linux-gnu \
110e1e1fc8SChuanqi Xu // RUN:     --target=x86_64-linux-gnu 2>&1 \
120e1e1fc8SChuanqi Xu // RUN:   | FileCheck libcxx-no-module-json.cpp
130e1e1fc8SChuanqi Xu 
142152094aSMark de Wever // RUN: touch %t/Inputs/usr/lib/x86_64-linux-gnu/libc++.modules.json
150e1e1fc8SChuanqi Xu // RUN: %clang -print-library-module-manifest-path \
160e1e1fc8SChuanqi Xu // RUN:     -stdlib=libc++ \
170e1e1fc8SChuanqi Xu // RUN:     -resource-dir=%t/Inputs/usr/lib/x86_64-linux-gnu \
180e1e1fc8SChuanqi Xu // RUN:     --target=x86_64-linux-gnu 2>&1 \
190e1e1fc8SChuanqi Xu // RUN:   | FileCheck libcxx.cpp
200e1e1fc8SChuanqi Xu 
21acbd8228SBill Hoffman // for macos there is a different directory structure
22acbd8228SBill Hoffman // where the library and libc++.modules.json file are in lib
23acbd8228SBill Hoffman // directly but headers are in clang/ver directory which
24acbd8228SBill Hoffman // is the resource directory
25acbd8228SBill Hoffman // RUN: mkdir -p %t/Inputs/usr/lib/clang/20
26acbd8228SBill Hoffman // RUN: touch %t/Inputs/usr/lib/libc++.so
27acbd8228SBill Hoffman // RUN: touch %t/Inputs/usr/lib/libc++.modules.json
28acbd8228SBill Hoffman // RUN: %clang -print-library-module-manifest-path \
29acbd8228SBill Hoffman // RUN:     -stdlib=libc++ \
30acbd8228SBill Hoffman // RUN:     -resource-dir=%t/Inputs/usr/lib/clang/20 \
31acbd8228SBill Hoffman // RUN:     --target=arm64-apple-darwin24.1.0 2>&1 \
32acbd8228SBill Hoffman // RUN:   | FileCheck libcxx.cpp.macos
33acbd8228SBill Hoffman 
34acbd8228SBill Hoffman // RUN: rm %t/Inputs/usr/lib/libc++.so
35acbd8228SBill Hoffman // RUN: touch %t/Inputs/usr/lib/libc++.a
36acbd8228SBill Hoffman // RUN: touch %t/Inputs/usr/lib/libc++.modules.json
37acbd8228SBill Hoffman // RUN: %clang -print-library-module-manifest-path \
38acbd8228SBill Hoffman // RUN:     -stdlib=libc++ \
39acbd8228SBill Hoffman // RUN:     -resource-dir=%t/Inputs/usr/lib/clang/20 \
40acbd8228SBill Hoffman // RUN:     --target=arm64-apple-darwin24.1.0 2>&1 \
41acbd8228SBill Hoffman // RUN:   | FileCheck libcxx.cpp.macos
42acbd8228SBill Hoffman 
432152094aSMark de Wever // RUN: rm %t/Inputs/usr/lib/x86_64-linux-gnu/libc++.so
442152094aSMark de Wever // RUN: touch %t/Inputs/usr/lib/x86_64-linux-gnu/libc++.a
452152094aSMark de Wever // RUN: %clang -print-library-module-manifest-path \
462152094aSMark de Wever // RUN:     -stdlib=libc++ \
472152094aSMark de Wever // RUN:     -resource-dir=%t/Inputs/usr/lib/x86_64-linux-gnu \
482152094aSMark de Wever // RUN:     --target=x86_64-linux-gnu 2>&1 \
492152094aSMark de Wever // RUN:   | FileCheck libcxx-no-shared-lib.cpp
502152094aSMark de Wever 
51*2c34632aSChuanqi Xu // Testing with libstdc++
52*2c34632aSChuanqi Xu // RUN: touch %t/Inputs/usr/lib/x86_64-linux-gnu/libstdc++.so
53*2c34632aSChuanqi Xu // RUN: touch %t/Inputs/usr/lib/x86_64-linux-gnu/libstdc++.modules.json
540e1e1fc8SChuanqi Xu // RUN: %clang -print-library-module-manifest-path \
550e1e1fc8SChuanqi Xu // RUN:     -stdlib=libstdc++ \
560e1e1fc8SChuanqi Xu // RUN:     -resource-dir=%t/Inputs/usr/lib/x86_64-linux-gnu \
570e1e1fc8SChuanqi Xu // RUN:     --target=x86_64-linux-gnu 2>&1 \
580e1e1fc8SChuanqi Xu // RUN:   | FileCheck libstdcxx.cpp
590e1e1fc8SChuanqi Xu 
600e1e1fc8SChuanqi Xu //--- libcxx-no-module-json.cpp
610e1e1fc8SChuanqi Xu 
620e1e1fc8SChuanqi Xu // CHECK: <NOT PRESENT>
630e1e1fc8SChuanqi Xu 
640e1e1fc8SChuanqi Xu //--- libcxx.cpp
650e1e1fc8SChuanqi Xu 
662152094aSMark de Wever // CHECK: {{.*}}/Inputs/usr/lib/x86_64-linux-gnu{{/|\\}}libc++.modules.json
672152094aSMark de Wever 
68acbd8228SBill Hoffman //--- libcxx.cpp.macos
69acbd8228SBill Hoffman 
70acbd8228SBill Hoffman // CHECK: {{.*}}libc++.modules.json
71acbd8228SBill Hoffman 
722152094aSMark de Wever //--- libcxx-no-shared-lib.cpp
732152094aSMark de Wever 
742152094aSMark de Wever // Note this might find a different path depending whether search path
752152094aSMark de Wever // contains a different libc++.so.
762152094aSMark de Wever // CHECK: {{.*}}libc++.modules.json
770e1e1fc8SChuanqi Xu 
780e1e1fc8SChuanqi Xu //--- libstdcxx.cpp
790e1e1fc8SChuanqi Xu 
80*2c34632aSChuanqi Xu // CHECK: {{.*}}libstdc++.modules.json