# Copyright 2021 The IREE Authors # # Licensed under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception cmake_minimum_required(VERSION 3.16.3) project(IREETracyServer C CXX) set(TRACY_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../third_party/tracy") find_package(Threads REQUIRED) #------------------------------------------------------------------------------- # Detect package manager #------------------------------------------------------------------------------- message(STATUS "Checking for Tracy dependencies...") find_program(PKGCONFIG pkg-config) if(NOT PKGCONFIG) message(STATUS "Could not find pkg-config to get dependencies; you need to specify them manually or use pkg-config") message(STATUS " Ubuntu/Debian: `apt install pkg-config`") message(STATUS " MacOS: `brew install pkg-config`") else() include(FindPkgConfig) # Deps slightly differ by platform but some are common. pkg_check_modules(TRACY_DEPS libzstd ) if(NOT TRACY_DEPS_FOUND) message(STATUS "Could not find Tracy dependencies (Tracy server will not be built).") message(STATUS "To build Tracy, install libzstd:") message(STATUS " Ubuntu/Debian: `apt install libzstd-dev`") message(STATUS " MacOS: `brew install zstd`") return() endif() endif() #------------------------------------------------------------------------------- # Source dependencies # See https://github.com/wolfpld/tracy/blob/master/cmake/vendor.cmake #------------------------------------------------------------------------------- include(FetchContent) FetchContent_Declare( capstone GIT_REPOSITORY https://github.com/capstone-engine/capstone.git GIT_TAG 97db712c91e964718f9cc300e81b9cf76b31a22e # 6.0.0-Alpha1 EXCLUDE_FROM_ALL ) set(CAPSTONE_X86_ATT_DISABLE ON CACHE BOOL "" FORCE) set(CAPSTONE_ALPHA_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_HPPA_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_LOONGARCH_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_M680X_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_M68K_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_MIPS_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_MOS65XX_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_PPC_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_SPARC_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_SYSTEMZ_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_XCORE_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_TRICORE_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_TMS320C64X_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_M680X_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_EVM_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_WASM_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_BPF_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_RISCV_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_SH_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_XTENSA_SUPPORT OFF CACHE BOOL "" FORCE) set(CAPSTONE_BUILD_MACOS_THIN ON CACHE BOOL "" FORCE) FetchContent_MakeAvailable(capstone) FetchContent_Declare( PPQSort GIT_REPOSITORY https://github.com/GabTux/PPQSort.git GIT_TAG 4b964020d67b435dae7ebac7b8f5ecea1f421c58 # v1.0.3 EXCLUDE_FROM_ALL ) FetchContent_MakeAvailable(PPQSort) #------------------------------------------------------------------------------- # Configuration #------------------------------------------------------------------------------- function(setup_cxx_options name) set_target_properties(${name} PROPERTIES CXX_STANDARD 20 ) target_compile_options(${name} PRIVATE $<$:-Wno-unused-result> ) target_include_directories(${name} PUBLIC ${TRACY_SOURCE_DIR}/imgui ${TRACY_DEPS_INCLUDE_DIRS} ${capstone_SOURCE_DIR}/include/capstone ) target_link_libraries(${name} PRIVATE ${TRACY_DEPS_LIBRARIES} ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} capstone PPQSort ) target_link_directories(${name} PRIVATE ${TRACY_DEPS_LIBRARY_DIRS} ) endfunction() #------------------------------------------------------------------------------- # Common library #------------------------------------------------------------------------------- file(GLOB COMMON_SRCS ${TRACY_SOURCE_DIR}/public/common/*.cpp) add_library(IREETracyCommon ${COMMON_SRCS} ) setup_cxx_options(IREETracyCommon) #------------------------------------------------------------------------------- # Server library #------------------------------------------------------------------------------- file(GLOB SERVER_SRCS ${TRACY_SOURCE_DIR}/server/*.cpp) add_library(IREETracyServer ${SERVER_SRCS} ) setup_cxx_options(IREETracyServer) target_link_libraries(IREETracyServer PRIVATE IREETracyCommon ) #------------------------------------------------------------------------------- # Standalone capture server #------------------------------------------------------------------------------- add_executable(IREETracyCaptureServer ${TRACY_SOURCE_DIR}/capture/src/capture.cpp ) set_target_properties(IREETracyCaptureServer PROPERTIES OUTPUT_NAME "iree-tracy-capture" ) setup_cxx_options(IREETracyCaptureServer) target_link_libraries(IREETracyCaptureServer PRIVATE IREETracyCommon IREETracyServer )