diff --git a/CMakeLists.txt b/CMakeLists.txt index c5e960149..11c55ebb3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -119,18 +119,23 @@ include_directories(${GFlags_INCLUDE_DIRS}) # GPerftools - http://code.google.com/p/gperftools/ ################################################################################ +set(GCC_GPERFTOOLS_FLAGS "") find_package(Gperftools) -if ( NOT Gperftools_FOUND ) - message("GPerftools library not found!") +if ( NOT GPERFTOOLS_FOUND ) + message("The optional library GPerftools has not been found.") else() message ( "GPerftools library found" ) -endif( NOT Gperftools_FOUND ) + link_libraries(profiler tcmalloc) +endif( NOT GPERFTOOLS_FOUND ) +list(APPEND CMAKE_CXX_FLAGS ${GCC_GPERFTOOLS_FLAGS}) + ################################################################################ # Doxygen - http://www.stack.nl/~dimitri/doxygen/index.html ################################################################################ + include(FindDoxygen) IF (DOXYGEN_EXECUTABLE) message( STATUS "Setting Doxygen Generator" ) @@ -198,6 +203,7 @@ include_directories( ${GLOG_INCLUDE_DIRS} ${GFLAGS_INCLUDE_DIRS} ${UHD_INCLUDE_DIRS} + ${GPERFTOOLS_INCLUDE_DIRS} ) link_directories( @@ -206,18 +212,26 @@ link_directories( ${GNURADIO_CORE_LIBRARY_DIRS} ${GLOG_LIBRARY_DIRS} ${GFLAGS_LIBRARY_DIRS} + ${GPERFTOOLS_LIBRARY_DIRS} ) -list(APPEND CMAKE_CXX_FLAGS "-msse2 -msse3 -mfpmath=sse -Wall -std=c++0x") - +if(GPERFTOOLS_FOUND) + if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) + list(APPEND CMAKE_CXX_FLAGS "-msse2 -msse3 -mfpmath=sse -Wall -std=c++0x -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free") + else(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) + list(APPEND CMAKE_CXX_FLAGS "-msse2 -msse3 -mfpmath=sse -Wall -std=c++0x") + endif(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) +else(GPERFTOOLS_FOUND) + list(APPEND CMAKE_CXX_FLAGS "-msse2 -msse3 -mfpmath=sse -Wall -std=c++0x") +endif(GPERFTOOLS_FOUND) ######################################################################## # Add subdirectories (in order of deps) ######################################################################## add_subdirectory(src) -add_subdirectory(drivers) +#add_subdirectory(drivers) #add_subdirectory(firmware) #add_subdirectory($OSMOSDR_ROOT/include/osmosdr) #add_subdirectory(${GTEST_DIR}/include) diff --git a/cmake/Modules/FindGperftools.cmake b/cmake/Modules/FindGperftools.cmake index e69de29bb..5a97a29c5 100644 --- a/cmake/Modules/FindGperftools.cmake +++ b/cmake/Modules/FindGperftools.cmake @@ -0,0 +1,52 @@ +# Tries to find Gperftools. +# +# Usage of this module as follows: +# +# find_package(Gperftools) +# +# Variables used by this module, they can change the default behaviour and need +# to be set before calling find_package: +# +# Gperftools_ROOT_DIR Set this variable to the root installation of +# Gperftools if the module has problems finding +# the proper installation path. +# +# Variables defined by this module: +# +# GPERFTOOLS_FOUND System has Gperftools libs/headers +# GPERFTOOLS_LIBRARIES The Gperftools libraries (tcmalloc & profiler) +# GPERFTOOLS_INCLUDE_DIR The location of Gperftools headers + +find_library(GPERFTOOLS_TCMALLOC + NAMES tcmalloc + HINTS ${Gperftools_ROOT_DIR}/lib) + +find_library(GPERFTOOLS_PROFILER + NAMES profiler + HINTS ${Gperftools_ROOT_DIR}/lib) + +find_library(GPERFTOOLS_TCMALLOC_AND_PROFILER + NAMES tcmalloc_and_profiler + HINTS ${Gperftools_ROOT_DIR}/lib) + +find_path(GPERFTOOLS_INCLUDE_DIR + NAMES gperftools/heap-profiler.h + HINTS ${Gperftools_ROOT_DIR}/include) + +set(GPERFTOOLS_LIBRARIES ${GPERFTOOLS_TCMALLOC_AND_PROFILER}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + Gperftools + DEFAULT_MSG + GPERFTOOLS_LIBRARIES + GPERFTOOLS_INCLUDE_DIR +) + +mark_as_advanced( + Gperftools_ROOT_DIR + GPERFTOOLS_TCMALLOC + GPERFTOOLS_PROFILER + GPERFTOOLS_TCMALLOC_AND_PROFILER + GPERFTOOLS_LIBRARIES + GPERFTOOLS_INCLUDE_DIR) \ No newline at end of file