This is an automated email from the ASF dual-hosted git repository.

aboda pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit 8f8136afb8fc3c8ec21e1ca7a98e63e8461d4437
Author: Marton Szasz <[email protected]>
AuthorDate: Fri Jan 29 23:11:22 2021 +0100

    MINIFICPP-1375 more robust UCRT search
    
    On some systems, the UCRT redistributable DLLs are not under
    "$ENV{WindowsSdkDir}Redist\\ucrt\\DLLs\\$ENV{Platform}", but
    at 
"$ENV{WindowsSdkDir}Redist\\$ENV{WindowsSDKVersion}ucrt\\DLLs\\$ENV{Platform}",
    contrary to MS docs. This commit tries the documented place
    first, then falls back to the observed one.
    
    Signed-off-by: Marton Szasz <[email protected]>
    
    MINIFICPP-1375 not finding ucrt is now a fatal error
    
    Signed-off-by: Arpad Boda <[email protected]>
    
    This closes #985
---
 CMakeLists.txt | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d6f81d3..ff0024f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -650,13 +650,21 @@ if(WIN32)
        if (MSI_REDISTRIBUTE_UCRT_NONASL)
                set(UCRT_DIR_NAT 
"$ENV{WindowsSdkDir}Redist\\ucrt\\DLLs\\$ENV{Platform}")
                file(TO_CMAKE_PATH "${UCRT_DIR_NAT}" UCRT_DIR)
-               message("Using UCRT from ${UCRT_DIR}")
-               file(GLOB UCRT_DLLS "${UCRT_DIR}/*.dll")
-               file(COPY ${UCRT_DLLS} DESTINATION 
"${CMAKE_CURRENT_BINARY_DIR}/ucrt")
-               install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ucrt/"
-                       DESTINATION bin
-                       COMPONENT bin
-               )
+               if (NOT EXISTS "${UCRT_DIR}")
+                       set(UCRT_DIR_NAT 
"$ENV{WindowsSdkDir}Redist\\$ENV{WindowsSDKVersion}ucrt\\DLLs\\$ENV{Platform}")
+                       file(TO_CMAKE_PATH "${UCRT_DIR_NAT}" UCRT_DIR)
+               endif()
+               if (NOT EXISTS "${UCRT_DIR}")
+                       message(FATAL_ERROR "Couldn't find UCRT")
+               else()
+                       message("Using UCRT from ${UCRT_DIR}")
+                       file(GLOB UCRT_DLLS "${UCRT_DIR}/*.dll")
+                       file(COPY ${UCRT_DLLS} DESTINATION 
"${CMAKE_CURRENT_BINARY_DIR}/ucrt")
+                       install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ucrt/"
+                                       DESTINATION bin
+                                       COMPONENT bin
+                                       )
+               endif()
        endif()
 
        if (INSTALLER_MERGE_MODULES)

Reply via email to