diff options
Diffstat (limited to 'win/packaging/CMakeLists.txt')
-rw-r--r-- | win/packaging/CMakeLists.txt | 69 |
1 files changed, 35 insertions, 34 deletions
diff --git a/win/packaging/CMakeLists.txt b/win/packaging/CMakeLists.txt index 683abc64ef3..465b4529fac 100644 --- a/win/packaging/CMakeLists.txt +++ b/win/packaging/CMakeLists.txt @@ -178,6 +178,39 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio") SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR}") ENDIF() +IF(MSVC_CRT_TYPE MATCHES "/MD") + # Find out CRT merge module path, we're going to use it in installer + # The path and name depends on VS version + IF(MSVC_VERSION LESS 1900) + # VS2015 + SET(VCREDIST_MSM_FILENAME Microsoft_VC140_CRT_${WIX_ARCH_SUFFIX}.msm) + SET(ProgramFilesX86 "ProgramFiles(x86)") + FIND_FILE(${VCREDIST_MSM_FILENAME} + NO_DEFAULT_PATH + PATHS + "$ENV{${ProgramFilesX86}}/Common Files/Merge Modules" + "$ENV{ProgramFiles}/Common Files/Merge Modules" + ) + ELSEIF(MSVC_VERSION LESS 2000) + # VS2017 + SET(VCREDIST_MSM_FILENAME Microsoft_VC141_CRT_${WIX_ARCH_SUFFIX}.msm) + FILE(GLOB MSM_LIST "C:/Program Files*/Microsoft Visual Studio/2017/*/VC/Redist/MSVC/*/MergeModules/${VCREDIST_MSM_FILENAME}") + LIST(LENGTH MSM_LIST LEN) + IF(LEN GREATER 0) + LIST(GET MSM_LIST 0 VCRedist_MSM) + ENDIF() + ELSE() + # Post-VS2017. Needs to be ported when new VS is out + MESSAGE(WARNING + "Name of redistributable merge module not known for this version of MSVC") + ENDIF() + IF (NOT VCRedist_MSM) + MESSAGE(WARNING "Can't find merge module ${VCREDIST_MSM_FILENAME}") + ELSE() + FILE(TO_NATIVE_PATH ${VCRedist_MSM} VCRedist_MSM) + # MESSAGE("VCRedist_MSM=${VCRedist_MSM}") + ENDIF() +ENDIF() ADD_CUSTOM_TARGET( MSI @@ -209,44 +242,12 @@ ADD_CUSTOM_TARGET( -DVERSION="${VERSION}" -DWITH_THIRD_PARTY="${WITH_THIRD_PARTY}" -DWIXCA_LOCATION="$<TARGET_FILE:wixca>" + -DMSVC_CRT_TYPE="${MSVC_CRT_TYPE}" + -DVCRedist_MSM="${VCRedist_MSM}" -P ${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake ) ADD_DEPENDENCIES(MSI wixca) -ADD_CUSTOM_TARGET( - MSI_ESSENTIALS - COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -DESSENTIALS=1 - -DCANDLE_EXECUTABLE="${CANDLE_EXECUTABLE}" - -DCMAKE_CFG_INTDIR="${CMAKE_CFG_INTDIR}" - -DCMAKE_FULL_VER="${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" - -DCMAKE_SIZEOF_VOID_P=${CMAKE_SIZEOF_VOID_P} - -DCOPYING_RTF="${COPYING_RTF}" - -DCPACK_WIX_CONFIG="${CPACK_WIX_CONFIG}" - -DCPACK_WIX_INCLUDE="${CPACK_WIX_INCLUDE}" - -DCPACK_WIX_PACKAGE_BASE_NAME="${CPACK_WIX_PACKAGE_BASE_NAME}" - -DCPACK_WIX_PACKAGE_NAME="${CPACK_WIX_PACKAGE_NAME}" - -DCPACK_WIX_UPGRADE_CODE="${CPACK_WIX_UPGRADE_CODE}" - -DEXTRA_WIX_PREPROCESSOR_FLAGS="${EXTRA_WIX_PREPROCESSOR_FLAGS}" - -DLIGHT_EXECUTABLE="${LIGHT_EXECUTABLE}" - -DMAJOR_VERSION="${MAJOR_VERSION}" - -DMANUFACTURER="${MANUFACTURER}" - -DMINOR_VERSION="${MINOR_VERSION}" - -DPATCH_VERSION="${PATCH_VERSION}" - -DSIGNCODE="${SIGNCODE}" - -DSIGNTOOL_EXECUTABLE="${SIGNTOOL_EXECUTABLE}" - -DSIGNTOOL_PARAMETERS="${SIGNTOOL_PARAMETERS}" - -DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}" - -DTHIRD_PARTY_DOWNLOAD_LOCATION="${THIRD_PARTY_DOWNLOAD_LOCATION}" - -DTHIRD_PARTY_FEATURE_CONDITION="${THIRD_PARTY_FEATURE_CONDITION}" - -DTINY_VERSION="${TINY_VERSION}" - -DTOP_BINDIR="${CMAKE_BINARY_DIR}" - -DVERSION="${VERSION}" - -DWITH_THIRD_PARTY="${WITH_THIRD_PARTY}" - -DWIXCA_LOCATION="$<TARGET_FILE:wixca>" - -P ${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake -) -ADD_DEPENDENCIES(MSI_ESSENTIALS wixca) - IF(CMAKE_GENERATOR MATCHES "Visual Studio") SET(CPACK_CONFIG_PARAM -C $(Configuration)) |