# Copyright (c) Advanced Micro Devices, Inc. # SPDX-License-Identifier: MIT # # function for # include_guard(DIRECTORY) if(NOT TARGET rocprofiler-systems::rocprofiler-systems-user-library) find_package(rocprofiler-systems REQUIRED COMPONENTS user) endif() if(NOT coz-profiler_FOUND) find_package(coz-profiler QUIET) endif() if(NOT TARGET rocprofsys-causal-examples) add_custom_target(rocprofsys-causal-examples) endif() function(rocprofiler_systems_causal_example_executable _NAME) cmake_parse_arguments( CAUSAL "" "" "SOURCES;DEFINITIONS;INCLUDE_DIRECTORIES;LINK_LIBRARIES" ${ARGN} ) function(rocprofiler_systems_causal_example_interface _TARGET) if(NOT TARGET ${_TARGET}) find_package(Threads REQUIRED) add_library(${_TARGET} INTERFACE) target_link_libraries(${_TARGET} INTERFACE Threads::Threads ${CMAKE_DL_LIBS}) endif() endfunction() rocprofiler_systems_causal_example_interface(rocprofsys-causal-example-lib-debug) rocprofiler_systems_causal_example_interface(rocprofsys-causal-example-lib-no-debug) target_compile_options( rocprofsys-causal-example-lib-debug INTERFACE -g3 -fno-omit-frame-pointer ) target_compile_options(rocprofsys-causal-example-lib-no-debug INTERFACE -g0) add_executable(${_NAME} ${CAUSAL_SOURCES}) target_compile_definitions( ${_NAME} PRIVATE USE_COZ=0 USE_OMNI=0 ${CAUSAL_DEFINITIONS} ) target_include_directories( ${_NAME} PRIVATE ${ROCPROFSYS_EXAMPLE_ROOT_DIR}/causal ${CAUSAL_INCLUDE_DIRECTORIES} ) target_link_libraries( ${_NAME} PRIVATE ${CAUSAL_LINK_LIBRARIES} rocprofiler-systems::rocprofiler-systems-user-library rocprofsys-causal-example-lib-debug ) add_executable(${_NAME}-rocprofsys ${CAUSAL_SOURCES}) target_compile_definitions( ${_NAME}-rocprofsys PRIVATE USE_COZ=0 USE_OMNI=1 ${CAUSAL_DEFINITIONS} ) target_include_directories( ${_NAME}-rocprofsys PRIVATE ${ROCPROFSYS_EXAMPLE_ROOT_DIR}/causal ${CAUSAL_INCLUDE_DIRECTORIES} ) target_link_libraries( ${_NAME}-rocprofsys PRIVATE ${CAUSAL_LINK_LIBRARIES} rocprofiler-systems::rocprofiler-systems-user-library rocprofsys-causal-example-lib-debug ) add_executable(${_NAME}-ndebug ${CAUSAL_SOURCES}) target_compile_definitions( ${_NAME}-ndebug PRIVATE USE_COZ=0 USE_OMNI=0 ${CAUSAL_DEFINITIONS} ) target_include_directories( ${_NAME}-ndebug PRIVATE ${ROCPROFSYS_EXAMPLE_ROOT_DIR}/causal ${CAUSAL_INCLUDE_DIRECTORIES} ) target_link_libraries( ${_NAME}-ndebug PRIVATE ${CAUSAL_LINK_LIBRARIES} rocprofiler-systems::rocprofiler-systems-user-library rocprofsys-causal-example-lib-no-debug ) add_executable(${_NAME}-rocprofsys-ndebug ${CAUSAL_SOURCES}) target_compile_definitions( ${_NAME}-rocprofsys-ndebug PRIVATE USE_COZ=0 USE_OMNI=1 ${CAUSAL_DEFINITIONS} ) target_include_directories( ${_NAME}-rocprofsys-ndebug PRIVATE ${ROCPROFSYS_EXAMPLE_ROOT_DIR}/causal ${CAUSAL_INCLUDE_DIRECTORIES} ) target_link_libraries( ${_NAME}-rocprofsys-ndebug PRIVATE ${CAUSAL_LINK_LIBRARIES} rocprofiler-systems::rocprofiler-systems-user-library rocprofsys-causal-example-lib-no-debug ) add_dependencies( rocprofsys-causal-examples ${_NAME} ${_NAME}-rocprofsys ${_NAME}-ndebug ${_NAME}-rocprofsys-ndebug ) if(coz-profiler_FOUND) rocprofiler_systems_causal_example_interface(rocprofsys-causal-example-lib-coz) target_compile_options( rocprofsys-causal-example-lib-coz INTERFACE -g3 -gdwarf-3 -fno-omit-frame-pointer ) add_executable(${_NAME}-coz ${CAUSAL_SOURCES}) target_compile_definitions( ${_NAME}-coz PRIVATE USE_COZ=1 USE_OMNI=0 ${CAUSAL_DEFINITIONS} ) target_include_directories( ${_NAME}-coz PRIVATE ${ROCPROFSYS_EXAMPLE_ROOT_DIR}/causal ${CAUSAL_INCLUDE_DIRECTORIES} ) target_link_libraries( ${_NAME}-coz PRIVATE ${CAUSAL_LINK_LIBRARIES} rocprofsys-causal-example-lib-coz coz::coz ) add_dependencies(rocprofsys-causal-examples ${_NAME}-coz) endif() if(ROCPROFSYS_INSTALL_EXAMPLES) set(_TARGETS ${_NAME} ${_NAME}-rocprofsys ${_NAME}-ndebug ${_NAME}-rocprofsys-ndebug ${_NAME}-coz ) set(_EXISTING_TARGETS) foreach(_TARGET IN LISTS _TARGETS) if(TARGET ${_TARGET}) list(APPEND _EXISTING_TARGETS ${_TARGET}) endif() endforeach() if(_EXISTING_TARGETS) install( TARGETS ${_EXISTING_TARGETS} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/rocprofiler-systems/examples COMPONENT rocprofiler-systems-examples ) endif() endif() endfunction()