diff --git a/cmake/pmem.cmake b/cmake/pmem.cmake index b59db3cc1f9..84c00aaed6d 100644 --- a/cmake/pmem.cmake +++ b/cmake/pmem.cmake @@ -1,13 +1,26 @@ INCLUDE(CheckIncludeFiles) -OPTION(WITH_PMEM "Enable persistent memory features" OFF) -IF(WITH_PMEM) +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) - MESSAGE(FATAL_ERROR "Can't find 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) - MESSAGE(FATAL_ERROR "Can't find 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) 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'.") ENDIF()