Всё как обычно. Единственный нюанс: пути к файлам в целях для make желательно делать с обратными дробями (\) и с полным путём. Всё потому, что яровский компилятор именно в таком формате генерирует списки зависимостей.
Ниже рабочий пример. Там включена многофайловая компиляция. Для компиляции каждого файла по отдельности будет чуть-чуть сложнее (если интересно, тоже могу выложить).
CODE
NAME=uberdevice
CC=iccstm8
LD=ilinkstm8
CFLAGS=--mfc --discard_unused_publics --silent -e --debug --code_model small --data_model medium
LDFLAGS=--silent --config link.icf --map $(MAP)
OBJ=$(NAME).o
OUT=$(NAME).out
HEX=$(NAME).hex
MAP=$(NAME).map
DEP=$(NAME).d
SRC=$(subst /,\,$(addprefix $(CURDIR)/, $(wildcard src/*.c)))
ifeq ($(DEBUG), 1)
CFLAGS += -On
else
CFLAGS += -Ohz -DNDEBUG
endif
.PHONY: all clean
all: $(HEX)
$(HEX): $(OUT)
@echo Generating HEX...
@ielftool $(OUT) $(HEX) --ihex --silent
$(OUT): $(OBJ)
@echo Linking...
@$(LD) $(OBJ) $(LDFLAGS) -o $(OUT)
$(OBJ): $(SRC)
@echo Compiling...
@$(CC) $(SRC) $(CFLAGS) --dependencies=m $(DEP) -o $(OBJ)
clean:
@rm -f $(NAME).*
@echo Done cleaning
-include $(DEP)