summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild.sh5
-rw-r--r--buildpipeline/pipelines.json4
-rw-r--r--dir.props2
-rwxr-xr-xsrc/pal/tools/gen-buildsys-clang.sh2
-rw-r--r--src/tools/crossgen/crossgen.cpp4
5 files changed, 12 insertions, 5 deletions
diff --git a/build.sh b/build.sh
index 1cb0d7e0dc..d43a7908df 100755
--- a/build.sh
+++ b/build.sh
@@ -341,6 +341,9 @@ build_cross_arch_component()
if [ "$__HostArch" == "x64" ]; then
export CROSSCOMPILE=1
fi
+ elif [[ ("$__BuildArch" == "arm64") && "$__CrossArch" == "x64" ]]; then
+ export CROSSCOMPILE=0
+ __SkipCrossArchBuild=0
else
# not supported
return
@@ -471,6 +474,8 @@ build_CoreLib()
elif [ $__DoCrossArchBuild == 1 ]; then
if [[ ( "$__CrossArch" == "x86" ) && ( "$__BuildArch" == "arm" ) ]]; then
build_CoreLib_ni "$__CrossComponentBinDir/crossgen"
+ elif [[ ( "$__HostArch" == "x64" ) && ( "$__BuildArch" == "arm64" ) ]]; then
+ build_CoreLib_ni "$__CrossComponentBinDir/crossgen"
fi
fi
}
diff --git a/buildpipeline/pipelines.json b/buildpipeline/pipelines.json
index 94370eda93..4c7685941b 100644
--- a/buildpipeline/pipelines.json
+++ b/buildpipeline/pipelines.json
@@ -151,7 +151,9 @@
"Parameters": {
"DockerTag": "ubuntu-16.04-cross-arm64-a3ae44b-20180315221921",
"Architecture": "arm64",
- "Rid": "linux"
+ "Rid": "linux",
+ "CrossArchBuildArgs": "crosscomponent",
+ "CrossArchBuildPackagesArgs": "-__DoCrossArchBuild=1"
},
"ReportingParameters": {
"OperatingSystem": "Linux",
diff --git a/dir.props b/dir.props
index ff301845c6..1b3329f8e1 100644
--- a/dir.props
+++ b/dir.props
@@ -168,7 +168,7 @@
<!-- Define packaging attributes for cross target components -->
<HasCrossTargetComponents Condition="'$(TargetsWindows)' == 'true' and ('$(PackagePlatform)' =='arm64' or '$(PackagePlatform)' =='arm')">true</HasCrossTargetComponents>
- <HasCrossTargetComponents Condition="'$(TargetsLinux)' == 'true' and '$(PackagePlatform)' =='arm' and '$(__DoCrossArchBuild)' == '1'">true</HasCrossTargetComponents>
+ <HasCrossTargetComponents Condition="'$(TargetsLinux)' == 'true' and ('$(PackagePlatform)' =='arm64' or '$(PackagePlatform)' =='arm') and '$(__DoCrossArchBuild)' == '1'">true</HasCrossTargetComponents>
<CrossTargetComponentFolder Condition="'$(PackagePlatform)' == 'arm64'">x64</CrossTargetComponentFolder>
<CrossTargetComponentFolder Condition="'$(PackagePlatform)' == 'arm'">x86</CrossTargetComponentFolder>
diff --git a/src/pal/tools/gen-buildsys-clang.sh b/src/pal/tools/gen-buildsys-clang.sh
index 132be93c7d..776677acd2 100755
--- a/src/pal/tools/gen-buildsys-clang.sh
+++ b/src/pal/tools/gen-buildsys-clang.sh
@@ -129,7 +129,7 @@ fi
if [[ -n "$CROSSCOMPONENT" ]]; then
cmake_extra_defines="$cmake_extra_defines -DCLR_CROSS_COMPONENTS_BUILD=1"
fi
-if [[ -n "$CROSSCOMPILE" ]]; then
+if [ "$CROSSCOMPILE" == "1" ]; then
if ! [[ -n "$ROOTFS_DIR" ]]; then
echo "ROOTFS_DIR not set for crosscompile"
exit 1
diff --git a/src/tools/crossgen/crossgen.cpp b/src/tools/crossgen/crossgen.cpp
index 2c7f76e4f5..345de53d1b 100644
--- a/src/tools/crossgen/crossgen.cpp
+++ b/src/tools/crossgen/crossgen.cpp
@@ -834,10 +834,10 @@ int _cdecl wmain(int argc, __in_ecount(argc) WCHAR **argv)
bool fCompilingMscorlib = StringEndsWith((LPWSTR)pwzFilename, CoreLibName_IL_W);
// Disable fragile NGen when compiling Mscorlib for ARM.
-#ifndef _TARGET_ARM_
+#if !(defined(_TARGET_ARM_) || defined(_TARGET_ARM64_))
if (fCompilingMscorlib)
dwFlags &= ~NGENWORKER_FLAGS_READYTORUN;
-#endif // _TARGET_ARM_
+#endif // !(_TARGET_ARM_ || _TARGET_ARM64_)
if(pwzPlatformAssembliesPaths != nullptr)
{