diff options
author | Vladislav Vaintroub <wlad@montyprogram.com> | 2011-11-25 20:50:14 +0100 |
---|---|---|
committer | Vladislav Vaintroub <wlad@montyprogram.com> | 2011-11-25 20:50:14 +0100 |
commit | 6be24a771a27a077d58d21a4a1f8db3fbd14cac4 (patch) | |
tree | 5a538cb0ef4ecb753cf304c7716cbaca09526a61 | |
parent | 74da49894f44a46ba086120bade714a5cc29992a (diff) | |
download | mariadb-git-6be24a771a27a077d58d21a4a1f8db3fbd14cac4.tar.gz |
Avoid mysqld dependency on libaio.so by linking xtradb statically to libaio.
A variable XTRADB_PREFER_STATIC_LIBAIO should be set to 1 (or TRUE
or ON) for static linking.
Even if mysqld can avoid dependency on shared libaio, shared libraries
libmysqld.so or ha_innodb.so cannot link without it.
Given that the patch primarily addresses building tar.gz package, and
shared libraries mentioned above deemed less important than mysqld
executable, we accept shared lib dependency on libaio.so
-rw-r--r-- | cmake/build_configurations/mysql_release.cmake | 10 | ||||
-rw-r--r-- | libmysqld/CMakeLists.txt | 3 | ||||
-rw-r--r-- | storage/xtradb/CMakeLists.txt | 16 |
3 files changed, 23 insertions, 6 deletions
diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index ee6d6b85004..53157b4e2c0 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -115,9 +115,9 @@ IF(UNIX) OPTION(WITH_LIBEDIT "" ON) ENDIF() - OPTION(WITH_PIC "" ON) # Why? IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") + IF(NOT IGNORE_AIO_CHECK) # Ensure aio is available on Linux (required by InnoDB) CHECK_INCLUDE_FILES(libaio.h HAVE_LIBAIO_H) @@ -133,6 +133,14 @@ IF(UNIX) If you really do not want it, pass -DIGNORE_AIO_CHECK to cmake. ") ENDIF() + + # Remove libaio dependency from mysqld + SET(XTRADB_PREFER_STATIC_LIBAIO 1) + + # Unfortunately, linking shared libmysqld with static aio + # does not work, unless we add also dynamic one. This also means + # libmysqld.so will depend on libaio.so + SET(LIBMYSQLD_SO_EXTRA_LIBS aio) ENDIF() # Enable fast mutexes on Linux diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 483e0ca05fd..9fc6ccf7543 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -157,6 +157,9 @@ IF(NOT DISABLE_SHARED) # libmysqld SET_TARGET_PROPERTIES(libmysqld PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(mysqlserver PROPERTIES CLEAN_DIRECT_OUTPUT 1) + IF(LIBMYSQLD_SO_EXTRA_LIBS) + TARGET_LINK_LIBRARIES(libmysqld ${LIBMYSQLD_SO_EXTRA_LIBS}) + ENDIF() ENDIF() ENDIF() diff --git a/storage/xtradb/CMakeLists.txt b/storage/xtradb/CMakeLists.txt index b55f31e08d1..044a259c65d 100644 --- a/storage/xtradb/CMakeLists.txt +++ b/storage/xtradb/CMakeLists.txt @@ -23,12 +23,18 @@ INCLUDE(CheckCSourceRuns) IF(UNIX) IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") CHECK_INCLUDE_FILES (libaio.h HAVE_LIBAIO_H) - CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO) - ADD_DEFINITIONS("-DUNIV_LINUX -D_GNU_SOURCE=1") - IF(HAVE_LIBAIO_H AND HAVE_LIBAIO) - ADD_DEFINITIONS(-DLINUX_NATIVE_AIO=1) - LINK_LIBRARIES(aio) + IF (XTRADB_PREFER_STATIC_LIBAIO) + SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) + ENDIF() + FIND_LIBRARY(AIO_LIBRARY aio) + IF(AIO_LIBRARY) + CHECK_LIBRARY_EXISTS(${AIO_LIBRARY} io_queue_init "" HAVE_LIBAIO) + IF(HAVE_LIBAIO AND HAVE_LIBAIO_H) + ADD_DEFINITIONS(-DLINUX_NATIVE_AIO=1) + ENDIF() + LINK_LIBRARIES(${AIO_LIBRARY}) ENDIF() + ADD_DEFINITIONS("-DUNIV_LINUX -D_GNU_SOURCE=1") ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP*") ADD_DEFINITIONS("-DUNIV_HPUX -DUNIV_MUST_NOT_INLINE") ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "AIX") |