Add target-compiler-triple option (#88)

This commit is contained in:
Hidenori Matsubayashi
2022-04-07 16:35:28 +09:00
committed by GitHub
parent fc4efe0ac2
commit 7fd1502d58
4 changed files with 18 additions and 6 deletions
+9 -1
View File
@@ -38,7 +38,7 @@ class BuildPackageCommand extends BuildSubCommand
'target-arch',
defaultsTo: _getCurrentHostPlatformArchName(),
allowed: <String>['x64', 'arm64'],
help: 'Target architecture for which the the app is compiled',
help: 'Target architecture for which the app is compiled',
);
argParser.addOption(
'target-backend-type',
@@ -46,6 +46,13 @@ class BuildPackageCommand extends BuildSubCommand
allowed: <String>['wayland', 'gbm', 'eglstream', 'x11'],
help: 'Target backend type that the app will run on devices.',
);
argParser.addOption(
'target-compiler-triple',
defaultsTo: 'aarch64-linux-gnu',
help: 'Target compiler triple for which the app is compiled. '
'This option is used only if the target architectures is '
'arm64 (for cross-building for x64 on arm64).',
);
argParser.addOption(
'target-sysroot',
defaultsTo: '/',
@@ -105,6 +112,7 @@ class BuildPackageCommand extends BuildSubCommand
final ELinuxBuildInfo eLinuxBuildInfo = ELinuxBuildInfo(buildInfo,
targetArch: targetArch,
targetBackendType: stringArg('target-backend-type'),
targetCompilerTriple: stringArg('target-compiler-triple'),
targetSysroot: stringArg('target-sysroot'),
systemIncludeDirectories: stringArg('system-include-directories'));
validateBuild(eLinuxBuildInfo);
+5 -4
View File
@@ -353,6 +353,7 @@ class NativeBundle {
final String cmakeBuildType = buildMode.isPrecompiled ? 'Release' : 'Debug';
final String targetArch = buildInfo.targetArch;
final String hostArch = _getCurrentHostPlatformArchName();
final String targetCompilerTriple = buildInfo.targetCompilerTriple;
final String targetSysroot = buildInfo.targetSysroot;
final String systemIncludeDirectories = buildInfo.systemIncludeDirectories;
final bool needCrossBuild = targetArch != hostArch;
@@ -365,10 +366,10 @@ class NativeBundle {
if (needCrossBuild) '-DFLUTTER_TARGET_PLATFORM_SYSROOT=$targetSysroot',
if (needCrossBuild && systemIncludeDirectories != null)
'-DFLUTTER_SYSTEM_INCLUDE_DIRECTORIES=$systemIncludeDirectories',
if (needCrossBuildOptionsForArm64)
'-DCMAKE_C_COMPILER_TARGET=aarch64-linux-gnu',
if (needCrossBuildOptionsForArm64)
'-DCMAKE_CXX_COMPILER_TARGET=aarch64-linux-gnu',
if (needCrossBuildOptionsForArm64 && targetCompilerTriple != null)
'-DCMAKE_C_COMPILER_TARGET=$targetCompilerTriple',
if (needCrossBuildOptionsForArm64 && targetCompilerTriple != null)
'-DCMAKE_CXX_COMPILER_TARGET=$targetCompilerTriple',
eLinuxDir.path,
],
workingDirectory: outputDir.path,
+2
View File
@@ -35,6 +35,7 @@ class ELinuxBuildInfo {
this.buildInfo, {
@required this.targetArch,
@required this.targetBackendType,
@required this.targetCompilerTriple,
@required this.targetSysroot,
@required this.systemIncludeDirectories,
}) : assert(targetArch != null),
@@ -43,6 +44,7 @@ class ELinuxBuildInfo {
final BuildInfo buildInfo;
final String targetArch;
final String targetBackendType;
final String targetCompilerTriple;
final String targetSysroot;
final String systemIncludeDirectories;
}
+2 -1
View File
@@ -291,12 +291,13 @@ class ELinuxDevice extends Device {
BuildInfo buildInfo,
}) async {
final FlutterProject project = FlutterProject.current();
// TODO(hidenori): change the fixed values (|targetSysroot| and |systemIncludeDirectories|)
// TODO(hidenori): change the fixed values (|targetSysroot|, |systemIncludeDirectories| and |targetCompilerTriple|)
// to the values from user-specified custom-devices feilds.
final ELinuxBuildInfo eLinuxBuildInfo = ELinuxBuildInfo(
buildInfo,
targetArch: _targetArch,
targetBackendType: _backendType,
targetCompilerTriple: null,
targetSysroot: '/',
systemIncludeDirectories: null,
);