Bug #52149 - packaging differences in CMake build

Corrected some packaging bugs:
- install mysqlservices library
- install libmysqlclient_r.so.{16,16.0.0} as links
  to libmysqlclient.so
- install libmysqld-debug.a
- install my_safe_process, my_safe_kill and
  symlinks to mysql-test-run.pl (mtr, mysql-test-run)
  into correct place ${INSTALL_MYSQLTESTDIR}


cmake/install_layout.cmake:
  Fix typo
cmake/install_macros.cmake:
  Refactor INSTALL_SYMLINK to allow arbitrary symlink paths.
  Old version of this macro would make link extension the same 
  as in target. This was not sufficient in some scenarios 
  (would not allow for example libmysqlclient_r.so.16=>./libmysqlclient.so 
  link)
libmysql/CMakeLists.txt:
  Install extra symlinks to libmysqlclient.so
  (libmysqlclient_r.so.16 and libmysqlclient_r.so.16.0.0)
  for backward compatiblity.
libmysqld/CMakeLists.txt:
  install libmysqld-debug.a
libservices/CMakeLists.txt:
  install mysqlservices library
mysql-test/lib/My/SafeProcess/CMakeLists.txt:
  install my_safe_process, my_safe_kill into  correct place
This commit is contained in:
Vladislav Vaintroub 2010-03-17 19:56:22 +01:00
parent 9c1918a7f7
commit c8e32a8331
7 changed files with 43 additions and 16 deletions

View file

@ -111,7 +111,7 @@ ENDIF()
# Clear cached variables if install layout was changed # Clear cached variables if install layout was changed
IF(OLD_INSTALL_LAYOUT) IF(OLD_INSTALL_LAYOUT)
IF(NOT OLD_INSTALL_LAYOUT STREQUAL INSTALL_LAYOUR) IF(NOT OLD_INSTALL_LAYOUT STREQUAL INSTALL_LAYOUT)
SET(FORCE FORCE) SET(FORCE FORCE)
ENDIF() ENDIF()
ENDIF() ENDIF()

View file

@ -43,27 +43,26 @@ ENDMACRO()
# Install symbolic link to CMake target. # Install symbolic link to CMake target.
# the link is created in the same directory as target # the link is created in the same directory as target
# and extension will be the same as for target file. # and extension will be the same as for target file.
MACRO(INSTALL_SYMLINK linkbasename target destination) MACRO(INSTALL_SYMLINK linkname target destination)
IF(UNIX) IF(UNIX)
GET_TARGET_PROPERTY(location ${target} LOCATION) GET_TARGET_PROPERTY(location ${target} LOCATION)
GET_FILENAME_COMPONENT(path ${location} PATH) GET_FILENAME_COMPONENT(path ${location} PATH)
GET_FILENAME_COMPONENT(name_we ${location} NAME_WE) GET_FILENAME_COMPONENT(name ${location} NAME)
GET_FILENAME_COMPONENT(ext ${location} EXT) SET(output ${path}/${linkname})
SET(output ${path}/${linkbasename}${ext})
ADD_CUSTOM_COMMAND( ADD_CUSTOM_COMMAND(
OUTPUT ${output} OUTPUT ${output}
COMMAND ${CMAKE_COMMAND} ARGS -E remove -f ${output} COMMAND ${CMAKE_COMMAND} ARGS -E remove -f ${output}
COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink
${name_we}${ext} ${name}
${linkbasename}${ext} ${linkname}
WORKING_DIRECTORY ${path} WORKING_DIRECTORY ${path}
DEPENDS ${target} DEPENDS ${target}
) )
ADD_CUSTOM_TARGET(symlink_${linkbasename}${ext} ADD_CUSTOM_TARGET(symlink_${linkname}
ALL ALL
DEPENDS ${output}) DEPENDS ${output})
SET_TARGET_PROPERTIES(symlink_${linkbasename}${ext} PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(symlink_${linkname} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
IF(CMAKE_GENERATOR MATCHES "Xcode") IF(CMAKE_GENERATOR MATCHES "Xcode")
# For Xcode, replace project config with install config # For Xcode, replace project config with install config
STRING(REPLACE "${CMAKE_CFG_INTDIR}" STRING(REPLACE "${CMAKE_CFG_INTDIR}"

View file

@ -153,15 +153,26 @@ SET(LIBS clientlib dbug strings vio mysys ${ZLIB_LIBRARY} ${SSL_LIBRARIES})
# Merge several convenience libraries into one big mysqlclient # Merge several convenience libraries into one big mysqlclient
# and link them together into shared library. # and link them together into shared library.
MERGE_LIBRARIES(mysqlclient STATIC ${LIBS}) MERGE_LIBRARIES(mysqlclient STATIC ${LIBS})
IF(UNIX)
INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r mysqlclient ${INSTALL_LIBDIR})
ENDIF()
# Visual Studio users need debug static library for debug projects # Visual Studio users need debug static library for debug projects
IF(MSVC) IF(MSVC)
INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug) INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug)
ENDIF() ENDIF()
IF(UNIX)
MACRO(GET_VERSIONED_LIBNAME LIBNAME EXTENSION VERSION OUTNAME)
SET(DOT_VERSION ".${VERSION}")
IF(DOT_VERSION STREQUAL ".")
SET(DOT_VERSION "")
ENDIF()
IF(APPLE)
SET(${OUTNAME} ${LIBNAME}${DOT_VERSION}${EXTENSION})
ELSE()
SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION})
ENDIF()
ENDMACRO()
ENDIF()
IF(NOT DISABLE_SHARED) IF(NOT DISABLE_SHARED)
MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}) MERGE_LIBRARIES(libmysql SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS})
IF(UNIX) IF(UNIX)
@ -182,6 +193,16 @@ IF(NOT DISABLE_SHARED)
#(mysqlclient in this case) #(mysqlclient in this case)
SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1)
SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1)
INSTALL_SYMLINK(${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r libmysql ${INSTALL_LIBDIR})
# Install 3 links to libmysqlclient.so (client_r)
FOREACH(ver "" "${SHARED_LIB_MAJOR_VERSION}"
"${SHARED_LIB_MAJOR_VERSION}.0.0")
GET_VERSIONED_LIBNAME(
"${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r"
"${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${ver}"
linkname)
INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR})
ENDFOREACH()
ENDIF() ENDIF()
ENDIF() ENDIF()

