# # # External dependencies # # include(rocprofiler_utilities) set(BUILD_TESTING OFF) set(BUILD_SHARED_LIBS OFF) set(BUILD_OBJECT_LIBS OFF) # Specific to PTL set(BUILD_STATIC_LIBS ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_CXX_VISIBILITY_PRESET "hidden") set(CMAKE_VISIBILITY_INLINES_HIDDEN ON) # filesystem library if(ROCPROFILER_BUILD_GHC_FS) # checkout submodule if not already checked out or clone repo if no .gitmodules file rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/filesystem WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} REPO_URL https://github.com/gulrak/filesystem.git REPO_BRANCH "v1.5.14") target_compile_definitions( rocprofiler-sdk-cxx-filesystem INTERFACE $) target_include_directories( rocprofiler-sdk-cxx-filesystem SYSTEM INTERFACE $) endif() if(ROCPROFILER_BUILD_TESTS) if(ROCPROFILER_BUILD_GTEST) # checkout submodule if not already checked out or clone repo if no .gitmodules # file rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/googletest WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} REPO_URL https://github.com/google/googletest.git REPO_BRANCH "main") set(BUILD_GMOCK OFF) set(INSTALL_GTEST OFF) add_subdirectory(googletest EXCLUDE_FROM_ALL) if(NOT TARGET GTest::gtest) message(FATAL_ERROR "missing GTest::gtest") endif() target_link_libraries(rocprofiler-sdk-gtest INTERFACE GTest::gtest) target_include_directories( rocprofiler-sdk-gtest SYSTEM INTERFACE ${CMAKE_CURRENT_LIST_DIR}/googletest/googletest/include) mark_as_advanced(INSTALL_GTEST) mark_as_advanced(BUILD_GMOCK) mark_as_advanced(GTEST_HAS_ABSL) else() find_package(GTest REQUIRED) target_link_libraries(rocprofiler-sdk-gtest INTERFACE GTest::gtest) endif() endif() if(ROCPROFILER_BUILD_GLOG) # checkout submodule if not already checked out or clone repo if no .gitmodules file rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/glog WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} REPO_URL https://github.com/google/glog.git REPO_BRANCH "master") # May want to use GFLAGS in the future set(WITH_GFLAGS OFF) set(WITH_GTEST OFF) set(WITH_UNWIND "none") add_subdirectory(glog EXCLUDE_FROM_ALL) target_link_libraries(rocprofiler-sdk-glog INTERFACE $) target_include_directories( rocprofiler-sdk-glog SYSTEM INTERFACE $ $) else() find_package(glog REQUIRED) target_link_libraries(rocprofiler-sdk-glog INTERFACE glog::glog) endif() if(ROCPROFILER_BUILD_FMT) # checkout submodule if not already checked out or clone repo if no .gitmodules file rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/fmt WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} REPO_URL https://github.com/fmtlib/fmt.git REPO_BRANCH "master") set(FMT_TEST OFF) add_subdirectory(fmt EXCLUDE_FROM_ALL) target_link_libraries(rocprofiler-sdk-fmt INTERFACE $) target_include_directories( rocprofiler-sdk-fmt SYSTEM INTERFACE $) else() find_package(fmt REQUIRED) target_link_libraries(rocprofiler-sdk-fmt INTERFACE fmt::fmt) endif() if(NOT TARGET PTL::ptl-static) # checkout submodule if not already checked out or clone repo if no .gitmodules file rocprofiler_checkout_git_submodule( RELATIVE_PATH external/ptl WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} REPO_URL https://github.com/jrmadsen/PTL.git REPO_BRANCH rocprofiler) set(PTL_USE_TBB OFF) set(PTL_USE_GPU OFF) set(PTL_USE_LOCKS ON) set(PTL_BUILD_EXAMPLES OFF) set(PTL_DEVELOPER_INSTALL OFF) add_subdirectory(ptl EXCLUDE_FROM_ALL) endif() rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/yaml-cpp WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} REPO_URL https://github.com/jbeder/yaml-cpp.git REPO_BRANCH "master") add_subdirectory(yaml-cpp EXCLUDE_FROM_ALL) target_link_libraries(rocprofiler-sdk-yaml-cpp INTERFACE $) target_include_directories( rocprofiler-sdk-yaml-cpp INTERFACE $) # checkout submodule if not already checked out or clone repo if no .gitmodules file rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/cereal WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} REPO_URL https://github.com/jrmadsen/cereal.git REPO_BRANCH "rocprofiler") target_compile_definitions(rocprofiler-sdk-cereal INTERFACE $) target_include_directories( rocprofiler-sdk-cereal INTERFACE $) # doxygen-awesome if(ROCPROFILER_BUILD_DOCS) rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/doxygen-awesome-css WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} TEST_FILE Makefile REPO_URL https://github.com/jothepro/doxygen-awesome-css.git REPO_BRANCH "main") endif() # perfetto rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/perfetto WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} TEST_FILE meson.build REPO_URL https://android.googlesource.com/platform/external/perfetto external/perfetto REPO_BRANCH "v44.0") add_library(rocprofiler-sdk-perfetto-static-library STATIC) target_sources( rocprofiler-sdk-perfetto-static-library PRIVATE ${PROJECT_SOURCE_DIR}/external/perfetto/sdk/perfetto.h ${PROJECT_SOURCE_DIR}/external/perfetto/sdk/perfetto.cc) target_include_directories( rocprofiler-sdk-perfetto-static-library SYSTEM INTERFACE $) set_target_properties( rocprofiler-sdk-perfetto-static-library PROPERTIES POSITION_INDEPENDENT_CODE ON OUTPUT_NAME rocprofiler-sdk-perfetto) target_link_libraries( rocprofiler-sdk-perfetto INTERFACE $) # ELFIO rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/elfio WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} REPO_URL https://github.com/serge1/ELFIO.git REPO_BRANCH "Release_3.12") set(ELFIO_BUILD_EXAMPLES OFF) set(ELFIO_BUILD_TESTS OFF) add_subdirectory(elfio EXCLUDE_FROM_ALL) if(TARGET rocprofiler-sdk-elfio) get_target_property(ELFIO_INCLUDE_DIR elfio::elfio INTERFACE_INCLUDE_DIRECTORIES) target_include_directories(rocprofiler-sdk-elfio SYSTEM INTERFACE ${ELFIO_INCLUDE_DIR}) endif() # OTF2 add_subdirectory(otf2) rocprofiler_checkout_git_submodule( RECURSIVE RELATIVE_PATH external/json WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} REPO_URL https://github.com/nlohmann/json.git REPO_BRANCH "develop") add_subdirectory(json) # target_link_libraries(rocprofiler-sdk-json INTERFACE $) target_include_directories( rocprofiler-sdk-json SYSTEM INTERFACE $)