Перенос make-файлов (Makefile) с WinAVR на AVR Toolchain
Проект WinAVR больше не поддерживается автором, вместо него Atmel предлагает AVR Toolchain (в виде отдельного пакета и в составе AVR Studio 5).
Возникла необходимость пересобрать старый проект, make-файл которого основывался на шаблоне из комплекта WinAVR, новым тулчейном. Для этого понадобились небольшие правки make-файла. Большинство из них необходимы потому, что в WinAVR был эмулятор оболочки (sh), а в AVR Toolchain его нет, поэтому команды оболочки заменены на консольные команды Windows. Изменения в формате diff-файла ниже (автоматически накатить patch, скорее всего не получится, номера строк могут быть разными).
Index: Makefile =================================================================== --- Makefile (revision 18580) +++ Makefile (working copy) @@ -432,15 +433,12 @@ sizebefore: - @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \ - 2>/dev/null; echo; fi + @if exist $(TARGET).elf $(ELFSIZE) sizeafter: - @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \ - 2>/dev/null; echo; fi + @if exist $(TARGET).elf $(ELFSIZE) @@ -607,11 +605,11 @@ # Create object files directory -$(shell mkdir $(OBJDIR) 2>/dev/null) +$(shell mkdir $(OBJDIR) 2>nul) # Include the dependency files. --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) +-include $(shell mkdir .dep 2>nul) $(wildcard .dep/*)
На это решение натолкнула вот статья и комментарии к ней. Минус подхода — после этих изменений makefile на *nix использовать не получится.
