xref: /aosp_15_r20/external/clang/test/Driver/darwin-ld.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Check that ld gets arch_multiple.
2*67e74705SXin Li 
3*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -arch i386 -arch x86_64 %s -### -o foo 2> %t.log
4*67e74705SXin Li // RUN: grep '".*ld.*" .*"-arch_multiple" "-final_output" "foo"' %t.log
5*67e74705SXin Li 
6*67e74705SXin Li // Make sure we run dsymutil on source input files.
7*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -g %s -o BAR 2> %t.log
8*67e74705SXin Li // RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log
9*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -g -filelist FOO %s -o BAR 2> %t.log
10*67e74705SXin Li // RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log
11*67e74705SXin Li 
12*67e74705SXin Li // Check linker changes that came with new linkedit format.
13*67e74705SXin Li // RUN: touch %t.o
14*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 %t.o 2> %t.log
15*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 -dynamiclib %t.o 2>> %t.log
16*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 -bundle %t.o 2>> %t.log
17*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_IPHONE_3_0 %s < %t.log
18*67e74705SXin Li 
19*67e74705SXin Li // LINK_IPHONE_3_0: {{ld(.exe)?"}}
20*67e74705SXin Li // LINK_IPHONE_3_0: -iphoneos_version_min
21*67e74705SXin Li // LINK_IPHONE_3_0: 3.0.0
22*67e74705SXin Li // LINK_IPHONE_3_0-NOT: -lcrt1.3.1.o
23*67e74705SXin Li // LINK_IPHONE_3_0: -lcrt1.o
24*67e74705SXin Li // LINK_IPHONE_3_0: -lSystem
25*67e74705SXin Li // LINK_IPHONE_3_0: {{ld(.exe)?"}}
26*67e74705SXin Li // LINK_IPHONE_3_0: -dylib
27*67e74705SXin Li // LINK_IPHONE_3_0: -ldylib1.o
28*67e74705SXin Li // LINK_IPHONE_3_0: -lSystem
29*67e74705SXin Li // LINK_IPHONE_3_0: {{ld(.exe)?"}}
30*67e74705SXin Li // LINK_IPHONE_3_0: -lbundle1.o
31*67e74705SXin Li // LINK_IPHONE_3_0: -lSystem
32*67e74705SXin Li 
33*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 %t.o 2> %t.log
34*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 -dynamiclib %t.o 2>> %t.log
35*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 -bundle %t.o 2>> %t.log
36*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_IPHONE_3_1 %s < %t.log
37*67e74705SXin Li 
38*67e74705SXin Li // LINK_IPHONE_3_1: {{ld(.exe)?"}}
39*67e74705SXin Li // LINK_IPHONE_3_1: -iphoneos_version_min
40*67e74705SXin Li // LINK_IPHONE_3_1: 3.1.0
41*67e74705SXin Li // LINK_IPHONE_3_1-NOT: -lcrt1.o
42*67e74705SXin Li // LINK_IPHONE_3_1: -lcrt1.3.1.o
43*67e74705SXin Li // LINK_IPHONE_3_1: -lSystem
44*67e74705SXin Li // LINK_IPHONE_3_1: {{ld(.exe)?"}}
45*67e74705SXin Li // LINK_IPHONE_3_1: -dylib
46*67e74705SXin Li // LINK_IPHONE_3_1-NOT: -ldylib1.o
47*67e74705SXin Li // LINK_IPHONE_3_1: -lSystem
48*67e74705SXin Li // LINK_IPHONE_3_1: {{ld(.exe)?"}}
49*67e74705SXin Li // LINK_IPHONE_3_1-NOT: -lbundle1.o
50*67e74705SXin Li // LINK_IPHONE_3_1: -lSystem
51*67e74705SXin Li 
52*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -arch i386 -mios-simulator-version-min=3.0 %t.o 2> %t.log
53*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -arch i386 -mios-simulator-version-min=3.0 -dynamiclib %t.o 2>> %t.log
54*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -arch i386 -mios-simulator-version-min=3.0 -bundle %t.o 2>> %t.log
55*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_IOSSIM_3_0 %s < %t.log
56*67e74705SXin Li 
57*67e74705SXin Li // LINK_IOSSIM_3_0: {{ld(.exe)?"}}
58*67e74705SXin Li // LINK_IOSSIM_3_0: -ios_simulator_version_min
59*67e74705SXin Li // LINK_IOSSIM_3_0: 3.0.0
60*67e74705SXin Li // LINK_IOSSIM_3_0-NOT: -lcrt1.o
61*67e74705SXin Li // LINK_IOSSIM_3_0: -lSystem
62*67e74705SXin Li // LINK_IOSSIM_3_0: {{ld(.exe)?"}}
63*67e74705SXin Li // LINK_IOSSIM_3_0: -dylib
64*67e74705SXin Li // LINK_IOSSIM_3_0-NOT: -ldylib1.o
65*67e74705SXin Li // LINK_IOSSIM_3_0: -lSystem
66*67e74705SXin Li // LINK_IOSSIM_3_0: {{ld(.exe)?"}}
67*67e74705SXin Li // LINK_IOSSIM_3_0-NOT: -lbundle1.o
68*67e74705SXin Li // LINK_IOSSIM_3_0: -lSystem
69*67e74705SXin Li 
70*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -fpie %t.o 2> %t.log
71*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_EXPLICIT_PIE %s < %t.log
72*67e74705SXin Li //
73*67e74705SXin Li // LINK_EXPLICIT_PIE: {{ld(.exe)?"}}
74*67e74705SXin Li // LINK_EXPLICIT_PIE: "-pie"
75*67e74705SXin Li 
76*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -### -fno-pie %t.o 2> %t.log
77*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_EXPLICIT_NO_PIE %s < %t.log
78*67e74705SXin Li //
79*67e74705SXin Li // LINK_EXPLICIT_NO_PIE: {{ld(.exe)?"}}
80*67e74705SXin Li // LINK_EXPLICIT_NO_PIE: "-no_pie"
81*67e74705SXin Li 
82*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
83*67e74705SXin Li // RUN:   -mlinker-version=100 2> %t.log
84*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_NEWER_DEMANGLE %s < %t.log
85*67e74705SXin Li //
86*67e74705SXin Li // LINK_NEWER_DEMANGLE: {{ld(.exe)?"}}
87*67e74705SXin Li // LINK_NEWER_DEMANGLE: "-demangle"
88*67e74705SXin Li 
89*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
90*67e74705SXin Li // RUN:   -mlinker-version=100 -Wl,--no-demangle 2> %t.log
91*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_NEWER_NODEMANGLE %s < %t.log
92*67e74705SXin Li //
93*67e74705SXin Li // LINK_NEWER_NODEMANGLE: {{ld(.exe)?"}}
94*67e74705SXin Li // LINK_NEWER_NODEMANGLE-NOT: "-demangle"
95*67e74705SXin Li // LINK_NEWER_NODEMANGLE: "-lSystem"
96*67e74705SXin Li 
97*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
98*67e74705SXin Li // RUN:   -mlinker-version=95 2> %t.log
99*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_OLDER_NODEMANGLE %s < %t.log
100*67e74705SXin Li //
101*67e74705SXin Li // LINK_OLDER_NODEMANGLE: {{ld(.exe)?"}}
102*67e74705SXin Li // LINK_OLDER_NODEMANGLE-NOT: "-demangle"
103*67e74705SXin Li // LINK_OLDER_NODEMANGLE: "-lSystem"
104*67e74705SXin Li 
105*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin10 -### %s \
106*67e74705SXin Li // RUN:   -mlinker-version=117 -flto 2> %t.log
107*67e74705SXin Li // RUN: cat %t.log
108*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_OBJECT_LTO_PATH %s < %t.log
109*67e74705SXin Li //
110*67e74705SXin Li // LINK_OBJECT_LTO_PATH: {{ld(.exe)?"}}
111*67e74705SXin Li // LINK_OBJECT_LTO_PATH: "-object_path_lto"
112*67e74705SXin Li 
113*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
114*67e74705SXin Li // RUN:   -force_load a -force_load b 2> %t.log
115*67e74705SXin Li // RUN: cat %t.log
116*67e74705SXin Li // RUN: FileCheck -check-prefix=FORCE_LOAD %s < %t.log
117*67e74705SXin Li //
118*67e74705SXin Li // FORCE_LOAD: {{ld(.exe)?"}}
119*67e74705SXin Li // FORCE_LOAD: "-force_load" "a" "-force_load" "b"
120*67e74705SXin Li 
121*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
122*67e74705SXin Li // RUN:   -lazy_framework Framework 2> %t.log
123*67e74705SXin Li //
124*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_LAZY_FRAMEWORK %s < %t.log
125*67e74705SXin Li // LINK_LAZY_FRAMEWORK: {{ld(.exe)?"}}
126*67e74705SXin Li // LINK_LAZY_FRAMEWORK: "-lazy_framework" "Framework"
127*67e74705SXin Li 
128*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
129*67e74705SXin Li // RUN:   -lazy_library Library 2> %t.log
130*67e74705SXin Li //
131*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_LAZY_LIBRARY %s < %t.log
132*67e74705SXin Li // LINK_LAZY_LIBRARY: {{ld(.exe)?"}}
133*67e74705SXin Li // LINK_LAZY_LIBRARY: "-lazy_library" "Library"
134*67e74705SXin Li 
135*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin10 -### %t.o 2> %t.log
136*67e74705SXin Li // RUN: %clang -target x86_64-apple-macosx10.7 -### %t.o 2>> %t.log
137*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_VERSION_MIN %s < %t.log
138*67e74705SXin Li // LINK_VERSION_MIN: {{ld(.exe)?"}}
139*67e74705SXin Li // LINK_VERSION_MIN: "-macosx_version_min" "10.6.0"
140*67e74705SXin Li // LINK_VERSION_MIN: {{ld(.exe)?"}}
141*67e74705SXin Li // LINK_VERSION_MIN: "-macosx_version_min" "10.7.0"
142*67e74705SXin Li 
143*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 -### %t.o 2> %t.log
144*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_NO_CRT1 %s < %t.log
145*67e74705SXin Li // LINK_NO_CRT1-NOT: crt
146*67e74705SXin Li 
147*67e74705SXin Li // RUN: %clang -target armv7-apple-ios6.0 -miphoneos-version-min=6.0 -### %t.o 2> %t.log
148*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_NO_IOS_CRT1 %s < %t.log
149*67e74705SXin Li // LINK_NO_IOS_CRT1-NOT: crt
150*67e74705SXin Li 
151*67e74705SXin Li // RUN: %clang -target arm64-apple-ios5.0 -miphoneos-version-min=5.0 -### %t.o 2> %t.log
152*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_CRT1 %s < %t.log
153*67e74705SXin Li // LINK_NO_IOS_ARM64_CRT1-NOT: crt
154*67e74705SXin Li 
155*67e74705SXin Li // RUN: %clang -target x86_64-apple-ios6.0 -miphoneos-version-min=6.0 -fprofile-instr-generate -### %t.o 2> %t.log
156*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_IOSSIM_PROFILE %s < %t.log
157*67e74705SXin Li // LINK_IOSSIM_PROFILE: {{ld(.exe)?"}}
158*67e74705SXin Li // LINK_IOSSIM_PROFILE: libclang_rt.profile_iossim.a
159*67e74705SXin Li 
160*67e74705SXin Li // FIXME: Currently the builtin library is only added to the command line if it,
161*67e74705SXin Li // so we can't check for it here
162*67e74705SXin Li // FIXME_LINK_IOSSIM_PROFILE: libclang_rt.ios.a
163*67e74705SXin Li 
164*67e74705SXin Li // RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -### %t.o 2> %t.log
165*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_TVOS_ARM64 %s < %t.log
166*67e74705SXin Li // LINK_TVOS_ARM64: {{ld(.exe)?"}}
167*67e74705SXin Li // LINK_TVOS_ARM64: -tvos_version_min
168*67e74705SXin Li // LINK_TVOS_ARM64-NOT: crt
169*67e74705SXin Li // LINK_TVOS_ARM64-NOT: lgcc_s.1
170*67e74705SXin Li // FIXME: This library does not get built unless the tvOS SDK is
171*67e74705SXin Li // installed, and the driver will not try to link it if it does not exist.
172*67e74705SXin Li // This should be reenabled when the tvOS SDK becomes a standard part
173*67e74705SXin Li // of Xcode.
174*67e74705SXin Li // FIXME_LINK_TVOS_ARM64: libclang_rt.tvos.a
175*67e74705SXin Li 
176*67e74705SXin Li // RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -fprofile-instr-generate -### %t.o 2> %t.log
177*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_TVOS_PROFILE %s < %t.log
178*67e74705SXin Li // LINK_TVOS_PROFILE: {{ld(.exe)?"}}
179*67e74705SXin Li // FIXME: These libraries do not get built unless the tvOS SDK is
180*67e74705SXin Li // installed, and the driver will not try to link them if they do not exist.
181*67e74705SXin Li // This should be reenabled when the tvOS SDK becomes a standard part
182*67e74705SXin Li // of Xcode.
183*67e74705SXin Li // FIXME_LINK_TVOS_PROFILE: libclang_rt.profile_tvos.a
184*67e74705SXin Li // FIXME_LINK_TVOS_PROFILE: libclang_rt.tvos.a
185*67e74705SXin Li 
186*67e74705SXin Li // RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -### %t.o -lcc_kext 2> %t.log
187*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_TVOS_KEXT %s < %t.log
188*67e74705SXin Li // LINK_TVOS_KEXT: {{ld(.exe)?"}}
189*67e74705SXin Li // FIXME: These libraries do not get built unless the tvOS SDK is
190*67e74705SXin Li // installed, and the driver will not try to link them if they do not exist.
191*67e74705SXin Li // This should be reenabled when the tvOS SDK becomes a standard part
192*67e74705SXin Li // of Xcode.
193*67e74705SXin Li // FIXME_LINK_TVOS_KEXT: libclang_rt.cc_kext_tvos.a
194*67e74705SXin Li // FIXME_LINK_TVOS_KEXT: libclang_rt.tvos.a
195*67e74705SXin Li 
196*67e74705SXin Li // RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -### %t.o 2> %t.log
197*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_WATCHOS_ARM %s < %t.log
198*67e74705SXin Li // LINK_WATCHOS_ARM: {{ld(.exe)?"}}
199*67e74705SXin Li // LINK_WATCHOS_ARM: -watchos_version_min
200*67e74705SXin Li // LINK_WATCHOS_ARM-NOT: crt
201*67e74705SXin Li // LINK_WATCHOS_ARM-NOT: lgcc_s.1
202*67e74705SXin Li // FIXME: This library does not get built unless the watchOS SDK is
203*67e74705SXin Li // installed, and the driver will not try to link it if it does not exist.
204*67e74705SXin Li // This should be reenabled when the watchOS SDK becomes a standard part
205*67e74705SXin Li // of Xcode.
206*67e74705SXin Li // FIXME_LINK_WATCHOS_ARM: libclang_rt.watchos.a
207*67e74705SXin Li 
208*67e74705SXin Li // RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -fprofile-instr-generate -### %t.o 2> %t.log
209*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_WATCHOS_PROFILE %s < %t.log
210*67e74705SXin Li // LINK_WATCHOS_PROFILE: {{ld(.exe)?"}}
211*67e74705SXin Li // FIXME: These libraries do not get built unless the watchOS SDK is
212*67e74705SXin Li // installed, and the driver will not try to link them if they do not exist.
213*67e74705SXin Li // This should be reenabled when the watchOS SDK becomes a standard part
214*67e74705SXin Li // of Xcode.
215*67e74705SXin Li // FIXME_LINK_WATCHOS_PROFILE: libclang_rt.profile_watchos.a
216*67e74705SXin Li // FIXME_LINK_WATCHOS_PROFILE: libclang_rt.watchos.a
217*67e74705SXin Li 
218*67e74705SXin Li // RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -### %t.o -lcc_kext 2> %t.log
219*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_WATCHOS_KEXT %s < %t.log
220*67e74705SXin Li // LINK_WATCHOS_KEXT: {{ld(.exe)?"}}
221*67e74705SXin Li // FIXME: These libraries do not get built unless the watchOS SDK is
222*67e74705SXin Li // installed, and the driver will not try to link them if they do not exist.
223*67e74705SXin Li // This should be reenabled when the watchOS SDK becomes a standard part
224*67e74705SXin Li // of Xcode.
225*67e74705SXin Li // FIXME_LINK_WATCHOS_KEXT: libclang_rt.cc_kext_watchos.a
226*67e74705SXin Li // FIXME_LINK_WATCHOS_KEXT: libclang_rt.watchos.a
227*67e74705SXin Li 
228*67e74705SXin Li // RUN: %clang -target i386-apple-darwin12 -pg -### %t.o 2> %t.log
229*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_PG %s < %t.log
230*67e74705SXin Li // LINK_PG: -lgcrt1.o
231*67e74705SXin Li // LINK_PG: -no_new_main
232*67e74705SXin Li 
233*67e74705SXin Li // Check that clang links with libgcc_s.1 for iOS 4 and earlier, but not arm64.
234*67e74705SXin Li // RUN: %clang -target armv7-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log
235*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_IOS_LIBGCC_S %s < %t.log
236*67e74705SXin Li // LINK_IOS_LIBGCC_S: lgcc_s.1
237*67e74705SXin Li 
238*67e74705SXin Li // RUN: %clang -target arm64-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log
239*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_LIBGCC_S %s < %t.log
240*67e74705SXin Li // LINK_NO_IOS_ARM64_LIBGCC_S-NOT: lgcc_s.1
241*67e74705SXin Li 
242*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \
243*67e74705SXin Li // RUN:   -mlinker-version=100 2> %t.log
244*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_NO_EXPORT_DYNAMIC %s < %t.log
245*67e74705SXin Li // LINK_NO_EXPORT_DYNAMIC: {{ld(.exe)?"}}
246*67e74705SXin Li // LINK_NO_EXPORT_DYNAMIC-NOT: "-export_dynamic"
247*67e74705SXin Li 
248*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \
249*67e74705SXin Li // RUN:   -mlinker-version=137 2> %t.log
250*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_EXPORT_DYNAMIC %s < %t.log
251*67e74705SXin Li // LINK_EXPORT_DYNAMIC: {{ld(.exe)?"}}
252*67e74705SXin Li // LINK_EXPORT_DYNAMIC: "-export_dynamic"
253*67e74705SXin Li 
254*67e74705SXin Li // RUN: %clang -target x86_64h-apple-darwin -### %t.o 2> %t.log
255*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_X86_64H_ARCH %s < %t.log
256*67e74705SXin Li //
257*67e74705SXin Li // LINK_X86_64H_ARCH: {{ld(.exe)?"}}
258*67e74705SXin Li // LINK_X86_64H_ARCH: "x86_64h"
259*67e74705SXin Li 
260*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin -arch x86_64 -arch x86_64h -### %t.o 2> %t.log
261*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_X86_64H_MULTIARCH %s < %t.log
262*67e74705SXin Li //
263*67e74705SXin Li // LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}}
264*67e74705SXin Li // LINK_X86_64H_MULTIARCH: "x86_64"
265*67e74705SXin Li //
266*67e74705SXin Li // LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}}
267*67e74705SXin Li // LINK_X86_64H_MULTIARCH: "x86_64h"
268*67e74705SXin Li 
269*67e74705SXin Li // Check for the linker options to specify the iOS version when the
270*67e74705SXin Li // IPHONEOS_DEPLOYMENT_TARGET variable is used instead of the command-line
271*67e74705SXin Li // deployment target options.
272*67e74705SXin Li // RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
273*67e74705SXin Li // RUN:   %clang -target arm64-apple-darwin -### %t.o 2> %t.log
274*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_IPHONEOS_VERSION_MIN %s < %t.log
275*67e74705SXin Li // RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
276*67e74705SXin Li // RUN:   %clang -target i386-apple-darwin -### %t.o 2> %t.log
277*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_IOS_SIMULATOR_VERSION_MIN %s < %t.log
278*67e74705SXin Li // LINK_IPHONEOS_VERSION_MIN: -iphoneos_version_min
279*67e74705SXin Li // LINK_IOS_SIMULATOR_VERSION_MIN: -ios_simulator_version_min
280*67e74705SXin Li 
281*67e74705SXin Li // Ditto for tvOS....
282*67e74705SXin Li // RUN: env TVOS_DEPLOYMENT_TARGET=7.0 \
283*67e74705SXin Li // RUN:   %clang -target armv7-apple-darwin -### %t.o 2> %t.log
284*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_TVOS_VERSION_MIN %s < %t.log
285*67e74705SXin Li // RUN: env TVOS_DEPLOYMENT_TARGET=7.0 \
286*67e74705SXin Li // RUN:   %clang -target x86_64-apple-darwin -### %t.o 2> %t.log
287*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_TVOS_SIMULATOR_VERSION_MIN %s < %t.log
288*67e74705SXin Li // LINK_TVOS_VERSION_MIN: -tvos_version_min
289*67e74705SXin Li // LINK_TVOS_SIMULATOR_VERSION_MIN: -tvos_simulator_version_min
290*67e74705SXin Li 
291*67e74705SXin Li // ...and for watchOS.
292*67e74705SXin Li // RUN: env WATCHOS_DEPLOYMENT_TARGET=2.0 \
293*67e74705SXin Li // RUN:   %clang -target armv7k-apple-darwin -### %t.o 2> %t.log
294*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_WATCHOS_VERSION_MIN %s < %t.log
295*67e74705SXin Li // RUN: env WATCHOS_DEPLOYMENT_TARGET=2.0 \
296*67e74705SXin Li // RUN:   %clang -target i386-apple-darwin -### %t.o 2> %t.log
297*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_WATCHOS_SIMULATOR_VERSION_MIN %s < %t.log
298*67e74705SXin Li // LINK_WATCHOS_VERSION_MIN: -watchos_version_min
299*67e74705SXin Li // LINK_WATCHOS_SIMULATOR_VERSION_MIN: -watchos_simulator_version_min
300*67e74705SXin Li 
301*67e74705SXin Li // Check -iframework gets forward to ld as -F
302*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin %s -iframework Bar -framework Foo -### 2>&1 | \
303*67e74705SXin Li // RUN:   FileCheck --check-prefix=LINK-IFRAMEWORK %s
304*67e74705SXin Li // LINK-IFRAMEWORK: {{ld(.exe)?"}}
305*67e74705SXin Li // LINK-IFRAMEWORK: "-FBar"
306*67e74705SXin Li 
307*67e74705SXin Li // Check ld64 accepts up to 5 digits with no extra characters
308*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
309*67e74705SXin Li // RUN:   -mlinker-version=133.3 2> %t.log
310*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
311*67e74705SXin Li // RUN:   -mlinker-version=133.3.0 2>> %t.log
312*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
313*67e74705SXin Li // RUN:   -mlinker-version=133.3.0.1 2>> %t.log
314*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
315*67e74705SXin Li // RUN:   -mlinker-version=133.3.0.1.2 2>> %t.log
316*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
317*67e74705SXin Li // RUN:   -mlinker-version=133.3.0.1.2.6 2>> %t.log
318*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
319*67e74705SXin Li // RUN:   -mlinker-version=133.3.0.1.a 2>> %t.log
320*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
321*67e74705SXin Li // RUN:   -mlinker-version=133.3.0.1a 2>> %t.log
322*67e74705SXin Li // RUN: FileCheck -check-prefix=LINK_VERSION_DIGITS %s < %t.log
323*67e74705SXin Li // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3'
324*67e74705SXin Li // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0'
325*67e74705SXin Li // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0.1'
326*67e74705SXin Li // LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0.1.2'
327*67e74705SXin Li // LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1.2.6'
328*67e74705SXin Li // LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1.a'
329*67e74705SXin Li // LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1a'
330