Skip to content

Commit 4bf3e18

Browse files
committed
introduce build info artifacts, create nablaBuildInfo.cmake & ce-generate-config.cmake, add rwdi support for CE NSC docker CTs, update NSC to cover build artifacts & write some thoughts in comments
1 parent 2f8c807 commit 4bf3e18

File tree

4 files changed

+303
-57
lines changed

4 files changed

+303
-57
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
if (NOT DEFINED NBL_EXECUTABLE_PATH)
2+
message(FATAL_ERROR "NBL_EXECUTABLE_PATH is not defined.")
3+
endif()
4+
5+
if(NOT EXISTS "${NBL_EXECUTABLE_PATH}")
6+
message(FATAL_ERROR "NBL_EXECUTABLE_PATH: \"${NBL_EXECUTABLE_PATH}\" doesn't exist!")
7+
endif()
8+
9+
if (NOT DEFINED NBL_BUILD_INFO)
10+
message(FATAL_ERROR "NBL_BUILD_INFO is not defined.")
11+
endif()
12+
13+
cmake_path(NATIVE_PATH NBL_BUILD_INFO NORMALIZE NBL_BUILD_INFO)
14+
15+
if(NOT EXISTS "${NBL_BUILD_INFO}")
16+
message(FATAL_ERROR "NBL_BUILD_INFO: \"${NBL_BUILD_INFO}\" doesn't exist!")
17+
endif()
18+
19+
if (NOT DEFINED NBL_OUTPUT_FILE)
20+
message(FATAL_ERROR "NBL_OUTPUT_FILE is not defined.")
21+
endif()
22+
23+
cmake_path(NATIVE_PATH NBL_OUTPUT_FILE NORMALIZE NBL_OUTPUT_FILE)
24+
25+
if (DEFINED NBL_OUTPUT_EXE_OVERRIDE)
26+
set(EXECUTABLE_PATH "${NBL_OUTPUT_EXE_OVERRIDE}")
27+
else()
28+
set(EXECUTABLE_PATH "${NBL_EXECUTABLE_PATH}")
29+
endif()
30+
31+
file(READ "${NBL_BUILD_INFO}" ORIGINAL_JSON)
32+
33+
string(JSON NBL_MODULES ERROR_VARIABLE JSON_ERROR GET "${ORIGINAL_JSON}" modules)
34+
if(JSON_ERROR)
35+
message(FATAL_ERROR "JSON_ERROR: \"${JSON_ERROR}\"")
36+
endif()
37+
38+
file(TIMESTAMP "${NBL_EXECUTABLE_PATH}" EXE_TIMESTAMP "%Y-%m-%dT%H:%M:%S")
39+
string(SUBSTRING "${EXE_TIMESTAMP}" 0 10 EXE_DATE)
40+
string(SUBSTRING "${EXE_TIMESTAMP}" 11 8 EXE_TIME)
41+
42+
string(JSON ORIGINAL_JSON SET "${ORIGINAL_JSON}" "exe.timestamp.date" "\"${EXE_DATE}\"")
43+
string(JSON ORIGINAL_JSON SET "${ORIGINAL_JSON}" "exe.timestamp.time" "\"${EXE_TIME}\"")
44+
string(JSON ORIGINAL_JSON SET "${ORIGINAL_JSON}" "exe.path" "\"${EXECUTABLE_PATH}\"")
45+
46+
file(WRITE "${NBL_OUTPUT_FILE}" "${ORIGINAL_JSON}")
47+
message(STATUS "Updated build info JSON written to: ${NBL_OUTPUT_FILE}")
48+
message(STATUS "${ORIGINAL_JSON}")

tools/nsc/CMakeLists.txt

Lines changed: 42 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,29 @@ set(NBL_NSC_COMPILE_COMMAND
2929
"${CMAKE_CURRENT_SOURCE_DIR}/test/hlsl/input.hlsl"
3030
)
3131

