Перенос make-файлов (Makefile) с WinAVR на AVR Toolchain

11.12.2011 17:48 / Артём Волк / 689 просмотров / ...

Проект 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 использовать не получится.