Files
rocm-systems/CMakeLists.txt
T

175 lines
5.9 KiB
CMake
Raw Normal View History

2021-08-06 13:08:57 -05:00
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()
project(
hosttrace
2021-08-17 17:34:34 -05:00
LANGUAGES C CXX
2021-08-06 13:29:09 -05:00
VERSION 0.0.1)
2021-08-06 13:08:57 -05:00
2021-08-06 13:29:09 -05:00
message(STATUS "[${PROJECT_NAME}] version ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
2021-08-06 13:08:57 -05:00
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
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")
add_option(CMAKE_CXX_STANDARD_REQUIRED "Require C++ language standard" ON)
add_option(CMAKE_CXX_EXTENSIONS "Compiler specific language extensions" OFF)
add_option(CMAKE_INSTALL_RPATH_USE_LINK_PATH "Enable rpath to linked libraries" ON)
2021-08-06 13:08:57 -05:00
add_option(HOSTTRACE_USE_CLANG_TIDY "Enable clang-tidy" OFF)
2021-09-02 13:14:58 -05:00
add_option(HOSTTRACE_USE_MPI "Enable MPI support" OFF)
add_option(HOSTTRACE_CUSTOM_DATA_SOURCE "Enable custom data source" OFF)
2021-09-06 22:23:24 -05:00
add_option(HOSTTRACE_USE_ROCTRACER "Enable roctracer support" ON)
2021-09-09 15:51:07 -05:00
add_option(HOSTTRACE_BUILD_DYNINST "Build dyninst from submodule" OFF)
2021-09-02 13:14:58 -05:00
# ensure synced
set(TIMEMORY_USE_MPI ${HOSTTRACE_USE_MPI} CACHE BOOL "Enable MPI support" FORCE)
set(TRANSPOSE_USE_MPI ${HOSTTRACE_USE_MPI} CACHE BOOL "Enable MPI support" FORCE)
2021-08-06 13:08:57 -05:00
include(Packages) # finds third-party libraries
hosttrace_activate_clang_tidy()
2021-09-15 16:45:49 -05:00
set(CMAKE_C_VISIBILITY_PRESET "hidden")
set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
2021-08-06 13:08:57 -05:00
#------------------------------------------------------------------------------#
#
# hosttrace-library target
#
#------------------------------------------------------------------------------#
add_library(hosttrace-library SHARED
${CMAKE_CURRENT_LIST_DIR}/src/library.cpp
${CMAKE_CURRENT_LIST_DIR}/src/libmisc.cpp
${CMAKE_CURRENT_LIST_DIR}/include/library.hpp
2021-08-06 13:08:57 -05:00
${perfetto_DIR}/sdk/perfetto.cc)
2021-09-06 22:23:24 -05:00
if(HOSTTRACE_USE_ROCTRACER)
target_sources(hosttrace-library PRIVATE
${CMAKE_CURRENT_LIST_DIR}/include/roctracer.hpp
${CMAKE_CURRENT_LIST_DIR}/src/roctracer.cpp)
endif()
2021-08-06 13:08:57 -05:00
target_include_directories(hosttrace-library PRIVATE
${CMAKE_CURRENT_LIST_DIR}/include)
target_include_directories(hosttrace-library SYSTEM PRIVATE
${perfetto_DIR}/sdk)
2021-08-17 17:34:34 -05:00
target_compile_definitions(hosttrace-library PRIVATE
$<IF:$<BOOL:${HOSTTRACE_CUSTOM_DATA_SOURCE}>,CUSTOM_DATA_SOURCE,>)
2021-08-06 13:08:57 -05:00
target_link_libraries(hosttrace-library PRIVATE
hosttrace::hosttrace-threading
2021-09-02 13:14:58 -05:00
hosttrace::hosttrace-compile-options
2021-09-06 22:23:24 -05:00
hosttrace::hosttrace-roctracer
2021-08-17 17:34:34 -05:00
$<BUILD_INTERFACE:timemory::timemory-headers>
$<BUILD_INTERFACE:timemory::timemory-gotcha>
$<BUILD_INTERFACE:timemory::timemory-cxx-shared>
2021-09-02 13:14:58 -05:00
$<IF:$<BOOL:${HOSTTRACE_USE_SANITIZER}>,hosttrace::hosttrace-sanitizer,>)
2021-08-06 13:08:57 -05:00
if(DYNINST_API_RT)
get_filename_component(DYNINST_API_RT_DIR "${DYNINST_API_RT}" DIRECTORY)
endif()
2021-08-06 13:08:57 -05:00
set_target_properties(hosttrace-library PROPERTIES
OUTPUT_NAME hosttrace
2021-09-15 16:45:49 -05:00
INSTALL_RPATH "\$ORIGIN:${DYNINST_API_RT_DIR}")
2021-08-06 13:08:57 -05:00
install(
TARGETS hosttrace-library
DESTINATION ${CMAKE_INSTALL_LIBDIR}
OPTIONAL)
#------------------------------------------------------------------------------#
#
# hosttrace-exe target
#
#------------------------------------------------------------------------------#
add_executable(hosttrace-exe ${_EXCLUDE}
${CMAKE_CURRENT_LIST_DIR}/src/hosttrace.cpp
${CMAKE_CURRENT_LIST_DIR}/include/hosttrace.hpp
${CMAKE_CURRENT_LIST_DIR}/src/hosttrace-details.cpp)
target_include_directories(hosttrace-exe PRIVATE
${CMAKE_CURRENT_LIST_DIR}/include)
target_link_libraries(hosttrace-exe PRIVATE
hosttrace::hosttrace-dyninst
hosttrace::hosttrace-compile-options
2021-09-02 13:14:58 -05:00
$<BUILD_INTERFACE:timemory::timemory-headers>
$<IF:$<BOOL:${HOSTTRACE_USE_SANITIZER}>,hosttrace::hosttrace-sanitizer,>)
2021-08-06 13:08:57 -05:00
set_target_properties(hosttrace-exe PROPERTIES
OUTPUT_NAME hosttrace
2021-09-15 16:45:49 -05:00
INSTALL_RPATH_USE_LINK_PATH ON
INSTALL_RPATH "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}:${DYNINST_API_RT_DIR}")
2021-08-06 13:08:57 -05:00
install(
TARGETS hosttrace-exe
DESTINATION ${CMAKE_INSTALL_BINDIR}
OPTIONAL)
2021-09-02 13:14:58 -05:00
# build the timemory-avail exe
add_dependencies(hosttrace-exe timemory-avail)
#------------------------------------------------------------------------------#
#
# miscellaneous installs
#
#------------------------------------------------------------------------------#
install(
PROGRAMS ${PROJECT_SOURCE_DIR}/scripts/hosttrace-merge.jl
DESTINATION ${CMAKE_INSTALL_BINDIR}
OPTIONAL)
install(
FILES ${PROJECT_SOURCE_DIR}/roctrace.cfg
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}
OPTIONAL)
2021-08-06 13:08:57 -05:00
#------------------------------------------------------------------------------#
#
# examples
#
#------------------------------------------------------------------------------#
add_subdirectory(examples)
#------------------------------------------------------------------------------#
#
# tests
#
#------------------------------------------------------------------------------#
include(CTest)
enable_testing()
add_subdirectory(tests)
2021-08-06 13:29:09 -05:00
#------------------------------------------------------------------------------#
#
# packaging
#
#------------------------------------------------------------------------------#
include(ConfigCPack)