diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-03-19 16:36:32 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-03-19 16:36:32 +0200 |
commit | 5219f611be8f55d17dc45aafb60402c0585839da (patch) | |
tree | e97e4c91db58fe5ed2cfa8c349c8ee7355385a81 | |
parent | 00528a04457d33210baceba1a79e82ea126b48bd (diff) | |
download | mariadb-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.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() |