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

AVR
Проект WinAVR больше не поддерживается автором, вместо него Atmel предлагает AVR Toolchain (в виде отдельного пакета и в составе AVR Studio 5).

Возникла необходимость пересобрать старый проект, make-файл которого основывался на шаблоне из комплекта WinAVR, новым тулчейном. Для этого понадобились небольшие правки make-файла. Большинство из них необходимы потому, что в WinAVR был эмулятор оболочки (sh), а в AVR Toolchain его нет, поэтому команды оболочки заменены на консольные команды Windows.

Моё решение в формате diff-файла (автоматически накатить patch скорее всего не получится, номера строк могут быть разными): snippets.crisp-studio.com/view/161/perenos-make-fajlov-makefile-s-winavr-na-avr-toolchain

Ищу лучше (это по понятным причинам не будет работать на *nix), может, кто заморачивался?
  • +1
  • 11 декабря 2011, 19:07
  • artvolk

Комментарии (10)

RSS свернуть / развернуть
Может просто лучше поставить sh?
0
Хотелось оставить по меньше сущностей и зависимостей — официальный тулчейн есть, его и юзаем :)
0
>> Ищу лучше (это по понятным причинам не будет работать на *nix), может, кто заморачивался?

Что-то я не понял, причём тут nix? Там-то таких проблем вообще нету.

И да, ИМХО всё-же лучше поставить sh — всё равно он много для чего нужен. Да и работать в нём всяко удобнее, чем в кастрированной виндовой cmd.
0
Что-то я не понял, причём тут nix? Там-то таких проблем вообще нету.
Судя по оригинальному make-файлу от WinAVR он должен работать для сборки проекта и *nix-овым AVR тулченом. После замены команд на cmd-шные, эта возможность, естественно, поломается.
0
А, ты в этом смысле. Ну тогда тем более самый правильный вариант — поставить sh. Ну или объявить переменные а ля $CC для всех используемых команд, вот только зафмг.
0
Проблема наличия sh и прочих *nix утилит решается установкой MinGW с пакетом MSYS.
mingw.org/
Нужно просто добавить <mingw_dir>/msys/bin в PATH.
+1
полезные тулзы:
zsh-nt.sourceforge.net/
gnuwin32.sourceforge.net/

для определения хост-системы из мейкфайла можно проверять наличие сист.переменной Comspec и переопределить команды rm-del, cp-copy, mv-move
0
Спасибо, так и знал, что в ответ получу кучу полезного :)
0
вот кусок кросс-платформенного мейка:
ifndef ComSpec
	CLASSPATH := $(CLASSPATH_LINUX)
	RM := rm -rf
	CP := cp -r -L
	MD := mkdir -p
	CD := cd
	ECHO := echo -e
	DIR_SEP=:
else
	CLASSPATH := $(CLASSPATH_WINDOWS)
	RM := del /q /f
	CP := cp -r -L
	MD := md
	CD := cd
	ECHO := echo
	DIR_SEP=;
endif
0
Спасибо, нужно будет как-нибудь из WinAVR'овского написать свой, выкинув лишнее и добавив это…
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.