#
# Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
#
# SPDX-License-Identifier: BSD-2-Clause
#

# This module declares a macro for debugging purposes.
# Simply place a call to set_break() in your build files and you will get a prompt

macro(set_break)
    include(cmakerepl)
endmacro()

# Mechanism for switching complex commands into and out of the foreground
# Ninja restricts access to stdio for running commands by default.
# Any output will only be printed once the task has completed.
# This can be confusing for commands that take a long time to complete or hang
# on failure instead of returning.
# Foregrounding the tasks by setting USES_TERMINAL solves this problem as Ninja
# lets the process directly access stdio. However this places the command into
# a job pool that only allows one command to run at a time.
# Therefore, CMakeForegroundComplexCommands is provided to allow bulk switching
# of these commands between foreground and background. The intention is that it
# is typically left off unless a build requires debugging in which case performance
# is no longer as important as being able to get more helpful debug info of the
# failing command.
# Note: This requires correctly annotating complex commands with USES_TERMINAL_DEBUG
# in the correct add_custom_command calls.
set(CMakeForegroundComplexCommands OFF CACHE BOOL "Set USES_TERMINAL on specially marked tasks. \
This makes the task run in the foreground and can directly access stdio. This is helpful for \
debugging tasks that take a long time, or want to insert a breakpoint into the process. \
Note: Only one task can run in foreground at a time.")
mark_as_advanced(CMakeForegroundComplexCommands)
if(CMakeForegroundComplexCommands)
    set(USES_TERMINAL_DEBUG USES_TERMINAL)
else()
    set(USES_TERMINAL_DEBUG "")
endif()
