Set SYMROOT as absolute in Generated.xcconfig for macOS (#31451)

This commit is contained in:
Jonah Williams 2019-04-22 22:22:17 -07:00 committed by GitHub
parent ac7f875778
commit abbb66ad79
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 6 deletions

View file

@ -37,6 +37,9 @@ String flutterMacOSFrameworkDir(BuildMode mode) {
/// useMacOSConfig: Optional parameter that controls whether we use the macOS
/// project file instead. Defaults to false.
///
/// symrootOverride: Optional parameter to specifify the symroot instead of
/// the default relative path.
///
/// targetOverride: Optional parameter, if null or unspecified the default value
/// from xcode_backend.sh is used 'lib/main.dart'.
Future<void> updateGeneratedXcodeProperties({
@ -44,6 +47,7 @@ Future<void> updateGeneratedXcodeProperties({
@required BuildInfo buildInfo,
String targetOverride,
bool useMacOSConfig = false,
String symrootOverride,
}) async {
final StringBuffer localsBuffer = StringBuffer();
@ -65,7 +69,11 @@ Future<void> updateGeneratedXcodeProperties({
final String buildDirectory = useMacOSConfig
? getMacOSBuildDirectory()
: getIosBuildDirectory();
localsBuffer.writeln('SYMROOT=\${SOURCE_ROOT}/../$buildDirectory');
if (symrootOverride != null) {
localsBuffer.writeln('SYMROOT=$symrootOverride');
} else {
localsBuffer.writeln('SYMROOT=\${SOURCE_ROOT}/../$buildDirectory');
}
if (!project.isModule) {
// For module projects we do not want to write the FLUTTER_FRAMEWORK_DIR

View file

@ -17,21 +17,23 @@ import '../project.dart';
// TODO(jonahwilliams): support target option.
// TODO(jonahwilliams): refactor to share code with the existing iOS code.
Future<void> buildMacOS(FlutterProject flutterProject, BuildInfo buildInfo) async {
final Directory flutterBuildDir = fs.directory(getMacOSBuildDirectory());
final String symrootOverride = fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Products');
if (!flutterBuildDir.existsSync()) {
flutterBuildDir.createSync(recursive: true);
}
// Write configuration to an xconfig file in a standard location.
await updateGeneratedXcodeProperties(
project: flutterProject,
buildInfo: buildInfo,
useMacOSConfig: true,
symrootOverride: symrootOverride,
);
// Set debug or release mode.
String config = 'Debug';
if (buildInfo.isRelease) {
config = 'Release';
}
final Directory flutterBuildDir = fs.directory(getMacOSBuildDirectory());
if (!flutterBuildDir.existsSync()) {
flutterBuildDir.createSync(recursive: true);
}
// Run build script provided by application.
final Process process = await processManager.start(<String>[
'/usr/bin/env',
@ -42,7 +44,7 @@ Future<void> buildMacOS(FlutterProject flutterProject, BuildInfo buildInfo) asyn
'-scheme', 'Runner',
'-derivedDataPath', flutterBuildDir.absolute.path,
'OBJROOT=${fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Intermediates.noindex')}',
'SYMROOT=${fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Products')}',
'SYMROOT=$symrootOverride',
], runInShell: true);
final Status status = logger.startProgress(
'Building macOS application...',