Skip to content

Commit

Permalink
Produce LLVM packages for Apple Silicon (#99)
Browse files Browse the repository at this point in the history
Produce LLVM packages for Apple Silicon
  • Loading branch information
directhex authored Mar 5, 2021
1 parent 380f746 commit f2a7fc3
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 9 deletions.
15 changes: 14 additions & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,14 @@ stages:
vmImageName: macOS-10.15
assetManifestOS: osx
assetManifestPlatform: x64
archflag: --arch x64
LLVMTableGenArg:
arm64:
vmImageName: macOS-10.15
assetManifestOS: osx
assetManifestPlatform: arm64
archflag: --arch arm64
LLVMTableGenArg: /p:LLVMTableGenPath=$(Build.SourcesDirectory)/artifacts/obj/BuildRoot-x64/bin/llvm-tblgen
pool:
vmImage: $(vmImageName)
steps:
Expand All @@ -94,7 +102,12 @@ stages:
displayName: 'Clean up working directory'
- bash: |
./build.sh --ci --restore --build --pack --configuration $(_BuildConfig) $(_InternalBuildArgs)
./build.sh --ci --restore --build --arch x64 -configuration $(_BuildConfig) $(_InternalBuildArgs) /p:BuildLLVMTableGenOnly=true
displayName: 'Build host llvm-tblgen for cross-compiling'
condition: and(succeeded(), ne(variables['assetManifestPlatform'], 'x64'))
- bash: |
./build.sh --ci --restore --build --pack $(archflag) --configuration $(_BuildConfig) $(_InternalBuildArgs) $(LLVMTableGenArg)
displayName: 'Build and package'
- bash:
Expand Down
16 changes: 10 additions & 6 deletions llvm.proj
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
<_LLVMBuildArgs Condition="'$(TargetArchitecture)' == 'arm' and '$(BuildOS)' == 'Windows_NT'" Include="-DLLVM_DEFAULT_TARGET_TRIPLE=arm-windows-msvc" />
<_LLVMBuildArgs Condition="'$(TargetArchitecture)' == 'arm64' and '$(BuildOS)' == 'Linux'" Include="-DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-gnu" />
<_LLVMBuildArgs Condition="'$(TargetArchitecture)' == 'arm' and '$(BuildOS)' == 'Linux'" Include="-DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf" />
<_LLVMBuildArgs Condition="'$(TargetArchitecture)' == 'arm64' and '$(BuildOS)' == 'OSX'" Include="-DLLVM_DEFAULT_TARGET_TRIPLE=arm64-apple-darwin" />
<_LLVMBuildArgs Condition="'$(TargetArchitecture)' == 'arm64' and '$(BuildOS)' == 'OSX'" Include="-DCMAKE_OSX_ARCHITECTURES=arm64"/>
<_LLVMBuildArgs Condition="'$(TargetArchitecture)' == 'arm' or '$(TargetArchitecture)' == 'arm64'" Include="-DCMAKE_CROSSCOMPILING:BOOL=ON" />
<_LLVMBuildArgs Condition="'$(LLVMTableGenPath)' != ''" Include='-DLLVM_TABLEGEN="$(LLVMTableGenPath)"' />
<_LLVMBuildArgs Include="-DCMAKE_BUILD_TYPE=Release" />
Expand All @@ -57,25 +59,27 @@
</ItemGroup>

<PropertyGroup Condition="'$(BuildOS)' != 'Windows_NT'">
<_CrossCFlags Condition="'$(TargetArchitecture)' == 'arm64'">--target=aarch64-linux-gnu --sysroot=$(ROOTFS_DIR)</_CrossCFlags>
<_CrossCFlags Condition="'$(TargetArchitecture)' == 'arm'">--target=arm-linux-gnueabihf --sysroot=$(ROOTFS_DIR)</_CrossCFlags>
<_CrossCFlags Condition="'$(BuildOS)' == 'Linux' and '$(TargetArchitecture)' == 'arm64'">--target=aarch64-linux-gnu --sysroot=$(ROOTFS_DIR)</_CrossCFlags>
<_CrossCFlags Condition="'$(BuildOS)' == 'Linux' and '$(TargetArchitecture)' == 'arm'">--target=arm-linux-gnueabihf --sysroot=$(ROOTFS_DIR)</_CrossCFlags>
<_CrossCFlags Condition="'$(BuildOS)' == 'OSX' and '$(TargetArchitecture)' == 'arm64'">--target=aarch64-apple-darwin</_CrossCFlags>
<_ExeLinkerFlags>$(_CrossCFlags)</_ExeLinkerFlags>
<_ExeLinkerFlags Condition="'$(BuildOS)' == 'Linux'">-Wl,--build-id $(_ExeLinkerFlags)</_ExeLinkerFlags>
</PropertyGroup>

<ItemGroup Condition="'$(BuildOS)' != 'Windows_NT' and ('$(TargetArchitecture)' == 'arm' or '$(TargetArchitecture)' == 'arm64')">
<_LLVMBuildArgs Include='-DCMAKE_MODULE_LINKER_FLAGS="$(_CrossCFlags)"' />
<_LLVMBuildArgs Include='-DCMAKE_SHARED_LINKER_FLAGS="$(_CrossCFlags)"' />
<_LLVMBuildArgs Condition="'$(LLVMTableGenPath)' == ''" Include='-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-9"' />
<_LLVMBuildArgs Include="-DCMAKE_C_COMPILER=clang-9" />
<_LLVMBuildArgs Include="-DCMAKE_CXX_COMPILER=clang++-9" />
<_LLVMBuildArgs Condition="'$(BuildOS)' == 'Linux' and '$(LLVMTableGenPath)' == ''" Include='-DLLVM_TABLEGEN="/usr/bin/llvm-tblgen-9"' />
<_LLVMBuildArgs Condition="'$(BuildOS)' == 'Linux'" Include="-DCMAKE_C_COMPILER=clang-9" />
<_LLVMBuildArgs Condition="'$(BuildOS)' == 'Linux'" Include="-DCMAKE_CXX_COMPILER=clang++-9" />
</ItemGroup>

<ItemGroup Condition="'$(BuildOS)' != 'Windows_NT'">
<_LLVMBuildArgs Include='-DCMAKE_C_FLAGS="-I../llvm/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DNDEBUG -D__NO_CTYPE_INLINE -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS $(_CrossCFlags)"' />
<_LLVMBuildArgs Include='-DCMAKE_CXX_FLAGS="-I../llvm/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DNDEBUG -D__NO_CTYPE_INLINE -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS $(_CrossCFlags) "' />
<_LLVMBuildArgs Include='-DCMAKE_EXE_LINKER_FLAGS="$(_ExeLinkerFlags)"' />
<_LLVMBuildArgs Condition="'$(BuildOS)' == 'OSX'" Include='-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13' />
<_LLVMBuildArgs Condition="'$(BuildOS)' == 'OSX' and '$(TargetArchitecture)' == 'arm64'" Include='-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0' />
<_LLVMBuildArgs Condition="'$(BuildOS)' == 'OSX' and '$(TargetArchitecture)' == 'x64'" Include='-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13' />
</ItemGroup>

<Target Name="_LLVMBeforeBuild">
Expand Down
6 changes: 4 additions & 2 deletions nuget/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@

<!-- Distro rid is passed as runtimeos-arch-->
<_parseDistroRid>$(__DistroRid)</_parseDistroRid>
<_parseDistroRid Condition="'$(_parseDistroRid)' == '' and '$(__BuildOS)' == 'OSX'">osx.10.12-x64</_parseDistroRid>
<_parseDistroRid Condition="'$(_parseDistroRid)' == '' and '$(__BuildOS)' == 'OSX' and '$(Platform)' == 'arm64'">osx.11.0-arm64</_parseDistroRid>
<_parseDistroRid Condition="'$(_parseDistroRid)' == '' and '$(__BuildOS)' == 'OSX' and '$(Platform)' != 'arm64'">osx.10.12-x64</_parseDistroRid>
<_distroRidIndex>$(_parseDistroRid.IndexOfAny("-"))</_distroRidIndex>
<_archRidIndex>$([MSBuild]::Add($(_distroRidIndex), 1))</_archRidIndex>
<OSRid Condition="'$(OSRid)' == '' and '$(_distroRidIndex)' != '-1'">$(_parseDistroRid.SubString(0, $(_distroRidIndex)))</OSRid>
Expand Down Expand Up @@ -78,7 +79,8 @@
</When>
<When Condition="'$(_runtimeOSFamily)' == 'osx'">
<PropertyGroup>
<PackageRID>osx.10.12-$(ArchGroup)</PackageRID>
<PackageRID Condition="'$(ArchGroup)' != 'arm64'">osx.10.12-$(ArchGroup)</PackageRID>
<PackageRID Condition="'$(ArchGroup)' == 'arm64'">osx.11.0-$(ArchGroup)</PackageRID>
<!-- Set the platform part of the RID if we are doing a portable build -->
<PackageRID Condition="'$(PortableBuild)' == 'true'">osx-$(ArchGroup)</PackageRID>
</PropertyGroup>
Expand Down

0 comments on commit f2a7fc3

Please sign in to comment.