Skip to content

Commit 7133f0c

Browse files
committed
mingw -> msvc
1 parent 6c2acf7 commit 7133f0c

3 files changed

Lines changed: 139 additions & 13 deletions

File tree

.github/workflows/release.yml

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Release Builds
22
on: push
33
env:
4-
LLVM_VERSION: "22.1.1"
4+
LLVM_VERSION: "22.1.2"
55
concurrency:
66
group: release-${{ github.ref }}
77
cancel-in-progress: true
@@ -13,41 +13,36 @@ jobs:
1313
matrix:
1414
include:
1515
- os: "ubuntu-22.04"
16-
shell: "bash"
1716
LLVM_TARGETS_TO_BUILD: "X86"
1817
- os: "ubuntu-22.04"
19-
shell: "bash"
2018
LLVM_TARGETS_TO_BUILD: "X86"
2119
LLVM_USE_SANITIZER: Thread
2220
BUILD_TAG: "_tsan"
2321
- os: "ubuntu-22.04-arm"
24-
shell: "bash"
2522
LLVM_TARGETS_TO_BUILD: "AArch64"
2623
- os: "macos-14"
27-
shell: "bash"
2824
LLVM_TARGETS_TO_BUILD: "AArch64"
2925
- os: "windows-2022"
30-
shell: "msys2 {0}"
3126
LLVM_TARGETS_TO_BUILD: "X86"
3227
- os: "windows-11-arm"
33-
shell: "msys2 {0}"
3428
LLVM_TARGETS_TO_BUILD: "AArch64"
3529
permissions:
3630
contents: write
37-
defaults:
38-
run:
39-
shell: ${{ matrix.shell }}
4031
env:
4132
LLVM_TARGETS_TO_BUILD: ${{ matrix.LLVM_TARGETS_TO_BUILD }}
4233
LLVM_USE_SANITIZER: ${{ matrix.LLVM_USE_SANITIZER }}
4334
BUILD_TAG: ${{ matrix.BUILD_TAG }}
4435
steps:
45-
- uses: spatial-model-editor/setup-ci@2026.03.23
36+
- uses: spatial-model-editor/setup-ci@2026.03.27
4637
with:
4738
cache_id: ${{ matrix.BUILD_TAG }}
4839
- uses: actions/checkout@v6
4940
- name: Build script
41+
if: runner.os != 'Windows'
5042
run: ./build.sh
43+
- name: Build script
44+
if: runner.os == 'Windows'
45+
run: ./build.ps1
5146
- name: Upload binaries to release if commit is tagged
5247
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/')
5348
uses: svenstaro/upload-release-action@v2

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ Get the latest versions here:
77
- linux (clang 19 / Ubuntu 22.04): [sme_deps_llvm_linux.tgz](https://github.com/spatial-model-editor/sme_deps_llvm/releases/latest/download/sme_deps_llvm_linux.tgz)
88
- linux-arm64 (clang 19 / Ubuntu 22.04): [sme_deps_llvm_linux-arm64.tgz](https://github.com/spatial-model-editor/sme_deps_llvm/releases/latest/download/sme_deps_llvm_linux-arm64.tgz)
99
- osx-arm64 (Xcode 16.1 / macOS 14): [sme_deps_llvm_osx-arm64.tgz](https://github.com/spatial-model-editor/sme_deps_llvm/releases/latest/download/sme_deps_llvm_osx-arm64.tgz)
10-
- win64-mingw (mingw-w64-x86_64-gcc 15): [sme_deps_llvm_win64-mingw.tgz](https://github.com/spatial-model-editor/sme_deps_llvm/releases/latest/download/sme_deps_llvm_win64-mingw.tgz)
11-
- win64-arm64 (mingw-w64-aarch64-clang 21): [sme_deps_llvm_win64-arm64.tgz](https://github.com/spatial-model-editor/sme_deps_llvm/releases/latest/download/sme_deps_llvm_win64-arm64.tgz)
10+
- win64 (MSVC): [sme_deps_llvm_win64.tgz](https://github.com/spatial-model-editor/sme_deps_llvm/releases/latest/download/sme_deps_llvm_win64.tgz)
11+
- win64-arm64 (MSVC): [sme_deps_llvm_win64-arm64.tgz](https://github.com/spatial-model-editor/sme_deps_llvm/releases/latest/download/sme_deps_llvm_win64-arm64.tgz)

build.ps1

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
Set-StrictMode -Version Latest
2+
$ErrorActionPreference = "Stop"
3+
$ProgressPreference = "SilentlyContinue"
4+
if ($PSVersionTable.PSVersion.Major -ge 7) {
5+
$PSNativeCommandUseErrorActionPreference = $true
6+
}
7+
8+
function New-Directory {
9+
param([Parameter(Mandatory)] [string]$Path)
10+
New-Item -ItemType Directory -Force -Path $Path | Out-Null
11+
}
12+
13+
$requiredEnvVars = @(
14+
"LLVM_VERSION",
15+
"TARGET_TRIPLE",
16+
"INSTALL_PREFIX",
17+
"PYTHON_EXE",
18+
"OS",
19+
"LLVM_TARGETS_TO_BUILD"
20+
)
21+
22+
foreach ($name in $requiredEnvVars) {
23+
if (-not (Get-Item -Path "Env:$name" -ErrorAction SilentlyContinue)) {
24+
throw "$name is not set"
25+
}
26+
}
27+
28+
$buildTag = if ($env:BUILD_TAG) { $env:BUILD_TAG } else { "" }
29+
$pythonExe = (Get-Command $env:PYTHON_EXE -ErrorAction Stop).Source
30+
31+
if (-not $env:CMAKE_MSVC_RUNTIME_LIBRARY) {
32+
$env:CMAKE_MSVC_RUNTIME_LIBRARY = 'MultiThreaded$<$<CONFIG:Debug>:Debug>'
33+
}
34+
if (-not $env:LLVM_USE_CRT_RELEASE) {
35+
$env:LLVM_USE_CRT_RELEASE = "MT"
36+
}
37+
38+
Write-Host "LLVM_VERSION = $env:LLVM_VERSION"
39+
Write-Host "TARGET_TRIPLE = $env:TARGET_TRIPLE"
40+
Write-Host "LLVM_USE_SANITIZER = $env:LLVM_USE_SANITIZER"
41+
Write-Host "INSTALL_PREFIX = $env:INSTALL_PREFIX"
42+
Write-Host "BUILD_TAG = $buildTag"
43+
Write-Host "SUDO_CMD = $env:SUDO_CMD"
44+
Write-Host "PYTHON_EXE = $pythonExe"
45+
Write-Host "CMAKE_MSVC_RUNTIME_LIBRARY = $env:CMAKE_MSVC_RUNTIME_LIBRARY"
46+
Write-Host "LLVM_USE_CRT_RELEASE = $env:LLVM_USE_CRT_RELEASE"
47+
Write-Host "PATH=$env:PATH"
48+
Write-Host "git = $((Get-Command git -ErrorAction Stop).Source)"
49+
git --version
50+
Write-Host "cl = $((Get-Command cl -ErrorAction Stop).Source)"
51+
Write-Host "ninja = $((Get-Command ninja -ErrorAction Stop).Source)"
52+
ninja --version
53+
Write-Host "cmake = $((Get-Command cmake -ErrorAction Stop).Source)"
54+
cmake --version
55+
Write-Host "python = $pythonExe"
56+
& $pythonExe --version
57+
58+
# download LLVM source code
59+
git clone -b "llvmorg-$env:LLVM_VERSION" --depth 1 https://github.com/llvm/llvm-project.git
60+
Push-Location "llvm-project\llvm"
61+
62+
# make build dir and run cmake
63+
New-Directory "build"
64+
Push-Location "build"
65+
$cmakeArgs = @(
66+
"-GNinja",
67+
"..",
68+
"-DPython3_EXECUTABLE=$pythonExe",
69+
"-DCMAKE_INSTALL_PREFIX=$env:INSTALL_PREFIX",
70+
"-DCMAKE_BUILD_TYPE=Release",
71+
"-DCMAKE_MSVC_RUNTIME_LIBRARY=$env:CMAKE_MSVC_RUNTIME_LIBRARY",
72+
"-DBUILD_SHARED_LIBS=OFF",
73+
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON",
74+
"-DCMAKE_CXX_VISIBILITY_PRESET=hidden",
75+
"-DLLVM_DEFAULT_TARGET_TRIPLE=$env:TARGET_TRIPLE",
76+
"-DLLVM_USE_CRT_RELEASE=$env:LLVM_USE_CRT_RELEASE"
77+
)
78+
79+
if ($env:MACOSX_DEPLOYMENT_TARGET) {
80+
$cmakeArgs += "-DCMAKE_OSX_DEPLOYMENT_TARGET=$env:MACOSX_DEPLOYMENT_TARGET"
81+
}
82+
83+
$cmakeArgs += @(
84+
"-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",
85+
"-DLLVM_TARGETS_TO_BUILD=$env:LLVM_TARGETS_TO_BUILD",
86+
"-DLLVM_BUILD_TOOLS=OFF",
87+
"-DLLVM_INCLUDE_TOOLS=OFF",
88+
"-DLLVM_BUILD_EXAMPLES=OFF",
89+
"-DLLVM_INCLUDE_EXAMPLES=OFF",
90+
"-DLLVM_BUILD_TESTS=OFF",
91+
"-DLLVM_INCLUDE_TESTS=OFF",
92+
"-DLLVM_INCLUDE_DOCS=OFF",
93+
"-DLLVM_BUILD_UTILS=OFF",
94+
"-DLLVM_INCLUDE_UTILS=OFF",
95+
"-DLLVM_INCLUDE_GO_TESTS=OFF",
96+
"-DLLVM_BUILD_BENCHMARKS=OFF",
97+
"-DLLVM_INCLUDE_BENCHMARKS=OFF",
98+
"-DLLVM_ENABLE_LIBPFM=OFF",
99+
"-DLLVM_ENABLE_ZLIB=OFF",
100+
"-DLLVM_ENABLE_ZSTD=OFF",
101+
"-DLLVM_ENABLE_DIA_SDK=OFF",
102+
"-DLLVM_BUILD_INSTRUMENTED_COVERAGE=OFF",
103+
"-DLLVM_ENABLE_BINDINGS=OFF",
104+
"-DLLVM_ENABLE_RTTI=ON",
105+
"-DLLVM_ENABLE_TERMINFO=OFF",
106+
"-DLLVM_ENABLE_LIBXML2=OFF",
107+
"-DLLVM_ENABLE_WARNINGS=OFF",
108+
"-DLLVM_ENABLE_Z3_SOLVER=OFF",
109+
"-DLLVM_USE_SANITIZER=$env:LLVM_USE_SANITIZER"
110+
)
111+
112+
cmake @cmakeArgs
113+
Get-ChildItem
114+
ninja
115+
if ($env:SUDO_CMD) {
116+
& $env:SUDO_CMD ninja install
117+
} else {
118+
ninja install
119+
}
120+
Pop-Location
121+
Pop-Location
122+
123+
ccache --show-stats
124+
125+
# make tarball of installation
126+
New-Directory "artefacts"
127+
Push-Location "artefacts"
128+
7z a "tmp.tar" $env:INSTALL_PREFIX
129+
7z a "sme_deps_llvm_$($env:OS)$buildTag.tgz" "tmp.tar"
130+
Remove-Item "tmp.tar"
131+
Pop-Location

0 commit comments

Comments
 (0)