View file

@ -131,6 +131,11 @@ IF(MSVC)
INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR}/debug) INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR}/debug)
ENDIF() ENDIF()
IF(UNIX)
INSTALL_DEBUG_TARGET(mysqlserver DESTINATION ${INSTALL_LIBDIR} RENAME
${CMAKE_STATIC_LIBRARY_PREFIX}/mysqld-debug)
ENDIF()
IF(MSVC AND NOT DISABLE_SHARED) IF(MSVC AND NOT DISABLE_SHARED)
MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}) MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS})
ENDIF() ENDIF()

View file

@ -18,3 +18,4 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
SET(MYSQLSERVICES_SOURCES my_snprintf_service.c thd_alloc_service.c) SET(MYSQLSERVICES_SOURCES my_snprintf_service.c thd_alloc_service.c)
ADD_LIBRARY(mysqlservices ${MYSQLSERVICES_SOURCES}) ADD_LIBRARY(mysqlservices ${MYSQLSERVICES_SOURCES})
INSTALL(TARGETS mysqlservices DESTINATION ${INSTALL_LIBDIR})

View file

@ -46,7 +46,8 @@ IF(UNIX)
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
) )
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run DESTINATION mysql-test) ${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run
DESTINATION ${INSTALL_MYSQLTESTDIR})
ENDIF() ENDIF()
IF(CMAKE_GENERATOR MATCHES "Visual Studio") IF(CMAKE_GENERATOR MATCHES "Visual Studio")

View file

@ -20,8 +20,8 @@ ELSE()
ADD_EXECUTABLE(my_safe_process safe_process.cc) ADD_EXECUTABLE(my_safe_process safe_process.cc)
ENDIF() ENDIF()
INSTALL(TARGETS my_safe_process DESTINATION "mysql-test/lib/My/SafeProcess") INSTALL(TARGETS my_safe_process DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess")
IF(WIN32) IF(WIN32)
INSTALL(TARGETS my_safe_kill DESTINATION "mysql-test/lib/My/SafeProcess") INSTALL(TARGETS my_safe_kill DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess")
ENDIF() ENDIF()
INSTALL(FILES safe_process.pl Base.pm DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess") INSTALL(FILES safe_process.pl Base.pm DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess")