xref: /llvm-project/clang/test/Driver/gcc-install-dir.cpp (revision f39c399d9d15efe8309d8aa3d0ecf62205e6c474)
123e42992SFangrui Song // UNSUPPORTED: system-windows
223e42992SFangrui Song 
323e42992SFangrui Song /// Test native GCC installation on Arch Linux i686.
423e42992SFangrui Song // RUN: %clang -### %s --target=i686-linux-gnu --sysroot=%S/Inputs/archlinux_i686_tree -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
5d5ca1602SAlex Brachet // RUN:   --stdlib=platform --rtlib=platform --unwindlib=platform \
623e42992SFangrui Song // RUN:   --gcc-install-dir=%S/Inputs/archlinux_i686_tree/usr/lib/gcc/i686-pc-linux-gnu/11.1.0 2>&1 | FileCheck %s --check-prefix=ARCH_I686
723e42992SFangrui Song // ARCH_I686:      "-internal-isystem"
823e42992SFangrui Song // ARCH_I686-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/i686-pc-linux-gnu/11.1.0/../../../../include/c++/11.1.0"
923e42992SFangrui 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"
1023e42992SFangrui Song // ARCH_I686:      "-L
1123e42992SFangrui Song // ARCH_I686-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/i686-pc-linux-gnu/11.1.0"
1223e42992SFangrui Song // ARCH_I686-SAME: {{^}} "-L[[SYSROOT]]/lib"
1323e42992SFangrui Song // ARCH_I686-SAME: {{^}} "-L[[SYSROOT]]/usr/lib"
1423e42992SFangrui Song 
1523e42992SFangrui Song /// Test native GCC installation on Debian amd64. --gcc-install-dir= may end with /.
1623e42992SFangrui Song // RUN: %clangxx %s -### --target=x86_64-unknown-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \
17d5ca1602SAlex Brachet // RUN:   -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir --stdlib=platform --rtlib=platform --unwindlib=platform \
1823e42992SFangrui Song // RUN:   --gcc-install-dir=%S/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/ 2>&1 | FileCheck %s --check-prefix=DEBIAN_X86_64
1923e42992SFangrui Song // DEBIAN_X86_64:      "-internal-isystem"
2023e42992SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10"
2123e42992SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/x86_64-linux-gnu/c++/10"
2223e42992SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/backward"
2323e42992SFangrui Song /// We set explicit -ccc-install-dir ensure that Clang does not pick up extra
2423e42992SFangrui Song /// library directories which may be present in the runtimes build.
2523e42992SFangrui Song // DEBIAN_X86_64:      "-L
2623e42992SFangrui Song // DEBIAN_X86_64-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10"
2723e42992SFangrui Song // DEBIAN_X86_64-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib64"
2823e42992SFangrui Song 
2923e42992SFangrui Song /// Test -m32.
3023e42992SFangrui Song // RUN: %clangxx %s -### --target=x86_64-unknown-linux-gnu -m32 --sysroot=%S/Inputs/debian_multiarch_tree \
31d5ca1602SAlex Brachet // RUN:   -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir --stdlib=platform --rtlib=platform --unwindlib=platform \
3223e42992SFangrui Song // RUN:   --gcc-install-dir=%S/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu/10/ 2>&1 | FileCheck %s --check-prefix=DEBIAN_X86_64_M32
3323e42992SFangrui Song // DEBIAN_X86_64_M32:      "-internal-isystem"
3423e42992SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "[[SYSROOT:[^"]+]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10"
3523e42992SFangrui 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"
3623e42992SFangrui Song // DEBIAN_X86_64_M32:      "-L
3723e42992SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}}[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/32"
3823e42992SFangrui Song // DEBIAN_X86_64_M32-SAME: {{^}} "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib32"
3923e42992SFangrui Song 
40*f39c399dSFangrui Song // RUN: not %clangxx %s -### --target=x86_64-unknown-linux-gnu --sysroot=%S/Inputs/debian_multiarch_tree \
4123e42992SFangrui Song // RUN:   -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin -resource-dir=%S/Inputs/resource_dir --stdlib=platform --rtlib=platform \
4223e42992SFangrui Song // RUN:   --gcc-install-dir=%S/Inputs/debian_multiarch_tree/usr/lib/gcc/x86_64-linux-gnu 2>&1 | FileCheck %s --check-prefix=INVALID
4323e42992SFangrui Song // INVALID: error: '{{.*}}/usr/lib/gcc/x86_64-linux-gnu' does not contain a GCC installation
44