From: Mike Gelfand Date: Tue, 18 Jun 2019 04:32:09 +0000 (+0300) Subject: Support MSVS 2017 VC CRT MSM file locations (MSI package) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a82c26642c16b1c52e3c0653cdf5a0bf88ba80f1;p=transmission Support MSVS 2017 VC CRT MSM file locations (MSI package) --- diff --git a/dist/msi/CMakeLists.txt b/dist/msi/CMakeLists.txt index 49aa53bdd..991b46b7e 100644 --- a/dist/msi/CMakeLists.txt +++ b/dist/msi/CMakeLists.txt @@ -20,6 +20,8 @@ if(NOT TR_QT_DIR) set(TR_QT_DIR "$/..") endif() +find_msvc_crt_msm(TR_MSVC_CRT_MSM_FILE) + set(ICONS_DIR "${CMAKE_SOURCE_DIR}/qt/icons/hicolor") png2ico(Transmission.ico "${ICONS_DIR}/16x16/transmission-qt.png" @@ -67,6 +69,7 @@ wix_candle(${PROJECT_NAME}_OBJS "WebSrcDir=${WEBSRCDIR}" "TrQmSrcDir=${TRQMSRCDIR}" "QtQmSrcDir=${QTQMSRCDIR}" + "MsvcCrtMsmFile=${TR_MSVC_CRT_MSM_FILE}" EXTRA_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/TransmissionConfig.wxi") diff --git a/dist/msi/Transmission.wxs b/dist/msi/Transmission.wxs index 6bde69522..33c92b63d 100644 --- a/dist/msi/Transmission.wxs +++ b/dist/msi/Transmission.wxs @@ -42,7 +42,7 @@ - + @@ -53,7 +53,7 @@ - + diff --git a/dist/msi/UtilityFunctions.cmake b/dist/msi/UtilityFunctions.cmake index f46069be7..a8122e3ab 100644 --- a/dist/msi/UtilityFunctions.cmake +++ b/dist/msi/UtilityFunctions.cmake @@ -1,5 +1,44 @@ include(CMakeParseArguments) +function(find_msvc_crt_msm OUTPUT_VAR) + if(${OUTPUT_VAR}) + return() + endif() + + message(STATUS "Looking for a CRT MSM:") + + if(NOT MSVC_TOOLSET_VERSION) + if(MSVC_VERSION GREATER_EQUAL 1920) + set(MSVC_TOOLSET_VERSION 142) + elseif(MSVC_VERSION GREATER_EQUAL 1910) + set(MSVC_TOOLSET_VERSION 141) + elseif(MSVC_VERSION GREATER_EQUAL 1900) + set(MSVC_TOOLSET_VERSION 140) + endif() + endif() + + set(MSM_FILE "Microsoft_VC${MSVC_TOOLSET_VERSION}_CRT_${ARCH}.msm") + message(STATUS " * File name: ${MSM_FILE}") + + set(VC_DIR "${CMAKE_CXX_COMPILER}") + while(VC_DIR AND NOT VC_DIR MATCHES "/VC$") + get_filename_component(VC_DIR "${VC_DIR}" DIRECTORY) + endwhile() + message(STATUS " * VC directory: ${VC_DIR}") + + file(GLOB VC_VER_DIRS "${VC_DIR}/Redist/MSVC/*") + message(STATUS " * Redist directories: ${VC_VER_DIRS}") + + set(CMN_PF_DIR "CommonProgramFiles(x86)") + find_file(${OUTPUT_VAR} + NAMES "${MSM_FILE}" + PATHS ${VC_VER_DIRS} $ENV{${CMN_PF_DIR}} + PATH_SUFFIXES "MergeModules" "Merge Modules") + message(STATUS " * Result: ${${OUTPUT_VAR}}") + + set(${OUTPUT_VAR} "${${OUTPUT_VAR}}" PARENT_SCOPE) +endfunction() + function(png2ico OUTPUT_FILE) if(NOT IS_ABSOLUTE "${OUTPUT_FILE}") set(OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE}")