#-------------------------------------------------------------------------------
# Copyright (c) 2019-2020, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
#-------------------------------------------------------------------------------

#[===[.rst:
Misc utilities
--------------
#]===]

include_guard(DIRECTORY)

#[===[.rst:
.. cmake:command:: check_args

  .. code-block:: cmake

    check_args(func_name REQ_ARG1 REQ_ARG2)

  Helper macro for argument checking in functions. First argument *func_name* is
  the name of the function, other arguments are the names of the required
  arguments to that function. The macro iterates through the list, and prints
  and error message if not all arguments are defined.

#]===]
macro(check_args)
	set(_argv "${ARGV}")
	list(SUBLIST _argv 0 1 _func)
	list(SUBLIST _argv 1 -1 _args)
	foreach(_arg IN LISTS _args)
		if (NOT DEFINED _MY_PARAMS_${_arg})
			message(FATAL_ERROR "${_func}(): mandatory parameter '${_arg}' missing.")
		endif()
	endforeach()
endmacro()