32+
set(NBL_NSC_PREINSTALL_TARGET_EXE_DIRECTORY "${NBL_NSC_PREINSTALL_DIRECTORY}/${NBL_PACKAGE_RUNTIME_EXE_DIR_PATH}")
33+
set(NBL_NSC_PREINSTALL_TARGET_EXE_FILENAME $<TARGET_FILE_NAME:${EXECUTABLE_NAME}>)
34+
set(NBL_NSC_PREINSTALL_TARGET_EXE_FILEPATH "${NBL_NSC_PREINSTALL_TARGET_EXE_DIRECTORY}/${NBL_NSC_PREINSTALL_TARGET_EXE_FILENAME}")
35+
set(NBL_NSC_BUILD_INFO_FILENAME build-info.json)
36+
set(NBL_NSC_PREINSTALL_TARGET_BUILD_INFO "${NBL_NSC_PREINSTALL_TARGET_EXE_DIRECTORY}/${NBL_NSC_BUILD_INFO_FILENAME}")
37+
3238
add_test(NAME NBL_NSC_COMPILE_AT_EXE_CWD_TEST
33-
COMMAND "$<TARGET_FILE_BASE_NAME:${EXECUTABLE_NAME}>" ${NBL_NSC_COMPILE_COMMAND}
34-
WORKING_DIRECTORY "${NBL_NSC_PREINSTALL_DIRECTORY}/${NBL_PACKAGE_RUNTIME_EXE_DIR_PATH}"
39+
COMMAND "${NBL_NSC_PREINSTALL_TARGET_EXE_FILENAME}" ${NBL_NSC_COMPILE_COMMAND}
40+
WORKING_DIRECTORY "${NBL_NSC_PREINSTALL_TARGET_EXE_DIRECTORY}"
3541
COMMAND_EXPAND_LISTS
3642
)
3743

3844
add_test(NAME NBL_NSC_COMPILE_CUSTOM_CWD_TEST
39-
COMMAND "${NBL_PACKAGE_RUNTIME_EXE_DIR_PATH}/$<TARGET_FILE_BASE_NAME:${EXECUTABLE_NAME}>" ${NBL_NSC_COMPILE_COMMAND}
45+
COMMAND "${NBL_PACKAGE_RUNTIME_EXE_DIR_PATH}/${NBL_NSC_PREINSTALL_TARGET_EXE_FILENAME}" ${NBL_NSC_COMPILE_COMMAND}
4046
WORKING_DIRECTORY "${NBL_NSC_PREINSTALL_DIRECTORY}"
4147
COMMAND_EXPAND_LISTS
4248
)
4349

50+
add_test(NAME NBL_NSC_DUMP_BUILD_INFO_TEST
51+
COMMAND "${NBL_NSC_PREINSTALL_TARGET_EXE_FILEPATH}" --dump-build-info --file "${NBL_NSC_PREINSTALL_TARGET_BUILD_INFO}"
52+
COMMAND_EXPAND_LISTS
53+
)
54+
4455
option(NBL_ENABLE_DOCKER_INTEGRATION "" OFF)
4556

