blob: 191953174061fb3a360ebf2c623ee234418b99df [file] [log] [blame]
FUNCTION (CHECK_DTRACE d_file)
MESSAGE(STATUS "Detecting USDT support")
SET(HAVE_DTRACE "OFF" PARENT_SCOPE)
SET(DTRACE_USES_OBJFILE "OFF" PARENT_SCOPE)
IF ((CMAKE_SYSTEM_NAME STREQUAL "Darwin") OR (CMAKE_SYSTEM_NAME STREQUAL "Linux"))
# USDT is not (yet) supported on platforms (e.g., FreeBSD, Solaris) that require pre-link modification of .o files
EXECUTE_PROCESS(
COMMAND dtrace -o .tmp.dprobes.h -s ${d_file} -h
RESULT_VARIABLE DTRACE_RESULT)
FILE(REMOVE .tmp.dprobes.h)
IF (DTRACE_RESULT EQUAL 0)
MESSAGE(STATUS "Detecting USDT support - found")
SET(HAVE_DTRACE "ON" PARENT_SCOPE)
IF (CMAKE_SYSTEM_NAME STREQUAL "Linux")
SET(DTRACE_USES_OBJFILE "ON" PARENT_SCOPE)
ENDIF ()
ELSE ()
MESSAGE(STATUS "Detecting USDT support - not found")
ENDIF ()
ELSE ()
MESSAGE(STATUS "Detecting USDT support - disabled on this platform")
ENDIF ()
ENDFUNCTION ()
FUNCTION (DEFINE_DTRACE_DEPENDENCIES d_file prefix)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${prefix}-probes.h
COMMAND dtrace -o ${CMAKE_CURRENT_BINARY_DIR}/${prefix}-probes.h -s ${d_file} -h
DEPENDS ${d_file})
ADD_CUSTOM_TARGET(generate-${prefix}-probes DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${prefix}-probes.h)
SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${prefix}-probes.h PROPERTIES GENERATED TRUE)
IF (DTRACE_USES_OBJFILE)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${prefix}-probes.o
COMMAND dtrace -o ${CMAKE_CURRENT_BINARY_DIR}/${prefix}-probes.o -s ${d_file} -G
DEPENDS ${d_file})
ADD_DEPENDENCIES(generate-${prefix}-probes ${CMAKE_CURRENT_BINARY_DIR}/${prefix}-probes.o)
SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${prefix}-probes.o PROPERTIES GENERATED TRUE)
ENDIF ()
ENDFUNCTION ()