# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later # SPDX-FileCopyrightText: Bradley M. Bell # SPDX-FileContributor: 2003-24 Bradley M. Bell # ---------------------------------------------------------------------------- # add_check_executable(parent_target short_name) # add_check_executable(parent_target short_name arguments) # # parent_target: (in) # The variable containing the name of the parent check target, # ${parent_target} must begin with "check". # # short_name: (in) # Is the non-empty short name of the target we are adding. # The full name of this target is ${parent_target}_${short_name}. # # arguments: (in) # This argument is optional. If it is present, it is # a string containing the arguments to the executable. # # 1. This macro creates the target ${parent_target}_${short_name}. # 2. This target depends on an executable with the same name except that # the "check_" at the beginning is removed. # 3. If the variable ${parent_target}_${short_name}_depends is defined, # it is a list that is included in the dependencies for this target. # 4. This target is add to the list ${parent_target}_depends in both # the current scope and its parent scope. # # This macros uses temporary variables with names that begin with # add_check_executable_. # MACRO(add_check_executable parent_target short_name) IF( NOT ${parent_target} MATCHES "^check" ) MESSAGE(FATAL_ERROR "add_check_executable: " "parent_target does not begin with 'check'" ) ENDIF( ) IF( "${short_name}" STREQUAL "" ) MESSAGE(FATAL_ERROR "add_check_target: short_name is empty") ENDIF( ) # # add_check_executable_full_name SET(add_check_executable_full_name "${parent_target}_${short_name}" ) # # add_check_executable_no_check STRING(REGEX REPLACE "^check_" "" add_check_executable_no_check "${add_check_executable_full_name}" ) # # add_check_executable_arguments IF( ${ARGC} EQUAL 2 ) SET(add_check_executable_arguments "") ELSEIF( ${ARGC} EQUAL 3 ) STRING( REGEX REPLACE "[ ]" ";" add_check_executable_arguments "${ARGV2}" ) ELSE( ) MESSAGE(FATAL_ERROR "add_check_executable: " "number of arguments = ${ARGC}" ) ENDIF( ) # # add_check_executable_depends IF( DEFINED ${add_check_executable_full_name}_depends ) SET(add_check_executable_depends ${${add_check_executable_full_name}_depends} ) add_to_list(add_check_executable_depends ${add_check_executable_no_check} ) ELSE ( ) SET(add_check_executable_depends ${add_check_executable_no_check} ) ENDIF( ) # # create this target ADD_CUSTOM_TARGET( ${add_check_executable_full_name} ${add_check_executable_no_check} ${add_check_executable_arguments} DEPENDS ${add_check_executable_depends} ) IF( "${CMAKE_GENERATOR}" STREQUAL "Ninja" ) SET(make_cmd "ninja" ) ELSEIF( "${CMAKE_GENERATOR}" STREQUAL "NMake Makefiles" ) SET(make_cmd "nmake" ) ELSE( ) SET(make_cmd "make" ) ENDIF( ) MESSAGE(STATUS "${make_cmd} ${add_check_executable_full_name}: available") # # add parent dependency add_to_list( ${parent_target}_depends ${add_check_executable_full_name} ) SET( ${parent_target}_depends ${${parent_target}_depends} PARENT_SCOPE ) # ENDMACRO()