@@ -9,15 +9,17 @@ set(NBL_NSC_PREINSTALL_DIRECTORY "${GODBOLT_BINARY_PRETEST_DIRECTORY}/.preinstal
99
1010set (NBL_DOCKER_CT_NSC_VOLUME_SOURCE "${GODBOLT_BINARY_DIRECTORY} /install" )
1111
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+
1215add_test (NAME NBL_NSC_INSTALL_RUNTIMES_TEST
1316 COMMAND "${CMAKE_COMMAND} " --install . --config $<CONFIG> --prefix "${NBL_NSC_PREINSTALL_DIRECTORY} " --component Runtimes
1417 WORKING_DIRECTORY "${NBL_ROOT_PATH_BINARY} "
1518 COMMAND_EXPAND_LISTS
1619)
1720
1821add_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
2123 COMMAND_EXPAND_LISTS
2224)
2325
@@ -122,7 +124,7 @@ set(NBL_CE_GENERATE_CONFIG_COMMAND
122124
123125set (NBL_DOCKER_CE_COMPOSE_BASE "${NBL_ROOT_PATH} /docker/compiler-explorer/compose.yml" )
124126cmake_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" )
126128
127129include (InstallRequiredSystemLibraries)
128130
@@ -148,9 +150,9 @@ find_file(UCRTBASED_DLL_PATH
148150
149151set (BASE_IMAGE mcr.microsoft.com/windows/servercore:ltsc2022-amd64) # NOTE: HARDCODED CURRENTLY
150152
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)
154156
155157cmake_path(NATIVE_PATH MSVC_REDIST_DIR NORMALIZE TOOLSET_REDIST_PATH)
156158get_filename_component (REDIST_CRT_TOOLSET_VERSION "${TOOLSET_REDIST_PATH} " NAME )
268270)
269271
270272# Devel, combined
271- set (BASE_IMAGE dcr .devsh.eu/compiler-explorer)
273+ set (BASE_IMAGE dr .devsh.eu/compiler-explorer/windows )
272274
273275# 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
274276set (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
304306string (TOLOWER "${NABLA_DEV_ENV_CT_NAME} " NABLA_DEV_ENV_CT_NAME)
305307
306308set (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)
308311
309312string (APPEND COMPOSE_CONTENT
310313[=[
@@ -346,6 +349,38 @@ make_directory("${GODBOLT_BINARY_DIRECTORY}/.ctx")
346349execute_process (COMMAND "${DOCKER_EXE} " compose -f "${NBL_DOCKER_CE_COMPOSE_BASE} " build )
347350execute_process (COMMAND "${DOCKER_EXE} " compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET} " build )
348351
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+
349384add_custom_target (run-compiler-explorer
350385 COMMAND "${CMAKE_COMMAND} " -E cmake_echo_color --blue "Performing Pre-Test..."
351386 COMMAND "${CTEST_EXE} " -C $<CONFIG> --stop-on -failure
@@ -369,8 +404,22 @@ add_custom_target(is-compiler-explorer-running
369404 USES_TERMINAL
370405)
371406
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+
372420add_dependencies (run-compiler-explorer nsc)
373421set_target_properties (run-compiler-explorer PROPERTIES FOLDER "Godbolt" )
374422set_target_properties (is-compiler-explorer-running PROPERTIES FOLDER "Godbolt" )
423+ set_target_properties (create-production-compiler-explorer PROPERTIES FOLDER "Godbolt" )
375424
376425endif ()
0 commit comments