Added support for tcmalloc usage.

This commit is contained in:
Markus Makela
2015-04-20 17:52:50 +03:00
parent 060f68892d
commit b2cfa674b9
4 changed files with 24 additions and 0 deletions

View File

@ -13,6 +13,7 @@ set_variables()
set_maxscale_version() set_maxscale_version()
set(CMAKE_INSTALL_PREFIX "/usr/local/mariadb-maxscale" CACHE PATH "Prefix prepended to install directories.") set(CMAKE_INSTALL_PREFIX "/usr/local/mariadb-maxscale" CACHE PATH "Prefix prepended to install directories.")
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
@ -27,6 +28,7 @@ find_package(Valgrind)
find_package(MySQLClient) find_package(MySQLClient)
find_package(MySQL) find_package(MySQL)
find_package(Pandoc) find_package(Pandoc)
find_package(TCMalloc)
# You can find the variables set by this in the FindCURL.cmake file # You can find the variables set by this in the FindCURL.cmake file
# which is a default module in CMake. # which is a default module in CMake.

11
cmake/FindTCMalloc.cmake Normal file
View File

@ -0,0 +1,11 @@
# this CMake file defines the following variables
# TCMALLOC_FOUND - TCMalloc was found
# TCMALLOC_LIBRARIES - TCMalloc library
find_library(TCMALLOC_LIBRARIES NAMES tcmalloc libtcmalloc.so.4 libtcmalloc.so.4.2.2)
if(TCMALLOC_LIBRARIES)
set(TCMALLOC_FOUND TRUE CACHE INTERNAL "")
message(STATUS "Found libtcmalloc: ${TCMALLOC_LIBRARIES}")
else()
set(TCMALLOC_FOUND FALSE CACHE INTERNAL "")
message(STATUS "Could not find libtcmalloc, using system default malloc instead.")
endif()

View File

@ -60,6 +60,9 @@ macro(set_variables)
# Install init.d scripts and ldconf configuration files # Install init.d scripts and ldconf configuration files
set(WITH_SCRIPTS TRUE CACHE BOOL "Install init.d scripts and ldconf configuration files") set(WITH_SCRIPTS TRUE CACHE BOOL "Install init.d scripts and ldconf configuration files")
# Use tcmalloc as the memory allocator
set(WITH_TCMALLOC FALSE CACHE BOOL "Use tcmalloc as the memory allocator")
# Build tests # Build tests
set(BUILD_TESTS FALSE CACHE BOOL "Build tests") set(BUILD_TESTS FALSE CACHE BOOL "Build tests")

View File

@ -1,6 +1,9 @@
if(BUILD_TESTS OR BUILD_TOOLS) if(BUILD_TESTS OR BUILD_TOOLS)
file(GLOB FULLCORE_SRC *.c) file(GLOB FULLCORE_SRC *.c)
add_library(fullcore STATIC ${FULLCORE_SRC}) add_library(fullcore STATIC ${FULLCORE_SRC})
if(WITH_TCMALLOC)
target_link_libraries(fullcore ${TCMALLOC_LIBRARIES})
endif()
target_link_libraries(fullcore ${CURL_LIBRARIES} log_manager utils pthread ${EMBEDDED_LIB} ${PCRE_LINK_FLAGS} ssl aio rt crypt dl crypto inih z m stdc++) target_link_libraries(fullcore ${CURL_LIBRARIES} log_manager utils pthread ${EMBEDDED_LIB} ${PCRE_LINK_FLAGS} ssl aio rt crypt dl crypto inih z m stdc++)
endif() endif()
@ -9,6 +12,11 @@ add_executable(maxscale atomic.c buffer.c spinlock.c gateway.c
poll.c config.c users.c hashtable.c dbusers.c thread.c gwbitmask.c poll.c config.c users.c hashtable.c dbusers.c thread.c gwbitmask.c
monitor.c adminusers.c secrets.c filter.c modutil.c hint.c monitor.c adminusers.c secrets.c filter.c modutil.c hint.c
housekeeper.c memlog.c resultset.c) housekeeper.c memlog.c resultset.c)
if(WITH_TCMALLOC)
target_link_libraries(maxscale ${TCMALLOC_LIBRARIES})
endif()
target_link_libraries(maxscale ${EMBEDDED_LIB} ${PCRE_LINK_FLAGS} ${CURL_LIBRARIES} log_manager utils ssl aio pthread crypt dl crypto inih z rt m stdc++) target_link_libraries(maxscale ${EMBEDDED_LIB} ${PCRE_LINK_FLAGS} ${CURL_LIBRARIES} log_manager utils ssl aio pthread crypt dl crypto inih z rt m stdc++)
install(TARGETS maxscale DESTINATION bin) install(TARGETS maxscale DESTINATION bin)