Skip to content

Commit

Permalink
CMake cleanup
Browse files Browse the repository at this point in the history
- use FIND_PACKAGE(LIBAIO) to find libaio
- Use standard CMake conventions in Find{PMEM,URING}.cmake
- Drop the LIB from LIB{PMEM,URING}_{INCLUDE_DIR,LIBRARIES}
  It is cleaner, and consistent with how other packages are handled in CMake.
  e.g successful FIND_PACKAGE(PMEM) now sets PMEM_FOUND, PMEM_LIBRARIES,
  PMEM_INCLUDE_DIR, not  LIBPMEM_{FOUND,LIBRARIES,INCLUDE_DIR}.
- Decrease the output. use FIND_PACKAGE with QUIET argument.
- for Linux packages, either liburing, or libaio is required
  If liburing is installed, libaio does not need to be present   .
  Use FIND_PACKAGE([LIBAIO|URING] REQUIRED) if either library is required.
  • Loading branch information
vaintroub committed Mar 23, 2021
1 parent 2e31b2f commit cb545f1
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 47 deletions.
7 changes: 7 additions & 0 deletions cmake/FindLIBAIO.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
find_path(LIBAIO_INCLUDE_DIR NAMES libaio.h)
find_library(LIBAIO_LIBRARIES NAMES aio)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LIBAIO DEFAULT_MSG
LIBAIO_LIBRARIES LIBAIO_INCLUDE_DIR)
8 changes: 4 additions & 4 deletions cmake/FindPMEM.cmake
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
find_path(LIBPMEM_INCLUDE_DIR NAMES libpmem.h)
find_library(LIBPMEM_LIBRARIES NAMES pmem)
find_path(PMEM_INCLUDE_DIR NAMES libpmem.h)
find_library(PMEM_LIBRARIES NAMES pmem)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
PMEM DEFAULT_MSG
LIBPMEM_LIBRARIES LIBPMEM_INCLUDE_DIR)
PMEM_LIBRARIES PMEM_INCLUDE_DIR)

mark_as_advanced(LIBPMEM_INCLUDE_DIR LIBPMEM_LIBRARIES)
mark_as_advanced(PMEM_INCLUDE_DIR PMEM_LIBRARIES)
8 changes: 4 additions & 4 deletions cmake/FindURING.cmake
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
find_path(LIBURING_INCLUDE_DIR NAMES liburing.h)
find_library(LIBURING_LIBRARIES NAMES uring)
find_path(URING_INCLUDE_DIR NAMES liburing.h)
find_library(URING_LIBRARIES NAMES uring)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
URING DEFAULT_MSG
LIBURING_LIBRARIES LIBURING_INCLUDE_DIR)
URING_LIBRARIES URING_INCLUDE_DIR)

