8000 aarch64 distribution (#5) · awakecoding/llvm-prebuilt@ed1b728 · GitHub
[go: up one dir, main page]

Skip to content

Commit ed1b728

Browse files
awakecodingMarc-André Moreau
and
Marc-André Moreau
authored
aarch64 distribution (#5)
* add macOS ARM64 * fix * fix2 * fix fix * update * enable toolchain files * add multilib install * fix toolchain files * add libxml2-dev for arm64, add Windows ARM64 toolchain file * use more cmake toolchain files * update workflow * fix .exe extensions * update README * fix cmake toolchain files * set CMAKE_CROSSCOMPILING * update toolchain files * llvm-config Co-authored-by: Marc-André Moreau <mamoreau@devolutions.net>
1 parent ca85f39 commit ed1b728

9 files changed

+191
-37
lines changed

.github/workflows/llvm-prebuilt.yml

Lines changed: 64 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ jobs:
77
strategy:
88
fail-fast: false
99
matrix:
10-
arch: [ x86_64 ]
10+
arch: [ x86_64, aarch64 ]
1111
os: [ windows, macos, linux ]
12-
version: [ 12 ]
12+
version: [ 12.0.1 ]
1313

1414
include:
15-
- version: 12
15+
- version: 12.0.1
1616
branch: release/12.x
1717

1818
- os: windows
@@ -25,6 +25,19 @@ jobs:
2525
- arch: x86_64
2626
os: windows
2727
msvc: amd64
28+
- arch: aarch64
29+
os: windows
30+
msvc: amd64_arm64
31+
32+
- arch: x86_64
33+
os: macos
34+
osx_arch: x86_64
35+
- arch: aarch64
36+
os: macos
37+
osx_arch: arm64
38+
39+
- arch: aarch64
40+
os: linux
2841
steps:
2942
- name: Configure Windows runner
3043
if: runner.os == 'Windows'
@@ -33,22 +46,27 @@ jobs:
3346
3447
- name: Configure macOS runner
3548
if: runner.os == 'macOS'
36-
env:
37-
CMAKE_OSX_DEPLOYMENT_TARGET: "10.12"
3849
run: |
3950
brew install ninja
51+
echo "MACOSX_DEPLOYMENT_TARGET=10.12" >> $GITHUB_ENV
4052
4153
- name: Configure Ubuntu runner
4254
if: runner.os == 'Linux'
4355
run: |
4456
sudo apt update
4557
sudo apt install xz-utils libxml2-dev
46-
sudo apt install ninja-build ${{matrix.multilib}}
58+
sudo apt install ninja-build
59+
sudo apt install g++-aarch64-linux-gnu
60+
mkdir libxml2-dev-arm64 && cd libxml2-dev-arm64
61+
wget http://ports.ubuntu.com/pool/main/libx/libxml2/libxml2-dev_2.9.4+dfsg1-6.1ubuntu1.4_arm64.deb
62+
ar -x libxml2-dev_2.9.4+dfsg1-6.1ubuntu1.4_arm64.deb
63+
tar -xf data.tar.xz
64+
sudo cp -R ./usr/lib/aarch64-linux-gnu/ /usr/lib/aarch64-linux-gnu
4765
4866
- name: Clone project
4967
uses: actions/checkout@v2
5068
with:
51-
path: llvm-nightlies
69+
path: llvm-prebuilt
5270

5371
- name: Clone LLVM ${{matrix.version}}
5472
uses: actions/checkout@v2
@@ -57,19 +75,53 @@ jobs:
5775
ref: ${{matrix.branch}}
5876
path: llvm-project
5977

60-
- name: Enable Developer Command Prompt
78+
- name: Enable Windows host environment
79+
if: runner.os == 'Windows'
80+
uses: ilammy/msvc-dev-cmd@v1
81+
with:
82+
arch: amd64
83+
84+
- name: Configure LLVM host tools
85+
run: "cmake -G Ninja -S llvm-project/llvm -B llvm-host
86+
-DCMAKE_BUILD_TYPE=Release
87+
-DLLVM_ENABLE_PROJECTS=clang
88+
-DLLVM_INCLUDE_EXAMPLES=OFF
89+
-DLLVM_INCLUDE_TESTS=OFF
90+
-DLLVM_INCLUDE_DOCS=OFF
91+
-DLLVM_ENABLE_LIBXML2=OFF
92+
-DLLVM_ENABLE_TERMINFO=OFF
93+
-Wno-dev"
94+
95+
- name: Build LLVM host tools
96+
shell: pwsh
97+
run: |
98+
cmake --build llvm-host --target llvm-tblgen clang-tblgen llvm-config
99+
$HostBinPath = "$Env:GITHUB_WORKSPACE/llvm-host/bin"
100+
$ExeExt = if ($IsWindows) { ".exe" } else { "" }
101+
echo "LLVM_TABLEGEN=$HostBinPath/llvm-tblgen$ExeExt" >> $Env:GITHUB_ENV
102+
echo "CLANG_TABLEGEN=$HostBinPath/clang-tblgen$ExeExt" >> $Env:GITHUB_ENV
103+
echo "LLVM_CONFIG_PATH=$HostBinPath/llvm-config$ExeExt" >> $Env:GITHUB_ENV
104+
105+
- name: Set CMake toolchain file
106+
shell: pwsh
107+
run: |
108+
$ToolchainPath = "$Env:GITHUB_WORKSPACE/llvm-prebuilt/toolchains"
109+
$ToolchainName = "${{matrix.arch}}-${{matrix.os}}"
110+
echo "CMAKE_TOOLCHAIN_FILE=$ToolchainPath/$ToolchainName.cmake" >> $Env:GITHUB_ENV
111+
112+
- name: Enable Windows target environment
61113
if: runner.os == 'Windows'
62114
uses: ilammy/msvc-dev-cmd@v1
63115
with:
64116
arch: ${{matrix.msvc}}
65117
66118
- name: Configure LLVM
67-
run: "cmake -G Ninja
119+
run: "cmake -G Ninja -S llvm-project/llvm -B llvm-build
68120
-DCMAKE_BUILD_TYPE=Release
69-
\"-DCMAKE_TOOLCHAIN_FILE=${{matrix.CMAKE_TOOLCHAIN_FILE}}\"
70121
\"-DLLVM_TARGETS_TO_BUILD=X86;ARM;NVPTX;AArch64;Mips;Hexagon;PowerPC;WebAssembly\"
71122
\"-DLLVM_ENABLE_PROJECTS=clang;lld\"
72123
-DLLVM_BUILD_32_BITS=OFF
124+
-DLLVM_BUILD_LLVM_C_DYLIB=OFF
73125
-DLLVM_INCLUDE_EXAMPLES=OFF
74126
-DLLVM_INCLUDE_TESTS=OFF
75127
-DLLVM_INCLUDE_DOCS=OFF
@@ -78,7 +130,8 @@ jobs:
78130
-DLLVM_ENABLE_EH=ON
79131
-DLLVM_ENABLE_LIBXML2=ON
80132
-DLLVM_ENABLE_TERMINFO=OFF
81-
-S llvm-project/llvm -B llvm-build"
133+
-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON
134+
-Wno-dev"
82135

83136
- name: Build LLVM
84137
run: cmake --build llvm-build

README.md

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
# LLVM Nightlies ![build status badge](https://github.com/alexreinking/llvm-nightlies/workflows/LLVM%20Nightlies/badge.svg)
1+
# LLVM prebuilt
22

3-
This is a stub repo to make nightly LLVM packages via GitHub Actions.
4-
5-
For each of LLVM 10, 11, 12, and `main` branch, it builds binaries for the following architectures:
3+
This is a repository to create prebuilt clang+llvm distributions for major operating systems and processor architectures. It can be used to create your own custom builds, or you can download the [prebuilt packages](https://github.com/awakecoding/llvm-prebuilt/releases).
64

75
Arch | Windows | macOS | Linux
86
----------------------|--------------------|--------------------------|--------------------
9-
x86 (32-bit) | :heavy_check_mark: | :heavy_multiplication_x: | :heavy_check_mark:
10-
x86 (64-bit) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark:
11-
ARM (32-bit, hf) | :x: | :heavy_multiplication_x: | :heavy_check_mark:
12-
ARM (64-bit, aarch64) | :x: | :x: | :heavy_check_mark:
7+
x86_64 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark:
8+
aarch64 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark:

toolchains/aarch64-linux.cmake

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
set(CMAKE_SYSTEM_NAME Linux)
2+
set(CMAKE_SYSTEM_PROCESSOR aarch64)
3+
4+
set(CMAKE_CROSSCOMPILING TRUE)
5+
6+
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
7+
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
8+
9+
set(LLVM_TARGET_ARCH AArch64)
10+
set(LLVM_DEFAULT_TARGET_TRIPLE aarch64-linux-gnu)
11+
12+
if(DEFINED ENV{CLANG_TABLEGEN})
13+
set(CLANG_TABLEGEN $ENV{CLANG_TABLEGEN} CACHE FILEPATH "")
14+
message(STATUS "CLANG_TABLEGEN: ${CLANG_TABLEGEN}")
15+
endif()
16+
17+
if(DEFINED ENV{LLVM_TABLEGEN})
18+
set(LLVM_TABLEGEN $ENV{LLVM_TABLEGEN} CACHE FILEPATH "")
19+
message(STATUS "LLVM_TABLEGEN: ${LLVM_TABLEGEN}")
20+
endif()
21+
22+
if(DEFINED ENV{LLVM_CONFIG_PATH})
23+
set(LLVM_CONFIG_PATH $ENV{LLVM_CONFIG_PATH} CACHE FILEPATH "")
24+
message(STATUS "LLVM_CONFIG_PATH: ${LLVM_CONFIG_PATH}")
25+
endif()

toolchains/aarch64-macos.cmake

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
set(CMAKE_OSX_ARCHITECTURES "arm64")
2+
3+
set(CMAKE_CROSSCOMPILING TRUE)
4+
5+
set(LLVM_TARGET_ARCH AArch64)
6+
7+
if(DEFINED ENV{CLANG_TABLEGEN})
8+
set(CLANG_TABLEGEN $ENV{CLANG_TABLEGEN} CACHE FILEPATH "")
9+
message(STATUS "CLANG_TABLEGEN: ${CLANG_TABLEGEN}")
10+
endif()
11+
12+
if(DEFINED ENV{LLVM_TABLEGEN})
13+
set(LLVM_TABLEGEN $ENV{LLVM_TABLEGEN} CACHE FILEPATH "")
14+
message(STATUS "LLVM_TABLEGEN: ${LLVM_TABLEGEN}")
15+
endif()
16+
17+
if(DEFINED ENV{LLVM_CONFIG_PATH})
18+
set(LLVM_CONFIG_PATH $ENV{LLVM_CONFIG_PATH} CACHE FILEPATH "")
19+
message(STATUS "LLVM_CONFIG_PATH: ${LLVM_CONFIG_PATH}")
20+
endif()

toolchains/aarch64-windows.cmake

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
set(CMAKE_SYSTEM_PROCESSOR "ARM64")
2+
3+
set(CMAKE_CROSSCOMPILING TRUE)
4+
5+
set(LLVM_TARGET_ARCH AArch64)
6+
set(LLVM_USE_CRT_RELEASE MT)
7+
8+
if(DEFINED ENV{CLANG_TABLEGEN})
9+
set(CLANG_TABLEGEN $ENV{CLANG_TABLEGEN} CACHE FILEPATH "")
10+
message(STATUS "CLANG_TABLEGEN: ${CLANG_TABLEGEN}")
11+
endif()
12+
13+
if(DEFINED ENV{LLVM_TABLEGEN})
14+
set(LLVM_TABLEGEN $ENV{LLVM_TABLEGEN} CACHE FILEPATH "")
15+
message(STATUS "LLVM_TABLEGEN: ${LLVM_TABLEGEN}")
16+
endif()
17+
18+
if(DEFINED ENV{LLVM_CONFIG_PATH})
19+
set(LLVM_CONFIG_PATH $ENV{LLVM_CONFIG_PATH} CACHE FILEPATH "")
20+
message(STATUS "LLVM_CONFIG_PATH: ${LLVM_CONFIG_PATH}")
21+
endif()

toolchains/arm-64-linux.cmake

Lines changed: 0 additions & 18 deletions
This file was deleted.

toolchains/x86_64-linux.cmake

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
set(CMAKE_SYSTEM_NAME Linux)
2+
set(CMAKE_SYSTEM_PROCESSOR x86_64)
3+
4+
set(CMAKE_CROSSCOMPILING TRUE)
5+
6+
if(DEFINED ENV{CLANG_TABLEGEN})
7+
set(CLANG_TABLEGEN $ENV{CLANG_TABLEGEN} CACHE FILEPATH "")
8+
message(STATUS "CLANG_TABLEGEN: ${CLANG_TABLEGEN}")
9+
endif()
10+
11+
if(DEFINED ENV{LLVM_TABLEGEN})
12+
set(LLVM_TABLEGEN $ENV{LLVM_TABLEGEN} CACHE FILEPATH "")
13+
message(STATUS "LLVM_TABLEGEN: ${LLVM_TABLEGEN}")
14+
endif()
15+
16+
if(DEFINED ENV{LLVM_CONFIG_PATH})
17+
set(LLVM_CONFIG_PATH $ENV{LLVM_CONFIG_PATH} CACHE FILEPATH "")
18+
message(STATUS "LLVM_CONFIG_PATH: ${LLVM_CONFIG_PATH}")
19+
endif()

toolchains/x86_64-macos.cmake

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
set(CMAKE_OSX_ARCHITECTURES "x86_64")
2+
3+
set(CMAKE_CROSSCOMPILING TRUE)
4+
5+
if(DEFINED ENV{CLANG_TABLEGEN})
6+
set(CLANG_TABLEGEN $ENV{CLANG_TABLEGEN} CACHE FILEPATH "")
7+
message(STATUS "CLANG_TABLEGEN: ${CLANG_TABLEGEN}")
8+
endif()
9+
10+
if(DEFINED ENV{LLVM_TABLEGEN})
11+
set(LLVM_TABLEGEN $ENV{LLVM_TABLEGEN} CACHE FILEPATH "")
12+
message(STATUS "LLVM_TABLEGEN: ${LLVM_TABLEGEN}")
13+
endif()
14+
15+
if(DEFINED ENV{LLVM_CONFIG_PATH})
16+
set(LLVM_CONFIG_PATH $ENV{LLVM_CONFIG_PATH} CACHE FILEPATH "")
17+
message(STATUS "LLVM_CONFIG_PATH: ${LLVM_CONFIG_PATH}")
18+
endif()

toolchains/x86_64-windows.cmake

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
set(CMAKE_SYSTEM_PROCESSOR "x64")
2+
3+
set(CMAKE_CROSSCOMPILING TRUE)
4+
5+
set(LLVM_USE_CRT_RELEASE MT)
6+
7+
if(DEFINED ENV{CLANG_TABLEGEN})
8+
set(CLANG_TABLEGEN $ENV{CLANG_TABLEGEN} CACHE FILEPATH "")
9+
message(STATUS "CLANG_TABLEGEN: ${CLANG_TABLEGEN}")
10+
endif()
11+
12+
if(DEFINED ENV{LLVM_TABLEGEN})
13+
set(LLVM_TABLEGEN $ENV{LLVM_TABLEGEN} CACHE FILEPATH "")
14+
message(STATUS "LLVM_TABLEGEN: ${LLVM_TABLEGEN}")
15+
endif()
16+
17+
if(DEFINED ENV{LLVM_CONFIG_PATH})
18+
set(LLVM_CONFIG_PATH $ENV{LLVM_CONFIG_PATH} CACHE FILEPATH "")
19+
message(STATUS "LLVM_CONFIG_PATH: ${LLVM_CONFIG_PATH}")
20+
endif()

0 commit comments

Comments
 (0)
0