1INCLUDE (CheckLibraryExists) 2 3SET(WITH_JEMALLOC auto CACHE STRING 4 "Build with jemalloc. Possible values are 'yes', 'no', 'static', 'auto'") 5 6MACRO (CHECK_JEMALLOC) 7 # compatibility with old WITH_JEMALLOC values 8 IF(WITH_JEMALLOC STREQUAL "bundled") 9 MESSAGE(FATAL_ERROR "MariaDB no longer bundles jemalloc") 10 ENDIF() 11 IF(WITH_JEMALLOC STREQUAL "system") 12 SET(WITH_JEMALLOC "yes") 13 ENDIF() 14 15 IF(WITH_JEMALLOC STREQUAL "yes" OR WITH_JEMALLOC STREQUAL "auto" OR 16 WITH_JEMALLOC STREQUAL "static") 17 18 IF(WITH_JEMALLOC STREQUAL "static") 19 SET(libname jemalloc_pic) 20 SET(CMAKE_REQUIRED_LIBRARIES pthread ${CMAKE_DL_LIBS} m) 21 SET(what bundled) 22 ELSE() 23 SET(libname jemalloc c) 24 SET(what system) 25 ENDIF() 26 27 FOREACH(lib ${libname}) 28 CHECK_LIBRARY_EXISTS(${lib} malloc_stats_print "" HAVE_JEMALLOC_IN_${lib}) 29 IF (HAVE_JEMALLOC_IN_${lib}) 30 SET(LIBJEMALLOC ${lib}) 31 SET(MALLOC_LIBRARY "${what} jemalloc") 32 BREAK() 33 ENDIF() 34 ENDFOREACH() 35 SET(CMAKE_REQUIRED_LIBRARIES) 36 37 IF (NOT LIBJEMALLOC AND NOT WITH_JEMALLOC STREQUAL "auto") 38 MESSAGE(FATAL_ERROR "jemalloc is not found") 39 ENDIF() 40 ADD_FEATURE_INFO(JEMALLOC LIBJEMALLOC "Use the JeMalloc memory allocator") 41 ENDIF() 42ENDMACRO() 43