make
не будет создавать цели, о которых вы не просили. Ваша цель all
запрашивает только файлы с расширением .elf
, не более того. Если вы используете sh для сборки всех остальных, вы должны указать make
сделать это.
Определение целей для сборки должно быть обновлено, поскольку оно не создает имена файлов должным образом. Написанный как есть, он только объединяет расширение до конца переменной. Убедитесь сами:
$ make -rp 2>&1 | grep PROGRAMS_TO_CREATE
PROGRAMS_TO_CREATE := copy sec_soft.elf copy sec_soft.dump copy sec_soft.bin copy sec_soft.hex copy sec_soft.mem copy sec_soft.coe
Это должно быть обновлено до правильной обработки строк, например:
PROGRAMS_TO_CREATE := $(foreach program,$(PROGRAMS_NO_EX),$(addprefix $(program),.elf .dump .bin .hex .mem .coe))
Это сгенерирует правильный список целей:
$ make -rp 2>&1 | grep PROGRAMS_TO_CREATE
PROGRAMS_TO_CREATE := copy.elf copy.dump copy.bin copy.hex copy.mem copy.coe sec_soft.elf sec_soft.dump sec_soft.bin sec_soft.hex sec_soft.mem sec_soft.coe
, который после установки в качестве зависимости от цели all
:
all: $(PROGRAMS_TO_CREATE)
приведет к правильной сборке.