1*67e74705SXin Li // Test clang changes for NaCl Support including: 2*67e74705SXin Li // include paths, library paths, emulation, default static 3*67e74705SXin Li // 4*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -o %t.o %s \ 5*67e74705SXin Li // RUN: -target i686-unknown-nacl -resource-dir foo 2>&1 \ 6*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-I686 %s 7*67e74705SXin Li // CHECK-I686: {{.*}}clang{{.*}}" "-cc1" 8*67e74705SXin Li // CHECK-I686: "-fuse-init-array" 9*67e74705SXin Li // CHECK-I686: "-target-cpu" "pentium4" 10*67e74705SXin Li // CHECK-I686: "-resource-dir" "foo" 11*67e74705SXin Li // CHECK-I686: "-internal-isystem" "foo{{/|\\\\}}include" 12*67e74705SXin Li // CHECK-I686: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}i686-nacl{{/|\\\\}}usr{{/|\\\\}}include" 13*67e74705SXin Li // CHECK-I686: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}include" 14*67e74705SXin Li // CHECK-I686: as{{(.exe)?}}" "--32" 15*67e74705SXin Li // CHECK-I686: ld{{(.exe)?}}" 16*67e74705SXin Li // CHECK-I686: "--build-id" 17*67e74705SXin Li // CHECK-I686: "-m" "elf_i386_nacl" 18*67e74705SXin Li // CHECK-I686: "-static" 19*67e74705SXin Li // CHECK-I686: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}lib32" 20*67e74705SXin Li // CHECK-I686: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}i686-nacl{{/|\\\\}}usr{{/|\\\\}}lib" 21*67e74705SXin Li // CHECK-I686: "-Lfoo{{/|\\\\}}lib{{/|\\\\}}i686-nacl" 22*67e74705SXin Li // CHECK-I686-NOT: -lpthread 23*67e74705SXin Li // 24*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -o %t.o %s \ 25*67e74705SXin Li // RUN: -target x86_64-unknown-nacl -resource-dir foo 2>&1 \ 26*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-x86_64 %s 27*67e74705SXin Li // CHECK-x86_64: {{.*}}clang{{.*}}" "-cc1" 28*67e74705SXin Li // CHECK-x86_64: "-fuse-init-array" 29*67e74705SXin Li // CHECK-x86_64: "-target-cpu" "x86-64" 30*67e74705SXin Li // CHECK-x86_64: "-resource-dir" "foo" 31*67e74705SXin Li // CHECK-x86_64: "-internal-isystem" "foo{{/|\\\\}}include" 32*67e74705SXin Li // CHECK-x86_64: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}usr{{/|\\\\}}include" 33*67e74705SXin Li // CHECK-x86_64: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}include" 34*67e74705SXin Li // CHECK-x86_64: as{{(.exe)?}}" "--64" 35*67e74705SXin Li // CHECK-x86_64: ld{{(.exe)?}}" 36*67e74705SXin Li // CHECK-x86_64: "--build-id" 37*67e74705SXin Li // CHECK-x86_64: "-m" "elf_x86_64_nacl" 38*67e74705SXin Li // CHECK-x86_64: "-static" 39*67e74705SXin Li // CHECK-x86_64: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}lib" 40*67e74705SXin Li // CHECK-x86_64: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}usr{{/|\\\\}}lib" 41*67e74705SXin Li // CHECK-x86_64: "-Lfoo{{/|\\\\}}lib{{/|\\\\}}x86_64-nacl" 42*67e74705SXin Li // CHECK-X86_64-NOT: -lpthread 43*67e74705SXin Li // 44*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -o %t.o %s \ 45*67e74705SXin Li // RUN: -target armv7a-unknown-nacl-gnueabihf -resource-dir foo 2>&1 \ 46*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-ARM %s 47*67e74705SXin Li // CHECK-ARM: {{.*}}clang{{.*}}" "-cc1" 48*67e74705SXin Li // CHECK-ARM: "-fuse-init-array" 49*67e74705SXin Li // CHECK-ARM: "-target-cpu" "cortex-a8" 50*67e74705SXin Li // CHECK-ARM: "-target-abi" "aapcs-linux" 51*67e74705SXin Li // CHECK-ARM: "-mfloat-abi" "hard" 52*67e74705SXin Li // CHECK-ARM: "-resource-dir" "foo" 53*67e74705SXin Li // CHECK-ARM: "-internal-isystem" "foo{{/|\\\\}}include" 54*67e74705SXin Li // CHECK-ARM: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}arm-nacl{{/|\\\\}}usr{{/|\\\\}}include" 55*67e74705SXin Li // CHECK-ARM: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}arm-nacl{{/|\\\\}}include" 56*67e74705SXin Li // CHECK-ARM: as{{(.exe)?}}" 57*67e74705SXin Li // CHECK-ARM: "-mfloat-abi=hard" 58*67e74705SXin Li // CHECK-ARM: ld{{(.exe)?}}" 59*67e74705SXin Li // CHECK-ARM: "--build-id" 60*67e74705SXin Li // CHECK-ARM: "-m" "armelf_nacl" 61*67e74705SXin Li // CHECK-ARM: "-static" 62*67e74705SXin Li // CHECK-ARM: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}arm-nacl{{/|\\\\}}lib" 63*67e74705SXin Li // CHECK-ARM: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}arm-nacl{{/|\\\\}}usr{{/|\\\\}}lib" 64*67e74705SXin Li // CHECK-ARM: "-Lfoo{{/|\\\\}}lib{{/|\\\\}}arm-nacl" 65*67e74705SXin Li // CHECK-ARM-NOT: -lpthread 66*67e74705SXin Li // 67*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -o %t.o %s \ 68*67e74705SXin Li // RUN: -target mipsel-unknown-nacl -resource-dir foo 2>&1 \ 69*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-MIPS %s 70*67e74705SXin Li // CHECK-MIPS: {{.*}}clang{{.*}}" "-cc1" 71*67e74705SXin Li // CHECK-MIPS: "-fuse-init-array" 72*67e74705SXin Li // CHECK-MIPS: "-target-cpu" "mips32r2" 73*67e74705SXin Li // CHECK-MIPS: "-target-abi" "o32" 74*67e74705SXin Li // CHECK-MIPS: "-mfloat-abi" "hard" 75*67e74705SXin Li // CHECK-MIPS: "-resource-dir" "foo" 76*67e74705SXin Li // CHECK-MIPS: "-internal-isystem" "foo{{/|\\\\}}include" 77*67e74705SXin Li // CHECK-MIPS: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}mipsel-nacl{{/|\\\\}}usr{{/|\\\\}}include" 78*67e74705SXin Li // CHECK-MIPS: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}mipsel-nacl{{/|\\\\}}include" 79*67e74705SXin Li // CHECK-MIPS-NOT: as{{(.exe)?}}" 80*67e74705SXin Li // CHECK-MIPS: ld{{(.exe)?}}" 81*67e74705SXin Li // CHECK-MIPS: "--build-id" 82*67e74705SXin Li // CHECK-MIPS: "-m" "mipselelf_nacl" 83*67e74705SXin Li // CHECK-MIPS: "-static" 84*67e74705SXin Li // CHECK-MIPS: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}mipsel-nacl{{/|\\\\}}lib" 85*67e74705SXin Li // CHECK-MIPS: "-L{{.*}}{{/|\\\\}}..{{/|\\\\}}mipsel-nacl{{/|\\\\}}usr{{/|\\\\}}lib" 86*67e74705SXin Li // CHECK-MIPS: "-Lfoo{{/|\\\\}}lib{{/|\\\\}}mipsel-nacl" 87*67e74705SXin Li // CHECK-MIPS: "-lpnacl_legacy" 88*67e74705SXin Li // CHECK-MIPS-NOT: "-lpthread" 89*67e74705SXin Li 90*67e74705SXin Li // Check that even when the target arch is just "arm" (as will be the case when 91*67e74705SXin Li // it is inferred from the binary name) that we get the right ABI flags 92*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -### -o %t.o %s 2>&1 \ 93*67e74705SXin Li // RUN: -target arm-nacl \ 94*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-ARM-NOV7 %s 95*67e74705SXin Li // CHECK-ARM-NOV7: "-triple" "armv7--nacl-gnueabihf" 96*67e74705SXin Li // CHECK-ARM-NOV7: "-target-abi" "aapcs-linux" 97*67e74705SXin Li // CHECK-ARM-NOV7: "-mfloat-abi" "hard" 98*67e74705SXin Li // CHECK-ARM-NOV7: as{{(.exe)?}}" 99*67e74705SXin Li // CHECK-ARM-NOV7: "-mfloat-abi=hard" 100*67e74705SXin Li 101*67e74705SXin Li // Test clang c++ include dirs and link line when using clang++ 102*67e74705SXin Li 103*67e74705SXin Li // RUN: %clangxx -no-canonical-prefixes -### -o %t.o %s \ 104*67e74705SXin Li // RUN: -target armv7a-unknown-nacl-gnueabihf -resource-dir foo 2>&1 \ 105*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-ARM-CXX %s 106*67e74705SXin Li // CHECK-ARM-CXX: {{.*}}clang{{.*}}" "-cc1" 107*67e74705SXin Li // CHECK-ARM-CXX: "-resource-dir" "foo" 108*67e74705SXin Li // CHECK-ARM-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}arm-nacl{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}v1" 109*67e74705SXin Li // CHECK-ARM-CXX: "-internal-isystem" "foo{{/|\\\\}}include" 110*67e74705SXin Li // CHECK-ARM-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}arm-nacl{{/|\\\\}}usr{{/|\\\\}}include" 111*67e74705SXin Li // CHECK-ARM-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}arm-nacl{{/|\\\\}}include" 112*67e74705SXin Li // CHECK-ARM-CXX: "-lpthread" 113*67e74705SXin Li 114*67e74705SXin Li // RUN: %clangxx -no-canonical-prefixes -### -o %t.o %s \ 115*67e74705SXin Li // RUN: -target i686-unknown-nacl -resource-dir foo 2>&1 \ 116*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-I686-CXX %s 117*67e74705SXin Li // CHECK-I686-CXX: {{.*}}clang{{.*}}" "-cc1" 118*67e74705SXin Li // CHECK-I686-CXX: "-resource-dir" "foo" 119*67e74705SXin Li // CHECK-I686-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}v1" 120*67e74705SXin Li // CHECK-I686-CXX: "-internal-isystem" "foo{{/|\\\\}}include" 121*67e74705SXin Li // CHECK-I686-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}i686-nacl{{/|\\\\}}usr{{/|\\\\}}include" 122*67e74705SXin Li // CHECK-I686-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}include" 123*67e74705SXin Li // CHECK-I686-CXX: "-lpthread" 124*67e74705SXin Li 125*67e74705SXin Li // RUN: %clangxx -no-canonical-prefixes -### -o %t.o %s \ 126*67e74705SXin Li // RUN: -target x86_64-unknown-nacl -resource-dir foo 2>&1 \ 127*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-x86_64-CXX %s 128*67e74705SXin Li // CHECK-x86_64-CXX: {{.*}}clang{{.*}}" "-cc1" 129*67e74705SXin Li // CHECK-x86_64-CXX: "-resource-dir" "foo" 130*67e74705SXin Li // CHECK-x86_64-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}v1" 131*67e74705SXin Li // CHECK-x86_64-CXX: "-internal-isystem" "foo{{/|\\\\}}include" 132*67e74705SXin Li // CHECK-x86_64-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}usr{{/|\\\\}}include" 133*67e74705SXin Li // CHECK-x86_64-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}x86_64-nacl{{/|\\\\}}include" 134*67e74705SXin Li // CHECK-x86_64-CXX: "-lpthread" 135*67e74705SXin Li 136*67e74705SXin Li // RUN: %clangxx -no-canonical-prefixes -### -o %t.o %s \ 137*67e74705SXin Li // RUN: -target mipsel-unknown-nacl -resource-dir foo 2>&1 \ 138*67e74705SXin Li // RUN: | FileCheck --check-prefix=CHECK-MIPS-CXX %s 139*67e74705SXin Li // CHECK-MIPS-CXX: {{.*}}clang{{.*}}" "-cc1" 140*67e74705SXin Li // CHECK-MIPS-CXX: "-resource-dir" "foo" 141*67e74705SXin Li // CHECK-MIPS-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}mipsel-nacl{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}v1" 142*67e74705SXin Li // CHECK-MIPS-CXX: "-internal-isystem" "foo{{/|\\\\}}include" 143*67e74705SXin Li // CHECK-MIPS-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}mipsel-nacl{{/|\\\\}}usr{{/|\\\\}}include" 144*67e74705SXin Li // CHECK-MIPS-CXX: "-internal-isystem" "{{.*}}{{/|\\\\}}..{{/|\\\\}}mipsel-nacl{{/|\\\\}}include" 145*67e74705SXin Li // CHECK-MIPS-CXX: "-lnacl" 146*67e74705SXin Li // CHECK-MIPS-CXX: "-lpthread" 147