# SPDX-License-Identifier: BSD-3-Clause # Copyright 2015, Olivier MATZ # copy a file # copy-y-$(copy) is provided by the user # $(copy) is the path of the directory containing the destination # files, and the variable contains the path of the files to copy. Several # copy-y-$(copy) can be present. # list all path requested by user _all-copy := $(patsubst copy-y-%,%,$(filter copy-y-%,$(.VARIABLES))) all-copy := # for each copy, create the following variables: # out-$(copy) = output path of the executable # pre-$(copy) = list of prerequisites for this executable # We also add the files in $(all-copy). $(foreach copy,$(_all-copy),\ $(if $(notdir $(copy)), \ $(if $(call compare,$(words $(copy-y-$(copy))),1), \ $(error "only one source file is allowed in copy-y-$(copy)")) \ $(eval dst := $(dir $(copy))$(notdir $(copy-y-$(copy)))) \ $(eval out-$(copy) := $(dir $(copy))) \ $(eval pre-$(copy) := $(copy-y-$(copy))) \ $(eval all-copy += $(dst)) \ , \ $(foreach src,$(copy-y-$(copy)),\ $(eval dst := $(copy)$(notdir $(src))) \ $(eval out-$(copy) := $(copy)) \ $(eval pre-$(dst) := $(src)) \ $(eval all-copy += $(dst)) \ ) \ ) \ ) # add them to the list of targets and clean all-targets += $(all-copy) all-clean-file += $(all-copy) # convert format of executable from elf to ihex # $1: source executable (elf) # $2: destination file copy_cmd = $(CP) $(1) $(2) # print line used to convert executable format ifeq ($(V),1) copy_print_cmd = echo $(call protect_quote,$(call copy_cmd,$1,$2)) else copy_print_cmd = echo " COPY $(2)" endif