Skip to content

Commit 1705d57

Browse files
UPDATE Fixing the windows LLVM construction.
1 parent 349cd03 commit 1705d57

8 files changed

Lines changed: 551 additions & 139 deletions

File tree

Lines changed: 59 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,146 +1,66 @@
1-
name: LLVM-C API (Windows)
1+
ame: LLVM-C API (Windows)
22

33
on:
44
push:
55
tags:
66
- 'LLVM-C-API-WINDOWS-v*.*.*'
77

88
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 (LLVM-C API)
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 (LLVM C API)
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 C API
96-
shell: pwsh
97-
run: |
98-
cd llvm-project\llvm\build
99-
100-
ninja -j $env:NUMBER_OF_PROCESSORS
101-
102-
- name: Installing LLVM C API
103-
shell: pwsh
104-
run: |
105-
cd llvm-project\llvm\build
106-
ninja install
107-
108-
- name: Cleaning LLVM Binaries
109-
shell: pwsh
110-
run: |
111-
$binPath = "llvm-project\llvm\build\bin"
112-
Get-ChildItem -Path $binPath -Filter "*.exe" | Where-Object { $_.Name -ne "llvm-config.exe" } | Remove-Item -Force
113-
114-
- name: Packaging LLVM C API
115-
shell: pwsh
116-
run: |
117-
New-Item -ItemType Directory -Path "tempDir" -Force
118-
119-
New-Item -ItemType Directory -Path "tempDir\lib" -Force
120-
New-Item -ItemType Directory -Path "tempDir\bin" -Force
121-
New-Item -ItemType Directory -Path "tempDir\include" -Force
122-
123-
Copy-Item -Path "llvm-project\llvm\build\lib\*" -Destination "tempDir\lib\" -Recurse -Force
124-
Copy-Item -Path "llvm-project\llvm\build\bin\*" -Destination "tempDir\bin\" -Recurse -Force
125-
Copy-Item -Path "llvm-project\llvm\dist\include\*" -Destination "tempDir\include\" -Recurse -Force
126-
127-
- name: Packaging LLVM C API (LLVM C API Libraries, binaries & includes)
128-
shell: pwsh
129-
run: |
130-
cd tempDir
131-
7z a -tzip llvm-c-api-x64-windows.zip lib bin include
132-
133-
- name: Releasing LLVM C API
134-
uses: softprops/action-gh-release@v2
135-
with:
136-
tag_name: ${{ env.BUILD_ID }}
137-
name: "LLVM C API (Windows)"
138-
body: |
139-
## LLVM C API
140-
141-
LLVM C API (v17.0.6) libraries for Windows x64 environments.
142-
143-
files: |
144-
tempDir/llvm-c-api-x64-windows.zip
145-
146-
draft: false
9+
windowsBuild:
10+
name: Build LLVM (Windows)
11+
runs-on: windows-2022
12+
13+
permissions:
14+
contents: write
15+
16+
env:
17+
BUILD_PROJECT: llvm
18+
BUILD_MASTER: false
19+
LLVM_VERSION: 17.0.6
20+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
21+
22+
strategy:
23+
fail-fast: false
24+
matrix:
25+
CRT:
26+
- libcmt
27+
28+
TARGET_CPU:
29+
- amd64
30+
31+
CONFIGURATION:
32+
- Release
33+
34+
steps:
35+
- name: Checkout repo
36+
uses: actions/checkout@v3
37+
38+
- name: Generating Unique Identification
39+
shell: cmd
40+
run: call %GITHUB_WORKSPACE%\windows\generate-build-id.bat
41+
42+
- name: Installing LLVM Toolchain
43+
shell: cmd
44+
run: |
45+
call %GITHUB_WORKSPACE%\targets\x86_64-pc-windows-libcmt\set-env.bat msvc17 ${{matrix.CRT}} ${{matrix.TARGET_CPU}} ${{matrix.CONFIGURATION}}
46+
call %GITHUB_WORKSPACE%\windows\install.bat
47+
48+
- name: Build LLVM Toolchain
49+
id: BUILD
50+
shell: cmd
51+
run: |
52+
call %GITHUB_WORKSPACE%\targets\x86_64-pc-windows-libcmt\set-env.bat msvc17 ${{matrix.CRT}} ${{matrix.TARGET_CPU}} ${{matrix.CONFIGURATION}}
53+
call %GITHUB_WORKSPACE%\targets\x86_64-pc-windows-libcmt\build.bat
54+
55+
- name: Releasing LLVM Toolchain
56+
uses: softprops/action-gh-release@v2
57+
with:
58+
tag_name: ${{ env.BUILD_ID }}
59+
name: "LLVM Toolchain (Windows)"
60+
body: |
61+
## LLVM C API
62+
63+
LLVM C API (v17.0.6) libraries for Windows x86_64 environments.
64+
65+
files: ${{steps.BUILD.outputs.DEPLOY_FILE}}
66+
draft: false
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
@echo off
2+
3+
%WORKING_DRIVE%
4+
cd %WORKING_DIR%
5+
6+
::..............................................................................
7+
8+
set THIS_DIR=%CD%
9+
10+
if /i "%BUILD_PROJECT%" == "llvm" goto :llvm
11+
if /i "%BUILD_PROJECT%" == "clang" goto :clang
12+
13+
echo Invalid argument: '%1'
14+
exit -1
15+
16+
:: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17+
18+
:llvm
19+
20+
mkdir llvm\build
21+
cd llvm\build
22+
cmake .. %LLVM_CMAKE_CONFIGURE_FLAGS%
23+
cmake --build . %CMAKE_BUILD_FLAGS%
24+
cmake --build . --target install %CMAKE_BUILD_FLAGS%
25+
26+
cd %THIS_DIR%
27+
28+
7z a -tzip %GITHUB_WORKSPACE%\%LLVM_RELEASE_FILE% %LLVM_RELEASE_NAME%
29+
30+
goto :eof
31+
32+
:: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33+
34+
:clang
35+
36+
mkdir clang\build
37+
cd clang\build
38+
cmake .. %CLANG_CMAKE_CONFIGURE_FLAGS%
39+
cmake --build . %CMAKE_BUILD_FLAGS%
40+
cmake --build . --target install %CMAKE_BUILD_FLAGS%
41+
42+
cd %THIS_DIR%
43+
44+
7z a -tzip %GITHUB_WORKSPACE%\%CLANG_RELEASE_FILE% %CLANG_RELEASE_NAME%
45+
46+
goto :eof
47+
48+
::..............................................................................
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
use strict;
2+
3+
my ($version1, $version2) = ($ARGV[0], $ARGV[1]);
4+
$version1 && $version2 || die("Usage: compare-versions.pl <version1> <version2>\nReturns -1, 0, or 1\n");
5+
6+
my @splitVersion1 = splitVersion($version1);
7+
my @splitVersion2 = splitVersion($version2);
8+
9+
for (my $i = 0; $i < 3; $i++) {
10+
if ($splitVersion1[$i] < $splitVersion2[$i]) {
11+
exit(-1);
12+
}
13+
elsif ($splitVersion1[$i] > $splitVersion2[$i]) {
14+
exit(1);
15+
}
16+
}
17+
18+
exit(0);
19+
20+
sub splitVersion {
21+
my ($version) = @_;
22+
23+
$version =~ /([0-9]+)([.,\-]([0-9]+))?([.,\-]([0-9]+))?/;
24+
my $major = $1 || 0;
25+
my $minor = $3 || 0;
26+
my $patch = $5 || 0;
27+
28+
return ($major, $minor, $patch);
29+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
@echo off
2+
setlocal EnableDelayedExpansion
3+
4+
set "GITHUB_REF=%GITHUB_REF%"
5+
set "BASE_NAME=%GITHUB_REF:refs/tags/=%"
6+
7+
set "BUILD_ID=%BASE_NAME%"
8+
9+
echo BUILD_ID=%BUILD_ID%>>%GITHUB_ENV%
10+
echo BUILD_ID=%TAG_NAME%>>%GITHUB_ENV%
11+
12+
echo Unique ID: %BUILD_ID%
13+
echo Base name: %TAG_NAME%
14+
15+
endlocal

0 commit comments

Comments
 (0)