Skip to content

Commit 4b62d0f

Browse files
NEW x86_64-pc-windows-msvc target.
1 parent 5af67f4 commit 4b62d0f

1 file changed

Lines changed: 145 additions & 0 deletions

File tree

.github/workflows/blank.yml

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
name: llvm-x86_64-pc-windows-msvc
2+
3+
on:
4+
push:
5+
tags:
6+
- 'x86_64-pc-windows-msvc-v*.*.*'
7+
8+
jobs:
9+
build-llvm:
10+
runs-on: windows-2022
11+
12+
permissions:
13+
contents: write
14+
15+
env:
16+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
17+
18+
steps:
19+
- name: Generating Unique ID
20+
shell: pwsh
21+
run: |
22+
$BASE_NAME = "${{ github.ref }}".Replace('refs/tags/', '')
23+
$BUILD_ID = "${BASE_NAME}"
24+
25+
echo "BUILD_ID=$BUILD_ID" | Out-File -FilePath $env:GITHUB_ENV -Append
26+
echo "BASE_NAME=$BASE_NAME" | Out-File -FilePath $env:GITHUB_ENV -Append
27+
28+
echo "Unique ID: $BUILD_ID"
29+
echo "Base name: $BASE_NAME"
30+
31+
- name: Set up build environment
32+
uses: ilammy/msvc-dev-cmd@v1
33+
34+
- name: Set up Python
35+
uses: actions/setup-python@v4
36+
with:
37+
python-version: '3.10'
38+
39+
- name: Install Ninja
40+
shell: pwsh
41+
run: |
42+
pip install ninja
43+
ninja --version
44+
45+
- name: Install CMake
46+
uses: lukka/get-cmake@latest
47+
48+
- name: Downloading LLVM project
49+
shell: pwsh
50+
run: |
51+
Invoke-WebRequest -Uri "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/llvm-project-18.1.8.src.tar.xz" -OutFile "llvm-project-18.1.8.src.tar.xz"
52+
53+
- name: Install 7zip
54+
shell: pwsh
55+
run: |
56+
choco install 7zip -y
57+
58+
- name: Unpacking LLVM project
59+
shell: pwsh
60+
run: |
61+
7z x llvm-project-18.1.8.src.tar.xz -so | 7z x -si -ttar -snld
62+
Rename-Item -Path "llvm-project-18.1.8.src" -NewName "llvm-project"
63+
64+
- name: Preparing for build
65+
shell: pwsh
66+
run: |
67+
New-Item -ItemType Directory -Path "llvm-project\llvm\build" -Force
68+
New-Item -ItemType Directory -Path "llvm-project\llvm\dist" -Force
69+
70+
- name: Configuring CMake
71+
shell: pwsh
72+
run: |
73+
cd llvm-project\llvm\build
74+
cmake ..\CMakeLists.txt -G Ninja `
75+
-DLLVM_ENABLE_PROJECTS="llvm;lld" `
76+
-DCMAKE_C_COMPILER_TARGET=x86_64-pc-windows-msvc `
77+
-DCMAKE_CXX_COMPILER_TARGET=x86_64-pc-windows-msvc `
78+
-DCMAKE_CXX_FLAGS="-Os" `
79+
-DCMAKE_C_FLAGS="-Os" `
80+
-DCMAKE_EXE_LINKER_FLAGS="/OPT:REF /OPT:ICF" `
81+
-DLLVM_ENABLE_TERMINFO=OFF `
82+
-DLLVM_ENABLE_ZLIB=OFF `
83+
-DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=TRUE `
84+
-DLLVM_ENABLE_LIBXML2=0 `
85+
-DLLVM_INCLUDE_UTILS=OFF `
86+
-DCMAKE_INSTALL_PREFIX="..\dist" `
87+
-DCMAKE_BUILD_TYPE=MinSizeRel `
88+
-DLLVM_TARGETS_TO_BUILD=all `
89+
-DLLVM_BUILD_TESTS=OFF `
90+
-DLLVM_BUILD_EXAMPLES=OFF `
91+
-DLLVM_INCLUDE_TESTS=OFF `
92+
-DLLVM_INCLUDE_EXAMPLES=OFF `
93+
-DLLVM_INCLUDE_DOCS=OFF
94+
95+
- name: Building LLVM
96+
shell: pwsh
97+
run: |
98+
cd llvm-project\llvm\build
99+
ninja -j $env:NUMBER_OF_PROCESSORS
100+
101+
- name: Installing LLVM
102+
shell: pwsh
103+
run: |
104+
cd llvm-project\llvm\build
105+
ninja install
106+
107+
- name: Cleaning LLVM Binaries
108+
shell: pwsh
109+
run: |
110+
$binPath = "llvm-project\llvm\build\bin"
111+
Get-ChildItem -Path $binPath -Filter "*.exe" | Where-Object { $_.Name -ne "llvm-config.exe" } | Remove-Item -Force
112+
113+
- name: Packaging LLVM
114+
shell: pwsh
115+
run: |
116+
New-Item -ItemType Directory -Path "tempDir" -Force
117+
118+
New-Item -ItemType Directory -Path "tempDir\lib" -Force
119+
New-Item -ItemType Directory -Path "tempDir\bin" -Force
120+
New-Item -ItemType Directory -Path "tempDir\include" -Force
121+
122+
Copy-Item -Path "llvm-project\llvm\build\lib\*" -Destination "tempDir\lib\" -Recurse -Force
123+
Copy-Item -Path "llvm-project\llvm\build\bin\*" -Destination "tempDir\bin\" -Recurse -Force
124+
Copy-Item -Path "llvm-project\llvm\dist\include\*" -Destination "tempDir\include\" -Recurse -Force
125+
126+
- name: Packaging LLVM (LLVM Libraries, binaries & includes)
127+
shell: pwsh
128+
run: |
129+
cd tempDir
130+
7z a -tzip x86_64-pc-windows-msvc.zip lib bin include
131+
132+
- name: Releasing LLVM
133+
uses: softprops/action-gh-release@v2
134+
with:
135+
tag_name: ${{ env.BUILD_ID }}
136+
name: "x86_64-pc-windows-msvc"
137+
body: |
138+
## llvm-x86_64-unknown-linux-gnu
139+
140+
LLVM for x86_64-pc-windows-msvc host target for Thrush Compiler build phase.
141+
142+
files: |
143+
tempDir/x86_64-pc-windows-msvc.zip
144+
145+
draft: false

0 commit comments

Comments
 (0)