diff options
-rw-r--r-- | cmake/pmem.cmake | 33 | ||||
-rw-r--r-- | cmake/systemd.cmake | 2 | ||||
-rw-r--r-- | cmake/uring.cmake | 29 | ||||
-rw-r--r-- | storage/innobase/CMakeLists.txt | 7 |
4 files changed, 29 insertions, 42 deletions
diff --git a/cmake/pmem.cmake b/cmake/pmem.cmake index 84c00aaed6d..fb458c13f98 100644 --- a/cmake/pmem.cmake +++ b/cmake/pmem.cmake @@ -1,26 +1,15 @@ INCLUDE(CheckIncludeFiles) -SET(WITH_PMEM "auto" CACHE STRING "Enable persistent memory features") -IF(WITH_PMEM STREQUAL "yes" OR WITH_PMEM STREQUAL "auto") - FIND_LIBRARY(LIBPMEM pmem) - CHECK_INCLUDE_FILES(libpmem.h HAVE_LIBPMEM_H) - IF (NOT LIBPMEM) - IF(WITH_PMEM STREQUAL "yes") - MESSAGE(FATAL_ERROR "Can't find libpmem") - ENDIF() - UNSET(HAVE_LIBPMEM_H CACHE) - UNSET(LIBPMEM CACHE) - ELSEIF(NOT HAVE_LIBPMEM_H) - IF(WITH_PMEM STREQUAL "yes") - MESSAGE(FATAL_ERROR "Can't find libpmem.h") - ENDIF() - UNSET(HAVE_LIBPMEM_H CACHE) - UNSET(LIBPMEM CACHE) - ELSE() - ADD_DEFINITIONS(-DHAVE_PMEM) +OPTION(WITH_PMEM "Require that persistent memory features be enabled" OFF) +FIND_LIBRARY(LIBPMEM pmem) +CHECK_INCLUDE_FILES(libpmem.h HAVE_LIBPMEM_H) +IF(NOT LIBPMEM) + IF(WITH_PMEM) + MESSAGE(FATAL_ERROR "WITH_PMEM=ON but can't find libpmem") + ENDIF() +ELSEIF(NOT HAVE_LIBPMEM_H) + IF(WITH_PMEM) + MESSAGE(FATAL_ERROR "WITH_PMEM=ON but can't find libpmem.h") ENDIF() -ELSEIF(WITH_PMEM STREQUAL "no") - UNSET(HAVE_LIBPMEM_H CACHE) - UNSET(LIBPMEM CACHE) ELSE() - MESSAGE(FATAL_ERROR "Invalid value for WITH_PMEM. Must be 'yes', 'no', or 'auto'.") + ADD_DEFINITIONS(-DHAVE_PMEM) ENDIF() diff --git a/cmake/systemd.cmake b/cmake/systemd.cmake index 72cb77b4a6a..4c8c8c48b1c 100644 --- a/cmake/systemd.cmake +++ b/cmake/systemd.cmake @@ -49,7 +49,7 @@ MACRO(CHECK_SYSTEMD) SET(SYSTEMD_EXECSTARTPRE "ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld") SET(SYSTEMD_EXECSTARTPOST "ExecStartPost=/etc/mysql/debian-start") ENDIF() - IF(LIBURING AND HAVE_LIBURING_H AND NOT WITH_URING STREQUAL "no") + IF(LIBURING AND HAVE_LIBURING_H) SET(SYSTEMD_LIMIT "# For liburing and io_uring_setup() LimitMEMLOCK=524288") ENDIF() diff --git a/cmake/uring.cmake b/cmake/uring.cmake index a3a045c131b..8ca107c8594 100644 --- a/cmake/uring.cmake +++ b/cmake/uring.cmake @@ -1,25 +1,20 @@ MACRO(CHECK_URING) IF(CMAKE_SYSTEM_NAME MATCHES "Linux") INCLUDE(CheckIncludeFiles) - SET(WITH_URING "auto" CACHE STRING "Enable liburing usage") - IF(WITH_URING STREQUAL "yes" OR WITH_URING STREQUAL "auto") - FIND_LIBRARY(LIBURING uring) - CHECK_INCLUDE_FILES(liburing.h HAVE_LIBURING_H) - IF (LIBURING AND HAVE_LIBURING_H) - ADD_DEFINITIONS(-DHAVE_URING) - LINK_LIBRARIES(uring) - ELSE() - IF(WITH_URING STREQUAL "yes") - MESSAGE(FATAL_ERROR "Requested WITH_URING=yes but liburing was not found") - ENDIF() - UNSET(LIBURING CACHE) - UNSET(HAVE_LIBURING_H CACHE) + OPTION(WITH_URING "Require that liburing be linked" OFF) + FIND_LIBRARY(LIBURING uring) + CHECK_INCLUDE_FILES(liburing.h HAVE_LIBURING_H) + IF(NOT LIBURING) + IF(WITH_URING) + MESSAGE(FATAL_ERROR "WITH_URING=ON but can't find liburing") + ENDIF() + ELSEIF(NOT HAVE_LIBURING_H) + IF(WITH_URING) + MESSAGE(FATAL_ERROR "WITH_URING=ON but can't find liburing.h") ENDIF() - ELSEIF(WITH_URING STREQUAL "no") - UNSET(LIBURING CACHE) - UNSET(HAVE_LIBURING_H CACHE) ELSE() - MESSAGE(FATAL_ERROR "Invalid value for WITH_URING. Must be 'yes', 'no', or 'auto'.") + ADD_DEFINITIONS(-DHAVE_URING) + LINK_LIBRARIES(uring) ENDIF() ENDIF() ENDMACRO() diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt index 88d3b886da4..385f8f09e5f 100644 --- a/storage/innobase/CMakeLists.txt +++ b/storage/innobase/CMakeLists.txt @@ -343,8 +343,7 @@ MYSQL_ADD_PLUGIN(innobase ${INNOBASE_SOURCES} STORAGE_ENGINE ${ZLIB_LIBRARY} ${NUMA_LIBRARY} ${LIBSYSTEMD} - ${LINKER_SCRIPT} - ${LIBPMEM}) + ${LINKER_SCRIPT}) IF(NOT TARGET innobase) RETURN() @@ -385,3 +384,7 @@ IF(NOT (PLUGIN_INNOBASE STREQUAL DYNAMIC)) TARGET_LINK_LIBRARIES(innobase tpool mysys) ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/extra/mariabackup ${CMAKE_BINARY_DIR}/extra/mariabackup) ENDIF() + +IF(LIBPMEM) + TARGET_LINK_LIBRARIES(innobase ${LIBPMEM}) +ENDIF() |