Skip to content

Commit 6b64e1b

Browse files
cmake presets upgrade attempt with EngineCI
1 parent 28bc849 commit 6b64e1b

3 files changed

Lines changed: 83 additions & 119 deletions

File tree

.github/workflows/Engine-CI.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
on:
22
push:
3-
branches: [ master, develop, arena-integration ]
3+
branches: [ master, develop, arena-integration, header-reorganization ]
44
pull_request:
55
branches: [ master, develop, arena-integration ]
66

CMakePresets.json

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
{
2+
"version": 10,
3+
"cmakeMinimumRequired": {
4+
"major": 3,
5+
"minor": 23,
6+
"patch": 0
7+
},
8+
"configurePresets":[
9+
{
10+
"name": "debug",
11+
"displayName": "Default Config Ninja Debug",
12+
"generator": "Ninja",
13+
"binaryDir": "${sourceDir}/../builds/RendererEngine",
14+
"cacheVariables": {
15+
"CMAKE_BUILD_TYPE": "Debug",
16+
17+
"ENTT_INCLUDE_HEADERS": "ON",
18+
19+
"SPDLOG_BUILD_SHARED": "OFF",
20+
"BUILD_STATIC_LIBS": "ON",
21+
"SPDLOG_FMT_EXTERNAL": "ON",
22+
"SPDLOG_FMT_EXTERNAL_HO": "OFF",
23+
24+
"GLFW_BUILD_DOCS": "OFF",
25+
"GLFW_BUILD_EXAMPLES": "OFF",
26+
"GLFW_INSTALL": "OFF",
27+
28+
"ASSIMP_BUILD_TESTS": "OFF",
29+
"ASSIMP_INSTALL": "OFF",
30+
"ASSIMP_BUILD_SAMPLES": "OFF",
31+
"ASSIMP_BUILD_ASSIMP_TOOLS": "OFF",
32+
"ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT": "OFF",
33+
"ASSIMP_BUILD_OBJ_IMPORTER": "ON",
34+
"ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT": "OFF",
35+
"ASSIMP_BUILD_OBJ_EXPORTER": "ON",
36+
37+
"UUID_BUILD_TESTS": "OFF",
38+
"UUID_USING_CXX20_SPAN": "ON",
39+
"UUID_SYSTEM_GENERATOR": "OFF",
40+
41+
"YAML_CPP_BUILD_TOOLS": "OFF",
42+
"YAML_CPP_BUILD_TESTS": "OFF",
43+
"YAML_CPP_FORMAT_SOURCE": "OFF",
44+
"YAML_BUILD_SHARED_LIBS": "OFF",
45+
46+
"USE_MASM": "OFF",
47+
"USE_GAS": "OFF",
48+
"UPDATE_DEPS": "ON",
49+
50+
"ALLOW_EXTERNAL_SPIRV_TOOLS": "ON",
51+
52+
"SPIRV_SKIP_EXECUTABLES": "ON",
53+
"SPIRV_SKIP_TESTS": "ON",
54+
"ENABLE_OPT": "OFF",
55+
56+
"SPIRV_CROSS_ENABLE_TESTS": "OFF",
57+
58+
"CMAKE_POLICY_VERSION_MINIMUM": "3.5"
59+
}
60+
},
61+
{
62+
"name": "release",
63+
"inherits": "debug",
64+
"displayName": "Default Config Ninja Release",
65+
"cacheVariables": {
66+
"CMAKE_BUILD_TYPE": "Debug"
67+
}
68+
}
69+
],
70+
"buildPresets": [
71+
{
72+
"name": "debug",
73+
"configurePreset": "debug"
74+
},
75+
{
76+
"name": "release",
77+
"configurePreset": "release"
78+
}
79+
]
80+
}

Scripts/BuildEngine.ps1

Lines changed: 2 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -82,118 +82,9 @@ if ($IsWindows) {
8282
}
8383
}
8484