4657
if(NBL_ENABLE_DOCKER_INTEGRATION)
@@ -67,49 +78,23 @@ set(NBL_DOCKER_NSC_COMPILER_CONFIG_OUTPUT "${NBL_DOCKER_CT_NSC_VOLUME_SOURCE}/hl
6778

6879
set(NBL_DOCKER_CT_NSC_VOLUME_TARGET "C:\\\\nsc\\\\install")
6980
string(GENEX_STRIP "${NBL_PACKAGE_RUNTIME_EXE_DIR_PATH}" NBL_RELATIVE_ENTRY)
70-
set(NSC_RELEASE_EXECUTABLE "${NBL_DOCKER_CT_NSC_VOLUME_TARGET}/${NBL_RELATIVE_ENTRY}/${EXECUTABLE_NAME}")
71-
set(NSC_DEBUG_EXECUTABLE "${NBL_DOCKER_CT_NSC_VOLUME_TARGET}/debug/${NBL_RELATIVE_ENTRY}/${EXECUTABLE_NAME}_d")
72-
cmake_path(NATIVE_PATH NSC_RELEASE_EXECUTABLE NORMALIZE NSC_RELEASE_EXECUTABLE)
73-
cmake_path(NATIVE_PATH NSC_DEBUG_EXECUTABLE NORMALIZE NSC_DEBUG_EXECUTABLE)
81+
set(NSC_RELEASE_BUILD_INFO "${NBL_NSC_PREINSTALL_DIRECTORY}/${NBL_RELATIVE_ENTRY}/${NBL_NSC_BUILD_INFO_FILENAME}")
82+
set(NSC_RELWITHDEBINFO_BUILD_INFO "${NBL_NSC_PREINSTALL_DIRECTORY}/relwithdebinfo/${NBL_RELATIVE_ENTRY}/${NBL_NSC_BUILD_INFO_FILENAME}")
83+
set(NSC_DEBUG_BUILD_INFO "${NBL_NSC_PREINSTALL_DIRECTORY}/debug/${NBL_RELATIVE_ENTRY}/${NBL_NSC_BUILD_INFO_FILENAME}")
84+
cmake_path(NATIVE_PATH NSC_RELEASE_BUILD_INFO NORMALIZE NSC_RELEASE_BUILD_INFO)
85+
cmake_path(NATIVE_PATH NSC_RELWITHDEBINFO_BUILD_INFO NORMALIZE NSC_RELWITHDEBINFO_BUILD_INFO)
86+
cmake_path(NATIVE_PATH NSC_DEBUG_BUILD_INFO NORMALIZE NSC_DEBUG_BUILD_INFO)
87+
7488
set(NBL_INSTALL_DIRECTORY "${NBL_DOCKER_CT_NSC_VOLUME_TARGET}")
7589
cmake_path(NATIVE_PATH NBL_DOCKER_CT_NSC_VOLUME_TARGET NORMALIZE NBL_DOCKER_CT_NSC_VOLUME_TARGET)
7690

77-
# TODO: NABLA_REV_TARGET
78-
79-
string(APPEND CONFIG_CONTENT
80-
[=[
81-
compilers=&dxc
82-
83-
defaultCompiler=nsc_release_upstream
84-
supportsBinary=true
85-
supportsBinaryObject=true
86-
compilerType=nsc-spirv
87-
needsMulti=false
88-
supportsLibraryCodeFilter=true
89-
disassemblerPath=@SPIRV_DIS_EXE@
90-
demangler=
91-
92-
group.dxc.compilers=nsc_release_upstream:nsc_debug_upstream
93-
group.dxc.includeFlag=-I
94-
group.dxc.versionFlag=--version
95-
group.dxc.groupName=NSC compilers
96-
97-
compiler.nsc_release_upstream.exe=@NSC_RELEASE_EXECUTABLE@.exe
98-
compiler.nsc_release_upstream.name=NSC (Release)
99-
compiler.nsc_release_upstream.notification=The NSC (Release) has been compiled from following <a href="https://github.com/Devsh-Graphics-Programming/Nabla/commit/@NABLA_REV_TARGET@" target="_blank" rel="noopener noreferrer">commit<sup><small class="fas fa-external-link-alt opens-new-window" title="Opens the commit in a new window"></small></sup></a>.
100-
compiler.nsc_release_upstream.supportsExecute=false
101-
compiler.nsc_release_upstream.options=
102-
compiler.nsc_release_upstream.disassemblerPath=@SPIRV_DIS_EXE@
103-
compiler.nsc_release_upstream.demangler=
104-
105-
compiler.nsc_debug_upstream.exe=@NSC_DEBUG_EXECUTABLE@.exe
106-
compiler.nsc_debug_upstream.name=NSC (Debug)
107-
compiler.nsc_debug_upstream.notification=The NSC (Debug) has been compiled from following <a href="https://github.com/Devsh-Graphics-Programming/Nabla/commit/@NABLA_REV_TARGET@" target="_blank" rel="noopener noreferrer">commit<sup><small class="fas fa-external-link-alt opens-new-window" title="Opens the commit in a new window"></small></sup></a>.
108-
compiler.nsc_debug_upstream.supportsExecute=false
109-
compiler.nsc_debug_upstream.options=
110-
compiler.nsc_debug_upstream.disassemblerPath=@SPIRV_DIS_EXE@
111-
compiler.nsc_debug_upstream.demangler=
112-
]=]
91+
set(NBL_BUILD_INFO_POSTPROCESS_COMMAND
92+
"${CMAKE_COMMAND}"
93+
"-DNBL_EXECUTABLE_PATH=${NBL_NSC_PREINSTALL_TARGET_EXE_FILEPATH}"
94+
"-DNBL_BUILD_INFO=${NBL_NSC_PREINSTALL_TARGET_BUILD_INFO}"
95+
"-DNBL_OUTPUT_FILE=${NBL_NSC_PREINSTALL_TARGET_BUILD_INFO}"
96+
"-DNBL_OUTPUT_EXE_OVERRIDE=$<PATH:NORMAL_PATH,${NBL_DOCKER_CT_NSC_VOLUME_TARGET}/${NBL_PACKAGE_RUNTIME_EXE_DIR_PATH}/${NBL_NSC_PREINSTALL_TARGET_EXE_FILENAME}>" # as in CT, it's *not* host exe location!
97+
-P "${NBL_ROOT_PATH}/cmake/scripts/nbl/nablaBuildInfo.cmake"
11398
)
11499

115100
cmake_path(GET SPIRV_DIS_EXE PARENT_PATH VULKAN_SDK_BIN_DIRECTORY)
@@ -118,8 +103,15 @@ cmake_path(GET SPIRV_DIS_EXE FILENAME SPIRV_DIS_EXE)
118103
set(SPIRV_DIS_EXE "C:\\vulkan\\bin\\${SPIRV_DIS_EXE}")
119104
cmake_path(NATIVE_PATH SPIRV_DIS_EXE NORMALIZE SPIRV_DIS_EXE)
120105

121-
string(CONFIGURE "${CONFIG_CONTENT}" CONFIG_CONTENT @ONLY)
122-
file(WRITE "${NBL_DOCKER_NSC_COMPILER_CONFIG_OUTPUT}" "${CONFIG_CONTENT}")
106+
set(NBL_CE_GENERATE_CONFIG_COMMAND
107+
"${CMAKE_COMMAND}"
108+
"-DSPIRV_DIS_EXE=${SPIRV_DIS_EXE}"
109+
"-DNSC_RELEASE_BUILD_INFO=${NSC_RELEASE_BUILD_INFO}"
110+
"-DNSC_RELWITHDEBINFO_BUILD_INFO=${NSC_RELWITHDEBINFO_BUILD_INFO}"
111+
"-DNSC_DEBUG_BUILD_INFO=${NSC_DEBUG_BUILD_INFO}"
112+
"-DOUTPUT_CONFIG_FILE=${NBL_DOCKER_NSC_COMPILER_CONFIG_OUTPUT}"
113+
-P "${CMAKE_CURRENT_SOURCE_DIR}/ce-generate-config.cmake"
114+
)
123115

124116
set(NBL_DOCKER_CE_COMPOSE_BASE "${NBL_ROOT_PATH}/docker/compiler-explorer/compose.yml")
125117
cmake_path(NATIVE_PATH NBL_DOCKER_CE_COMPOSE_BASE NORMALIZE NBL_DOCKER_CE_COMPOSE_BASE)
@@ -144,6 +136,8 @@ find_file(UCRTBASED_DLL_PATH
144136
REQUIRED
145137
)
146138

139+
# nabla-devel-host-env-windows
140+
147141
string(APPEND COMPOSE_CONTENT
148142
[=[
149143
services:
@@ -155,6 +149,7 @@ services:
155149
environment:
156150
NBL_INSTALL_DIRECTORY: "@NBL_INSTALL_DIRECTORY@"
157151
NBL_EXPLICIT_MODULE_LOAD_LOG: "ON"
152+
NABLA_REV_TARGET: "TODO HERE"
158153
entrypoint:
159154
- "cmd"
160155
- "/c"
@@ -189,7 +184,9 @@ file(WRITE "${NBL_DOCKER_CE_COMPOSE_TARGET}" "${COMPOSE_CONTENT}")
189184
add_custom_target(run-compiler-explorer
190185
COMMAND "${CMAKE_COMMAND}" -E cmake_echo_color --blue "Performing Pre-Test..."
191186
COMMAND "${CTEST_EXE}" -C $<CONFIG> --stop-on-failure
187+
COMMAND ${NBL_BUILD_INFO_POSTPROCESS_COMMAND}
192188
COMMAND "${DOCKER_EXE}" compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET}" stop compiler-explorer-nsc
189+
COMMAND ${NBL_CE_GENERATE_CONFIG_COMMAND}
193190
COMMAND "${CMAKE_COMMAND}" -E cmake_echo_color --green "OK! Performing executables hot-swap..."
194191
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${DEBUG_CRT_DIRECTORY_SOURCE}" "${DEBUG_CRT_DIRECTORY_TARGET}"
195192
COMMAND "${CMAKE_COMMAND}" -E copy "${UCRTBASED_DLL_PATH}" "${DEBUG_CRT_DIRECTORY_TARGET}"

tools/nsc/ce-generate-config.cmake

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
if (NOT DEFINED SPIRV_DIS_EXE)
2+
message(FATAL_ERROR "SPIRV_DIS_EXE is not defined.")
3+
endif()
4+
5+
if (NOT DEFINED NSC_RELEASE_BUILD_INFO)
6+
message(FATAL_ERROR "NSC_RELEASE_BUILD_INFO is not defined.")
7+
endif()
8+
9+
if (NOT DEFINED NSC_RELWITHDEBINFO_BUILD_INFO)
10+
message(FATAL_ERROR "NSC_RELWITHDEBINFO_BUILD_INFO is not defined.")
11+
endif()
12+
13+
if (NOT DEFINED NSC_DEBUG_BUILD_INFO)
14+
message(FATAL_ERROR "NSC_DEBUG_BUILD_INFO is not defined.")
15+
endif()
16+
17+
if (NOT DEFINED OUTPUT_CONFIG_FILE)
18+
message(FATAL_ERROR "OUTPUT_CONFIG_FILE is not defined.")
19+
endif()
20+
21+
function(GET_HASH MODULE BUILD_INFO_JSON OUT_VAR)
22+
string(JSON MODULE_JSON ERROR_VARIABLE JSON_ERROR GET "${BUILD_INFO_JSON}" "modules")
23+
if (JSON_ERROR)
24+
message(FATAL_ERROR "JSON_ERROR: ${JSON_ERROR}")
25+
endif()
26+
27+
string(JSON MODULE_HASH ERROR_VARIABLE JSON_ERROR GET "${MODULE_JSON}" "${MODULE}")
28+
if (JSON_ERROR)
29+
message(FATAL_ERROR "JSON_ERROR: ${JSON_ERROR}")
30+
endif()
31+
32+
string(JSON HASH ERROR_VARIABLE JSON_ERROR GET "${MODULE_HASH}" "commitHash")
33+
if (JSON_ERROR)
34+
message(FATAL_ERROR "JSON_ERROR: ${JSON_ERROR}")
35+
endif()
36+
37+
set("${OUT_VAR}" "${HASH}" PARENT_SCOPE)
38+
endfunction()
39+
40+
set(NABLA_REPO_URL "https://github.com/Devsh-Graphics-Programming/Nabla")
41+
set(DXC_REPO_URL "https://github.com/Devsh-Graphics-Programming/DirectXShaderCompiler")
42+
43+
function(NBL_CONFIGURE_COMPILER _CONFIG_ CONFIG_CONTENT)
44+
set(BUILD_INFO_FILE ${NSC_${_CONFIG_}_BUILD_INFO})
45+
46+
message(STATUS "Configuring \"${BUILD_INFO_FILE}\"..")
47+
48+
if (NOT EXISTS "${BUILD_INFO_FILE}")
49+
message(STATUS "${_CONFIG_} compiler variant will not get created because build info file does not exist!")
50+
return()
51+
endif()
52+
53+
file(READ "${BUILD_INFO_FILE}" BUILD_INFO_JSON)
54+
55+
# module hashes
56+
GET_HASH("nabla" "${BUILD_INFO_JSON}" NABLA_COMMIT_HASH)
57+
GET_HASH("dxc" "${BUILD_INFO_JSON}" DXC_COMMIT_HASH)
58+
59+
# exe
60+
string(JSON EXE_PATH ERROR_VARIABLE JSON_ERROR GET "${BUILD_INFO_JSON}" "exe.path")
61+
if (JSON_ERROR)
62+
message(FATAL_ERROR "JSON_ERROR: ${JSON_ERROR}")
63+
endif()
64+
65+
string(JSON EXE_TIMESTAMP_DATE ERROR_VARIABLE JSON_ERROR GET "${BUILD_INFO_JSON}" "exe.timestamp.date")
66+
if (JSON_ERROR)
67+
message(FATAL_ERROR "JSON_ERROR: ${JSON_ERROR}")
68+
endif()
69+
70+
string(JSON EXE_TIMESTAMP_TIME ERROR_VARIABLE JSON_ERROR GET "${BUILD_INFO_JSON}" "exe.timestamp.time")
71+
if (JSON_ERROR)
72+
message(FATAL_ERROR "JSON_ERROR: ${JSON_ERROR}")
73+
endif()
74+
75+
string(TOLOWER "${_CONFIG_}" _L_CONFIG_)
76+
77+
set(CE_COMPILER_CONTENT
78+
[=[
79+
80+
compiler.nsc_@_L_CONFIG_@_upstream.exe=@EXE_PATH@
81+
compiler.nsc_@_L_CONFIG_@_upstream.name=NSC (@_L_CONFIG_@)
82+
compiler.nsc_@_L_CONFIG_@_upstream.notification=The NSC (@_L_CONFIG_@) has been compiled from the following <a href="@NABLA_REPO_URL@/commit/@NABLA_COMMIT_HASH@" target="_blank" rel="noopener noreferrer">Nabla commit<sup><small class="fas fa-external-link-alt opens-new-window" title="Opens the Nabla commit in a new window"></small></sup></a> and <a href="@DXC_REPO_URL@/commit/@DXC_COMMIT_HASH@" target="_blank" rel="noopener noreferrer">DXC commit<sup><small class="fas fa-external-link-alt opens-new-window" title="Opens the DXC commit in a new window"></small></sup></a>. @BUILD_INFO_HTML@
83+
compiler.nsc_@_L_CONFIG_@_upstream.supportsExecute=false
84+
compiler.nsc_@_L_CONFIG_@_upstream.options=
85+
compiler.nsc_@_L_CONFIG_@_upstream.disassemblerPath=@SPIRV_DIS_EXE@
86+
compiler.nsc_@_L_CONFIG_@_upstream.demangler=
87+
88+
]=]
89+
)
90+
91+
string(REPLACE "\n" "<br>" BUILD_INFO_HTML "${BUILD_INFO_JSON}")
92+
string(PREPEND BUILD_INFO_HTML "<br><br>Build info:<br>")
93+
94+
string(CONFIGURE "${CE_COMPILER_CONTENT}" CE_COMPILER_CONTENT @ONLY)
95+
string(APPEND CONFIG_CONTENT "${CE_COMPILER_CONTENT}")
96+
set(CONFIG_CONTENT
97+
"${CONFIG_CONTENT}"
98+
PARENT_SCOPE)
99+
100+
list(APPEND NSC_COMPILERS "nsc_${_L_CONFIG_}_upstream")
101+
set(NSC_COMPILERS
102+
"${NSC_COMPILERS}"
103+
PARENT_SCOPE)
104+
105+
message(STATUS "OK! Target CT \"${EXE_PATH}\" configured.")
106+
endfunction()
107+
108+
NBL_CONFIGURE_COMPILER(RELEASE "${CONFIG_CONTENT}" "${NSC_COMPILERS}")
109+
NBL_CONFIGURE_COMPILER(RELWITHDEBINFO "${CONFIG_CONTENT}" "${NSC_COMPILERS}")
110+
NBL_CONFIGURE_COMPILER(DEBUG "${CONFIG_CONTENT}" "${NSC_COMPILERS}")
111+
string(REPLACE ";" ":" NSC_COMPILERS "${NSC_COMPILERS}")
112+
113+
set(FINAL_CONFIG_CONTENT
114+
[=[
115+
compilers=&dxc
116+
117+
defaultCompiler=nsc_release_upstream
118+
supportsBinary=true
119+
supportsBinaryObject=true
120+
compilerType=nsc-spirv
121+
needsMulti=false
122+
supportsLibraryCodeFilter=true
123+
disassemblerPath=@SPIRV_DIS_EXE@
124+
demangler=
125+
126+
group.dxc.compilers=@NSC_COMPILERS@
127+
group.dxc.includeFlag=-I
128+
group.dxc.versionFlag=--version
129+
group.dxc.groupName=NSC compilers
130+
]=]
131+
)
132+
133+
if(NSC_COMPILERS)
134+
string(CONFIGURE "${FINAL_CONFIG_CONTENT}" FINAL_CONFIG_CONTENT @ONLY)
135+
string(APPEND FINAL_CONFIG_CONTENT "${CONFIG_CONTENT}")
136+
else()
137+
message(FATAL_ERROR "No compilers, internal error!")
138+
endif()
139+
140+
file(WRITE "${OUTPUT_CONFIG_FILE}" "${FINAL_CONFIG_CONTENT}")
141+
message(STATUS "Compiler Explorer configuration written to: ${OUTPUT_CONFIG_FILE}")

0 commit comments

Comments
 (0)