2019-06-27 09:23:21 -07:00
|
|
|
find_program(GDB_EXECUTABLE gdb)
|
|
|
|
find_program(LLDB_EXECUTABLE lldb)
|
|
|
|
if (GDB_EXECUTABLE)
|
|
|
|
set(DEBUGGER ${GDB_EXECUTABLE} CACHE STRING "Which debugger should be used")
|
|
|
|
elseif (LLDB_EXECUTABLE)
|
|
|
|
set(DEBUGGER ${LLDB_EXECUTABLE} CACHE STRING "Which debugger should be used")
|
|
|
|
else()
|
|
|
|
set(DEBUGGER "unknown" CACHE STRING "Which debugger should be used")
|
2019-06-27 09:42:16 -07:00
|
|
|
message(STATUS "No debugger (gdb or lldb) was found")
|
2019-06-27 09:23:21 -07:00
|
|
|
endif()
|
|
|
|
set_property(CACHE DEBUGGER PROPERTY STRINGS gdb lldb)
|
|
|
|
|
2022-01-24 09:18:18 -08:00
|
|
|
function(engine_add_debuggger TARGET)
|
2019-06-28 00:11:49 -07:00
|
|
|
if (${DEBUGGER} MATCHES "gdb")
|
2019-06-27 09:27:42 -07:00
|
|
|
add_custom_target(${TARGET}-debug)
|
2018-10-20 12:37:19 -07:00
|
|
|
add_custom_command(TARGET ${TARGET}-debug
|
|
|
|
COMMAND ${GDB_EXECUTABLE} -ex run --args $<TARGET_FILE:${TARGET}>
|
|
|
|
COMMENT "Starting debugger session for ${TARGET}"
|
2020-07-21 10:12:52 -07:00
|
|
|
USES_TERMINAL
|
2018-10-20 12:37:19 -07:00
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${TARGET}
|
|
|
|
DEPENDS ${TARGET}
|
|
|
|
)
|
2019-06-28 00:11:49 -07:00
|
|
|
elseif (${DEBUGGER} MATCHES "lldb")
|
2019-06-27 09:27:42 -07:00
|
|
|
add_custom_target(${TARGET}-debug)
|
2018-10-20 12:37:19 -07:00
|
|
|
add_custom_command(TARGET ${TARGET}-debug
|
2019-06-12 08:19:51 -07:00
|
|
|
COMMAND CG_CONTEXT_SHOW_BACKTRACE=1 ${LLDB_EXECUTABLE} -b -o run $<TARGET_FILE:${TARGET}>
|
2018-10-20 12:37:19 -07:00
|
|
|
COMMENT "Starting debugger session for ${TARGET}"
|
2020-07-21 10:12:52 -07:00
|
|
|
USES_TERMINAL
|
2018-10-20 12:37:19 -07:00
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${TARGET}
|
|
|
|
DEPENDS ${TARGET}
|
|
|
|
)
|
|
|
|
endif()
|
2022-01-24 09:18:18 -08:00
|
|
|
endfunction()
|