Skip to content

Commit 39b9c02

Browse files
committed
Fix up Clang 19.x so it uses the same patches as Clang 18.x
1 parent f08845c commit 39b9c02

13 files changed

Lines changed: 6607 additions & 44 deletions

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/cache/
2+
/temp/

.redpoint/build.ps1

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
param([switch] $Generate, [switch] $Install, [switch] $InstallOnly, [switch] $Debug, [string] $Version = "19.x", [string] $VisualStudio = "C:\Program Files\Microsoft Visual Studio\2022\Community")
2+
3+
$global:ErrorActionPreference = 'Stop'
4+
5+
if (!(Test-Path "C:\ProgramData\LLVM-Chainbuild\bin\clang-cl.exe")) {
6+
Write-Error "LLVM not found at C:\ProgramData\LLVM-Chainbuild; please download the official Clang/LLVM 19.x build and extract it to this path, such that C:\ProgramData\LLVM-Chainbuild\bin\clang-cl.exe exists."
7+
}
8+
9+
function Invoke-CmdScript {
10+
param(
11+
[String] $scriptName
12+
)
13+
$cmdLine = """$scriptName"" $args & set"
14+
& $Env:SystemRoot\system32\cmd.exe /c $cmdLine |
15+
select-string '^([^=]*)=(.*)$' | foreach-object {
16+
$varName = $_.Matches[0].Groups[1].Value
17+
$varValue = $_.Matches[0].Groups[2].Value
18+
set-item Env:$varName $varValue
19+
}
20+
}
21+
22+
$RootPath = "$PSScriptRoot\.."
23+
$CachePath = "$RootPath\cache"
24+
$TempPath = "$RootPath\temp"
25+
26+
if (!(Test-Path $CachePath)) {
27+
New-Item -ItemType Directory $CachePath
28+
}
29+
$env:FASTBUILD_CACHE_PATH = $CachePath
30+
31+
if (!(Test-Path $TempPath)) {
32+
New-Item -ItemType Directory $TempPath
33+
}
34+
Push-Location $TempPath
35+
try {
36+
# Set the build path.
37+
$BuildPathDebug = "$RootPath\llvm\$Version\build\win64\debug"
38+
$BuildPathRelease = "$RootPath\llvm\$Version\build\win64\release"
39+
$CMakeCommand = (Get-Command cmake).Source
40+
$CMakeCommandArguments = @()
41+
$CMakeCommandGenerateArguments = @(
42+
"-G",
43+
"FASTBuild"
44+
)
45+
46+
Write-Host "BuildPathDebug: $BuildPathDebug"
47+
Write-Host "BuildPathRelease: $BuildPathRelease"
48+
Write-Host "CMakeCommand: $CMakeCommand"
49+
Write-Host "CMakeCommandArguments: $CMakeCommandArguments"
50+
Write-Host "CMakeCommandGenerateArguments: $CMakeCommandGenerateArguments"
51+
52+
# Create the session ID for this build.
53+
$env:CMAKE_UBA_SESSION_ID = "$(Get-Random)"
54+
55+
# Initialize MSVC environment.
56+
Invoke-CmdScript "$VisualStudio\VC\Auxiliary\Build\vcvarsall.bat" x64
57+
58+
# Generate compile_command.json
59+
$env:CMAKE_EXPORT_COMPILE_COMMANDS="true"
60+
61+
# Generate CMake projects if needed.
62+
if ($Generate `
63+
-or (!(Test-Path "$BuildPathDebug\CMakeCache.txt")) `
64+
-or (!(Test-Path "$BuildPathRelease\CMakeCache.txt"))) {
65+
if (!(Test-Path $BuildPathDebug)) {
66+
New-Item -ItemType Directory $BuildPathDebug | Out-Null
67+
}
68+
if (!(Test-Path $BuildPathRelease)) {
69+
New-Item -ItemType Directory $BuildPathRelease | Out-Null
70+
}
71+
& $CMakeCommand $CMakeCommandArguments $CMakeCommandGenerateArguments `
72+
"-DCMAKE_MAKE_PROGRAM=C:\Users\juner\Downloads\FASTBuild-Windows-x64-v1.18\FBuild.exe" `
73+
"-DLLVM_ENABLE_PROJECTS:STRING=clang;lld" `
74+
"-DCMAKE_C_COMPILER=C:\ProgramData\LLVM-Chainbuild\bin\clang-cl.exe" `
75+
"-DCMAKE_CXX_COMPILER=C:\ProgramData\LLVM-Chainbuild\bin\clang-cl.exe" `
76+
"-DCMAKE_ASM_COMPILER=C:\ProgramData\LLVM-Chainbuild\bin\clang-cl.exe" `
77+
"-DCMAKE_RC_COMPILER=C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/rc.exe" `
78+
"-DCMAKE_MT=C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/mt.exe" `
79+
-DLLVM_INSTALL_TOOLCHAIN_ONLY:BOOL=TRUE `
80+
-DLLVM_INCLUDE_BENCHMARKS:BOOL=FALSE `
81+
-DLLVM_INCLUDE_DOCS:BOOL=FALSE `
82+
-DLLVM_INCLUDE_EXAMPLES:BOOL=FALSE `
83+
-DLLVM_INCLUDE_TESTS:BOOL=FALSE `
84+
-DCLANG_INCLUDE_TESTS:BOOL=FALSE `
85+
-DCLANG_INCLUDE_DOCS:BOOL=FALSE `
86+
-DLLVM_ENABLE_DIA_SDK:BOOL=FALSE `
87+
-DCMAKE_BUILD_TYPE=Debug `
88+
-DCMAKE_CFG_INTDIR=Debug `
89+
"-DCMAKE_INSTALL_PREFIX=C:\Program Files\LLVM" `
90+
$LauncherFlags `
91+
"-H$RootPath\llvm\$Version\llvm" `
92+
"-B$BuildPathDebug"
93+
if ($LastExitCode -ne 0) {
94+
exit $LastExitCode
95+
}
96+
& $CMakeCommand $CMakeCommandArguments $CMakeCommandGenerateArguments `
97+
"-DCMAKE_MAKE_PROGRAM=C:\Users\juner\Downloads\FASTBuild-Windows-x64-v1.18\FBuild.exe" `
98+
"-DLLVM_ENABLE_PROJECTS:STRING=clang;lld" `
99+
"-DCMAKE_C_COMPILER=C:\ProgramData\LLVM-Chainbuild\bin\clang-cl.exe" `
100+
"-DCMAKE_CXX_COMPILER=C:\ProgramData\LLVM-Chainbuild\bin\clang-cl.exe" `
101+
"-DCMAKE_ASM_COMPILER=C:\ProgramData\LLVM-Chainbuild\bin\clang-cl.exe" `
102+
"-DCMAKE_RC_COMPILER=C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/rc.exe" `
103+
"-DCMAKE_MT=C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/mt.exe" `
104+
-DLLVM_INSTALL_TOOLCHAIN_ONLY:BOOL=TRUE `
105+
-DLLVM_INCLUDE_BENCHMARKS:BOOL=FALSE `
106+
-DLLVM_INCLUDE_DOCS:BOOL=FALSE `
107+
-DLLVM_INCLUDE_EXAMPLES:BOOL=FALSE `
108+
-DLLVM_INCLUDE_TESTS:BOOL=FALSE `
109+
-DCLANG_INCLUDE_TESTS:BOOL=FALSE `
110+
-DCLANG_INCLUDE_DOCS:BOOL=FALSE `
111+
-DLLVM_ENABLE_DIA_SDK:BOOL=FALSE `
112+
-DCMAKE_BUILD_TYPE=Release `
113+
-DCMAKE_CFG_INTDIR=Release `
114+
"-DCMAKE_INSTALL_PREFIX=C:\Program Files\LLVM" `
115+
$LauncherFlags `
116+
"-H$RootPath\llvm\$Version\llvm" `
117+
"-B$BuildPathRelease"
118+
if ($LastExitCode -ne 0) {
119+
exit $LastExitCode
120+
}
121+
}
122+
123+
# Determine what build path we're going to use.
124+
$BuildPath = $BuildPathRelease
125+
$BuildConfiguration = "Release"
126+
if ($Debug) {
127+
$BuildPath = $BuildPathDebug
128+
$BuildConfiguration = "Debug"
129+
}
130+
131+
# Build if not only installing.
132+
if (!$InstallOnly) {
133+
& $CMakeCommand $CMakeCommandArguments `
134+
--build $BuildPath `
135+
--config $BuildConfiguration `
136+
-- `
137+
-cache `
138+
-dist
139+
if ($LastExitCode -ne 0) {
140+
exit $LastExitCode
141+
}
142+
}
143+
144+
# Install if requested.
145+
if ($Install -or $InstallOnly) {
146+
& $CMakeCommand `
147+
--install $BuildPath `
148+
--config $BuildConfiguration
149+
if ($LastExitCode -ne 0) {
150+
exit $LastExitCode
151+
}
152+
}
153+
} finally {
154+
Pop-Location
155+
}

.vs/CMakeWorkspaceSettings.json

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
{
2+
"enableCMake": true,
3+
"sourceDirectory": "llvm",
4+
"configurations": [
5+
{
6+
"name": "x64-Debug",
7+
"generator": "Ninja",
8+
"configurationType": "Debug",
9+
"inheritEnvironments": [ "clang_cl_x64_x64" ],
10+
"buildRoot": "${projectDir}\\llvm\\19.x\\build\\win64\\debug",
11+
"installRoot": "${projectDir}\\out\\install\\${name}",
12+
"buildCommandArgs": "",
13+
"ctestCommandArgs": "",
14+
"variables": [
15+
{
16+
"name": "CMAKE_C_COMPILER_LAUNCHER",
17+
"value": "${projectDir}\\.redpoint\\uet-cmake.exe"
18+
},
19+
{
20+
"name": "CMAKE_CXX_COMPILER_LAUNCHER",
21+
"value": "${projectDir}\\.redpoint\\uet-cmake.exe"
22+
},
23+
{
24+
"name": "CMAKE_C_COMPILER",
25+
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe"
26+
},
27+
{
28+
"name": "CMAKE_CXX_COMPILER",
29+
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe"
30+
},
31+
{
32+
"name": "CMAKE_ASM_COMPILER",
33+
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe"
34+
},
35+
{
36+
"name": "CMAKE_RC_COMPILER",
37+
"value": "C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/rc.exe"
38+
},
39+
{
40+
"name": "CMAKE_MT",
41+
"value": "C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/rc.exe"
42+
},
43+
{
44+
"name": "LLVM_INSTALL_TOOLCHAIN_ONLY:BOOL",
45+
"value": "TRUE"
46+
},
47+
{
48+
"name": "LLVM_INCLUDE_BENCHMARKS:BOOL",
49+
"value": "FALSE"
50+
},
51+
{
52+
"name": "LLVM_INCLUDE_DOCS:BOOL",
53+
"value": "FALSE"
54+
},
55+
{
56+
"name": "LLVM_INCLUDE_EXAMPLES:BOOL",
57+
"value": "FALSE"
58+
},
59+
{
60+
"name": "LLVM_INCLUDE_TESTS:BOOL",
61+
"value": "FALSE"
62+
},
63+
{
64+
"name": "CLANG_INCLUDE_TESTS:BOOL",
65+
"value": "FALSE"
66+
},
67+
{
68+
"name": "CLANG_INCLUDE_DOCS:BOOL",
69+
"value": "FALSE"
70+
},
71+
{
72+
"name": "LLVM_ENABLE_DIA_SDK:BOOL",
73+
"value": "FALSE"
74+
}
75+
]
76+
},
77+
{
78+
"name": "x64-Release",
79+
"generator": "Ninja",
80+
"configurationType": "Release",
81+
"inheritEnvironments": [ "clang_cl_x64_x64" ],
82+
"buildRoot": "${projectDir}\\llvm\\19.x\\build\\win64\\release",
83+
"installRoot": "${projectDir}\\out\\install\\${name}",
84+
"buildCommandArgs": "",
85+
"ctestCommandArgs": "",
86+
"variables": [
87+
{
88+
"name": "CMAKE_C_COMPILER_LAUNCHER",
89+
"value": "${projectDir}\\.redpoint\\uet-cmake.exe"
90+
},
91+
{
92+
"name": "CMAKE_CXX_COMPILER_LAUNCHER",
93+
"value": "${projectDir}\\.redpoint\\uet-cmake.exe"
94+
},
95+
{
96+
"name": "CMAKE_C_COMPILER",
97+
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe"
98+
},
99+
{
100+
"name": "CMAKE_CXX_COMPILER",
101+
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe"
102+
},
103+
{
104+
"name": "CMAKE_ASM_COMPILER",
105+
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe"
106+
},
107+
{
108+
"name": "CMAKE_RC_COMPILER",
109+
"value": "C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/rc.exe"
110+
},
111+
{
112+
"name": "CMAKE_MT",
113+
"value": "C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x64/rc.exe"
114+
},
115+
{
116+
"name": "LLVM_INSTALL_TOOLCHAIN_ONLY:BOOL",
117+
"value": "TRUE"
118+
},
119+
{
120+
"name": "LLVM_INCLUDE_BENCHMARKS:BOOL",
121+
"value": "FALSE"
122+
},
123+
{
124+
"name": "LLVM_INCLUDE_DOCS:BOOL",
125+
"value": "FALSE"
126+
},
127+
{
128+
"name": "LLVM_INCLUDE_EXAMPLES:BOOL",
129+
"value": "FALSE"
130+
},
131+
{
132+
"name": "LLVM_INCLUDE_TESTS:BOOL",
133+
"value": "FALSE"
134+
},
135+
{
136+
"name": "CLANG_INCLUDE_TESTS:BOOL",
137+
"value": "FALSE"
138+
},
139+
{
140+
"name": "CLANG_INCLUDE_DOCS:BOOL",
141+
"value": "FALSE"
142+
},
143+
{
144+
"name": "LLVM_ENABLE_DIA_SDK:BOOL",
145+
"value": "FALSE"
146+
}
147+
]
148+
}
149+
]
150+
}

.vs/ProjectSettings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"CurrentProjectSetting": "x64-Debug"
3+
}

llvm/18.x

Submodule 18.x updated from f66a13c to 6a38e64

llvm/19.x

Submodule 19.x updated from 3566f67 to c8f8f22

patches/000.core.build-system-changes.patch renamed to patches/18.x/000.core.build-system-changes.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
From df1a5b43985adfdf4e6b6ffc5f5e01341ed408dd Mon Sep 17 00:00:00 2001
1+
From 082836568786b7e2012a18ab1e5ede6b6dbb4527 Mon Sep 17 00:00:00 2001
22
From: June Rhodes <jrhodes@redpoint.games>
33
Date: Thu, 4 Jul 2024 15:55:55 +1000
4-
Subject: [PATCH] [core] Build system changes for Clang for Unreal Engine
4+
Subject: [PATCH] Build system changes for Clang for Unreal Engine
55

66
---
77
.ci/generate-buildkite-pipeline-premerge | 312 -------

0 commit comments

Comments
 (0)