From abbb66ad7944e708900edec72d4e7d9a9c2ed889 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Mon, 22 Apr 2019 22:22:17 -0700 Subject: [PATCH] Set SYMROOT as absolute in Generated.xcconfig for macOS (#31451) --- packages/flutter_tools/lib/src/ios/xcodeproj.dart | 10 +++++++++- .../flutter_tools/lib/src/macos/build_macos.dart | 12 +++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/flutter_tools/lib/src/ios/xcodeproj.dart b/packages/flutter_tools/lib/src/ios/xcodeproj.dart index e6e3ac8a7c7..17a2fde4b1a 100644 --- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart +++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart @@ -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 updateGeneratedXcodeProperties({ @@ -44,6 +47,7 @@ Future updateGeneratedXcodeProperties({ @required BuildInfo buildInfo, String targetOverride, bool useMacOSConfig = false, + String symrootOverride, }) async { final StringBuffer localsBuffer = StringBuffer(); @@ -65,7 +69,11 @@ Future 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 diff --git a/packages/flutter_tools/lib/src/macos/build_macos.dart b/packages/flutter_tools/lib/src/macos/build_macos.dart index bba4df0f0b4..5d32089cdac 100644 --- a/packages/flutter_tools/lib/src/macos/build_macos.dart +++ b/packages/flutter_tools/lib/src/macos/build_macos.dart @@ -17,21 +17,23 @@ import '../project.dart'; // TODO(jonahwilliams): support target option. // TODO(jonahwilliams): refactor to share code with the existing iOS code. Future 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([ '/usr/bin/env', @@ -42,7 +44,7 @@ Future 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...',