summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/libutils.cmake20
-rw-r--r--libmysqld/CMakeLists.txt17
2 files changed, 33 insertions, 4 deletions
diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake
index 89a9de9b322..bb90f7d2a6c 100644
--- a/cmake/libutils.cmake
+++ b/cmake/libutils.cmake
@@ -214,7 +214,7 @@ ENDMACRO()
#)
MACRO(MERGE_LIBRARIES)
MYSQL_PARSE_ARGUMENTS(ARG
- "EXPORTS;OUTPUT_NAME;COMPONENT"
+ "EXPORTS;OUTPUT_NAME;COMPONENT;VERSION;SOVERSION"
"STATIC;SHARED;MODULE;NOINSTALL"
${ARGN}
)
@@ -253,7 +253,16 @@ MACRO(MERGE_LIBRARIES)
IF(NOT ARG_NOINSTALL)
ADD_VERSION_INFO(${TARGET} SHARED SRC)
ENDIF()
+ IF(ARG_VERSION)
+ SET(VERS VERSION ${ARG_VERSION})
+ ENDIF()
ADD_LIBRARY(${TARGET} ${LIBTYPE} ${SRC})
+ IF (ARG_VERSION)
+ SET_TARGET_PROPERTIES(${TARGET} PROPERTIES VERSION ${ARG_VERSION})
+ ENDIF()
+ IF (ARG_SOVERSION)
+ SET_TARGET_PROPERTIES(${TARGET} PROPERTIES SOVERSION ${ARG_VERSION})
+ ENDIF()
TARGET_LINK_LIBRARIES(${TARGET} ${LIBS})
IF(ARG_OUTPUT_NAME)
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES OUTPUT_NAME "${ARG_OUTPUT_NAME}")
@@ -268,6 +277,15 @@ MACRO(MERGE_LIBRARIES)
MYSQL_INSTALL_TARGETS(${TARGET} DESTINATION "${INSTALL_LIBDIR}" ${COMP})
ENDIF()
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES LINK_INTERFACE_LIBRARIES "")
+ IF(ARG_SHARED AND LINK_FLAG_NO_UNDEFINED)
+ # Do not allow undefined symbols in shared libraries
+ GET_TARGET_PROPERTY(TARGET_LINK_FLAGS ${TARGET} LINK_FLAGS)
+ IF(NOT TARGET_LINK_FLAGS)
+ SET(TARGET_LINK_FLAGS)
+ ENDIF()
+ SET_TARGET_PROPERTIES(${TARGET} PROPERTIES LINK_FLAGS
+ "${TARGET_LINK_FLAGS} ${LINK_FLAG_NO_UNDEFINED}")
+ ENDIF()
ENDMACRO()
FUNCTION(GET_DEPENDEND_OS_LIBS target result)
diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt
index 890f813da73..483e0ca05fd 100644
--- a/libmysqld/CMakeLists.txt
+++ b/libmysqld/CMakeLists.txt
@@ -145,7 +145,18 @@ IF(UNIX)
ENDIF()
IF(NOT DISABLE_SHARED)
- MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}
- COMPONENT Embedded)
- SET_TARGET_PROPERTIES(libmysqld PROPERTIES PREFIX "")
+ MERGE_LIBRARIES(libmysqld SHARED mysqlserver EXPORTS ${CLIENT_API_FUNCTIONS}
+ COMPONENT Embedded)
+ IF(UNIX)
+ # Name the shared library, handle versioning (provides same api as client
+ # library hence the same version)
+ SET_TARGET_PROPERTIES(libmysqld PROPERTIES
+ OUTPUT_NAME mysqld
+ SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
+ # Clean direct output flags, as 2 targets have the same base name
+ # libmysqld
+ SET_TARGET_PROPERTIES(libmysqld PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+ SET_TARGET_PROPERTIES(mysqlserver PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+ ENDIF()
ENDIF()
+