Unverified Commit 6b11f18b authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Always compile with isysroot on iOS to point to SDK root (#45436)

parent bae92c32
...@@ -242,8 +242,16 @@ class AOTSnapshotter { ...@@ -242,8 +242,16 @@ class AOTSnapshotter {
const String embedBitcodeArg = '-fembed-bitcode'; const String embedBitcodeArg = '-fembed-bitcode';
final String assemblyO = fs.path.join(outputPath, 'snapshot_assembly.o'); final String assemblyO = fs.path.join(outputPath, 'snapshot_assembly.o');
List<String> isysrootArgs;
if (isIOS) {
final String iPhoneSDKLocation = await xcode.iPhoneSdkLocation();
if (iPhoneSDKLocation != null) {
isysrootArgs = <String>['-isysroot', iPhoneSDKLocation];
}
}
final RunResult compileResult = await xcode.cc(<String>[ final RunResult compileResult = await xcode.cc(<String>[
'-arch', targetArch, '-arch', targetArch,
if (isysrootArgs != null) ...isysrootArgs,
if (bitcode) embedBitcodeArg, if (bitcode) embedBitcodeArg,
'-c', '-c',
assemblyPath, assemblyPath,
...@@ -265,7 +273,7 @@ class AOTSnapshotter { ...@@ -265,7 +273,7 @@ class AOTSnapshotter {
'-Xlinker', '-rpath', '-Xlinker', '@loader_path/Frameworks', '-Xlinker', '-rpath', '-Xlinker', '@loader_path/Frameworks',
'-install_name', '@rpath/App.framework/App', '-install_name', '@rpath/App.framework/App',
if (bitcode) embedBitcodeArg, if (bitcode) embedBitcodeArg,
if (bitcode && isIOS) ...<String>[embedBitcodeArg, '-isysroot', await xcode.iPhoneSdkLocation()], if (isysrootArgs != null) ...isysrootArgs,
'-o', appLib, '-o', appLib,
assemblyO, assemblyO,
]; ];
......
...@@ -214,6 +214,7 @@ void main() { ...@@ -214,6 +214,7 @@ void main() {
group('Snapshotter - AOT', () { group('Snapshotter - AOT', () {
const String kSnapshotDart = 'snapshot.dart'; const String kSnapshotDart = 'snapshot.dart';
const String kSDKPath = '/path/to/sdk';
String skyEnginePath; String skyEnginePath;
_FakeGenSnapshot genSnapshot; _FakeGenSnapshot genSnapshot;
...@@ -243,6 +244,8 @@ void main() { ...@@ -243,6 +244,8 @@ void main() {
mockAndroidSdk = MockAndroidSdk(); mockAndroidSdk = MockAndroidSdk();
mockArtifacts = MockArtifacts(); mockArtifacts = MockArtifacts();
mockXcode = MockXcode(); mockXcode = MockXcode();
when(mockXcode.iPhoneSdkLocation()).thenAnswer((_) => Future<String>.value(kSDKPath));
bufferLogger = BufferLogger(); bufferLogger = BufferLogger();
for (BuildMode mode in BuildMode.values) { for (BuildMode mode in BuildMode.values) {
when(mockArtifacts.getArtifactPath(Artifact.snapshotDart, when(mockArtifacts.getArtifactPath(Artifact.snapshotDart,
...@@ -334,8 +337,19 @@ void main() { ...@@ -334,8 +337,19 @@ void main() {
'main.dill', 'main.dill',
]); ]);
verify(xcode.cc(argThat(contains('-fembed-bitcode')))).called(1); final VerificationResult toVerifyCC = verify(xcode.cc(captureAny));
verify(xcode.clang(argThat(contains('-fembed-bitcode')))).called(1); expect(toVerifyCC.callCount, 1);
final List<String> ccArgs = toVerifyCC.captured.first;
expect(ccArgs, contains('-fembed-bitcode'));
expect(ccArgs, contains('-isysroot'));
expect(ccArgs, contains(kSDKPath));
final VerificationResult toVerifyClang = verify(xcode.clang(captureAny));
expect(toVerifyClang.callCount, 1);
final List<String> clangArgs = toVerifyClang.captured.first;
expect(clangArgs, contains('-fembed-bitcode'));
expect(clangArgs, contains('-isysroot'));
expect(clangArgs, contains(kSDKPath));
final File assemblyFile = fs.file(assembly); final File assemblyFile = fs.file(assembly);
expect(assemblyFile.existsSync(), true); expect(assemblyFile.existsSync(), true);
...@@ -380,8 +394,19 @@ void main() { ...@@ -380,8 +394,19 @@ void main() {
'main.dill', 'main.dill',
]); ]);
verify(xcode.cc(argThat(contains('-fembed-bitcode')))).called(1); final VerificationResult toVerifyCC = verify(xcode.cc(captureAny));
verify(xcode.clang(argThat(contains('-fembed-bitcode')))).called(1); expect(toVerifyCC.callCount, 1);
final List<String> ccArgs = toVerifyCC.captured.first;
expect(ccArgs, contains('-fembed-bitcode'));
expect(ccArgs, contains('-isysroot'));
expect(ccArgs, contains(kSDKPath));
final VerificationResult toVerifyClang = verify(xcode.clang(captureAny));
expect(toVerifyClang.callCount, 1);
final List<String> clangArgs = toVerifyClang.captured.first;
expect(clangArgs, contains('-fembed-bitcode'));
expect(clangArgs, contains('-isysroot'));
expect(clangArgs, contains(kSDKPath));
final File assemblyFile = fs.file(assembly); final File assemblyFile = fs.file(assembly);
final File assemblyBitcodeFile = fs.file('$assembly.stripped.S'); final File assemblyBitcodeFile = fs.file('$assembly.stripped.S');
...@@ -431,6 +456,9 @@ void main() { ...@@ -431,6 +456,9 @@ void main() {
verifyNever(xcode.cc(argThat(contains('-fembed-bitcode')))); verifyNever(xcode.cc(argThat(contains('-fembed-bitcode'))));
verifyNever(xcode.clang(argThat(contains('-fembed-bitcode')))); verifyNever(xcode.clang(argThat(contains('-fembed-bitcode'))));
verify(xcode.cc(argThat(contains('-isysroot')))).called(1);
verify(xcode.clang(argThat(contains('-isysroot')))).called(1);
final File assemblyFile = fs.file(assembly); final File assemblyFile = fs.file(assembly);
expect(assemblyFile.existsSync(), true); expect(assemblyFile.existsSync(), true);
expect(assemblyFile.readAsStringSync().contains('.section __DWARF'), true); expect(assemblyFile.readAsStringSync().contains('.section __DWARF'), true);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment