summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-03-19 16:36:32 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2021-03-19 16:36:32 +0200
commit5219f611be8f55d17dc45aafb60402c0585839da (patch)
treee97e4c91db58fe5ed2cfa8c349c8ee7355385a81
parent00528a04457d33210baceba1a79e82ea126b48bd (diff)
downloadmariadb-git-bb-10.6-cleanup.tar.gz
cmake cleanup: Make WITH_URING, WITH_PMEM Booleanbb-10.6-cleanup
The new default values WITH_URING:BOOL=OFF, WITH_PMEM:BOOL=OFF imply that the dependencies are optional. An explicit request WITH_URING=ON or WITH_PMEM=ON will cause the build to fail if the requested dependencies are not available. Last, to prevent a feature to be built in even though the built-time dependencies are available, the following can be used: cmake -DHAVE_LIBURING_H=0 -DHAVE_LIBPMEM_H=0 This cleanup was suggested by Vladislav Vaintroub.
-rw-r--r--cmake/pmem.cmake33
-rw-r--r--cmake/systemd.cmake2
-rw-r--r--cmake/uring.cmake29
-rw-r--r--storage/innobase/CMakeLists.txt7
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()