Skip to content

Commit 57a8933

Browse files
committed
use CUSTOM_RULE_LAUNCHER with MSVC redists, remove redist/msvc.ps1
1 parent e4916c6 commit 57a8933

File tree

3 files changed

+45
-69
lines changed

3 files changed

+45
-69
lines changed

Dockerfile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,6 @@ COPY --link --from=ninja ["${IMPL_ARTIFACTS_DIR}", "C:/Ninja"]
129129
COPY --link --from=nasm ["${IMPL_ARTIFACTS_DIR}", "C:/Nasm"]
130130
COPY --link --from=git ["${IMPL_ARTIFACTS_DIR}", "C:/Git"]
131131

132-
COPY redist/msvc.ps1 msvc.ps1
133-
ARG MSVC_VERSION
134-
RUN $REDIST_PATH = 'C:/BuildTools/VC/Redist/MSVC/' + $env:MSVC_VERSION ; pwsh -File msvc.ps1 -RedistPath "$REDIST_PATH" -Arch x64
135-
136132
ARG CMAKE_VERSION
137133
ARG PYTHON_VERSION
138134
ARG NINJA_VERSION
@@ -141,7 +137,7 @@ ARG GIT_VERSION
141137
ARG WINDOWS_11_SDK_VERSION
142138
ARG WINDOWS_SDK_VERSION
143139
ARG VC_VERSION
144-
140+
ARG MSVC_VERSION
145141

146142
ENV CMAKE_WINDOWS_KITS_10_DIR="C:\WindowsKits10SDK" `
147143
CMAKE_VERSION=${CMAKE_VERSION} `

cmake/winsdk-msvc-toolchain.cmake

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ endfunction()
7777
_VALIDATE_ENV_V_(LIB)
7878
_VALIDATE_ENV_V_(INCLUDE)
7979

80+
# compilers/linkers
8081
set(CMAKE_C_COMPILER "${MSVC_TOOLSET_DIR}/bin/Host${ARCH}/${ARCH}/cl.exe" CACHE FILEPATH "")
8182
set(CMAKE_CXX_COMPILER "${MSVC_TOOLSET_DIR}/bin/Host${ARCH}/${ARCH}/cl.exe" CACHE FILEPATH "")
8283
set(CMAKE_ASM_COMPILER "${MSVC_TOOLSET_DIR}/bin/Host${ARCH}/${ARCH}/cl.exe" CACHE FILEPATH "")
@@ -111,4 +112,46 @@ if(EXISTS "${HINT}")
111112
endif()
112113
endmacro()
113114

114-
_REQUEST_EXTENSION_(DIASDK_INCLUDE_DIR "${VS_INSTANCE_LOCATION}/DIA SDK/include")
115+
_REQUEST_EXTENSION_(DIASDK_INCLUDE_DIR "${VS_INSTANCE_LOCATION}/DIA SDK/include")
116+
117+
# redists
118+
function(_REQUEST_REDIST_MODULES BASE OUTPUT)
119+
if(NOT EXISTS "${BASE}")
120+
message(FATAL_ERROR "Internal error, base \"${BASE}\" for redist module search directories doesn't exist - is your build tools installation corrupted?")
121+
endif()
122+
123+
file(GLOB_RECURSE _MODULES LIST_DIRECTORIES false "${BASE}/*.dll")
124+
125+
set(_DIRS)
126+
foreach(f IN LISTS _MODULES)
127+
get_filename_component(d "${f}" DIRECTORY)
128+
list(APPEND _DIRS "${d}")
129+
endforeach()
130+
131+
list(REMOVE_DUPLICATES _DIRS)
132+
133+
set(${OUTPUT} "${_DIRS}")
134+
135+
if(NOT ${OUTPUT})
136+
message(FATAL_ERROR "Internal error, no redist module search directories found (CRTs) - is your build tools installation corrupted?")
137+
endif()
138+
139+
set(${OUTPUT} "${${OUTPUT}}" PARENT_SCOPE)
140+
endfunction()
141+
142+
cmake_path(GET MSVC_TOOLSET_DIR FILENAME MSVC_VERSION)
143+
cmake_path(CONVERT "${VS_INSTANCE_LOCATION}/VC/Redist/MSVC/${MSVC_VERSION}" TO_CMAKE_PATH_LIST MSVC_REDIST_BASE NORMALIZE)
144+
_REQUEST_REDIST_MODULES("${MSVC_REDIST_BASE}/${ARCH}" RELEASE_REDISTS)
145+
_REQUEST_REDIST_MODULES("${MSVC_REDIST_BASE}/debug_nonredist/${ARCH}" DEBUG_REDISTS)
146+
set(MSVC_REDIST_MODULE_DIRECTORIES "${RELEASE_REDISTS};${DEBUG_REDISTS}" CACHE FILEPATH "MSVC Redist module search directories")
147+
148+
# launchers
149+
if(WIN32)
150+
set(SHELL_LAUNCHER "cmd /C")
151+
else()
152+
set(SHELL_LAUNCHER "sh -c")
153+
endif()
154+
155+
set_property(GLOBAL PROPERTY RULE_LAUNCH_CUSTOM
156+
"${CMAKE_COMMAND} -E env --modify PATH=path_list_prepend:${MSVC_REDIST_MODULE_DIRECTORIES} -- ${SHELL_LAUNCHER}"
157+
)

redist/msvc.ps1

Lines changed: 0 additions & 63 deletions
This file was deleted.

0 commit comments

Comments
 (0)