16a4fbf14SFangrui Song // UNSUPPORTED: system-windows 26a4fbf14SFangrui Song 35b899c22SFangrui Song /// Test native GCC installation on Arch Linux i686. 45b899c22SFangrui Song // RUN: %clang -### %s --target=i686-linux-gnu --sysroot=%S/Inputs/archlinux_i686_tree \ 55b899c22SFangrui Song // RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir \ 65b899c22SFangrui Song // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=ARCH_I686 75b899c22SFangrui Song // ARCH_I686: "-resource-dir" "[[RESOURCE:[^"]+]]" 85b899c22SFangrui Song // ARCH_I686: "-internal-isystem" 95b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0" 105b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/i686-pc-linux-gnu" 115b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0/backward" 125b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include" 135b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/local/include" 145b899c22SFangrui Song /// This resolves to /usr/i686-linux-gnu/include. Because it does not exist, 155b899c22SFangrui Song /// having it does no harm albeit not ideal. 165b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-pc-linux-gnu/11.1.0/../../../../i686-pc-linux-gnu/include" 175b899c22SFangrui Song // ARCH_I686: "-internal-externc-isystem" 185b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "[[SYSROOT]]/include" 195b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "-internal-externc-isystem" "[[SYSROOT]]/usr/include" 205b899c22SFangrui Song // ARCH_I686: "-L 215b899c22SFangrui Song // ARCH_I686-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/i686-pc-linux-gnu/11.1.0" 225b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "-L[[SYSROOT]]/lib" 235b899c22SFangrui Song // ARCH_I686-SAME: {{^}} "-L[[SYSROOT]]/usr/lib" 245b899c22SFangrui Song 256a4fbf14SFangrui Song /// Test native x86-64 in the tree. 266a4fbf14SFangrui Song // RUN: %clang -### %s --target=x86_64-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \ 2745340efbSPetr Hosek // RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir \ 2845340efbSPetr Hosek // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=DEBIAN_X86_64 292a28d1d3SFangrui Song // DEBIAN_X86_64: "-resource-dir" "[[RESOURCE:[^"]+]]" 306a4fbf14SFangrui Song // DEBIAN_X86_64: "-internal-isystem" 316a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10" 326a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/x86_64-linux-gnu/c++/10" 336a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/backward" 342a28d1d3SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include" 356a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/local/include" 366a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include" 3745340efbSPetr Hosek /// We set explicit -ccc-install-dir ensure that Clang does not pick up extra 3845340efbSPetr Hosek /// library directories which may be present in the runtimes build. 396a4fbf14SFangrui Song // DEBIAN_X86_64: "-L 406a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10" 416a4fbf14SFangrui Song /// Debian patches MULTILIB_OSDIRNAMES (../lib64 -> ../lib), so gcc uses 'lib' instead of 'lib64'. 426a4fbf14SFangrui Song /// This difference does not matter in practice. 436a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib64" 446a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/lib/x86_64-linux-gnu" 456a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/lib/../lib64" 466a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu" 476a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/../lib64" 486a4fbf14SFangrui Song /// /usr/x86_64-linux-gnu does not exist, so there is no /usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/lib. 496a4fbf14SFangrui Song /// -ccc-install-dir is not within sysroot. No bin/../lib. 506a4fbf14SFangrui Song /// $sysroot/lib and $sysroot/usr/lib. Fallback when GCC installation is unavailable. 516a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/lib" 526a4fbf14SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib" 536a4fbf14SFangrui Song 546a4fbf14SFangrui Song /// Test -m32. 556a4fbf14SFangrui Song // RUN: %clang -### %s --target=x86_64-linux-gnu -m32 --sysroot=%S/Inputs/debian_multiarch_tree \ 5645340efbSPetr Hosek // RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir \ 5745340efbSPetr Hosek // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=DEBIAN_X86_64_M32 582a28d1d3SFangrui Song // DEBIAN_X86_64_M32: "-resource-dir" "[[RESOURCE:[^"]+]]" 596a4fbf14SFangrui Song // DEBIAN_X86_64_M32: "-internal-isystem" 606a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10" 616a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/x86_64-linux-gnu/c++/10/32" 626a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/backward" 632a28d1d3SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include" 646a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/local/include" 656a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include" 663e32e8c5SFangrui Song // DEBIAN_X86_64_M32: "-internal-externc-isystem" 673e32e8c5SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "[[SYSROOT]]/usr/include/i386-linux-gnu" 686a4fbf14SFangrui Song // DEBIAN_X86_64_M32: "-L 696a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/32" 706a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib32" 716a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/lib/i386-linux-gnu" 726a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/lib/../lib32" 736a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/i386-linux-gnu" 746a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/../lib32" 756a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/lib" 766a4fbf14SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib" 776a4fbf14SFangrui Song 78e92d2b80SFangrui Song /// Test native GCC installation on Debian i386. 79e92d2b80SFangrui Song // RUN: %clang -### %s --target=i686-linux-gnu --sysroot=%S/Inputs/debian_i386_tree \ 8045340efbSPetr Hosek // RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir \ 8145340efbSPetr Hosek // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=DEBIAN_I686 82e92d2b80SFangrui Song // DEBIAN_I686: "-resource-dir" "[[RESOURCE:[^"]+]]" 83e92d2b80SFangrui Song // DEBIAN_I686: "-internal-isystem" 84e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-linux-gnu/10/../../../../include/c++/10" 85e92d2b80SFangrui Song /// Debian specific - the path component after 'include' is i386-linux-gnu even 86e92d2b80SFangrui Song /// though the installation is i686-linux-gnu. 87e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-linux-gnu/10/../../../../include/i386-linux-gnu/c++/10" 88e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-linux-gnu/10/../../../../include/c++/10/backward" 89e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include" 90e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/local/include" 91e92d2b80SFangrui Song /// This resolves to /usr/i686-linux-gnu/include. Because it does not exist, 92e92d2b80SFangrui Song /// having it does no harm albeit not ideal. 93e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-linux-gnu/10/../../../../i686-linux-gnu/include" 94e92d2b80SFangrui Song // DEBIAN_I686: "-internal-externc-isystem" 95e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "[[SYSROOT]]/usr/include/i386-linux-gnu" 96e92d2b80SFangrui Song // DEBIAN_I686: "-L 97e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/10" 98e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "-L[[SYSROOT]]/lib/i386-linux-gnu" 99e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/i386-linux-gnu" 100e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "-L[[SYSROOT]]/lib" 101e92d2b80SFangrui Song // DEBIAN_I686-SAME: {{^}} "-L[[SYSROOT]]/usr/lib" 102e92d2b80SFangrui Song 103e92d2b80SFangrui Song /// Test -m64 on Debian i386. 104e92d2b80SFangrui Song // RUN: %clang -### %s --target=i686-linux-gnu --sysroot=%S/Inputs/debian_i386_tree -m64 \ 10545340efbSPetr Hosek // RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir \ 10645340efbSPetr Hosek // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=DEBIAN_I686_M64 107e92d2b80SFangrui Song // DEBIAN_I686_M64: "-resource-dir" "[[RESOURCE:[^"]+]]" 108e92d2b80SFangrui Song // DEBIAN_I686_M64: "-internal-isystem" 109e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-linux-gnu/10/../../../../include/c++/10" 110e92d2b80SFangrui Song /// Debian specific - the path component after 'include' is i386-linux-gnu even 111e92d2b80SFangrui Song /// though the installation is i686-linux-gnu. 112e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-linux-gnu/10/../../../../include/i386-linux-gnu/c++/10/64" 113e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-linux-gnu/10/../../../../include/c++/10/backward" 114e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include" 115e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/local/include" 116e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-linux-gnu/10/../../../../i686-linux-gnu/include" 117e92d2b80SFangrui Song // DEBIAN_I686_M64: "-internal-externc-isystem" 118e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "[[SYSROOT]]/usr/include/x86_64-linux-gnu" 119e92d2b80SFangrui Song // DEBIAN_I686_M64: "-L 120e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/10/64" 121e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/10/../../../../lib64" 122e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-L[[SYSROOT]]/lib/x86_64-linux-gnu" 123e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-L[[SYSROOT]]/lib/../lib64" 124e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu" 125e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/../lib64" 126e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-L[[SYSROOT]]/lib" 127e92d2b80SFangrui Song // DEBIAN_I686_M64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib" 128e92d2b80SFangrui Song 1296a4fbf14SFangrui Song /// Test a cross compiler. 1306a4fbf14SFangrui Song // RUN: %clang -### %s --target=aarch64-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \ 13145340efbSPetr Hosek // RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir \ 13245340efbSPetr Hosek // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=DEBIAN_AARCH64 1332a28d1d3SFangrui Song // DEBIAN_AARCH64: "-resource-dir" "[[RESOURCE:[^"]+]]" 1346a4fbf14SFangrui Song // DEBIAN_AARCH64: "-internal-isystem" 1356a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/include/c++/10" 1366a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/include/c++/10/aarch64-linux-gnu" 1376a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/include/c++/10/backward" 1382a28d1d3SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include" 1396a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/local/include" 1406a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/include" 1416a4fbf14SFangrui Song // DEBIAN_AARCH64: "-L 1426a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc-cross/aarch64-linux-gnu/10" 1436a4fbf14SFangrui Song /// Debian patches MULTILIB_OSDIRNAMES (../lib64 -> ../lib), so aarch64-linux-gnu-gcc uses 'lib' instead of 'lib64'. 1446a4fbf14SFangrui Song /// This difference does not matter in practice. 1456a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../lib64" 1466a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/lib/aarch64-linux-gnu" 1476a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/lib/../lib64" 1486a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/aarch64-linux-gnu" 1496a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/../lib64" 1506a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/lib" 1516a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/lib" 1526a4fbf14SFangrui Song // DEBIAN_AARCH64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib" 153cdd993faSFangrui Song 154a2796f1eSFangrui Song /// Test native x86-64 with -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=on. 155a2796f1eSFangrui Song /// FIXME -internal-isystem .*bin/../include/x86_64-linux-gnu/c++/v1 and -L[[PREFIX]]/bin/../lib/x86_64-linux-gnu are missing. 156a2796f1eSFangrui Song // RUN: %clang -### %s --target=x86_64-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \ 157a2796f1eSFangrui Song // RUN: -ccc-install-dir %S/Inputs/debian_per_target_tree/usr/lib/llvm-14/bin -resource-dir=%S/Inputs/debian_per_target_tree/usr/lib/llvm-14/lib/clang/14.0.0 \ 158a2796f1eSFangrui Song // RUN: --stdlib=libc++ --rtlib=compiler-rt 2>&1 | FileCheck %s --check-prefix=DEBIAN_X86_64_PER_TARGET 159a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET: "-resource-dir" "[[RESOURCE:[^"]+]]" 160a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET: "-internal-isystem" 161a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "[[PREFIX:[^"]+llvm-14]]/bin/../include/c++/v1" 162a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include" 163a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/local/include" 164a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include" 165a2796f1eSFangrui Song 166a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET: "-L 167a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10" 168a2796f1eSFangrui Song /// Debian patches MULTILIB_OSDIRNAMES (../lib64 -> ../lib), so gcc uses 'lib' instead of 'lib64'. 169a2796f1eSFangrui Song /// This difference does not matter in practice. 170a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib64" 171a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/lib/x86_64-linux-gnu" 172a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/lib/../lib64" 173a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu" 174a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/../lib64" 175a2796f1eSFangrui Song /// /usr/x86_64-linux-gnu does not exist, so there is no /usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/lib. 176a2796f1eSFangrui Song /// -ccc-install-dir is not within sysroot. No bin/../lib. 177a2796f1eSFangrui Song /// $sysroot/lib and $sysroot/usr/lib. Fallback when GCC installation is unavailable. 178a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/lib" 179a2796f1eSFangrui Song // DEBIAN_X86_64_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/usr/lib" 180a2796f1eSFangrui Song 181a2796f1eSFangrui Song /// Test -m32. 182a2796f1eSFangrui Song /// FIXME -internal-isystem .*bin/../include/i386-linux-gnu/c++/v1 and -L[[PREFIX]]/bin/../lib/i386-linux-gnu are missing. 183a2796f1eSFangrui Song // RUN: %clang -### %s --target=x86_64-linux-gnu -m32 --sysroot=%S/Inputs/debian_multiarch_tree \ 184a2796f1eSFangrui Song // RUN: -ccc-install-dir %S/Inputs/debian_per_target_tree/usr/lib/llvm-14/bin -resource-dir=%S/Inputs/debian_per_target_tree/usr/lib/llvm-14/lib/clang/14.0.0 \ 185a2796f1eSFangrui Song // RUN: --stdlib=libc++ --rtlib=compiler-rt 2>&1 | FileCheck %s --check-prefix=DEBIAN_X86_64_M32_PER_TARGET 186a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET: "-resource-dir" "[[RESOURCE:[^"]+]]" 187a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET: "-internal-isystem" 188a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "[[PREFIX:[^"]+llvm-14]]/bin/../include/c++/v1" 189a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-internal-isystem" "[[RESOURCE]]/include" 190a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/local/include" 191a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include" 192a2796f1eSFangrui Song 193a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET: "-L 194a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/32" 195a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib32" 196a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/lib/i386-linux-gnu" 197a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/lib/../lib32" 198a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/i386-linux-gnu" 199a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/../lib32" 200a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/lib" 201a2796f1eSFangrui Song // DEBIAN_X86_64_M32_PER_TARGET-SAME: {{^}} "-L[[SYSROOT]]/usr/lib" 202a2796f1eSFangrui Song 203cdd993faSFangrui Song /// LDSO_ARCH is i386 for all x86-32 variants. 204cdd993faSFangrui Song // RUN: %clang -### %s --target=i686-linux-musl --sysroot= \ 205cdd993faSFangrui Song // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=MUSL_I686 206cdd993faSFangrui Song // MUSL_I686: "-dynamic-linker" "/lib/ld-musl-i386.so.1" 207ed956554SFangrui Song 208ed956554SFangrui Song // RUN: %clang -### %s --target=x86_64-linux-muslx32 --sysroot= \ 209ed956554SFangrui Song // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=MUSL_X32 21075521bd9SHarald van Dijk // RUN: %clang -### %s --target=i686-linux-musl -mx32 --sysroot= \ 21175521bd9SHarald van Dijk // RUN: --stdlib=platform --rtlib=platform 2>&1 | FileCheck %s --check-prefix=MUSL_X32 212ed956554SFangrui Song // MUSL_X32: "-dynamic-linker" "/lib/ld-musl-x32.so.1" 21364da6eb0SFangrui Song 214*57e43ebcSFangrui Song /// -r suppresses -dynamic-linker, default -l, and crt*.o like -nostdlib. 21564da6eb0SFangrui Song // RUN: %clang -### %s --target=x86_64-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \ 21664da6eb0SFangrui Song // RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir \ 21764da6eb0SFangrui Song // RUN: --stdlib=platform --rtlib=platform -r 2>&1 | FileCheck %s --check-prefix=RELOCATABLE 218*57e43ebcSFangrui Song // RELOCATABLE-NOT: "-dynamic-linker" 21964da6eb0SFangrui Song // RELOCATABLE: "-internal-isystem" 22064da6eb0SFangrui Song // RELOCATABLE-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10" 22164da6eb0SFangrui Song // RELOCATABLE: "-L 22264da6eb0SFangrui Song // RELOCATABLE-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10" 22364da6eb0SFangrui Song // RELOCATABLE-NOT: "-l 22467aea3b6SNico Weber // RELOCATABLE-NOT: crt{{[^./]+}}.o 225