summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladislav Vaintroub <vvaintroub@mysql.com>2010-02-20 20:40:03 +0100
committerVladislav Vaintroub <vvaintroub@mysql.com>2010-02-20 20:40:03 +0100
commit740c7cf4fa29ccfce60f6c30dc8a14bd302cfed2 (patch)
treeb6d8d4ef948a9702ac690635ea65ea22abe05f69
parent5f833a39ed92acaf482d56c3de871ff0115ffcbd (diff)
downloadmariadb-git-740c7cf4fa29ccfce60f6c30dc8a14bd302cfed2.tar.gz
Install static client and embedded debug libraries
-rw-r--r--cmake/install_macros.cmake50
-rw-r--r--cmake/os/Windows.cmake1
-rwxr-xr-xlibmysql/CMakeLists.txt5
-rw-r--r--libmysqld/CMakeLists.txt5
-rwxr-xr-xsql/CMakeLists.txt39
5 files changed, 63 insertions, 37 deletions
diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake
index 8a201cbb026..1dcf8b5ca21 100644
--- a/cmake/install_macros.cmake
+++ b/cmake/install_macros.cmake
@@ -161,3 +161,53 @@ FUNCTION(MYSQL_INSTALL_TARGETS)
SET(INSTALL_LOCATION)
ENDFUNCTION()
+# Optionally install mysqld/client/embedded from debug build run. outside of the current build dir
+# (unless multi-config generator is used like Visual Studio or Xcode).
+# For Makefile generators we default Debug build directory to ${buildroot}/../debug.
+GET_FILENAME_COMPONENT(BINARY_PARENTDIR ${CMAKE_BINARY_DIR} PATH)
+SET(DEBUGBUILDDIR "${BINARY_PARENTDIR}/debug" CACHE INTERNAL "Directory of debug build")
+
+
+FUNCTION(INSTALL_DEBUG_TARGET target)
+ CMAKE_PARSE_ARGUMENTS(ARG
+ "DESTINATION;RENAME"
+ ""
+ ${ARGN}
+ )
+ GET_TARGET_PROPERTY(target_type ${target} TYPE)
+ IF(ARG_RENAME)
+ SET(RENAME_PARAM RENAME ${ARG_RENAME}${CMAKE_${target_type}_SUFFIX})
+ ELSE()
+ SET(RENAME_PARAM)
+ ENDIF()
+ IF(NOT ARG_DESTINATION)
+ MESSAGE(FATAL_ERROR "Need DESTINATION parameter for INSTALL_DEBUG_TARGET")
+ ENDIF()
+ GET_TARGET_PROPERTY(target_location ${target} LOCATION)
+ IF(CMAKE_GENERATOR MATCHES "Makefiles")
+ STRING(REPLACE "${CMAKE_BINARY_DIR}" "${DEBUGBUILDDIR}" debug_target_location "${target_location}")
+ ELSE()
+ STRING(REPLACE "${CMAKE_CFG_INTDIR}" "Debug" debug_target_location "${target_location}" )
+ ENDIF()
+
+ INSTALL(FILES ${debug_target_location}
+ DESTINATION ${ARG_DESTINATION}
+ ${RENAME_PARAM}
+ CONFIGURATIONS Release RelWithDebInfo
+ OPTIONAL)
+
+ IF(MSVC)
+ GET_FILENAME_COMPONENT(ext ${debug_target_location} EXT)
+ STRING(REPLACE "${ext}" ".pdb" debug_pdb_target_location "${debug_target_location}" )
+ IF(RENAME_PARAM)
+ STRING(REPLACE "${ext}" ".pdb" "${ARG_RENAME}" pdb_rename)
+ SET(PDB_RENAME_PARAM RENAME ${pdb_rename})
+ ENDIF()
+ INSTALL(FILES ${debug_pdb_target_location}
+ DESTINATION ${ARG_DESTINATION}
+ ${RPDB_RENAME_PARAM}
+ CONFIGURATIONS Release RelWithDebInfo
+ OPTIONAL)
+ ENDIF()
+ENDFUNCTION()
+
diff --git a/cmake/os/Windows.cmake b/cmake/os/Windows.cmake
index 7c2cb535f50..f610ce9068a 100644
--- a/cmake/os/Windows.cmake
+++ b/cmake/os/Windows.cmake
@@ -88,6 +88,7 @@ IF(MSVC)
# Fix CMake's predefined huge stack size
FOREACH(type EXE SHARED MODULE)
STRING(REGEX REPLACE "/STACK:([^ ]+)" "" CMAKE_${type}_LINKER_FLAGS "${CMAKE_${type}_LINKER_FLAGS}")
+ STRING(REGEX REPLACE "/INCREMENTAL:([^ ]+)" "" CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO}")
ENDFOREACH()
ADD_DEFINITIONS(-DPTHREAD_STACK_MIN=1048576)
diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
index acdff87f4a0..f9fc5355641 100755
--- a/libmysql/CMakeLists.txt
+++ b/libmysql/CMakeLists.txt
@@ -157,6 +157,11 @@ IF(UNIX)
INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r mysqlclient ${INSTALL_LIBDIR})
ENDIF()
+# Visual Studio users need debug static library for debug projects
+IF(MSVC)
+ INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug)
+ENDIF()
+
IF(NOT DISABLE_SHARED)
MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS})
IF(UNIX)
diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt
index c3386b91f0e..e5f2a8b56f9 100644
--- a/libmysqld/CMakeLists.txt
+++ b/libmysqld/CMakeLists.txt
@@ -126,6 +126,11 @@ ENDFOREACH()
MERGE_LIBRARIES(mysqlserver STATIC ${EMBEDDED_LIBS}
OUTPUT_NAME ${MYSQLSERVER_OUTPUT_NAME})
+# Visual Studio users need debug static library
+IF(MSVC)
+ INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR}/debug)
+ENDIF()
+
IF(MSVC AND NOT DISABLE_SHARED)
MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS})
ENDIF()
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
index 1da41e53b92..28a9d321455 100755
--- a/sql/CMakeLists.txt
+++ b/sql/CMakeLists.txt
@@ -156,6 +156,7 @@ IF(WITH_MYSQLD_LDFLAGS)
SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS
"${MYSQLD_LINK_FLAGS} ${WITH_MYSQLD_LDFLAGS}")
ENDIF()
+INSTALL_DEBUG_TARGET(mysqld DESTINATION ${INSTALL_SBINDIR} RENAME mysqld-debug)
# Handle out-of-source build from source package with possibly broken
# bison. Copy bison output to from source to build directory, if not already
@@ -189,7 +190,7 @@ ADD_CUSTOM_COMMAND(
${CMAKE_COMMAND} -E copy_if_different lex_hash.h.tmp lex_hash.h
COMMAND ${CMAKE_COMMAND} -E remove -f lex_hash.h.tmp
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS gen_lex_hash)
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen_lex_hash.cc)
ADD_CUSTOM_TARGET(
GenServerSource
@@ -275,39 +276,3 @@ ELSE()
ENDIF()
ENDIF()
-# Optionally install mysqld from debug build run. outside of the current build dir
-# (unless multi-config generator is used# like Visual Studio or Xcode).
-# For Makefile generators we default Debug build directory to ${buildroot}/../debug.
-
-GET_FILENAME_COMPONENT(BINARY_PARENTDIR ${CMAKE_BINARY_DIR} PATH)
-SET(DEBUGBUILDDIR "${BINARY_PARENTDIR}/debug" CACHE INTERNAL "Directory of debug build")
-
-IF(WIN32)
- SET(EXE ".exe")
-ELSE()
- SET(EXE)
-ENDIF()
-
-IF(CMAKE_GENERATOR MATCHES "Makefiles")
- SET(MYSQLD_DEBUG_EXE ${DEBUGBUILDDIR}/sql/mysqld${EXE})
-ELSE()
- # Visual Studio and Xcode
- SET(MYSQLD_DEBUG_EXE ${CMAKE_BINARY_DIR}/sql/Debug/mysqld${EXE})
-ENDIF()
-
-INSTALL(FILES ${MYSQLD_DEBUG_EXE}
- DESTINATION ${INSTALL_SBINDIR}
- RENAME mysqld-debug${EXE}
- CONFIGURATIONS Release RelWithDebInfo
- OPTIONAL)
-
-IF(WIN32)
- STRING(REPLACE ".exe" ".pdb" MYSQLD_DEBUG_PDB ${MYSQLD_DEBUG_EXE})
- INSTALL(FILES ${MYSQLD_DEBUG_PDB}
- CONFIGURATIONS Release RelWithDebInfo
- DESTINATION ${INSTALL_SBINDIR}
- RENAME mysqld-debug.pdb
- OPTIONAL)
-ENDIF()
-
-