xref: /aosp_15_r20/external/clang/test/Driver/nacl-direct.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
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