summaryrefslogtreecommitdiffstats
path: root/win/upgrade_wizard/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'win/upgrade_wizard/CMakeLists.txt')
-rw-r--r--win/upgrade_wizard/CMakeLists.txt46
1 files changed, 46 insertions, 0 deletions
diff --git a/win/upgrade_wizard/CMakeLists.txt b/win/upgrade_wizard/CMakeLists.txt
new file mode 100644
index 00000000..20a06a41
--- /dev/null
+++ b/win/upgrade_wizard/CMakeLists.txt
@@ -0,0 +1,46 @@
+IF((NOT MSVC) OR CLANG_CL OR WITH_ASAN)
+ RETURN()
+ENDIF()
+
+# We need MFC
+# /permissive- flag does not play well with MFC, disable it.
+STRING(REPLACE "/permissive-" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+
+FIND_PACKAGE(MFC)
+IF(NOT MFC_FOUND)
+ IF(BUILD_RELEASE)
+ MESSAGE(FATAL_ERROR
+ "Can't find MFC. It is necessary for producing official package"
+ )
+ ENDIF()
+ RETURN()
+ENDIF()
+
+IF(MSVC_CRT_TYPE MATCHES "/MD")
+ # FORCE static CRT and MFC for upgrade wizard,
+ # so we do not have to redistribute MFC.
+ FORCE_STATIC_CRT()
+ SET(UPGRADE_WIZARD_SOURCES ${CMAKE_SOURCE_DIR}/sql/winservice.c)
+ELSE()
+ SET(UPGRADE_WIZARD_LINK_LIBRARIES winservice)
+ENDIF()
+
+# MFC should be statically linked
+SET(CMAKE_MFC_FLAG 1)
+
+# Enable exception handling (avoids warnings)
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc -DNO_WARN_MBCS_MFC_DEPRECATION")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql)
+MYSQL_ADD_EXECUTABLE(mariadb-upgrade-wizard
+ upgrade.cpp upgradeDlg.cpp upgrade.rc ${UPGRADE_WIZARD_SOURCES}
+ COMPONENT Server)
+
+
+TARGET_LINK_LIBRARIES(mariadb-upgrade-wizard ${UPGRADE_WIZARD_LINK_LIBRARIES})
+# upgrade_wizard is Windows executable, set WIN32_EXECUTABLE so it does not
+# create a console.
+SET_TARGET_PROPERTIES(mariadb-upgrade-wizard PROPERTIES
+ WIN32_EXECUTABLE 1
+ LINK_FLAGS "/MANIFESTUAC:level='requireAdministrator'"
+)