1 // Tests that the AIX toolchain adds system includes to its search path.
2 
3 // Check powerpc-ibm-aix, 32-bit/64-bit.
4 // RUN: %clangxx -### %s 2>&1 \
5 // RUN:		--target=powerpc-ibm-aix \
6 // RUN:		-resource-dir=%S/Inputs/resource_dir \
7 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
8 // RUN:   | FileCheck -check-prefixes=CHECK-INTERNAL-INCLUDE,CHECK-INTERNAL-INCLUDE-CXX %s
9 
10 // RUN: %clangxx -### %s 2>&1 \
11 // RUN:		--target=powerpc64-ibm-aix \
12 // RUN:		-resource-dir=%S/Inputs/resource_dir \
13 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
14 // RUN:   | FileCheck -check-prefixes=CHECK-INTERNAL-INCLUDE,CHECK-INTERNAL-INCLUDE-CXX %s
15 
16 // RUN: %clang -### -xc %s 2>&1 \
17 // RUN:		--target=powerpc-ibm-aix \
18 // RUN:		-resource-dir=%S/Inputs/resource_dir \
19 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
20 // RUN:   | FileCheck -check-prefix=CHECK-INTERNAL-INCLUDE %s
21 
22 // RUN: %clang -### -xc %s 2>&1 \
23 // RUN:		--target=powerpc64-ibm-aix \
24 // RUN:		-resource-dir=%S/Inputs/resource_dir \
25 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
26 // RUN:   | FileCheck -check-prefix=CHECK-INTERNAL-INCLUDE %s
27 
28 // CHECK-INTERNAL-INCLUDE:      "-cc1"
29 // CHECK-INTERNAL-INCLUDE:      "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
30 // CHECK-INTERNAL-INCLUDE:      "-isysroot" "[[SYSROOT:[^"]+]]"
31 // CHECK-INTERNAL-INCLUDE-CXX:  "-internal-isystem" "[[SYSROOT]]{{(/|\\\\)}}opt{{(/|\\\\)}}IBM{{(/|\\\\)}}openxlCSDK{{(/|\\\\)}}include{{(/|\\\\)}}c++{{(/|\\\\)}}v1"
32 // CHECK-INTERNAL-INCLUDE-CXX:  "-D__LIBC_NO_CPP_MATH_OVERLOADS__"
33 // CHECK-INTERNAL-INCLUDE:      "-internal-isystem" "[[RESOURCE_DIR]]{{(/|\\\\)}}include"
34 // CHECK-INTERNAL-INCLUDE:      "-internal-isystem" "[[SYSROOT]]/usr/include"
35 
36 // Check powerpc-ibm-aix, 32-bit/64-bit. -nostdinc option.
37 // RUN: %clangxx -### %s 2>&1 \
38 // RUN:		--target=powerpc-ibm-aix \
39 // RUN:		-resource-dir=%S/Inputs/resource_dir \
40 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
41 // RUN:		-nostdinc \
42 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDINC-INCLUDE %s
43 
44 // RUN: %clangxx -### %s 2>&1 \
45 // RUN:		--target=powerpc64-ibm-aix \
46 // RUN:		-resource-dir=%S/Inputs/resource_dir \
47 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
48 // RUN:		-nostdinc \
49 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDINC-INCLUDE %s
50 
51 // RUN: %clang -### -xc %s 2>&1 \
52 // RUN:		--target=powerpc-ibm-aix \
53 // RUN:		-resource-dir=%S/Inputs/resource_dir \
54 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
55 // RUN:		-nostdinc \
56 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDINC-INCLUDE %s
57 
58 // RUN: %clang -### -xc %s 2>&1 \
59 // RUN:		--target=powerpc64-ibm-aix \
60 // RUN:		-resource-dir=%S/Inputs/resource_dir \
61 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
62 // RUN:		-nostdinc \
63 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDINC-INCLUDE %s
64 
65 // CHECK-NOSTDINC-INCLUDE:	"-cc1"
66 // CHECK-NOSTDINC-INCLUDE:	"-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
67 // CHECK-NOSTDINC-INCLUDE:	"-isysroot" "[[SYSROOT:[^"]+]]"
68 // CHECK-NOSTDINC-INCLUDE-NOT:	"-internal-isystem"
69 
70 // Check powerpc-ibm-aix, 32-bit/64-bit. -nostdlibinc option.
71 // RUN: %clangxx -### %s 2>&1 \
72 // RUN:		--target=powerpc-ibm-aix \
73 // RUN:		-resource-dir=%S/Inputs/resource_dir \
74 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
75 // RUN:		-nostdlibinc \
76 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDLIBINC-INCLUDE %s
77 
78 // RUN: %clangxx -### %s 2>&1 \
79 // RUN:		--target=powerpc64-ibm-aix \
80 // RUN:		-resource-dir=%S/Inputs/resource_dir \
81 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
82 // RUN:		-nostdlibinc \
83 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDLIBINC-INCLUDE %s
84 
85 // RUN: %clang -### -xc %s 2>&1 \
86 // RUN:		--target=powerpc-ibm-aix \
87 // RUN:		-resource-dir=%S/Inputs/resource_dir \
88 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
89 // RUN:		-nostdlibinc \
90 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDLIBINC-INCLUDE %s
91 
92 // RUN: %clang -### -xc %s 2>&1 \
93 // RUN:		--target=powerpc64-ibm-aix \
94 // RUN:		-resource-dir=%S/Inputs/resource_dir \
95 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
96 // RUN:		-nostdlibinc \
97 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDLIBINC-INCLUDE %s
98 
99 // CHECK-NOSTDLIBINC-INCLUDE:	"-cc1"
100 // CHECK-NOSTDLIBINC-INCLUDE:	"-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
101 // CHECK-NOSTDLIBINC-INCLUDE:	"-isysroot" "[[SYSROOT:[^"]+]]"
102 // CHECK-NOSTDLIBINC-INCLUDE:	"-internal-isystem" "[[RESOURCE_DIR]]{{(/|\\\\)}}include"
103 // CHECK-NOSTDLIBINC-INCLUDE-NOT:  "-internal-isystem" "[[SYSROOT]]{{(/|\\\\)}}opt{{(/|\\\\)}}IBM{{(/|\\\\)}}openxlCSDK{{(/|\\\\)}}include{{(/|\\\\)}}c++{{(/|\\\\)}}v1"
104 // CHECK-NOSTDLIBINC-INCLUDE-NOT:  "-D__LIBC_NO_CPP_MATH_OVERLOADS__"
105 // CHECK-NOSTDLIBINC-INCLUDE-NOT:	"-internal-isystem" "[[SYSROOT]]/usr/include"
106 
107 // Check powerpc-ibm-aix, 32-bit/64-bit. -nobuiltininc option.
108 // RUN: %clangxx -### %s 2>&1 \
109 // RUN:		--target=powerpc-ibm-aix \
110 // RUN:		-resource-dir=%S/Inputs/resource_dir \
111 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
112 // RUN:		-nobuiltininc \
113 // RUN:   | FileCheck -check-prefixes=CHECK-NOBUILTININC-INCLUDE,CHECK-NOBUILTININC-INCLUDE-CXX %s
114 
115 // RUN: %clangxx -### %s 2>&1 \
116 // RUN:		--target=powerpc64-ibm-aix \
117 // RUN:		-resource-dir=%S/Inputs/resource_dir \
118 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
119 // RUN:		-nobuiltininc \
120 // RUN:   | FileCheck -check-prefixes=CHECK-NOBUILTININC-INCLUDE,CHECK-NOBUILTININC-INCLUDE-CXX  %s
121 
122 // RUN: %clang -### -xc %s 2>&1 \
123 // RUN:		--target=powerpc-ibm-aix \
124 // RUN:		-resource-dir=%S/Inputs/resource_dir \
125 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
126 // RUN:		-nobuiltininc \
127 // RUN:   | FileCheck -check-prefix=CHECK-NOBUILTININC-INCLUDE %s
128 
129 // RUN: %clang -### -xc %s 2>&1 \
130 // RUN:		--target=powerpc64-ibm-aix \
131 // RUN:		-resource-dir=%S/Inputs/resource_dir \
132 // RUN:		--sysroot=%S/Inputs/basic_aix_tree \
133 // RUN:		-nobuiltininc \
134 // RUN:   | FileCheck -check-prefix=CHECK-NOBUILTININC-INCLUDE %s
135 
136 // CHECK-NOBUILTININC-INCLUDE:	"-cc1"
137 // CHECK-NOBUILTININC-INCLUDE:	"-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
138 // CHECK-NOBUILTININC-INCLUDE:	"-isysroot" "[[SYSROOT:[^"]+]]"
139 // CHECK-NOBUILTININC-INCLUDE-NOT:	"-internal-isystem" "[[RESOURCE_DIR]]{{(/|\\\\)}}include"
140 // CHECK-NOBUILTININC-INCLUDE-CXX:  "-internal-isystem" "[[SYSROOT]]{{(/|\\\\)}}opt{{(/|\\\\)}}IBM{{(/|\\\\)}}openxlCSDK{{(/|\\\\)}}include{{(/|\\\\)}}c++{{(/|\\\\)}}v1"
141 // CHECK-NOBUILTININC-INCLUDE-CXX:  "-D__LIBC_NO_CPP_MATH_OVERLOADS__"
142 // CHECK-NOBUILTININC-INCLUDE:	"-internal-isystem" "[[SYSROOT]]/usr/include"
143 
144 // Check powerpc-ibm-aix, 32-bit/64-bit. -nostdinc++ option.
145 // RUN: %clangxx -### %s 2>&1 \
146 // RUN:  --target=powerpc-ibm-aix \
147 // RUN:  -resource-dir=%S/Inputs/resource_dir \
148 // RUN:  --sysroot=%S/Inputs/basic_aix_tree \
149 // RUN:  -nostdinc++ \
150 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDINCXX-INCLUDE %s
151 
152 // RUN: %clangxx -### %s 2>&1 \
153 // RUN:  --target=powerpc64-ibm-aix \
154 // RUN:  -resource-dir=%S/Inputs/resource_dir \
155 // RUN:  --sysroot=%S/Inputs/basic_aix_tree \
156 // RUN:  -nostdinc++ \
157 // RUN:   | FileCheck -check-prefix=CHECK-NOSTDINCXX-INCLUDE  %s
158 
159 // CHECK-NOSTDINCXX-INCLUDE:      "-cc1"
160 // CHECK-NOSTDINCXX-INCLUDE:      "-resource-dir" "[[RESOURCE_DIR:[^"]+]]"
161 // CHECK-NOSTDINCXX-INCLUDE:      "-isysroot" "[[SYSROOT:[^"]+]]"
162 // CHECK-NOSTDINCXX-INCLUDE:      "-internal-isystem" "[[RESOURCE_DIR]]{{(/|\\\\)}}include"
163 // CHECK-NOSTDINCXX-INCLUDE-NOT:  "-internal-isystem" "[[SYSROOT]]{{(/|\\\\)}}opt{{(/|\\\\)}}IBM{{(/|\\\\)}}openxlCSDK{{(/|\\\\)}}include{{(/|\\\\)}}c++{{(/|\\\\)}}v1"
164 // CHECK-NOSTDINCXX-INCLUDE-NOT:  "-D__LIBC_NO_CPP_MATH_OVERLOADS__"
165 // CHECK-NOSTDINCXX-INCLUDE:      "-internal-isystem" "[[SYSROOT]]/usr/include"
166 
167 // Check powerpc-ibm-aix, 32-bit. -stdlib=libstdc++ invokes fatal error.
168 // RUN: not --crash %clangxx %s 2>&1 -### \
169 // RUN:        --target=powerpc-ibm-aix \
170 // RUN:        -stdlib=libstdc++ \
171 // RUN:        --sysroot %S/Inputs/aix_ppc_tree \
172 // RUN:   | FileCheck --check-prefix=CHECK-INCLUDE-LIBSTDCXX %s
173 
174 // Check powerpc64-ibm-aix, 64-bit. -stdlib=libstdc++ invokes fatal error.
175 // RUN: not --crash %clangxx %s 2>&1 -### \
176 // RUN:        --target=powerpc64-ibm-aix \
177 // RUN:        -stdlib=libstdc++ \
178 // RUN:        --sysroot %S/Inputs/aix_ppc_tree \
179 // RUN:   | FileCheck --check-prefix=CHECK-INCLUDE-LIBSTDCXX %s
180 
181 // CHECK-INCLUDE-LIBSTDCXX: LLVM ERROR: picking up libstdc++ headers is unimplemented on AIX
182