diff --git a/charmcraft.yaml b/charmcraft.yaml index 78f14f1..a526804 100644 --- a/charmcraft.yaml +++ b/charmcraft.yaml @@ -45,30 +45,6 @@ parts: mkdir -p $CRAFT_PRIME/src/static/flutter_infra_release/flutter/587c18f873b8ab57330422bce09047420d9c7f42/ mv $CRAFT_PART_SRC/output/* $CRAFT_PRIME/src/static/flutter_infra_release/flutter/587c18f873b8ab57330422bce09047420d9c7f42/ - flutter-3.41.2: - plugin: nil - build-packages: - - curl - override-pull: | - curl -L -O https://code.launchpad.net/~vhaudiquet/+git/flutter/+artifact/445409/+files/flutter-artifacts-riscv64.tar.gz - override-build: | - tar -C $CRAFT_PART_SRC -xzf flutter-artifacts-riscv64.tar.gz - override-prime: | - mkdir -p $CRAFT_PRIME/src/static/flutter_infra_release/flutter/6c0baaebf70e0148f485f27d5616b3d3382da7bf/ - mv $CRAFT_PART_SRC/output/* $CRAFT_PRIME/src/static/flutter_infra_release/flutter/6c0baaebf70e0148f485f27d5616b3d3382da7bf/ - - flutter-3.41.3: - plugin: nil - build-packages: - - curl - override-pull: | - curl -L -O https://code.launchpad.net/~vhaudiquet/+git/flutter/+artifact/446019/+files/flutter-artifacts-riscv64.tar.gz - override-build: | - tar -C $CRAFT_PART_SRC -xzf flutter-artifacts-riscv64.tar.gz - override-prime: | - mkdir -p $CRAFT_PRIME/src/static/flutter_infra_release/flutter/327ed814500baca0480a02f8555aa84a9afe32bf/ - mv $CRAFT_PART_SRC/output/* $CRAFT_PRIME/src/static/flutter_infra_release/flutter/327ed814500baca0480a02f8555aa84a9afe32bf/ - flutter-3.44.0: plugin: nil build-packages: diff --git a/src/static/tool/3.41.2.patch b/src/static/tool/3.41.2.patch deleted file mode 100644 index a8ff597..0000000 --- a/src/static/tool/3.41.2.patch +++ /dev/null @@ -1,660 +0,0 @@ -diff --git a/bin/internal/update_dart_sdk.sh b/bin/internal/update_dart_sdk.sh -index 9ab6151021a..878c9e59ea9 100755 ---- a/bin/internal/update_dart_sdk.sh -+++ b/bin/internal/update_dart_sdk.sh -@@ -89,6 +89,9 @@ if [ ! -f "$ENGINE_STAMP" ] || [ "$ENGINE_VERSION" != `cat "$ENGINE_STAMP"` ]; t - x86_64) - ARCH="x64" - ;; -+ riscv64) -+ ARCH="riscv64" -+ ;; - *) - ARCH="arm64" - ;; -diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart -index d95c9ee2a1a..612388310ff 100644 ---- a/packages/flutter_tools/lib/src/android/android_device.dart -+++ b/packages/flutter_tools/lib/src/android/android_device.dart -@@ -228,6 +228,7 @@ class AndroidDevice extends Device { - case TargetPlatform.fuchsia_x64: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -@@ -551,6 +552,7 @@ class AndroidDevice extends Device { - case TargetPlatform.fuchsia_x64: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart -index 545b594ec45..3cb6fd2f21a 100644 ---- a/packages/flutter_tools/lib/src/artifacts.dart -+++ b/packages/flutter_tools/lib/src/artifacts.dart -@@ -30,6 +30,7 @@ enum Artifact { - /// The tool which compiles a dart kernel file into native code. - genSnapshot, - genSnapshotArm64, -+ genSnapshotRiscv64, - genSnapshotX64, - - /// The flutter tester binary. -@@ -155,6 +156,7 @@ TargetPlatform? _mapTargetPlatform(TargetPlatform? targetPlatform) { - case TargetPlatform.darwin: - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: - case TargetPlatform.fuchsia_arm64: -@@ -177,6 +179,8 @@ String? _artifactToFileName(Artifact artifact, Platform hostPlatform, [BuildMode - return 'gen_snapshot'; - case Artifact.genSnapshotArm64: - return 'gen_snapshot_arm64'; -+ case Artifact.genSnapshotRiscv64: -+ return 'gen_snapshot_riscv64'; - case Artifact.genSnapshotX64: - return 'gen_snapshot_x64'; - case Artifact.flutterTester: -@@ -519,6 +523,7 @@ class CachedArtifacts implements Artifacts { - case TargetPlatform.darwin: - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: - return _getDesktopArtifactPath(artifact, platform!, mode); -@@ -550,6 +555,7 @@ class CachedArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - return _fileSystem.path.join(engineDir, _artifactToFileName(artifact, _platform)); - case Artifact.engineDartSdkPath: -@@ -590,6 +596,7 @@ class CachedArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - assert(mode != BuildMode.debug, 'Artifact $artifact only available in non-debug mode.'); - -@@ -647,6 +654,7 @@ class CachedArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - case Artifact.flutterXcframework: - final String artifactFileName = _artifactToFileName(artifact, _platform)!; -@@ -699,6 +707,7 @@ class CachedArtifacts implements Artifacts { - final genSnapshot = mode.isRelease ? 'gen_snapshot_product' : 'gen_snapshot'; - return _fileSystem.path.join(root, runtime, 'dart_binaries', genSnapshot); - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - throw ArgumentError('$artifact is not available on this platform'); - case Artifact.flutterPatchedSdkPath: -@@ -757,6 +766,7 @@ class CachedArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - // For script snapshots any gen_snapshot binary will do. Returning gen_snapshot for - // android_arm in profile mode because it is available on all supported host platforms. -@@ -878,6 +888,7 @@ class CachedArtifacts implements Artifacts { - switch (platform) { - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.darwin: - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: -@@ -919,9 +930,11 @@ TargetPlatform _currentHostPlatform(Platform platform, OperatingSystemUtils oper - return TargetPlatform.darwin; - } - if (platform.isLinux) { -- return operatingSystemUtils.hostPlatform == HostPlatform.linux_x64 -- ? TargetPlatform.linux_x64 -- : TargetPlatform.linux_arm64; -+ return switch (operatingSystemUtils.hostPlatform) { -+ HostPlatform.linux_x64 => TargetPlatform.linux_x64, -+ HostPlatform.linux_riscv64 => TargetPlatform.linux_riscv64, -+ _ => TargetPlatform.linux_arm64, -+ }; - } - if (platform.isWindows) { - return operatingSystemUtils.hostPlatform == HostPlatform.windows_arm64 -@@ -1197,6 +1210,7 @@ class CachedLocalEngineArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - return _genSnapshotPath(artifact); - case Artifact.flutterTester: -@@ -1338,6 +1352,8 @@ class CachedLocalEngineArtifacts implements Artifacts { - switch (hostPlatform) { - case TargetPlatform.darwin: - return 'macos-x64'; -+ case TargetPlatform.linux_riscv64: -+ return 'linux-riscv64'; - case TargetPlatform.linux_arm64: - return 'linux-arm64'; - case TargetPlatform.linux_x64: -@@ -1373,6 +1389,7 @@ class CachedLocalEngineArtifacts implements Artifacts { - 'clang_x86', - 'clang_i386', - 'clang_arm64', -+ 'clang_riscv64', - ]; - final String genSnapshotName = _artifactToFileName(artifact, _platform)!; - for (final clangDir in clangDirs) { -@@ -1445,6 +1462,7 @@ class CachedLocalWebSdkArtifacts implements Artifacts { - ); - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - case Artifact.flutterTester: - case Artifact.flutterFramework: -@@ -1570,6 +1588,8 @@ class CachedLocalWebSdkArtifacts implements Artifacts { - return 'macos-x64'; - case TargetPlatform.linux_arm64: - return 'linux-arm64'; -+ case TargetPlatform.linux_riscv64: -+ return 'linux-riscv64'; - case TargetPlatform.linux_x64: - return 'linux-x64'; - case TargetPlatform.windows_x64: -diff --git a/packages/flutter_tools/lib/src/base/build.dart b/packages/flutter_tools/lib/src/base/build.dart -index bb967d7111b..c98c7c62500 100644 ---- a/packages/flutter_tools/lib/src/base/build.dart -+++ b/packages/flutter_tools/lib/src/base/build.dart -@@ -354,6 +354,7 @@ class AOTSnapshotter { - TargetPlatform.darwin, - TargetPlatform.linux_x64, - TargetPlatform.linux_arm64, -+ TargetPlatform.linux_riscv64, - TargetPlatform.windows_x64, - TargetPlatform.windows_arm64, - ].contains(platform); -diff --git a/packages/flutter_tools/lib/src/base/os.dart b/packages/flutter_tools/lib/src/base/os.dart -index 5b499fef54f..297bf10159c 100644 ---- a/packages/flutter_tools/lib/src/base/os.dart -+++ b/packages/flutter_tools/lib/src/base/os.dart -@@ -279,6 +279,8 @@ class _PosixUtils extends OperatingSystemUtils { - ); - } else if (hostPlatformCheck.stdout.trim().endsWith('x86_64')) { - _hostPlatform = HostPlatform.linux_x64; -+ } else if (hostPlatformCheck.stdout.trim().endsWith('riscv64')) { -+ _hostPlatform = HostPlatform.linux_riscv64; - } else { - // We default to ARM if it's not x86_64 and we did not get an error. - _hostPlatform = HostPlatform.linux_arm64; -@@ -611,6 +613,7 @@ enum HostPlatform { - darwin_arm64, - linux_x64, - linux_arm64, -+ linux_riscv64, - windows_x64, - windows_arm64; - -@@ -619,6 +622,7 @@ enum HostPlatform { - HostPlatform.darwin_arm64 => 'arm64', - HostPlatform.linux_x64 => 'x64', - HostPlatform.linux_arm64 => 'arm64', -+ HostPlatform.linux_riscv64 => 'riscv64', - HostPlatform.windows_x64 => 'x64', - HostPlatform.windows_arm64 => 'arm64', - }; -@@ -630,6 +634,7 @@ String getNameForHostPlatform(HostPlatform platform) { - HostPlatform.darwin_arm64 => 'darwin-arm64', - HostPlatform.linux_x64 => 'linux-x64', - HostPlatform.linux_arm64 => 'linux-arm64', -+ HostPlatform.linux_riscv64 => 'linux-riscv64', - HostPlatform.windows_x64 => 'windows-x64', - HostPlatform.windows_arm64 => 'windows-arm64', - }; -diff --git a/packages/flutter_tools/lib/src/build_info.dart b/packages/flutter_tools/lib/src/build_info.dart -index 6867be4c62a..26bd76d28b1 100644 ---- a/packages/flutter_tools/lib/src/build_info.dart -+++ b/packages/flutter_tools/lib/src/build_info.dart -@@ -582,6 +582,7 @@ enum TargetPlatform { - darwin, - linux_x64, - linux_arm64, -+ linux_riscv64, - windows_x64, - windows_arm64, - fuchsia_arm64, -@@ -610,6 +611,7 @@ enum TargetPlatform { - case TargetPlatform.darwin: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -@@ -624,6 +626,7 @@ enum TargetPlatform { - switch (this) { - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - return 'linux'; - case TargetPlatform.darwin: - return 'macos'; -@@ -658,6 +661,8 @@ enum TargetPlatform { - case TargetPlatform.linux_arm64: - case TargetPlatform.windows_arm64: - return 'arm64'; -+ case TargetPlatform.linux_riscv64: -+ return 'riscv64'; - case TargetPlatform.android: - case TargetPlatform.android_arm: - case TargetPlatform.android_arm64: -@@ -792,6 +797,7 @@ String getNameForTargetPlatform(TargetPlatform platform, {DarwinArch? darwinArch - TargetPlatform.android_x64 => 'android-x64', - TargetPlatform.linux_x64 => 'linux-x64', - TargetPlatform.linux_arm64 => 'linux-arm64', -+ TargetPlatform.linux_riscv64 => 'linux-riscv64', - TargetPlatform.windows_x64 => 'windows-x64', - TargetPlatform.windows_arm64 => 'windows-arm64', - TargetPlatform.fuchsia_arm64 => 'fuchsia-arm64', -@@ -817,6 +823,7 @@ TargetPlatform getTargetPlatformForName(String platform) { - 'darwin' || 'darwin-x64' || 'darwin-arm64' => TargetPlatform.darwin, - 'linux-x64' => TargetPlatform.linux_x64, - 'linux-arm64' => TargetPlatform.linux_arm64, -+ 'linux-riscv64' => TargetPlatform.linux_riscv64, - 'windows-x64' => TargetPlatform.windows_x64, - 'windows-arm64' => TargetPlatform.windows_arm64, - 'web-javascript' => TargetPlatform.web_javascript, -diff --git a/packages/flutter_tools/lib/src/build_system/targets/common.dart b/packages/flutter_tools/lib/src/build_system/targets/common.dart -index 63eb1c736e8..f4695404411 100644 ---- a/packages/flutter_tools/lib/src/build_system/targets/common.dart -+++ b/packages/flutter_tools/lib/src/build_system/targets/common.dart -@@ -228,6 +228,7 @@ class KernelSnapshot extends Target { - case TargetPlatform.fuchsia_x64: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: - forceLinkPlatform = false; -@@ -243,7 +244,9 @@ class KernelSnapshot extends Target { - TargetPlatform.android_x64 => 'android', - TargetPlatform.darwin => 'macos', - TargetPlatform.ios => 'ios', -- TargetPlatform.linux_arm64 || TargetPlatform.linux_x64 => 'linux', -+ TargetPlatform.linux_arm64 || -+ TargetPlatform.linux_riscv64 || -+ TargetPlatform.linux_x64 => 'linux', - TargetPlatform.windows_arm64 || TargetPlatform.windows_x64 => 'windows', - TargetPlatform.tester || TargetPlatform.web_javascript => null, - TargetPlatform.unsupported => TargetPlatform.throwUnsupportedTarget(), -diff --git a/packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart b/packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart -index db28675db2d..c2f8820945c 100644 ---- a/packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart -+++ b/packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart -@@ -112,6 +112,7 @@ class ShaderCompiler { - case TargetPlatform.android: - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: - return [ -diff --git a/packages/flutter_tools/lib/src/commands/assemble.dart b/packages/flutter_tools/lib/src/commands/assemble.dart -index 564aa971a1a..70f428c5d5b 100644 ---- a/packages/flutter_tools/lib/src/commands/assemble.dart -+++ b/packages/flutter_tools/lib/src/commands/assemble.dart -@@ -46,10 +46,13 @@ var _kDefaultTargets = [ - // Linux targets - const DebugBundleLinuxAssets(TargetPlatform.linux_x64), - const DebugBundleLinuxAssets(TargetPlatform.linux_arm64), -+ const DebugBundleLinuxAssets(TargetPlatform.linux_riscv64), - const ProfileBundleLinuxAssets(TargetPlatform.linux_x64), - const ProfileBundleLinuxAssets(TargetPlatform.linux_arm64), -+ const ProfileBundleLinuxAssets(TargetPlatform.linux_riscv64), - const ReleaseBundleLinuxAssets(TargetPlatform.linux_x64), - const ReleaseBundleLinuxAssets(TargetPlatform.linux_arm64), -+ const ReleaseBundleLinuxAssets(TargetPlatform.linux_riscv64), - const ReleaseAndroidApplication(), - // This is a one-off rule for bundle and aot compat. - const CopyFlutterBundle(), -diff --git a/packages/flutter_tools/lib/src/commands/build_bundle.dart b/packages/flutter_tools/lib/src/commands/build_bundle.dart -index 927edb22877..06d0ef67a76 100644 ---- a/packages/flutter_tools/lib/src/commands/build_bundle.dart -+++ b/packages/flutter_tools/lib/src/commands/build_bundle.dart -@@ -46,6 +46,7 @@ class BuildBundleCommand extends BuildSubCommand { - 'darwin', - 'linux-x64', - 'linux-arm64', -+ 'linux-riscv64', - 'windows-x64', - 'windows-arm64', - ], -@@ -122,6 +123,7 @@ class BuildBundleCommand extends BuildSubCommand { - } - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - if (!featureFlags.isLinuxEnabled) { - throwToolExit('Linux is not a supported target platform.'); - } -diff --git a/packages/flutter_tools/lib/src/commands/build_linux.dart b/packages/flutter_tools/lib/src/commands/build_linux.dart -index 832be184a32..f948f87f0aa 100644 ---- a/packages/flutter_tools/lib/src/commands/build_linux.dart -+++ b/packages/flutter_tools/lib/src/commands/build_linux.dart -@@ -23,13 +23,15 @@ class BuildLinuxCommand extends BuildSubCommand { - }) : _operatingSystemUtils = operatingSystemUtils, - super(verboseHelp: verboseHelp) { - addCommonDesktopBuildOptions(verboseHelp: verboseHelp); -- final defaultTargetPlatform = (_operatingSystemUtils.hostPlatform == HostPlatform.linux_arm64) -- ? 'linux-arm64' -- : 'linux-x64'; -+ final String defaultTargetPlatform = switch (_operatingSystemUtils.hostPlatform) { -+ HostPlatform.linux_arm64 => 'linux-arm64', -+ HostPlatform.linux_riscv64 => 'linux-riscv64', -+ _ => 'linux-x64', -+ }; - argParser.addOption( - 'target-platform', - defaultsTo: defaultTargetPlatform, -- allowed: ['linux-arm64', 'linux-x64'], -+ allowed: ['linux-arm64', 'linux-x64', 'linux-riscv64'], - help: 'The target platform for which the app is compiled.', - ); - argParser.addOption( -@@ -79,9 +81,8 @@ class BuildLinuxCommand extends BuildSubCommand { - if (!globals.platform.isLinux) { - throwToolExit('"build linux" only supported on Linux hosts.'); - } -- // Cross-building for x64 targets on arm64 hosts is not supported. -- if (_operatingSystemUtils.hostPlatform != HostPlatform.linux_x64 && -- targetPlatform != TargetPlatform.linux_arm64) { -+ // Cross-building is only supported on x64 hosts -+ if (_operatingSystemUtils.hostPlatform != HostPlatform.linux_x64 && needCrossBuild) { - throwToolExit('"cross-building" only supported on Linux x64 hosts.'); - } - // TODO(fujino): https://github.com/flutter/flutter/issues/74929 -@@ -91,6 +92,14 @@ class BuildLinuxCommand extends BuildSubCommand { - 'Cross-build from Linux x64 host to Linux arm64 target is not currently supported.', - ); - } -+ // Building for riscv64 (on a non-riscv64 host) is experimental -+ if (_operatingSystemUtils.hostPlatform != HostPlatform.linux_riscv64 && -+ targetPlatform == TargetPlatform.linux_riscv64 && -+ !featureFlags.isRiscv64SupportEnabled) { -+ throwToolExit( -+ 'Building for Linux riscv64 is currently an experimental feature. To enable, run "flutter config --enable-riscv64"', -+ ); -+ } - final Logger logger = globals.logger; - await buildLinux( - project.linux, -diff --git a/packages/flutter_tools/lib/src/features.dart b/packages/flutter_tools/lib/src/features.dart -index 724fcc4c9d4..2ee6cd6b7ed 100644 ---- a/packages/flutter_tools/lib/src/features.dart -+++ b/packages/flutter_tools/lib/src/features.dart -@@ -76,6 +76,9 @@ abstract class FeatureFlags { - /// Whether UIScene migration is enabled. - bool get isUISceneMigrationEnabled; - -+ /// Wether riscv64 support is enabled. -+ bool get isRiscv64SupportEnabled; -+ - /// Whether a particular feature is enabled for the current channel. - /// - /// Prefer using one of the specific getters above instead of this API. -@@ -99,6 +102,7 @@ abstract class FeatureFlags { - windowingFeature, - lldbDebugging, - uiSceneMigration, -+ riscv64, - ]; - - /// All current Flutter feature flags that can be configured. -@@ -268,6 +272,16 @@ const uiSceneMigration = Feature( - stable: FeatureChannelSetting(available: true, enabledByDefault: true), - ); - -+/// The [Feature] for building code targetting riscv64 architecture -+const riscv64 = Feature( -+ name: 'support for riscv64 architecture', -+ configSetting: 'enable-riscv64', -+ environmentOverride: 'FLUTTER_RISCV64', -+ master: FeatureChannelSetting(available: true, enabledByDefault: true), -+ beta: FeatureChannelSetting(available: true), -+ stable: FeatureChannelSetting(available: true), -+); -+ - /// A [Feature] is a process for conditionally enabling tool features. - /// - /// All settings are optional, and if not provided will generally default to -diff --git a/packages/flutter_tools/lib/src/flutter_application_package.dart b/packages/flutter_tools/lib/src/flutter_application_package.dart -index 75eaeea481e..c61de499a28 100644 ---- a/packages/flutter_tools/lib/src/flutter_application_package.dart -+++ b/packages/flutter_tools/lib/src/flutter_application_package.dart -@@ -91,6 +91,7 @@ class FlutterApplicationPackageFactory extends ApplicationPackageFactory { - return WebApplicationPackage(FlutterProject.current()); - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - return applicationBinary == null - ? LinuxApp.fromLinuxProject(FlutterProject.current().linux) - : LinuxApp.fromPrebuiltApp(applicationBinary); -diff --git a/packages/flutter_tools/lib/src/flutter_cache.dart b/packages/flutter_tools/lib/src/flutter_cache.dart -index 31f5fbc825a..46b8eb48b23 100644 ---- a/packages/flutter_tools/lib/src/flutter_cache.dart -+++ b/packages/flutter_tools/lib/src/flutter_cache.dart -@@ -683,6 +683,7 @@ class FlutterRunnerDebugSymbols extends CachedArtifact { - } - await _downloadDebugSymbols('x64', artifactUpdater); - await _downloadDebugSymbols('arm64', artifactUpdater); -+ await _downloadDebugSymbols('riscv64', artifactUpdater); - } - } - -diff --git a/packages/flutter_tools/lib/src/flutter_features.dart b/packages/flutter_tools/lib/src/flutter_features.dart -index c1102780346..ee7fb68b6ab 100644 ---- a/packages/flutter_tools/lib/src/flutter_features.dart -+++ b/packages/flutter_tools/lib/src/flutter_features.dart -@@ -66,6 +66,9 @@ mixin FlutterFeatureFlagsIsEnabled implements FeatureFlags { - - @override - bool get isUISceneMigrationEnabled => isEnabled(uiSceneMigration); -+ -+ @override -+ bool get isRiscv64SupportEnabled => isEnabled(riscv64); - } - - interface class FlutterFeatureFlags extends FeatureFlags with FlutterFeatureFlagsIsEnabled { -diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart -index 1ed907c050a..86d0010f495 100644 ---- a/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart -+++ b/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart -@@ -666,6 +666,7 @@ OS getNativeOSFromTargetPlatform(TargetPlatform platform) { - return OS.macOS; - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - return OS.linux; - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: -diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/targets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/targets.dart -index cc0de9f2452..d036e29a352 100644 ---- a/packages/flutter_tools/lib/src/isolated/native_assets/targets.dart -+++ b/packages/flutter_tools/lib/src/isolated/native_assets/targets.dart -@@ -69,6 +69,8 @@ sealed class AssetBuildTarget { - return _linuxTarget(supportedAssetTypes, Architecture.x64); - case TargetPlatform.linux_arm64: - return _linuxTarget(supportedAssetTypes, Architecture.arm64); -+ case TargetPlatform.linux_riscv64: -+ return _linuxTarget(supportedAssetTypes, Architecture.riscv64); - case TargetPlatform.windows_arm64: - return _windowsTarget(supportedAssetTypes, Architecture.arm64); - case TargetPlatform.darwin: -@@ -402,6 +404,7 @@ List _androidArchs(TargetPlatform targetPlatform, String? androidAr - case TargetPlatform.fuchsia_x64: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -diff --git a/packages/flutter_tools/lib/src/linux/build_linux.dart b/packages/flutter_tools/lib/src/linux/build_linux.dart -index 6525bb9e61d..aa86e904948 100644 ---- a/packages/flutter_tools/lib/src/linux/build_linux.dart -+++ b/packages/flutter_tools/lib/src/linux/build_linux.dart -@@ -163,6 +163,8 @@ Future _runCmake( - final String buildFlag = sentenceCase(buildModeName); - final bool needCrossBuildOptionsForArm64 = - needCrossBuild && targetPlatform == TargetPlatform.linux_arm64; -+ final bool needCrossBuildOptionsForRiscv64 = -+ needCrossBuild && targetPlatform == TargetPlatform.linux_riscv64; - int result; - if (!globals.processManager.canRun('cmake')) { - throwToolExit(globals.userMessages.cmakeMissing); -@@ -179,6 +181,9 @@ Future _runCmake( - if (needCrossBuild) '-DFLUTTER_TARGET_PLATFORM_SYSROOT=$targetSysroot', - if (needCrossBuildOptionsForArm64) '-DCMAKE_C_COMPILER_TARGET=aarch64-linux-gnu', - if (needCrossBuildOptionsForArm64) '-DCMAKE_CXX_COMPILER_TARGET=aarch64-linux-gnu', -+ // Support cross-building for riscv64 targets on x64 hosts. -+ if (needCrossBuildOptionsForRiscv64) '-DCMAKE_C_COMPILER_TARGET=riscv64-linux-gnu', -+ if (needCrossBuildOptionsForRiscv64) '-DCMAKE_CXX_COMPILER_TARGET=riscv64-linux-gnu', - sourceDir.path, - ], - workingDirectory: buildDir.path, -diff --git a/packages/flutter_tools/lib/src/linux/linux_device.dart b/packages/flutter_tools/lib/src/linux/linux_device.dart -index 3f113c97f00..4bf5ed7908c 100644 ---- a/packages/flutter_tools/lib/src/linux/linux_device.dart -+++ b/packages/flutter_tools/lib/src/linux/linux_device.dart -@@ -49,6 +49,8 @@ class LinuxDevice extends DesktopDevice { - late final Future targetPlatform = () async { - if (_operatingSystemUtils.hostPlatform == HostPlatform.linux_x64) { - return TargetPlatform.linux_x64; -+ } else if (_operatingSystemUtils.hostPlatform == HostPlatform.linux_riscv64) { -+ return TargetPlatform.linux_riscv64; - } - return TargetPlatform.linux_arm64; - }(); -diff --git a/packages/flutter_tools/lib/src/mdns_discovery.dart b/packages/flutter_tools/lib/src/mdns_discovery.dart -index b21795ddb3e..0840c95b637 100644 ---- a/packages/flutter_tools/lib/src/mdns_discovery.dart -+++ b/packages/flutter_tools/lib/src/mdns_discovery.dart -@@ -599,6 +599,7 @@ class MDnsVmServiceDiscovery { - case TargetPlatform.fuchsia_arm64: - case TargetPlatform.fuchsia_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart -index 8f22a8cbcc0..acd00578d8e 100644 ---- a/packages/flutter_tools/lib/src/resident_runner.dart -+++ b/packages/flutter_tools/lib/src/resident_runner.dart -@@ -1612,6 +1612,7 @@ Future getMissingPackageHintForPlatform(TargetPlatform platform) async - case TargetPlatform.fuchsia_arm64: - case TargetPlatform.fuchsia_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart -index 452ab9d2a4e..22315800332 100644 ---- a/packages/flutter_tools/lib/src/runner/flutter_command.dart -+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart -@@ -2143,6 +2143,7 @@ DevelopmentArtifact? artifactFromTargetPlatform(TargetPlatform targetPlatform) { - return null; - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - if (featureFlags.isLinuxEnabled) { - return DevelopmentArtifact.linux; - } -diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart -index b625816f366..11a7003a35c 100644 ---- a/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart -+++ b/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart -@@ -90,6 +90,7 @@ void main() { - 'darwin-x64': false, - 'linux-x64': false, - 'linux-arm64': false, -+ 'linux-riscv64': false, - 'windows-x64': false, - 'web-javascript': true, - 'ios': false, -diff --git a/packages/flutter_tools/test/general.shard/cache_test.dart b/packages/flutter_tools/test/general.shard/cache_test.dart -index 4a6152961b8..922b1ff9227 100644 ---- a/packages/flutter_tools/test/general.shard/cache_test.dart -+++ b/packages/flutter_tools/test/general.shard/cache_test.dart -@@ -574,6 +574,7 @@ void main() { - expect(packageResolver.resolved, >[ - ['fuchsia-debug-symbols-x64', '123456'], - ['fuchsia-debug-symbols-arm64', '123456'], -+ ['fuchsia-debug-symbols-riscv64', '123456'], - ]); - }); - -diff --git a/packages/flutter_tools/test/general.shard/flutter_validator_test.dart b/packages/flutter_tools/test/general.shard/flutter_validator_test.dart -index 050bd3d6c6d..f0a864f0424 100644 ---- a/packages/flutter_tools/test/general.shard/flutter_validator_test.dart -+++ b/packages/flutter_tools/test/general.shard/flutter_validator_test.dart -@@ -824,6 +824,9 @@ class FakeFlutterFeatures extends FeatureFlags { - @override - bool get isUISceneMigrationEnabled => _enabled; - -+ @override -+ bool get isRiscv64SupportEnabled => _enabled; -+ - @override - final List allFeatures; - -diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart -index 78ae4ba3642..b0ce67771a4 100644 ---- a/packages/flutter_tools/test/src/fakes.dart -+++ b/packages/flutter_tools/test/src/fakes.dart -@@ -532,6 +532,7 @@ class TestFeatureFlags implements FeatureFlags { - this.isWindowingEnabled = false, - this.isLLDBDebuggingEnabled = false, - this.isUISceneMigrationEnabled = false, -+ this.isRiscv64SupportEnabled = false, - }); - - @override -@@ -582,6 +583,9 @@ class TestFeatureFlags implements FeatureFlags { - @override - final bool isUISceneMigrationEnabled; - -+ @override -+ final bool isRiscv64SupportEnabled; -+ - @override - bool isEnabled(Feature feature) { - return switch (feature) { -@@ -600,6 +604,7 @@ class TestFeatureFlags implements FeatureFlags { - windowingFeature => isWindowingEnabled, - lldbDebugging => isLLDBDebuggingEnabled, - uiSceneMigration => isUISceneMigrationEnabled, -+ riscv64 => isRiscv64SupportEnabled, - _ => false, - }; - } -@@ -622,6 +627,7 @@ class TestFeatureFlags implements FeatureFlags { - windowingFeature, - lldbDebugging, - uiSceneMigration, -+ riscv64, - ]; - - @override diff --git a/src/static/tool/3.41.3.patch b/src/static/tool/3.41.3.patch deleted file mode 100644 index a8ff597..0000000 --- a/src/static/tool/3.41.3.patch +++ /dev/null @@ -1,660 +0,0 @@ -diff --git a/bin/internal/update_dart_sdk.sh b/bin/internal/update_dart_sdk.sh -index 9ab6151021a..878c9e59ea9 100755 ---- a/bin/internal/update_dart_sdk.sh -+++ b/bin/internal/update_dart_sdk.sh -@@ -89,6 +89,9 @@ if [ ! -f "$ENGINE_STAMP" ] || [ "$ENGINE_VERSION" != `cat "$ENGINE_STAMP"` ]; t - x86_64) - ARCH="x64" - ;; -+ riscv64) -+ ARCH="riscv64" -+ ;; - *) - ARCH="arm64" - ;; -diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart -index d95c9ee2a1a..612388310ff 100644 ---- a/packages/flutter_tools/lib/src/android/android_device.dart -+++ b/packages/flutter_tools/lib/src/android/android_device.dart -@@ -228,6 +228,7 @@ class AndroidDevice extends Device { - case TargetPlatform.fuchsia_x64: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -@@ -551,6 +552,7 @@ class AndroidDevice extends Device { - case TargetPlatform.fuchsia_x64: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart -index 545b594ec45..3cb6fd2f21a 100644 ---- a/packages/flutter_tools/lib/src/artifacts.dart -+++ b/packages/flutter_tools/lib/src/artifacts.dart -@@ -30,6 +30,7 @@ enum Artifact { - /// The tool which compiles a dart kernel file into native code. - genSnapshot, - genSnapshotArm64, -+ genSnapshotRiscv64, - genSnapshotX64, - - /// The flutter tester binary. -@@ -155,6 +156,7 @@ TargetPlatform? _mapTargetPlatform(TargetPlatform? targetPlatform) { - case TargetPlatform.darwin: - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: - case TargetPlatform.fuchsia_arm64: -@@ -177,6 +179,8 @@ String? _artifactToFileName(Artifact artifact, Platform hostPlatform, [BuildMode - return 'gen_snapshot'; - case Artifact.genSnapshotArm64: - return 'gen_snapshot_arm64'; -+ case Artifact.genSnapshotRiscv64: -+ return 'gen_snapshot_riscv64'; - case Artifact.genSnapshotX64: - return 'gen_snapshot_x64'; - case Artifact.flutterTester: -@@ -519,6 +523,7 @@ class CachedArtifacts implements Artifacts { - case TargetPlatform.darwin: - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: - return _getDesktopArtifactPath(artifact, platform!, mode); -@@ -550,6 +555,7 @@ class CachedArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - return _fileSystem.path.join(engineDir, _artifactToFileName(artifact, _platform)); - case Artifact.engineDartSdkPath: -@@ -590,6 +596,7 @@ class CachedArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - assert(mode != BuildMode.debug, 'Artifact $artifact only available in non-debug mode.'); - -@@ -647,6 +654,7 @@ class CachedArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - case Artifact.flutterXcframework: - final String artifactFileName = _artifactToFileName(artifact, _platform)!; -@@ -699,6 +707,7 @@ class CachedArtifacts implements Artifacts { - final genSnapshot = mode.isRelease ? 'gen_snapshot_product' : 'gen_snapshot'; - return _fileSystem.path.join(root, runtime, 'dart_binaries', genSnapshot); - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - throw ArgumentError('$artifact is not available on this platform'); - case Artifact.flutterPatchedSdkPath: -@@ -757,6 +766,7 @@ class CachedArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - // For script snapshots any gen_snapshot binary will do. Returning gen_snapshot for - // android_arm in profile mode because it is available on all supported host platforms. -@@ -878,6 +888,7 @@ class CachedArtifacts implements Artifacts { - switch (platform) { - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.darwin: - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: -@@ -919,9 +930,11 @@ TargetPlatform _currentHostPlatform(Platform platform, OperatingSystemUtils oper - return TargetPlatform.darwin; - } - if (platform.isLinux) { -- return operatingSystemUtils.hostPlatform == HostPlatform.linux_x64 -- ? TargetPlatform.linux_x64 -- : TargetPlatform.linux_arm64; -+ return switch (operatingSystemUtils.hostPlatform) { -+ HostPlatform.linux_x64 => TargetPlatform.linux_x64, -+ HostPlatform.linux_riscv64 => TargetPlatform.linux_riscv64, -+ _ => TargetPlatform.linux_arm64, -+ }; - } - if (platform.isWindows) { - return operatingSystemUtils.hostPlatform == HostPlatform.windows_arm64 -@@ -1197,6 +1210,7 @@ class CachedLocalEngineArtifacts implements Artifacts { - switch (artifact) { - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - return _genSnapshotPath(artifact); - case Artifact.flutterTester: -@@ -1338,6 +1352,8 @@ class CachedLocalEngineArtifacts implements Artifacts { - switch (hostPlatform) { - case TargetPlatform.darwin: - return 'macos-x64'; -+ case TargetPlatform.linux_riscv64: -+ return 'linux-riscv64'; - case TargetPlatform.linux_arm64: - return 'linux-arm64'; - case TargetPlatform.linux_x64: -@@ -1373,6 +1389,7 @@ class CachedLocalEngineArtifacts implements Artifacts { - 'clang_x86', - 'clang_i386', - 'clang_arm64', -+ 'clang_riscv64', - ]; - final String genSnapshotName = _artifactToFileName(artifact, _platform)!; - for (final clangDir in clangDirs) { -@@ -1445,6 +1462,7 @@ class CachedLocalWebSdkArtifacts implements Artifacts { - ); - case Artifact.genSnapshot: - case Artifact.genSnapshotArm64: -+ case Artifact.genSnapshotRiscv64: - case Artifact.genSnapshotX64: - case Artifact.flutterTester: - case Artifact.flutterFramework: -@@ -1570,6 +1588,8 @@ class CachedLocalWebSdkArtifacts implements Artifacts { - return 'macos-x64'; - case TargetPlatform.linux_arm64: - return 'linux-arm64'; -+ case TargetPlatform.linux_riscv64: -+ return 'linux-riscv64'; - case TargetPlatform.linux_x64: - return 'linux-x64'; - case TargetPlatform.windows_x64: -diff --git a/packages/flutter_tools/lib/src/base/build.dart b/packages/flutter_tools/lib/src/base/build.dart -index bb967d7111b..c98c7c62500 100644 ---- a/packages/flutter_tools/lib/src/base/build.dart -+++ b/packages/flutter_tools/lib/src/base/build.dart -@@ -354,6 +354,7 @@ class AOTSnapshotter { - TargetPlatform.darwin, - TargetPlatform.linux_x64, - TargetPlatform.linux_arm64, -+ TargetPlatform.linux_riscv64, - TargetPlatform.windows_x64, - TargetPlatform.windows_arm64, - ].contains(platform); -diff --git a/packages/flutter_tools/lib/src/base/os.dart b/packages/flutter_tools/lib/src/base/os.dart -index 5b499fef54f..297bf10159c 100644 ---- a/packages/flutter_tools/lib/src/base/os.dart -+++ b/packages/flutter_tools/lib/src/base/os.dart -@@ -279,6 +279,8 @@ class _PosixUtils extends OperatingSystemUtils { - ); - } else if (hostPlatformCheck.stdout.trim().endsWith('x86_64')) { - _hostPlatform = HostPlatform.linux_x64; -+ } else if (hostPlatformCheck.stdout.trim().endsWith('riscv64')) { -+ _hostPlatform = HostPlatform.linux_riscv64; - } else { - // We default to ARM if it's not x86_64 and we did not get an error. - _hostPlatform = HostPlatform.linux_arm64; -@@ -611,6 +613,7 @@ enum HostPlatform { - darwin_arm64, - linux_x64, - linux_arm64, -+ linux_riscv64, - windows_x64, - windows_arm64; - -@@ -619,6 +622,7 @@ enum HostPlatform { - HostPlatform.darwin_arm64 => 'arm64', - HostPlatform.linux_x64 => 'x64', - HostPlatform.linux_arm64 => 'arm64', -+ HostPlatform.linux_riscv64 => 'riscv64', - HostPlatform.windows_x64 => 'x64', - HostPlatform.windows_arm64 => 'arm64', - }; -@@ -630,6 +634,7 @@ String getNameForHostPlatform(HostPlatform platform) { - HostPlatform.darwin_arm64 => 'darwin-arm64', - HostPlatform.linux_x64 => 'linux-x64', - HostPlatform.linux_arm64 => 'linux-arm64', -+ HostPlatform.linux_riscv64 => 'linux-riscv64', - HostPlatform.windows_x64 => 'windows-x64', - HostPlatform.windows_arm64 => 'windows-arm64', - }; -diff --git a/packages/flutter_tools/lib/src/build_info.dart b/packages/flutter_tools/lib/src/build_info.dart -index 6867be4c62a..26bd76d28b1 100644 ---- a/packages/flutter_tools/lib/src/build_info.dart -+++ b/packages/flutter_tools/lib/src/build_info.dart -@@ -582,6 +582,7 @@ enum TargetPlatform { - darwin, - linux_x64, - linux_arm64, -+ linux_riscv64, - windows_x64, - windows_arm64, - fuchsia_arm64, -@@ -610,6 +611,7 @@ enum TargetPlatform { - case TargetPlatform.darwin: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -@@ -624,6 +626,7 @@ enum TargetPlatform { - switch (this) { - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - return 'linux'; - case TargetPlatform.darwin: - return 'macos'; -@@ -658,6 +661,8 @@ enum TargetPlatform { - case TargetPlatform.linux_arm64: - case TargetPlatform.windows_arm64: - return 'arm64'; -+ case TargetPlatform.linux_riscv64: -+ return 'riscv64'; - case TargetPlatform.android: - case TargetPlatform.android_arm: - case TargetPlatform.android_arm64: -@@ -792,6 +797,7 @@ String getNameForTargetPlatform(TargetPlatform platform, {DarwinArch? darwinArch - TargetPlatform.android_x64 => 'android-x64', - TargetPlatform.linux_x64 => 'linux-x64', - TargetPlatform.linux_arm64 => 'linux-arm64', -+ TargetPlatform.linux_riscv64 => 'linux-riscv64', - TargetPlatform.windows_x64 => 'windows-x64', - TargetPlatform.windows_arm64 => 'windows-arm64', - TargetPlatform.fuchsia_arm64 => 'fuchsia-arm64', -@@ -817,6 +823,7 @@ TargetPlatform getTargetPlatformForName(String platform) { - 'darwin' || 'darwin-x64' || 'darwin-arm64' => TargetPlatform.darwin, - 'linux-x64' => TargetPlatform.linux_x64, - 'linux-arm64' => TargetPlatform.linux_arm64, -+ 'linux-riscv64' => TargetPlatform.linux_riscv64, - 'windows-x64' => TargetPlatform.windows_x64, - 'windows-arm64' => TargetPlatform.windows_arm64, - 'web-javascript' => TargetPlatform.web_javascript, -diff --git a/packages/flutter_tools/lib/src/build_system/targets/common.dart b/packages/flutter_tools/lib/src/build_system/targets/common.dart -index 63eb1c736e8..f4695404411 100644 ---- a/packages/flutter_tools/lib/src/build_system/targets/common.dart -+++ b/packages/flutter_tools/lib/src/build_system/targets/common.dart -@@ -228,6 +228,7 @@ class KernelSnapshot extends Target { - case TargetPlatform.fuchsia_x64: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: - forceLinkPlatform = false; -@@ -243,7 +244,9 @@ class KernelSnapshot extends Target { - TargetPlatform.android_x64 => 'android', - TargetPlatform.darwin => 'macos', - TargetPlatform.ios => 'ios', -- TargetPlatform.linux_arm64 || TargetPlatform.linux_x64 => 'linux', -+ TargetPlatform.linux_arm64 || -+ TargetPlatform.linux_riscv64 || -+ TargetPlatform.linux_x64 => 'linux', - TargetPlatform.windows_arm64 || TargetPlatform.windows_x64 => 'windows', - TargetPlatform.tester || TargetPlatform.web_javascript => null, - TargetPlatform.unsupported => TargetPlatform.throwUnsupportedTarget(), -diff --git a/packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart b/packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart -index db28675db2d..c2f8820945c 100644 ---- a/packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart -+++ b/packages/flutter_tools/lib/src/build_system/tools/shader_compiler.dart -@@ -112,6 +112,7 @@ class ShaderCompiler { - case TargetPlatform.android: - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: - return [ -diff --git a/packages/flutter_tools/lib/src/commands/assemble.dart b/packages/flutter_tools/lib/src/commands/assemble.dart -index 564aa971a1a..70f428c5d5b 100644 ---- a/packages/flutter_tools/lib/src/commands/assemble.dart -+++ b/packages/flutter_tools/lib/src/commands/assemble.dart -@@ -46,10 +46,13 @@ var _kDefaultTargets = [ - // Linux targets - const DebugBundleLinuxAssets(TargetPlatform.linux_x64), - const DebugBundleLinuxAssets(TargetPlatform.linux_arm64), -+ const DebugBundleLinuxAssets(TargetPlatform.linux_riscv64), - const ProfileBundleLinuxAssets(TargetPlatform.linux_x64), - const ProfileBundleLinuxAssets(TargetPlatform.linux_arm64), -+ const ProfileBundleLinuxAssets(TargetPlatform.linux_riscv64), - const ReleaseBundleLinuxAssets(TargetPlatform.linux_x64), - const ReleaseBundleLinuxAssets(TargetPlatform.linux_arm64), -+ const ReleaseBundleLinuxAssets(TargetPlatform.linux_riscv64), - const ReleaseAndroidApplication(), - // This is a one-off rule for bundle and aot compat. - const CopyFlutterBundle(), -diff --git a/packages/flutter_tools/lib/src/commands/build_bundle.dart b/packages/flutter_tools/lib/src/commands/build_bundle.dart -index 927edb22877..06d0ef67a76 100644 ---- a/packages/flutter_tools/lib/src/commands/build_bundle.dart -+++ b/packages/flutter_tools/lib/src/commands/build_bundle.dart -@@ -46,6 +46,7 @@ class BuildBundleCommand extends BuildSubCommand { - 'darwin', - 'linux-x64', - 'linux-arm64', -+ 'linux-riscv64', - 'windows-x64', - 'windows-arm64', - ], -@@ -122,6 +123,7 @@ class BuildBundleCommand extends BuildSubCommand { - } - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - if (!featureFlags.isLinuxEnabled) { - throwToolExit('Linux is not a supported target platform.'); - } -diff --git a/packages/flutter_tools/lib/src/commands/build_linux.dart b/packages/flutter_tools/lib/src/commands/build_linux.dart -index 832be184a32..f948f87f0aa 100644 ---- a/packages/flutter_tools/lib/src/commands/build_linux.dart -+++ b/packages/flutter_tools/lib/src/commands/build_linux.dart -@@ -23,13 +23,15 @@ class BuildLinuxCommand extends BuildSubCommand { - }) : _operatingSystemUtils = operatingSystemUtils, - super(verboseHelp: verboseHelp) { - addCommonDesktopBuildOptions(verboseHelp: verboseHelp); -- final defaultTargetPlatform = (_operatingSystemUtils.hostPlatform == HostPlatform.linux_arm64) -- ? 'linux-arm64' -- : 'linux-x64'; -+ final String defaultTargetPlatform = switch (_operatingSystemUtils.hostPlatform) { -+ HostPlatform.linux_arm64 => 'linux-arm64', -+ HostPlatform.linux_riscv64 => 'linux-riscv64', -+ _ => 'linux-x64', -+ }; - argParser.addOption( - 'target-platform', - defaultsTo: defaultTargetPlatform, -- allowed: ['linux-arm64', 'linux-x64'], -+ allowed: ['linux-arm64', 'linux-x64', 'linux-riscv64'], - help: 'The target platform for which the app is compiled.', - ); - argParser.addOption( -@@ -79,9 +81,8 @@ class BuildLinuxCommand extends BuildSubCommand { - if (!globals.platform.isLinux) { - throwToolExit('"build linux" only supported on Linux hosts.'); - } -- // Cross-building for x64 targets on arm64 hosts is not supported. -- if (_operatingSystemUtils.hostPlatform != HostPlatform.linux_x64 && -- targetPlatform != TargetPlatform.linux_arm64) { -+ // Cross-building is only supported on x64 hosts -+ if (_operatingSystemUtils.hostPlatform != HostPlatform.linux_x64 && needCrossBuild) { - throwToolExit('"cross-building" only supported on Linux x64 hosts.'); - } - // TODO(fujino): https://github.com/flutter/flutter/issues/74929 -@@ -91,6 +92,14 @@ class BuildLinuxCommand extends BuildSubCommand { - 'Cross-build from Linux x64 host to Linux arm64 target is not currently supported.', - ); - } -+ // Building for riscv64 (on a non-riscv64 host) is experimental -+ if (_operatingSystemUtils.hostPlatform != HostPlatform.linux_riscv64 && -+ targetPlatform == TargetPlatform.linux_riscv64 && -+ !featureFlags.isRiscv64SupportEnabled) { -+ throwToolExit( -+ 'Building for Linux riscv64 is currently an experimental feature. To enable, run "flutter config --enable-riscv64"', -+ ); -+ } - final Logger logger = globals.logger; - await buildLinux( - project.linux, -diff --git a/packages/flutter_tools/lib/src/features.dart b/packages/flutter_tools/lib/src/features.dart -index 724fcc4c9d4..2ee6cd6b7ed 100644 ---- a/packages/flutter_tools/lib/src/features.dart -+++ b/packages/flutter_tools/lib/src/features.dart -@@ -76,6 +76,9 @@ abstract class FeatureFlags { - /// Whether UIScene migration is enabled. - bool get isUISceneMigrationEnabled; - -+ /// Wether riscv64 support is enabled. -+ bool get isRiscv64SupportEnabled; -+ - /// Whether a particular feature is enabled for the current channel. - /// - /// Prefer using one of the specific getters above instead of this API. -@@ -99,6 +102,7 @@ abstract class FeatureFlags { - windowingFeature, - lldbDebugging, - uiSceneMigration, -+ riscv64, - ]; - - /// All current Flutter feature flags that can be configured. -@@ -268,6 +272,16 @@ const uiSceneMigration = Feature( - stable: FeatureChannelSetting(available: true, enabledByDefault: true), - ); - -+/// The [Feature] for building code targetting riscv64 architecture -+const riscv64 = Feature( -+ name: 'support for riscv64 architecture', -+ configSetting: 'enable-riscv64', -+ environmentOverride: 'FLUTTER_RISCV64', -+ master: FeatureChannelSetting(available: true, enabledByDefault: true), -+ beta: FeatureChannelSetting(available: true), -+ stable: FeatureChannelSetting(available: true), -+); -+ - /// A [Feature] is a process for conditionally enabling tool features. - /// - /// All settings are optional, and if not provided will generally default to -diff --git a/packages/flutter_tools/lib/src/flutter_application_package.dart b/packages/flutter_tools/lib/src/flutter_application_package.dart -index 75eaeea481e..c61de499a28 100644 ---- a/packages/flutter_tools/lib/src/flutter_application_package.dart -+++ b/packages/flutter_tools/lib/src/flutter_application_package.dart -@@ -91,6 +91,7 @@ class FlutterApplicationPackageFactory extends ApplicationPackageFactory { - return WebApplicationPackage(FlutterProject.current()); - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - return applicationBinary == null - ? LinuxApp.fromLinuxProject(FlutterProject.current().linux) - : LinuxApp.fromPrebuiltApp(applicationBinary); -diff --git a/packages/flutter_tools/lib/src/flutter_cache.dart b/packages/flutter_tools/lib/src/flutter_cache.dart -index 31f5fbc825a..46b8eb48b23 100644 ---- a/packages/flutter_tools/lib/src/flutter_cache.dart -+++ b/packages/flutter_tools/lib/src/flutter_cache.dart -@@ -683,6 +683,7 @@ class FlutterRunnerDebugSymbols extends CachedArtifact { - } - await _downloadDebugSymbols('x64', artifactUpdater); - await _downloadDebugSymbols('arm64', artifactUpdater); -+ await _downloadDebugSymbols('riscv64', artifactUpdater); - } - } - -diff --git a/packages/flutter_tools/lib/src/flutter_features.dart b/packages/flutter_tools/lib/src/flutter_features.dart -index c1102780346..ee7fb68b6ab 100644 ---- a/packages/flutter_tools/lib/src/flutter_features.dart -+++ b/packages/flutter_tools/lib/src/flutter_features.dart -@@ -66,6 +66,9 @@ mixin FlutterFeatureFlagsIsEnabled implements FeatureFlags { - - @override - bool get isUISceneMigrationEnabled => isEnabled(uiSceneMigration); -+ -+ @override -+ bool get isRiscv64SupportEnabled => isEnabled(riscv64); - } - - interface class FlutterFeatureFlags extends FeatureFlags with FlutterFeatureFlagsIsEnabled { -diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart -index 1ed907c050a..86d0010f495 100644 ---- a/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart -+++ b/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart -@@ -666,6 +666,7 @@ OS getNativeOSFromTargetPlatform(TargetPlatform platform) { - return OS.macOS; - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - return OS.linux; - case TargetPlatform.windows_x64: - case TargetPlatform.windows_arm64: -diff --git a/packages/flutter_tools/lib/src/isolated/native_assets/targets.dart b/packages/flutter_tools/lib/src/isolated/native_assets/targets.dart -index cc0de9f2452..d036e29a352 100644 ---- a/packages/flutter_tools/lib/src/isolated/native_assets/targets.dart -+++ b/packages/flutter_tools/lib/src/isolated/native_assets/targets.dart -@@ -69,6 +69,8 @@ sealed class AssetBuildTarget { - return _linuxTarget(supportedAssetTypes, Architecture.x64); - case TargetPlatform.linux_arm64: - return _linuxTarget(supportedAssetTypes, Architecture.arm64); -+ case TargetPlatform.linux_riscv64: -+ return _linuxTarget(supportedAssetTypes, Architecture.riscv64); - case TargetPlatform.windows_arm64: - return _windowsTarget(supportedAssetTypes, Architecture.arm64); - case TargetPlatform.darwin: -@@ -402,6 +404,7 @@ List _androidArchs(TargetPlatform targetPlatform, String? androidAr - case TargetPlatform.fuchsia_x64: - case TargetPlatform.ios: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -diff --git a/packages/flutter_tools/lib/src/linux/build_linux.dart b/packages/flutter_tools/lib/src/linux/build_linux.dart -index 6525bb9e61d..aa86e904948 100644 ---- a/packages/flutter_tools/lib/src/linux/build_linux.dart -+++ b/packages/flutter_tools/lib/src/linux/build_linux.dart -@@ -163,6 +163,8 @@ Future _runCmake( - final String buildFlag = sentenceCase(buildModeName); - final bool needCrossBuildOptionsForArm64 = - needCrossBuild && targetPlatform == TargetPlatform.linux_arm64; -+ final bool needCrossBuildOptionsForRiscv64 = -+ needCrossBuild && targetPlatform == TargetPlatform.linux_riscv64; - int result; - if (!globals.processManager.canRun('cmake')) { - throwToolExit(globals.userMessages.cmakeMissing); -@@ -179,6 +181,9 @@ Future _runCmake( - if (needCrossBuild) '-DFLUTTER_TARGET_PLATFORM_SYSROOT=$targetSysroot', - if (needCrossBuildOptionsForArm64) '-DCMAKE_C_COMPILER_TARGET=aarch64-linux-gnu', - if (needCrossBuildOptionsForArm64) '-DCMAKE_CXX_COMPILER_TARGET=aarch64-linux-gnu', -+ // Support cross-building for riscv64 targets on x64 hosts. -+ if (needCrossBuildOptionsForRiscv64) '-DCMAKE_C_COMPILER_TARGET=riscv64-linux-gnu', -+ if (needCrossBuildOptionsForRiscv64) '-DCMAKE_CXX_COMPILER_TARGET=riscv64-linux-gnu', - sourceDir.path, - ], - workingDirectory: buildDir.path, -diff --git a/packages/flutter_tools/lib/src/linux/linux_device.dart b/packages/flutter_tools/lib/src/linux/linux_device.dart -index 3f113c97f00..4bf5ed7908c 100644 ---- a/packages/flutter_tools/lib/src/linux/linux_device.dart -+++ b/packages/flutter_tools/lib/src/linux/linux_device.dart -@@ -49,6 +49,8 @@ class LinuxDevice extends DesktopDevice { - late final Future targetPlatform = () async { - if (_operatingSystemUtils.hostPlatform == HostPlatform.linux_x64) { - return TargetPlatform.linux_x64; -+ } else if (_operatingSystemUtils.hostPlatform == HostPlatform.linux_riscv64) { -+ return TargetPlatform.linux_riscv64; - } - return TargetPlatform.linux_arm64; - }(); -diff --git a/packages/flutter_tools/lib/src/mdns_discovery.dart b/packages/flutter_tools/lib/src/mdns_discovery.dart -index b21795ddb3e..0840c95b637 100644 ---- a/packages/flutter_tools/lib/src/mdns_discovery.dart -+++ b/packages/flutter_tools/lib/src/mdns_discovery.dart -@@ -599,6 +599,7 @@ class MDnsVmServiceDiscovery { - case TargetPlatform.fuchsia_arm64: - case TargetPlatform.fuchsia_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -diff --git a/packages/flutter_tools/lib/src/resident_runner.dart b/packages/flutter_tools/lib/src/resident_runner.dart -index 8f22a8cbcc0..acd00578d8e 100644 ---- a/packages/flutter_tools/lib/src/resident_runner.dart -+++ b/packages/flutter_tools/lib/src/resident_runner.dart -@@ -1612,6 +1612,7 @@ Future getMissingPackageHintForPlatform(TargetPlatform platform) async - case TargetPlatform.fuchsia_arm64: - case TargetPlatform.fuchsia_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - case TargetPlatform.linux_x64: - case TargetPlatform.tester: - case TargetPlatform.web_javascript: -diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart -index 452ab9d2a4e..22315800332 100644 ---- a/packages/flutter_tools/lib/src/runner/flutter_command.dart -+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart -@@ -2143,6 +2143,7 @@ DevelopmentArtifact? artifactFromTargetPlatform(TargetPlatform targetPlatform) { - return null; - case TargetPlatform.linux_x64: - case TargetPlatform.linux_arm64: -+ case TargetPlatform.linux_riscv64: - if (featureFlags.isLinuxEnabled) { - return DevelopmentArtifact.linux; - } -diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart -index b625816f366..11a7003a35c 100644 ---- a/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart -+++ b/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart -@@ -90,6 +90,7 @@ void main() { - 'darwin-x64': false, - 'linux-x64': false, - 'linux-arm64': false, -+ 'linux-riscv64': false, - 'windows-x64': false, - 'web-javascript': true, - 'ios': false, -diff --git a/packages/flutter_tools/test/general.shard/cache_test.dart b/packages/flutter_tools/test/general.shard/cache_test.dart -index 4a6152961b8..922b1ff9227 100644 ---- a/packages/flutter_tools/test/general.shard/cache_test.dart -+++ b/packages/flutter_tools/test/general.shard/cache_test.dart -@@ -574,6 +574,7 @@ void main() { - expect(packageResolver.resolved, >[ - ['fuchsia-debug-symbols-x64', '123456'], - ['fuchsia-debug-symbols-arm64', '123456'], -+ ['fuchsia-debug-symbols-riscv64', '123456'], - ]); - }); - -diff --git a/packages/flutter_tools/test/general.shard/flutter_validator_test.dart b/packages/flutter_tools/test/general.shard/flutter_validator_test.dart -index 050bd3d6c6d..f0a864f0424 100644 ---- a/packages/flutter_tools/test/general.shard/flutter_validator_test.dart -+++ b/packages/flutter_tools/test/general.shard/flutter_validator_test.dart -@@ -824,6 +824,9 @@ class FakeFlutterFeatures extends FeatureFlags { - @override - bool get isUISceneMigrationEnabled => _enabled; - -+ @override -+ bool get isRiscv64SupportEnabled => _enabled; -+ - @override - final List allFeatures; - -diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart -index 78ae4ba3642..b0ce67771a4 100644 ---- a/packages/flutter_tools/test/src/fakes.dart -+++ b/packages/flutter_tools/test/src/fakes.dart -@@ -532,6 +532,7 @@ class TestFeatureFlags implements FeatureFlags { - this.isWindowingEnabled = false, - this.isLLDBDebuggingEnabled = false, - this.isUISceneMigrationEnabled = false, -+ this.isRiscv64SupportEnabled = false, - }); - - @override -@@ -582,6 +583,9 @@ class TestFeatureFlags implements FeatureFlags { - @override - final bool isUISceneMigrationEnabled; - -+ @override -+ final bool isRiscv64SupportEnabled; -+ - @override - bool isEnabled(Feature feature) { - return switch (feature) { -@@ -600,6 +604,7 @@ class TestFeatureFlags implements FeatureFlags { - windowingFeature => isWindowingEnabled, - lldbDebugging => isLLDBDebuggingEnabled, - uiSceneMigration => isUISceneMigrationEnabled, -+ riscv64 => isRiscv64SupportEnabled, - _ => false, - }; - } -@@ -622,6 +627,7 @@ class TestFeatureFlags implements FeatureFlags { - windowingFeature, - lldbDebugging, - uiSceneMigration, -+ riscv64, - ]; - - @override