@@ -9,15 +9,17 @@ set(NBL_NSC_PREINSTALL_DIRECTORY "${GODBOLT_BINARY_PRETEST_DIRECTORY}/.preinstal
9
9
10
10
set (NBL_DOCKER_CT_NSC_VOLUME_SOURCE "${GODBOLT_BINARY_DIRECTORY} /install" )
11
11
12
+ set (NBL_DOCKER_INSTALL_BAT_FILENAME install -production.bat )
13
+ set (NBL_DOCKER_CT_NSC_INSTALL_BAT "${NBL_DOCKER_CT_NSC_VOLUME_SOURCE} /${NBL_DOCKER_INSTALL_BAT_FILENAME} " )
14
+
12
15
add_test (NAME NBL_NSC_INSTALL_RUNTIMES_TEST
13
16
COMMAND "${CMAKE_COMMAND} " --install . --config $< CONFIG> --prefix "${NBL_NSC_PREINSTALL_DIRECTORY} " --component Runtimes
14
17
WORKING_DIRECTORY "${NBL_ROOT_PATH_BINARY} "
15
18
COMMAND_EXPAND_LISTS
16
19
)
17
20
18
21
add_test (NAME NBL_NSC_INSTALL_EXECUTABLES_TEST
19
- COMMAND "${CMAKE_COMMAND} " --install . --config $< CONFIG> --prefix "${NBL_NSC_PREINSTALL_DIRECTORY} " --component Executables
20
- WORKING_DIRECTORY "${NBL_ROOT_PATH_BINARY} "
22
+ COMMAND "${CMAKE_COMMAND} " --install "${CMAKE_CURRENT_BINARY_DIR} " --config $< CONFIG> --prefix "${NBL_NSC_PREINSTALL_DIRECTORY} " --component Executables
21
23
COMMAND_EXPAND_LISTS
22
24
)
23
25
@@ -122,7 +124,7 @@ set(NBL_CE_GENERATE_CONFIG_COMMAND
122
124
123
125
set (NBL_DOCKER_CE_COMPOSE_BASE "${NBL_ROOT_PATH} /docker/compiler-explorer/compose.yml" )
124
126
cmake_path (NATIVE_PATH NBL_DOCKER_CE_COMPOSE_BASE NORMALIZE NBL_DOCKER_CE_COMPOSE_BASE )
125
- set (NBL_DOCKER_CE_COMPOSE_TARGET "${GODBOLT_BINARY_DIRECTORY} /compose.yml" )
127
+ set (NBL_DOCKER_CE_COMPOSE_TARGET "${GODBOLT_BINARY_DIRECTORY} /.dev- compose.yml" )
126
128
127
129
include (InstallRequiredSystemLibraries )
128
130
@@ -148,9 +150,9 @@ find_file(UCRTBASED_DLL_PATH
148
150
149
151
set (BASE_IMAGE mcr.microsoft.com/windows/servercore:ltsc2022-amd64 ) # NOTE: HARDCODED CURRENTLY
150
152
151
- string (TOLOWER "dcr .devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME} /package/vulkan:latest" DOCKER_VULKAN_TAG )
152
- string (TOLOWER "dcr .devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME} /toolset/redist/${CMAKE_CXX_COMPILER_ID} /crt:latest" DOCKER_CRT_TAG )
153
- string (TOLOWER "dcr .devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME} /build/${CMAKE_CXX_COMPILER_ID} /devel-compiler-explorer-nsc:latest" DOCKER_DEVEL_TAG )
153
+ string (TOLOWER "dr .devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME} /package/vulkan:latest" DOCKER_VULKAN_TAG )
154
+ string (TOLOWER "dr .devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME} /toolset/redist/${CMAKE_CXX_COMPILER_ID} /crt:latest" DOCKER_CRT_TAG )
155
+ string (TOLOWER "dr .devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME} /build/${CMAKE_CXX_COMPILER_ID} /devel-compiler-explorer-nsc:latest" DOCKER_DEVEL_TAG )
154
156
155
157
cmake_path (NATIVE_PATH MSVC_REDIST_DIR NORMALIZE TOOLSET_REDIST_PATH )
156
158
get_filename_component (REDIST_CRT_TOOLSET_VERSION "${TOOLSET_REDIST_PATH} " NAME )
268
270
)
269
271
270
272
# Devel, combined
271
- set (BASE_IMAGE dcr .devsh.eu/compiler-explorer )
273
+ set (BASE_IMAGE dr .devsh.eu/compiler-explorer/windows )
272
274
273
275
# NOTE to self: could be all done with single docker file & compose file but buildkit works bad with windows driver, yet need to wait for stuff to be implemented
274
276
set (OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /docker/devel" )
@@ -304,7 +306,8 @@ set(NABLA_DEV_ENV_CT_NAME dev.nabla.env.${CMAKE_SYSTEM_NAME}.${CMAKE_CXX_COMPILE
304
306
string (TOLOWER "${NABLA_DEV_ENV_CT_NAME} " NABLA_DEV_ENV_CT_NAME )
305
307
306
308
set (COMPOSE_NSC_DEV_SERVICE compiler-explorer-nsc-dev )
307
- string (TOLOWER "dcr.devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME} /build/${CMAKE_CXX_COMPILER_ID} /compiler-explorer-nsc:latest" COMPOSE_NSC_DEV_IMAGE )
309
+ string (TOLOWER "dr.devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME} /build/${CMAKE_CXX_COMPILER_ID} /compiler-explorer-nsc:latest" COMPOSE_NSC_DEV_IMAGE )
310
+ string (TOLOWER "dr.devsh.eu/compiler-explorer/production/windows/nsc:latest" COMPOSE_NSC_PRODUCTION_IMAGE )
308
311
309
312
string (APPEND COMPOSE_CONTENT
310
313
[=[
@@ -346,6 +349,38 @@ make_directory("${GODBOLT_BINARY_DIRECTORY}/.ctx")
346
349
execute_process (COMMAND "${DOCKER_EXE} " compose -f "${NBL_DOCKER_CE_COMPOSE_BASE} " build )
347
350
execute_process (COMMAND "${DOCKER_EXE} " compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET} " build )
348
351
352
+ string (APPEND BAT_PRODUCTION_INSTALL
353
+ [=[
354
+ @echo off
355
+ setlocal
356
+
357
+ set BASE_PATH=C:\
358
+
359
+ xcopy "%BASE_PATH%target" "%BASE_PATH%nsc\install" /s /e /h /i /y /f
360
+ if %ERRORLEVEL% neq 0 (
361
+ echo [ERROR] Failed to copy C:\target to C:\nsc\install
362
+ exit /b %ERRORLEVEL%
363
+ )
364
+
365
+ if "%GIT_GODBOLT_REPOSITORY_PATH%"=="" (
366
+ echo [ERROR] Environment variable GIT_GODBOLT_REPOSITORY_PATH is not set!
367
+ exit /b 1
368
+ )
369
+
370
+ copy "%BASE_PATH%nsc\install\hlsl.local.properties.cmake" "%GIT_GODBOLT_REPOSITORY_PATH%\etc\config\hlsl.local.properties"
371
+ if %ERRORLEVEL% neq 0 (
372
+ echo [ERROR] Failed to copy HLSL properties file
373
+ exit /b %ERRORLEVEL%
374
+ )
375
+
376
+ echo [SUCCESS] All production files copied successfully.
377
+ exit /b 0
378
+ ]=]
379
+ )
380
+
381
+ string (CONFIGURE "${BAT_PRODUCTION_INSTALL} " BAT_PRODUCTION_INSTALL @ONLY )
382
+ file (WRITE "${NBL_DOCKER_CT_NSC_INSTALL_BAT} " "${BAT_PRODUCTION_INSTALL} " )
383
+
349
384
add_custom_target (run-compiler-explorer
350
385
COMMAND "${CMAKE_COMMAND} " -E cmake_echo_color --blue "Performing Pre-Test..."
351
386
COMMAND "${CTEST_EXE} " -C $< CONFIG> --stop-on-failure
@@ -369,8 +404,22 @@ add_custom_target(is-compiler-explorer-running
369
404
USES_TERMINAL
370
405
)
371
406
407
+ set (NBL_DOCKER_TMP_PRODUCTION_TARGET "C:\\ target" )
408
+
409
+ add_custom_target (create-production-compiler-explorer
410
+ COMMAND "${DOCKER_EXE} " run -dit -v "${NBL_DOCKER_CT_NSC_VOLUME_SOURCE} :${NBL_DOCKER_TMP_PRODUCTION_TARGET} " --name production-ce-orphan --entrypoint "cmd" "${COMPOSE_NSC_DEV_IMAGE} "
411
+ COMMAND "${DOCKER_EXE} " exec production-ce-orphan "${NBL_DOCKER_TMP_PRODUCTION_TARGET} \\ ${NBL_DOCKER_INSTALL_BAT_FILENAME} "
412
+ # TODO: add final test -> run in production mode (npm start) + execute basic hlsl file compile checks for collected nsc compilers, if all good then commit
413
+ COMMAND "${DOCKER_EXE} " stop production-ce-orphan
414
+ COMMAND "${DOCKER_EXE} " commit production-ce-orphan "${COMPOSE_NSC_PRODUCTION_IMAGE} "
415
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} "
416
+ VERBATIM
417
+ USES_TERMINAL
418
+ )
419
+
372
420
add_dependencies (run-compiler-explorer nsc )
373
421
set_target_properties (run-compiler-explorer PROPERTIES FOLDER "Godbolt" )
374
422
set_target_properties (is-compiler-explorer-running PROPERTIES FOLDER "Godbolt" )
423
+ set_target_properties (create-production-compiler-explorer PROPERTIES FOLDER "Godbolt" )
375
424
376
425
endif ()
0 commit comments