diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a18adf..e419003 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,102 +1,103 @@ if (CMAKE_VERSION VERSION_LESS "2.8.12") cmake_minimum_required(VERSION 2.8.9) set(HEAPTRACK_BUILD_GUI OFF) else() cmake_minimum_required(VERSION 2.8.12) endif() project(heaptrack) enable_testing() if(NOT CMAKE_BUILD_TYPE) message(STATUS "Setting build type to 'RelWithDebInfo' as none was specified.") set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE) endif() set(HEAPTRACK_VERSION_MAJOR 1) set(HEAPTRACK_VERSION_MINOR 0) set(HEAPTRACK_VERSION_PATCH 0) set(HEAPTRACK_LIB_VERSION 1.0.0) set(HEAPTRACK_LIB_SOVERSION 1) set(HEAPTRACK_FILE_FORMAT_VERSION 2) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) include(FeatureSummary) find_package(Libunwind REQUIRED) -find_package(Boost 1.41.0 REQUIRED COMPONENTS iostreams program_options) +find_package(Boost 1.41.0 COMPONENTS system filesystem) # option first +find_package(Boost 1.41.0 REQUIRED COMPONENTS iostreams program_options) # then required find_package(Threads REQUIRED) find_package(ZLIB REQUIRED) find_package(Zstd) set_package_properties(Zstd PROPERTIES TYPE RECOMMENDED PURPOSE "Zstandard offers better (de)compression performance compared with gzip/zlib, making heaptrack faster and datafiles smaller.") option( HEAPTRACK_BUILD_GUI "Disable this option to skip building the Qt5 / KF5 based GUI for heaptrack." On ) if(HEAPTRACK_BUILD_GUI) find_package(Qt5 5.2.0 NO_MODULE OPTIONAL_COMPONENTS Widgets) find_package(ECM 1.0.0 NO_MODULE) if(Qt5_FOUND AND ECM_FOUND) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) find_package(KF5 COMPONENTS CoreAddons I18n ItemModels ThreadWeaver ConfigWidgets KIO) find_package(KChart "2.6.0") set_package_properties(KChart PROPERTIES TYPE RECOMMENDED PURPOSE "Required for the heaptrack_gui executable. Get it from the kdiagram module.") endif() endif() set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wpedantic") include (CheckCXXSourceCompiles) check_cxx_source_compiles( "#include #include thread_local int tls; int main() { return 0; }" HAVE_CXX11_SUPPORT) if (NOT HAVE_CXX11_SUPPORT) message(FATAL_ERROR "Your compiler is too old and does not support the required C++11 features.") endif() check_cxx_source_compiles( "#include #include #include #include int main() { return 0; }" HAVE_LINUX_HEADERS) if (NOT HAVE_LINUX_HEADERS) message(FATAL_ERROR "You are missing some Linux headers required to compile heaptrack.") endif() # cfree() does not exist in glibc 2.26+. # See: https://bugs.kde.org/show_bug.cgi?id=383889 include(CheckSymbolExists) check_symbol_exists(cfree malloc.h HAVE_CFREE) set(BIN_INSTALL_DIR "bin") set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)") set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}") set(LIBEXEC_INSTALL_DIR "${LIB_INSTALL_DIR}/heaptrack/libexec") file(RELATIVE_PATH LIBEXEC_REL_PATH "${CMAKE_INSTALL_PREFIX}/${BIN_INSTALL_DIR}" "${CMAKE_INSTALL_PREFIX}/${LIBEXEC_INSTALL_DIR}") file(RELATIVE_PATH LIB_REL_PATH "${CMAKE_INSTALL_PREFIX}/${BIN_INSTALL_DIR}" "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/heaptrack") set(ECM_ENABLE_SANITIZERS "" CACHE STRING "semicolon-separated list of sanitizers to enable for code that is not injected into client applications") add_subdirectory(3rdparty) add_subdirectory(src) add_subdirectory(tests) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt index 4d3277e..04b7330 100644 --- a/tests/auto/CMakeLists.txt +++ b/tests/auto/CMakeLists.txt @@ -1,57 +1,56 @@ if (ECM_FOUND) include(ECMEnableSanitizers) endif() set(CMAKE_BUILD_TYPE Debug) configure_file(tst_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/tst_config.h @ONLY) include_directories( ${LIBUNWIND_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../../ ${CMAKE_CURRENT_SOURCE_DIR}/../../src ) add_definitions(-DCATCH_CONFIG_MAIN) add_executable(tst_trace tst_trace.cpp) target_link_libraries(tst_trace ${LIBUNWIND_LIBRARY}) add_test(NAME tst_trace COMMAND tst_trace) -find_package(Boost 1.41.0 COMPONENTS system filesystem) if (${Boost_FILESYSTEM_FOUND} AND ${Boost_SYSTEM_FOUND}) include_directories( ${Boost_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}/../../src/ ${CMAKE_CURRENT_SOURCE_DIR}/../../src/track ) add_executable(tst_libheaptrack tst_libheaptrack.cpp ../../src/track/libheaptrack.cpp) target_link_libraries(tst_libheaptrack LINK_PRIVATE ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${LIBUNWIND_LIBRARY} rt ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ) add_test(NAME tst_libheaptrack COMMAND tst_libheaptrack) add_executable(tst_io tst_io.cpp) target_link_libraries(tst_io ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ) add_test(NAME tst_io COMMAND tst_io) add_executable(tst_inject tst_inject.cpp) target_link_libraries(tst_inject ${CMAKE_DL_LIBS} ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ) add_test(NAME tst_inject COMMAND tst_inject) endif()