1cmake_minimum_required(VERSION 3.12) 2project(usdt_sample_lib1) 3 4# Define variables. 5set(USDT_SAMPLE_LIB1_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include CACHE STRING "USDT_SAMPLE_LIB1_INCLUDE_DIR" FORCE) 6set(USDT_SAMPLE_LIB1_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src CACHE STRING "USDT_SAMPLE_LIB1_SRC_DIR" FORCE) 7set(USDT_SAMPLE_LIB1_LINK_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "USDT_SAMPLE_LIB1_LINK_DIR" FORCE) 8set(USDT_SAMPLE_LIB1_LIB ${PROJECT_NAME} CACHE STRING "USDT_SAMPLE_LIB1_LIB" FORCE) 9set(USDT_SAMPLE_LIB1_GENERATED ${CMAKE_CURRENT_BINARY_DIR}/generated) 10set(USDT_SAMPLE_SDT_HEADER ${USDT_SAMPLE_LIB1_SRC_DIR}/lib1_sdt.h) 11set(USDT_SAMPLE_SDT_OBJECT ${USDT_SAMPLE_LIB1_GENERATED}/lib1_sdt.o) 12set(USDT_SAMPLE_SDT_PROBES ${USDT_SAMPLE_LIB1_SRC_DIR}/lib1_sdt.d) 13 14add_library( ${PROJECT_NAME} SHARED 15 ${USDT_SAMPLE_LIB1_SRC_DIR}/lib1.cpp 16) 17 18target_include_directories( ${PROJECT_NAME} 19 PRIVATE 20 # For folly StaticTracepoint.h: 21 ${CMAKE_CURRENT_SOURCE_DIR}/../../../tests/python/include 22 PUBLIC 23 ${USDT_SAMPLE_LIB1_INCLUDE_DIR} 24) 25 26target_link_libraries( ${PROJECT_NAME} 27 ${USDT_SAMPLE_SDT_OBJECT} 28) 29 30## Start - N.B. Following section is relevant for when using systemtap-sdt-devel to define the probes. 31 32# Create usdt header file. 33add_custom_target( ${PROJECT_NAME}_HDR_CLEAN 34 COMMAND rm -f ${USDT_SAMPLE_SDT_HEADER} 35 COMMENT "Remove generated header" 36) 37add_custom_target( ${PROJECT_NAME}_HDR 38 COMMAND dtrace -h -s ${USDT_SAMPLE_SDT_PROBES} -o ${USDT_SAMPLE_SDT_HEADER} 39 COMMENT "Create usdt probes header file" 40) 41add_dependencies(${PROJECT_NAME}_HDR ${PROJECT_NAME}_HDR_CLEAN) 42 43# Create usdt object file. 44add_custom_target( ${PROJECT_NAME}_CLEAN 45 COMMAND rm -rf ${USDT_SAMPLE_LIB1_GENERATED} && mkdir -p ${USDT_SAMPLE_LIB1_GENERATED} 46 COMMENT "Recreate usdt probes generated folder" 47) 48add_custom_target( ${PROJECT_NAME}_OBJ 49 COMMAND dtrace -G -s ${USDT_SAMPLE_SDT_PROBES} -o ${USDT_SAMPLE_SDT_OBJECT} 50 COMMENT "Create usdt probes object file" 51) 52add_dependencies(${PROJECT_NAME}_OBJ ${PROJECT_NAME}_CLEAN) 53 54add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_HDR ${PROJECT_NAME}_OBJ) 55 56## End 57