Unverified Commit abbb66ad authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

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

parent ac7f8757
...@@ -37,6 +37,9 @@ String flutterMacOSFrameworkDir(BuildMode mode) { ...@@ -37,6 +37,9 @@ String flutterMacOSFrameworkDir(BuildMode mode) {
/// useMacOSConfig: Optional parameter that controls whether we use the macOS /// useMacOSConfig: Optional parameter that controls whether we use the macOS
/// project file instead. Defaults to false. /// 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 /// targetOverride: Optional parameter, if null or unspecified the default value
/// from xcode_backend.sh is used 'lib/main.dart'. /// from xcode_backend.sh is used 'lib/main.dart'.
Future<void> updateGeneratedXcodeProperties({ Future<void> updateGeneratedXcodeProperties({
...@@ -44,6 +47,7 @@ Future<void> updateGeneratedXcodeProperties({ ...@@ -44,6 +47,7 @@ Future<void> updateGeneratedXcodeProperties({
@required BuildInfo buildInfo, @required BuildInfo buildInfo,
String targetOverride, String targetOverride,
bool useMacOSConfig = false, bool useMacOSConfig = false,
String symrootOverride,
}) async { }) async {
final StringBuffer localsBuffer = StringBuffer(); final StringBuffer localsBuffer = StringBuffer();
...@@ -65,7 +69,11 @@ Future<void> updateGeneratedXcodeProperties({ ...@@ -65,7 +69,11 @@ Future<void> updateGeneratedXcodeProperties({
final String buildDirectory = useMacOSConfig final String buildDirectory = useMacOSConfig
? getMacOSBuildDirectory() ? getMacOSBuildDirectory()
: getIosBuildDirectory(); : getIosBuildDirectory();
localsBuffer.writeln('SYMROOT=\${SOURCE_ROOT}/../$buildDirectory'); if (symrootOverride != null) {
localsBuffer.writeln('SYMROOT=$symrootOverride');
} else {
localsBuffer.writeln('SYMROOT=\${SOURCE_ROOT}/../$buildDirectory');
}
if (!project.isModule) { if (!project.isModule) {
// For module projects we do not want to write the FLUTTER_FRAMEWORK_DIR // For module projects we do not want to write the FLUTTER_FRAMEWORK_DIR
......
...@@ -17,21 +17,23 @@ import '../project.dart'; ...@@ -17,21 +17,23 @@ import '../project.dart';
// TODO(jonahwilliams): support target option. // TODO(jonahwilliams): support target option.
// TODO(jonahwilliams): refactor to share code with the existing iOS code. // TODO(jonahwilliams): refactor to share code with the existing iOS code.
Future<void> buildMacOS(FlutterProject flutterProject, BuildInfo buildInfo) async { 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. // Write configuration to an xconfig file in a standard location.
await updateGeneratedXcodeProperties( await updateGeneratedXcodeProperties(
project: flutterProject, project: flutterProject,
buildInfo: buildInfo, buildInfo: buildInfo,
useMacOSConfig: true, useMacOSConfig: true,
symrootOverride: symrootOverride,
); );
// Set debug or release mode. // Set debug or release mode.
String config = 'Debug'; String config = 'Debug';
if (buildInfo.isRelease) { if (buildInfo.isRelease) {
config = 'Release'; config = 'Release';
} }
final Directory flutterBuildDir = fs.directory(getMacOSBuildDirectory());
if (!flutterBuildDir.existsSync()) {
flutterBuildDir.createSync(recursive: true);
}
// Run build script provided by application. // Run build script provided by application.
final Process process = await processManager.start(<String>[ final Process process = await processManager.start(<String>[
'/usr/bin/env', '/usr/bin/env',
...@@ -42,7 +44,7 @@ Future<void> buildMacOS(FlutterProject flutterProject, BuildInfo buildInfo) asyn ...@@ -42,7 +44,7 @@ Future<void> buildMacOS(FlutterProject flutterProject, BuildInfo buildInfo) asyn
'-scheme', 'Runner', '-scheme', 'Runner',
'-derivedDataPath', flutterBuildDir.absolute.path, '-derivedDataPath', flutterBuildDir.absolute.path,
'OBJROOT=${fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Intermediates.noindex')}', 'OBJROOT=${fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Intermediates.noindex')}',
'SYMROOT=${fs.path.join(flutterBuildDir.absolute.path, 'Build', 'Products')}', 'SYMROOT=$symrootOverride',
], runInShell: true); ], runInShell: true);
final Status status = logger.startProgress( final Status status = logger.startProgress(
'Building macOS application...', 'Building macOS application...',
......
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