diff options
-rwxr-xr-x | build.sh | 5 | ||||
-rw-r--r-- | buildpipeline/pipelines.json | 4 | ||||
-rw-r--r-- | dir.props | 2 | ||||
-rwxr-xr-x | src/pal/tools/gen-buildsys-clang.sh | 2 | ||||
-rw-r--r-- | src/tools/crossgen/crossgen.cpp | 4 |
5 files changed, 12 insertions, 5 deletions
@@ -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", @@ -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) { |