39f17ae8b8
* renamed omnitrace_thread_data to thread_data
* initial implementation
* Numerous fixes and updates
- Updated timemory submodule
- Updated perfetto submodule (pulls in fixes for TRACE_EVENT)
- pthread_gotcha only after omnitrace_init_tooling
- omnitrace banner
- config settings for rocm-smi freq and devices
- critical_trace::get_entries
- OMNITRACE_BASIC_PRINT
- rocm_smi perfetto category
- redirect roctracer warnings for ROCm 4.5.0
- property specializations for rocm-smi components
- units fixes data_tracker types
- roctracer entries for pthread_create and start_thread
- omnitrace-avail defaults to settings, not components
- settings have conforming names
- settings warn about duplicates
- ptl named threads
- decreased max freq for sampler SIGALRM
- rocm-smi names thread
- rocm-smi avoids call to hipGetDeviceCount
- name roctracer activity callback threads
- fixed binary rewrite test output names
* Update lulesh example
- supports non-UVM GPU
* Lulesh tweaks + formatting
* KokkosP + Mode + Roctracer sampling deadlock fix
- kokkosp support
- omnitrace_init_library
- config::print_settings()
- config::get_mode()
- omnitrace::Mode
- omnitrace-avail improvements (removes settings)
- handle get_verbose() < 0
- disable dyninst InstrStackFrames by default
- handle perf_event_paranoid > 1 by disabling PAPI
- SIGALRM max freq to 5.0
- Name threads
- rocm-smi handles get_use_perfetto() and get_use_timemory()
- HSA_ENABLE_INTERRUPT=0 when roctracer + sampling (fixes deadlock)
* Tests, API renaming, roctracer
- disable renaming of thread 0
- verbprintf_bare
- enable dyninst merge tramp
- tweaked some omnitrace exe verbose levels
- reworked roctracer::setup and roctracer::shutdown
- rocm_smi::data::poll checks get_state()
- omnitrace_trace_finalize -> omnitrace_finalize
- omnitrace_trace_init -> omnitrace_init
- omnitrace_trace_set_env -> omnitrace_set_env
- omnitrace_trace_set_mpi -> omnitrace_set_mpi
- sampling mode does not disable timemory
- disable roctracer before shutting down rocm-smi
- lulesh tests w/ and w/o kokkosp
- lulesh tests for perfetto only
- with --dynamic-callsites --traps --allow-overlapping
- lulesh tests for timemory only
- with --stdlib --dynamic-callsites --traps --allow-overlapping
* Update timemory submodule
- fix for TIMEMORY_PROPERTY_SPECIALIZATION
* get_verbose() handling + timemory submodule update
- Findroctracer.cmake uses find_package(hsakmt)
* Stability fixes + rework roctracer + perfetto
- reworked roctracer start up
- critical_trace perfetto basic values
- perfetto sampling category
- sampler checks signals
- peak_rss in sampling
- pthread_gotcha::shutdown()
- rocm_smi::device_count()
- HSA_TOOLS_LIB is set
- HSA_ENABLE_INTERRUPT in omnitrace exe
- omnitrace exe verbosity level changes
- Avoid instrumenting Impl ns in Kokkos
- gpu::device_count prefers rocm_smi instead of hip
- ptl blocks signals
- fixed pthread_gotcha roctracer_data values
- removed runtime-instrument-sampling tests
- timemory submodule update
* cmake formatting
* timemory + roctracer updates
- fix timemory issue with papi_common
- fix timemory issue with units
- define roctracer::is_setup()
* Miscellaneous tweaks
- Disable sampling during runtime instrument
- Fixed warnings about dynamic callsites
- Fixed backtrace output when timemory disabled
- Test tweaks
* cmake-format
* omnitrace_target_compile_definitions
* timemory submodule update
* config, omnitrace, State, mpi_gotcha updates
- use OMNITRACE_THROW instead of direct throw
- is_attached()
- is_binary_rewrite()
- get_is_continuous_integration()
- get_debug_init()
- get_debug_finalize()
- max_thread_bookmarks default to 1
- State::Init
- app_thread oneTimeCode
- runtime instrumentation uses waitpid
- fixed init_names
- include main in MPI runs
- fixed sampling setup when disabled
- reworked mpi_gotcha
- disabled critical trace in transpose test
* cmake-format
* handle rocm_smi::device_count() exception
* CI timeouts
* Re-enable runtime-instrument + sampling
380 wiersze
14 KiB
CMake
380 wiersze
14 KiB
CMake
cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
|
|
|
|
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND CMAKE_CURRENT_SOURCE_DIR STREQUAL
|
|
CMAKE_SOURCE_DIR)
|
|
set(MSG "")
|
|
message(STATUS "Warning! Building from the source directory is not recommended")
|
|
message(STATUS "If unintented, please remove 'CMakeCache.txt' and 'CMakeFiles'")
|
|
message(STATUS "and build from a separate directory")
|
|
message(AUTHOR_WARNING "In-source build")
|
|
endif()
|
|
|
|
if(NOT UNIX OR APPLE)
|
|
message(
|
|
AUTHOR_WARNING
|
|
"omnitrace only supports Linux. Configure and/or build is likely to fail")
|
|
endif()
|
|
|
|
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" FULL_VERSION_STRING LIMIT_COUNT 1)
|
|
string(REGEX REPLACE "(\n|\r)" "" FULL_VERSION_STRING "${FULL_VERSION_STRING}")
|
|
string(REGEX REPLACE "([0-9]+)\.([0-9]+)\.([0-9]+)(.*)" "\\1.\\2.\\3" OMNITRACE_VERSION
|
|
"${FULL_VERSION_STRING}")
|
|
|
|
project(
|
|
omnitrace
|
|
LANGUAGES C CXX
|
|
VERSION ${OMNITRACE_VERSION}
|
|
DESCRIPTION "CPU/GPU Application tracing with static/dynamic binary instrumentation"
|
|
HOMEPAGE_URL "https://github.com/AARInternal/omnitrace")
|
|
|
|
message(
|
|
STATUS
|
|
"[${PROJECT_NAME}] version ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
|
|
)
|
|
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${PROJECT_SOURCE_DIR}/cmake/Modules
|
|
${CMAKE_MODULE_PATH})
|
|
set(BUILD_SHARED_LIBS
|
|
ON
|
|
CACHE BOOL "Build shared libraries")
|
|
set(BUILD_STATIC_LIBS
|
|
OFF
|
|
CACHE BOOL "Build static libraries")
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE
|
|
ON
|
|
CACHE BOOL "Build position independent code")
|
|
|
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
|
|
set(CMAKE_BUILD_TYPE
|
|
RelWithDebInfo
|
|
CACHE STRING "Build type" FORCE)
|
|
endif()
|
|
|
|
include(GNUInstallDirs) # install directories
|
|
include(MacroUtilities) # various functions and macros
|
|
include(Compilers) # compiler identification
|
|
include(BuildSettings) # compiler flags
|
|
|
|
set(CMAKE_CXX_STANDARD
|
|
17
|
|
CACHE STRING "CXX language standard")
|
|
omnitrace_add_feature(CMAKE_CXX_STANDARD "CXX language standard")
|
|
omnitrace_add_feature(CMAKE_BUILD_TYPE "Build optimization level")
|
|
omnitrace_add_option(CMAKE_CXX_STANDARD_REQUIRED "Require C++ language standard" ON)
|
|
omnitrace_add_option(CMAKE_CXX_EXTENSIONS "Compiler specific language extensions" OFF)
|
|
omnitrace_add_option(CMAKE_INSTALL_RPATH_USE_LINK_PATH "Enable rpath to linked libraries"
|
|
ON)
|
|
|
|
omnitrace_add_option(OMNITRACE_USE_CLANG_TIDY "Enable clang-tidy" OFF)
|
|
omnitrace_add_option(OMNITRACE_USE_MPI "Enable MPI support" OFF)
|
|
omnitrace_add_option(OMNITRACE_USE_HIP "Enable HIP support" ON)
|
|
omnitrace_add_option(OMNITRACE_USE_ROCTRACER "Enable roctracer support"
|
|
${OMNITRACE_USE_HIP})
|
|
omnitrace_add_option(
|
|
OMNITRACE_USE_ROCM_SMI "Enable rocm-smi support for power/temp/etc. sampling"
|
|
${OMNITRACE_USE_HIP})
|
|
omnitrace_add_option(OMNITRACE_USE_MPI_HEADERS
|
|
"Enable wrapping MPI functions w/o enabling MPI dependency" OFF)
|
|
omnitrace_add_option(OMNITRACE_BUILD_DYNINST "Build dyninst from submodule" OFF)
|
|
omnitrace_add_option(OMNITRACE_BUILD_TESTING "Enable building the testing suite" OFF)
|
|
omnitrace_add_option(OMNITRACE_CUSTOM_DATA_SOURCE "Enable custom data source" OFF)
|
|
omnitrace_add_option(OMNITRACE_BUILD_HIDDEN_VISIBILITY
|
|
"Build with hidden visibility (disable for Debug builds)" ON)
|
|
|
|
if(NOT OMNITRACE_USE_HIP)
|
|
set(OMNITRACE_USE_ROCTRACER
|
|
OFF
|
|
CACHE BOOL "Disabled via OMNITRACE_USE_HIP=OFF" FORCE)
|
|
endif()
|
|
|
|
include(ProcessorCount)
|
|
processorcount(OMNITRACE_PROCESSOR_COUNT)
|
|
math(EXPR OMNITRACE_THREAD_COUNT "16 * ${OMNITRACE_PROCESSOR_COUNT}")
|
|
if(OMNITRACE_THREAD_COUNT LESS 128)
|
|
set(OMNITRACE_THREAD_COUNT 128)
|
|
endif()
|
|
set(OMNITRACE_MAX_THREADS
|
|
"${OMNITRACE_THREAD_COUNT}"
|
|
CACHE
|
|
STRING
|
|
"Maximum number of threads in the host application. Likely only needs to be increased if host app does not use thread-pool but creates many threads"
|
|
)
|
|
omnitrace_add_feature(
|
|
OMNITRACE_MAX_THREADS
|
|
"Maximum number of total threads supported in the host application (default: max of 128 or 16 * nproc)"
|
|
)
|
|
|
|
# default visibility settings
|
|
set(CMAKE_C_VISIBILITY_PRESET
|
|
"default"
|
|
CACHE STRING "Visibility preset for non-inline C functions")
|
|
set(CMAKE_CXX_VISIBILITY_PRESET
|
|
"default"
|
|
CACHE STRING "Visibility preset for non-inline C++ functions/objects")
|
|
set(CMAKE_VISIBILITY_INLINES_HIDDEN
|
|
OFF
|
|
CACHE BOOL "Visibility preset for inline functions")
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
include(Formatting) # format target
|
|
include(Packages) # finds third-party libraries
|
|
|
|
if(OMNITRACE_USE_HIP OR OMNITRACE_USE_ROCTRACER)
|
|
find_package(HIP QUIET)
|
|
if(HIP_VERSION_MAJOR GREATER_EQUAL 4 AND HIP_VERSION_MINOR GREATER 3)
|
|
set(roctracer_kfdwrapper_LIBRARY)
|
|
endif()
|
|
else()
|
|
set(HIP_VERSION "0.0.0")
|
|
set(HIP_VERSION_MAJOR 0)
|
|
set(HIP_VERSION_MINOR 0)
|
|
set(HIP_VERSION_PATCH 0)
|
|
endif()
|
|
|
|
configure_file(${PROJECT_SOURCE_DIR}/include/library/defines.hpp.in
|
|
${PROJECT_BINARY_DIR}/include/library/defines.hpp @ONLY)
|
|
|
|
omnitrace_activate_clang_tidy()
|
|
|
|
# custom visibility settings
|
|
if(OMNITRACE_BUILD_HIDDEN_VISIBILITY)
|
|
set(CMAKE_C_VISIBILITY_PRESET "hidden")
|
|
set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
|
|
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
|
endif()
|
|
|
|
if(NOT DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION)
|
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION OFF)
|
|
endif()
|
|
|
|
if(OMNITRACE_BUILD_LTO)
|
|
omnitrace_save_variables(LTO VARIABLES CMAKE_INTERPROCEDURAL_OPTIMIZATION)
|
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
|
|
endif()
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
#
|
|
# omnitrace-library target
|
|
#
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
set(library_sources
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/config.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/critical_trace.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/kokkosp.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/gpu.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/perfetto.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/ptl.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/sampling.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/state.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/thread_data.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/timemory.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/components/backtrace.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/components/fork_gotcha.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/components/mpi_gotcha.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/components/omnitrace.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/components/pthread_gotcha.cpp
|
|
${perfetto_DIR}/sdk/perfetto.cc)
|
|
|
|
set(library_headers
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/api.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/config.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/common.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/critical_trace.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/debug.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/gpu.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/perfetto.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/ptl.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/sampling.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/state.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/thread_data.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/timemory.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/components/fwd.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/components/backtrace.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/components/fork_gotcha.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/components/mpi_gotcha.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/components/omnitrace.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/components/rocm_smi.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/components/roctracer.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/components/roctracer_callbacks.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/library/components/pthread_gotcha.hpp
|
|
${perfetto_DIR}/sdk/perfetto.h)
|
|
|
|
add_library(omnitrace-library SHARED ${library_sources} ${library_headers})
|
|
|
|
if(OMNITRACE_USE_ROCTRACER)
|
|
target_sources(
|
|
omnitrace-library
|
|
PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/library/components/roctracer.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/library/components/roctracer_callbacks.cpp)
|
|
endif()
|
|
|
|
if(OMNITRACE_USE_ROCM_SMI)
|
|
target_sources(omnitrace-library
|
|
PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/library/components/rocm_smi.cpp)
|
|
endif()
|
|
|
|
target_include_directories(omnitrace-library SYSTEM PRIVATE ${perfetto_DIR}/sdk)
|
|
|
|
target_compile_definitions(
|
|
omnitrace-library
|
|
PRIVATE OMNITRACE_MAX_THREADS=${OMNITRACE_MAX_THREADS}
|
|
$<IF:$<BOOL:${OMNITRACE_CUSTOM_DATA_SOURCE}>,CUSTOM_DATA_SOURCE,>)
|
|
|
|
target_link_libraries(
|
|
omnitrace-library
|
|
PUBLIC $<BUILD_INTERFACE:omnitrace::omnitrace-headers>
|
|
$<BUILD_INTERFACE:omnitrace::omnitrace-threading>
|
|
$<BUILD_INTERFACE:omnitrace::omnitrace-compile-options>
|
|
$<BUILD_INTERFACE:omnitrace::omnitrace-hip>
|
|
$<BUILD_INTERFACE:omnitrace::omnitrace-roctracer>
|
|
$<BUILD_INTERFACE:omnitrace::omnitrace-rocm-smi>
|
|
$<BUILD_INTERFACE:omnitrace::omnitrace-mpi>
|
|
$<BUILD_INTERFACE:omnitrace::omnitrace-ptl>
|
|
$<BUILD_INTERFACE:timemory::timemory-headers>
|
|
$<BUILD_INTERFACE:timemory::timemory-gotcha>
|
|
$<BUILD_INTERFACE:timemory::timemory-cxx-shared>
|
|
$<IF:$<BOOL:${OMNITRACE_USE_SANITIZER}>,omnitrace::omnitrace-sanitizer,>)
|
|
|
|
if(OMNITRACE_DYNINST_API_RT)
|
|
get_filename_component(OMNITRACE_DYNINST_API_RT_DIR "${OMNITRACE_DYNINST_API_RT}"
|
|
DIRECTORY)
|
|
endif()
|
|
|
|
set_target_properties(
|
|
omnitrace-library
|
|
PROPERTIES OUTPUT_NAME omnitrace
|
|
INSTALL_RPATH
|
|
"\$ORIGIN:\$ORIGIN/timemory/libunwind:\$ORIGIN/dyninst-tpls/libs")
|
|
|
|
install(
|
|
TARGETS omnitrace-library
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
OPTIONAL)
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
#
|
|
# omnitrace-avail target
|
|
#
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
add_executable(omnitrace-avail ${CMAKE_CURRENT_LIST_DIR}/src/avail.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/avail.hpp)
|
|
|
|
target_include_directories(omnitrace-avail PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include)
|
|
target_compile_definitions(omnitrace-avail PRIVATE OMNITRACE_EXTERN_COMPONENTS=0)
|
|
target_link_libraries(omnitrace-avail PRIVATE omnitrace-library)
|
|
set_target_properties(omnitrace-avail PROPERTIES INSTALL_RPATH_USE_LINK_PATH ON)
|
|
|
|
install(
|
|
TARGETS omnitrace-avail
|
|
DESTINATION bin
|
|
OPTIONAL)
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
#
|
|
# omnitrace-exe target
|
|
#
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
add_executable(
|
|
omnitrace-exe
|
|
${_EXCLUDE} ${CMAKE_CURRENT_LIST_DIR}/src/omnitrace.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/include/omnitrace.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/omnitrace/details.cpp)
|
|
|
|
target_link_libraries(
|
|
omnitrace-exe
|
|
PRIVATE omnitrace::omnitrace-headers
|
|
omnitrace::omnitrace-dyninst
|
|
omnitrace::omnitrace-compile-options
|
|
$<BUILD_INTERFACE:timemory::timemory-headers>
|
|
$<IF:$<BOOL:${OMNITRACE_USE_SANITIZER}>,omnitrace::omnitrace-sanitizer,>)
|
|
|
|
set_target_properties(
|
|
omnitrace-exe
|
|
PROPERTIES
|
|
OUTPUT_NAME omnitrace
|
|
INSTALL_RPATH_USE_LINK_PATH ON
|
|
INSTALL_RPATH
|
|
"\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}:\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}/timemory/libunwind:\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}/dyninst-tpls/lib"
|
|
)
|
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "^(DEBUG|Debug)")
|
|
string(REPLACE " " ";" _FLAGS "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
|
target_compile_options(omnitrace-exe PRIVATE ${_FLAGS})
|
|
endif()
|
|
|
|
install(
|
|
TARGETS omnitrace-exe
|
|
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
OPTIONAL)
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
#
|
|
# miscellaneous installs
|
|
#
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
configure_file(${PROJECT_SOURCE_DIR}/scripts/setup-env.sh.in
|
|
${PROJECT_BINARY_DIR}/scripts/setup-env.sh @ONLY)
|
|
|
|
install(
|
|
PROGRAMS ${PROJECT_SOURCE_DIR}/scripts/omnitrace-merge.jl
|
|
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
OPTIONAL)
|
|
|
|
install(
|
|
FILES ${PROJECT_SOURCE_DIR}/roctrace.cfg
|
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}
|
|
OPTIONAL)
|
|
|
|
install(
|
|
FILES ${PROJECT_BINARY_DIR}/scripts/setup-env.sh
|
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}
|
|
OPTIONAL)
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
#
|
|
# examples
|
|
#
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
if(OMNITRACE_BUILD_LTO)
|
|
omnitrace_restore_variables(LTO VARIABLES CMAKE_INTERPROCEDURAL_OPTIMIZATION)
|
|
endif()
|
|
|
|
if(OMNITRACE_BUILD_TESTING)
|
|
add_subdirectory(examples)
|
|
endif()
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
#
|
|
# tests
|
|
#
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
if(OMNITRACE_BUILD_TESTING)
|
|
include(CTest)
|
|
enable_testing()
|
|
|
|
add_subdirectory(tests)
|
|
endif()
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
#
|
|
# packaging
|
|
#
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
include(ConfigCPack)
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
#
|
|
# config info
|
|
#
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
omnitrace_print_features()
|