diff options
author | Vladislav Vaintroub <vvaintroub@mysql.com> | 2010-02-20 20:40:03 +0100 |
---|---|---|
committer | Vladislav Vaintroub <vvaintroub@mysql.com> | 2010-02-20 20:40:03 +0100 |
commit | 740c7cf4fa29ccfce60f6c30dc8a14bd302cfed2 (patch) | |
tree | b6d8d4ef948a9702ac690635ea65ea22abe05f69 | |
parent | 5f833a39ed92acaf482d56c3de871ff0115ffcbd (diff) | |
download | mariadb-git-740c7cf4fa29ccfce60f6c30dc8a14bd302cfed2.tar.gz |
Install static client and embedded debug libraries
-rw-r--r-- | cmake/install_macros.cmake | 50 | ||||
-rw-r--r-- | cmake/os/Windows.cmake | 1 | ||||
-rwxr-xr-x | libmysql/CMakeLists.txt | 5 | ||||
-rw-r--r-- | libmysqld/CMakeLists.txt | 5 | ||||
-rwxr-xr-x | sql/CMakeLists.txt | 39 |
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() - - |