summaryrefslogtreecommitdiff
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.txt44
1 files changed, 44 insertions, 0 deletions
diff --git a/win/upgrade_wizard/CMakeLists.txt b/win/upgrade_wizard/CMakeLists.txt
new file mode 100644
index 00000000000..44d6249ea1e
--- /dev/null
+++ b/win/upgrade_wizard/CMakeLists.txt
@@ -0,0 +1,44 @@
+IF(NOT MSVC)
+ RETURN()
+ENDIF()
+IF(CMAKE_USING_VC_FREE_TOOLS)
+ # No MFC, so it cannot be built
+ RETURN()
+ENDIF()
+
+# We need MFC
+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()
+
+# MFC should be statically linked
+SET(CMAKE_MFC_FLAG 1)
+
+# Enable exception handling (avoids warnings)
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql)
+MYSQL_ADD_EXECUTABLE(mysql_upgrade_wizard
+ upgrade.cpp upgradeDlg.cpp upgrade.rc
+ COMPONENT Server)
+TARGET_LINK_LIBRARIES(mysql_upgrade_wizard winservice)
+# upgrade_wizard is Windows executable, set WIN32_EXECUTABLE so it does not
+# create a console.
+SET_TARGET_PROPERTIES(mysql_upgrade_wizard PROPERTIES WIN32_EXECUTABLE 1)
+
+# Embed Vista "admin" manifest, since upgrade_wizard needs admin privileges
+# to change service configuration. Due to a CMake bug http://www.vtk.org/Bug/view.php?id=11171
+# it is not possible currenly to do it with linker flags. Work around is to use
+# manifest tool mt.exe and embed the manifest post-build.
+GET_TARGET_PROPERTY(upgrade_wizard_location mysql_upgrade_wizard LOCATION)
+ADD_CUSTOM_COMMAND(
+ TARGET mysql_upgrade_wizard POST_BUILD
+ COMMAND mt.exe -manifest ${CMAKE_CURRENT_SOURCE_DIR}/upgrade_wizard.exe.manifest
+ "-outputresource:${upgrade_wizard_location};#1"
+)