mark_as_advanced(LIBURING_INCLUDE_DIR LIBURING_LIBRARIES)
mark_as_advanced(URING_INCLUDE_DIR URING_LIBRARIES)
20 changes: 5 additions & 15 deletions cmake/build_configurations/mysql_release.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -135,31 +135,21 @@ IF(UNIX)
SET(PLUGIN_AUTH_PAM YES CACHE BOOL "")

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)
CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)
IF(NOT HAVE_LIBAIO_H OR NOT HAVE_LIBAIO)
UNSET(HAVE_LIBAIO_H CACHE)
UNSET(HAVE_LIBAIO CACHE)
FIND_PACKAGE(URING)
FIND_PACKAGE(LIBAIO)
IF(NOT URING_FOUND AND NOT LIBAIO_FOUND AND NOT IGNORE_AIO_CHECK)
MESSAGE(FATAL_ERROR "
aio is required on Linux, you need to install the required library:
Either liburing or libaio is required on Linux.
You can install libaio like this:
Debian/Ubuntu: apt-get install libaio-dev
RedHat/Fedora/Oracle Linux: yum install libaio-devel
SuSE: zypper install libaio-devel
If you really do not want it, pass -DIGNORE_AIO_CHECK=YES to cmake.
")
ENDIF()

# 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()
ENDIF()

ENDIF()

# Compiler options
Expand Down
6 changes: 3 additions & 3 deletions storage/innobase/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -337,11 +337,11 @@ SET(INNOBASE_SOURCES
ut/ut0wqueue.cc)

OPTION(WITH_PMEM "Support redo log in persistent memory" OFF)
FIND_PACKAGE(PMEM)
FIND_PACKAGE(PMEM QUIET)
IF(PMEM_FOUND)
INCLUDE_DIRECTORIES(${LIBPMEM_INCLUDES})
INCLUDE_DIRECTORIES(${PMEM_INCLUDES})
ADD_COMPILE_FLAGS(log/log0log.cc COMPILE_FLAGS "-DHAVE_PMEM")
SET(PMEM_LIBRARY ${LIBPMEM_LIBRARIES})
SET(PMEM_LIBRARY ${PMEM_LIBRARIES})
ELSE()
IF(WITH_PMEM)
MESSAGE(FATAL_ERROR "WITH_PMEM=ON cannot be satisfied")
Expand Down
11 changes: 0 additions & 11 deletions storage/innobase/innodb.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -53,18 +53,7 @@ ENDIF()
# OS tests
IF(UNIX)
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")

ADD_DEFINITIONS("-DUNIV_LINUX -D_GNU_SOURCE=1")

IF (NOT URING_FOUND)
CHECK_INCLUDE_FILES (libaio.h HAVE_LIBAIO_H)
CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)

IF(HAVE_LIBAIO_H AND HAVE_LIBAIO)
ADD_DEFINITIONS(-DLINUX_NATIVE_AIO)
LINK_LIBRARIES(aio)
ENDIF()
ENDIF()
IF(HAVE_LIBNUMA)
LINK_LIBRARIES(numa)
ENDIF()
Expand Down
23 changes: 13 additions & 10 deletions tpool/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,27 @@ IF(WIN32)
SET(EXTRA_SOURCES tpool_win.cc aio_win.cc)
ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
OPTION(WITH_URING "Require that io_uring be used" OFF)
FIND_PACKAGE(URING)
OPTION(WITH_LIBAIO "Require that libaio is used, unless uring is there" OFF)
IF(WITH_URING)
SET(URING_REQUIRED REQUIRED)
ELSEIF(WITH_LIBAIO)
SET(LIBAIO_REQIRED REQUIRED)
ENDIF()
FIND_PACKAGE(URING QUIET ${URING_REQUIRED})
IF(URING_FOUND)
SET(URING_FOUND ${URING_FOUND} PARENT_SCOPE)
SET(TPOOL_DEFINES "-DHAVE_URING" PARENT_SCOPE)
ADD_DEFINITIONS(-DHAVE_URING)
LINK_LIBRARIES(${LIBURING_LIBRARIES})
INCLUDE_DIRECTORIES(${LIBURING_INCLUDE_DIR})
LINK_LIBRARIES(${URING_LIBRARIES})
INCLUDE_DIRECTORIES(${URING_INCLUDE_DIR})
SET(EXTRA_SOURCES aio_liburing.cc)
ELSE()
IF(WITH_URING)
MESSAGE(FATAL_ERROR "WITH_URING=ON cannot be satisfied")
ENDIF()
CHECK_INCLUDE_FILES (libaio.h HAVE_LIBAIO_H)
CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)
IF(HAVE_LIBAIO_H AND HAVE_LIBAIO)
FIND_PACKAGE(LIBAIO QUIET ${LIBAIO_REQUIRED})
IF(LIBAIO_FOUND)
SET(TPOOL_DEFINES "-DLINUX_NATIVE_AIO" PARENT_SCOPE)
ADD_DEFINITIONS(-DLINUX_NATIVE_AIO)
LINK_LIBRARIES(aio)
INCLUDE_DIRECTORIES(${LIBAIO_INCLUDE_DIR})
LINK_LIBRARIES(${LIBAIO_LIBRARIES})
SET(EXTRA_SOURCES aio_linux.cc)
ENDIF()
ENDIF()
Expand Down

0 comments on commit cb545f1

Please sign in to comment.