IAR AVR - кривой build_one_lib.bat Обычно библиотеку перекомпилируют, когда хотят воспользоваться залоченными регистрами. И актуально это как правило для маленьких контроллеров (опции -v0, -v1 - для 8К Code). А тут мне понадобилось залочить регистры для более крупного МК (-v3 -64K Data, 128K Code). И выяснилось, что Сабжевый батник для опций выше 0 и 1 работает неверно. После длительных упражнений и пошаговой отладки выяснилось следующее:
В батнике имеется такая конструкция:
goto asm_proc%PROC_OPT%
:asm_proc3
:asm_proc2
if "%SMALL_FL%" == "yes" goto asm_proc
:asm_proc6
:asm_proc5
:asm_proc4
echo -D__HAS_ELPM__=1 >> temp_aflag_base.xcl
:asm_proc1
:asm_proc0
:asm_proc
По замыслу она должна в зависимости от переменной PROC_OPT передавать управление на соответствующие метки. Реально переход ВСЕГДА происходит на последнюю метку. Это похоже глюк интерпретатора bat-файлов (все это проверялось на Windows 98)
Это приводит к тому, что правильно отрабатываются только опции процессора 0 и 1. Подобный кусок встречается в батнике в двух местах.
Единственный метод лечения - переписать батник, что я и сделал.
Интересно, как этот батник будет работать под ХР и другими операционками?