85-
86-
if(-Not $LauncherOnly) {
87-
$RepoRoot = [IO.Path]::Combine($PSScriptRoot, "..")
88-
89-
Write-Host "Configuring Vulkan-Header submodule..."
90-
91-
$ExternalVulkanHeadersDir = Join-Path -Path $RepoRoot -ChildPath "__externals/Vulkan-Headers"
92-
$ExternalVulkanHeadersOutputDir = Join-Path -Path $ExternalVulkanHeadersDir -ChildPath "build"
93-
$ExternalVulkanHeadersInstallDir = Join-Path -Path $ExternalVulkanHeadersOutputDir -ChildPath "install"
94-
95-
if(-Not (Test-Path -Path $ExternalVulkanHeadersInstallDir)) {
96-
& $cMakeProgram -S $ExternalVulkanHeadersDir -B $ExternalVulkanHeadersOutputDir
97-
& $cMakeProgram --install $ExternalVulkanHeadersOutputDir --prefix $ExternalVulkanHeadersInstallDir
98-
}
99-
} else {
100-
Write-Host "Skipping submodules initialization..."
101-
}
102-
103-
10485
function Build([string]$configuration, [int]$VsVersion , [bool]$runBuild) {
10586

106-
$architecture = 'x64'
107-
108-
# Check if the system supports multiple configurations
109-
$isMultipleConfig = $IsWindows
110-
111-
# Check the system name
112-
if ($IsLinux) {
113-
$systemName = "Linux"
114-
}
115-
elseif ($IsMacOS) {
116-
$systemName = "Darwin"
117-
}
118-
elseif ($IsWindows) {
119-
$systemName = "Windows"
120-
}
121-
else {
122-
throw 'The OS is not supported'
123-
}
124-
125-
Write-Host "Building $systemName $architecture $configuration"
126-
127-
[string]$BuildDirectoryNameExtension = If ($isMultipleConfig) { "MultiConfig" } Else { $configuration }
128-
[string]$BuildDirectoryName = "Result." + $systemName + "." + $architecture + "." + $BuildDirectoryNameExtension
129-
[string]$buildDirectoryPath = [IO.Path]::Combine($RepoRoot, $BuildDirectoryName)
130-
[string]$cMakeCacheVariableOverride = ""
131-
[string]$cMakeGenerator = "-G Ninja"
132-
133-
# Create build directory
134-
if (-Not (Test-Path $buildDirectoryPath)) {
135-
$Null = New-Item -ItemType Directory -Path $BuildDirectoryPath -ErrorAction SilentlyContinue
136-
}
137-
138-
# Define CMake Generator arguments
139-
$cMakeOptions = " -DCMAKE_SYSTEM_NAME=$systemName", " -DCMAKE_BUILD_TYPE=$configuration"
140-
$submoduleCMakeOptions = @{
141-
'ENTT' = @("-DENTT_INCLUDE_HEADERS=ON")
142-
'SPDLOG' = @("-DSPDLOG_BUILD_SHARED=OFF", "-DBUILD_STATIC_LIBS=ON", "-DSPDLOG_FMT_EXTERNAL=ON", "-DSPDLOG_FMT_EXTERNAL_HO=OFF");
143-
'GLFW ' = @("-DGLFW_BUILD_DOCS=OFF", "-DGLFW_BUILD_EXAMPLES=OFF", "-DGLFW_INSTALL=OFF");
144-
'ASSIMP' = @("-DASSIMP_BUILD_TESTS=OFF", "-DASSIMP_INSTALL=OFF", "-DASSIMP_BUILD_SAMPLES=OFF", "-DASSIMP_BUILD_ASSIMP_TOOLS=OFF", "-DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=OFF", "-DASSIMP_BUILD_OBJ_IMPORTER=ON", "-DASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT=OFF", "-DASSIMP_BUILD_OBJ_EXPORTER=ON");
145-
'STDUUID' = @("-DUUID_BUILD_TESTS=OFF", "-DUUID_USING_CXX20_SPAN=ON", "-DUUID_SYSTEM_GENERATOR=OFF");
146-
'YAMLCPP' = @("-DYAML_CPP_BUILD_TOOLS=OFF", "-DYAML_CPP_BUILD_TESTS=OFF", "-DYAML_CPP_FORMAT_SOURCE=OFF", "-DYAML_BUILD_SHARED_LIBS=OFF");
147-
'FRAMEWORK' = @("-DBUILD_FRAMEWORK=ON");
148-
'VULKAN_LOADER' = @("-DVULKAN_HEADERS_INSTALL_DIR=$ExternalVulkanHeadersInstallDir", "-DUSE_MASM=OFF", "-DUSE_GAS=OFF")
149-
'SPIRV_TOOLS' = @("-DSPIRV_SKIP_EXECUTABLES=ON", "-DSPIRV_SKIP_TESTS=ON")
150-
'SPIRV_CROSS' = @("-DSPIRV_CROSS_ENABLE_TESTS=OFF")
151-
'LAUNCHER_ONLY' = @("-DLAUNCHER_ONLY=ON")
152-
'GLM' = @("-DCMAKE_POLICY_VERSION_MINIMUM=3.5")
153-
}
154-
155-
$cMakeCacheVariableOverride = $cMakeOptions -join ' '
156-
157-
# Define CMake Generator argument
158-
switch ($systemName) {
159-
"Windows" {
160-
switch ($VsVersion) {
161-
2022 {
162-
$cMakeGenerator = "-G `"Visual Studio 17 2022`" -A $architecture"
163-
}
164-
Default {
165-
throw 'This version of Visual Studio is not supported'
166-
}
167-
}
168-
$cMakeCacheVariableOverride += ' -DCMAKE_CONFIGURATION_TYPES=Debug;Release '
169-
}
170-
"Linux" {
171-
# Set Linux build compiler
172-
$env:CC = 'gcc'
173-
$env:CXX = 'g++'
174-
}
175-
"Darwin" {
176-
$cMakeGenerator = "-G `"Xcode`""
177-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.FRAMEWORK -join ' '
178-
}
179-
}
180-
181-
if($LauncherOnly) {
182-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.LAUNCHER_ONLY -join ' '
183-
} else {
184-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.ENT -join ' '
185-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.SPDLOG -join ' '
186-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.ASSIMP -join ' '
187-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.STDUUID -join ' '
188-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.YAMLCPP -join ' '
189-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.VULKAN_LOADER -join ' '
190-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.SPIRV_CROSS -join ' '
191-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.SPIRV_TOOLS -join ' '
192-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.GLFW -join ' '
193-
$cMakeCacheVariableOverride += ' ' + $submoduleCMakeOptions.GLM -join ' '
194-
}
195-
196-
$cMakeArguments = " -S $repositoryRootPath -B $buildDirectoryPath $cMakeGenerator $cMakeCacheVariableOverride"
87+
$cMakeArguments = "--preset $Configuration"
19788

19889
# CMake Generation process
19990
Write-Host $cMakeArguments
@@ -205,14 +96,7 @@ function Build([string]$configuration, [int]$VsVersion , [bool]$runBuild) {
20596
# CMake Build Process
20697
#
20798
if ($runBuild) {
208-
if ($cMakeGenerator -like 'Visual Studio*') {
209-
# With a Visual Studio Generator, `msbuild.exe` is used to run the build. By default, `msbuild.exe` will
210-
# launch worker processes to opportunistically re-use for subsequent builds. To cause the worker processes
211-
# to exit at the end of the main process, pass `-nodeReuse:false`.
212-
$buildToolOptions = '-nodeReuse:false'
213-
}
214-
215-
$buildArguments = "--build $buildDirectoryPath --config $configuration"
99+
$buildArguments = "--build --preset $Configuration"
216100
if ($buildToolOptions) {
217101
$buildArguments = $buildArguments, $buildToolOptions -join " --"
218102
}

0 commit comments

Comments
 (0)