ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
507758
VVB (16.04.2014 08:10 - 09:44, просмотров: 1675)
Господа, подскажите по использованию makefile Как заставить makefile выполнить мою цель hetfiles до того как он выполнит директиву include? Единственный видимый мне вариант: дважды запускать make, один раз с целью hetfiles, второй раз с целью all, и добавить цель hetfiles в игнорирование создания зависимостей. Можно ли сделать это, вызвав make один раз? Ситуация: мне нужно запустить het ассемблер (который из .het файла сделает .c и .h файлы) до того как будет выполнена директива include. Директива необходима для разрешения зависимостей.
NODEPS:=clean

# используется find из пакета cygwin для поиска исходников
FIND:=C:\cygwin64\bin\find

#Find all the C/C++ files in the project directory
C_SOURCES := $(shell $(FIND) src -name "*.c")

#These are the dependency files, which make will clean up after it creates them
DEPFILES:=$(C_SOURCES:.c=.d)
DEPFILES:=$(patsubst src/%,obj/%,$(DEPFILES))

OBJECTS:=$(patsubst src/%,obj/%,$(C_SOURCES))
OBJECTS:=$(patsubst %.c,%.o,$(OBJECTS))

CC:=D:\Keil\ARM\ARMCC\bin\armcc.exe

OPTFLAGS:=-O0
CPUFLAGS:=-c --cpu Cortex-R4F -g --apcs=interwork


CCFLAGS:=$(CPUFLAGS) $(OPTFLAGS) -D__little_endian__  -Iinclude
DEPFLAGS:=$(CPUFLAGS) -M -Iinclude --depend_format=unix_escaped --depend_single_line --no_depend_system_headers

LDFLAGS:=$(CPUFLAGS) --strict --entry=_c_int00 --summary_stderr --info summarysizes --map --callgraph\
 --info sizes --info totals --info veneers


#Don't create dependencies when we're cleaning, for instance
ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS))))
    #Chances are, these files don't exist.  GMake will create them and
    #clean up automatically afterwards
    -include $(DEPFILES)
endif


.PHONY: all
all:	hetfiles obj/tst.axf
	@echo Done!

#This is the rule for creating the dependency files
obj/%.d: src/%.c Makefile
	@echo Compiling C file $< for dependency. Out file $@
	@if not exist obj mkdir obj
	$(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst src/%.c,obj/%.o,$<)'

#This rule does the compilation C files
obj/%.o: src/%.c obj/%.d Makefile
	@echo Compiling C file $<. Out file $@
	@if not exist obj mkdir obj
	$(CC) $(CCFLAGS) $< -o $@

# для компиляции файла N2HET и копирования полученных файлов в каталоги проекта
hetfiles: n2het-uart/HET_EMU_SCI/HET_EMU_SCI/HET_EMU_SCI.het
	"D:\Texas Instruments\Hercules\HET\bin\hetp.exe" -hc32 -n0 -v2 $<
	C:\cygwin64\bin\cp $(patsubst %.het,%.h,$<) include
	C:\cygwin64\bin\cp $(patsubst %.het,%.c,$<) src

obj/tst.axf: $(DEPFILES) $(OBJECTS) Makefile
	$(LD) $(LDFLAGS) $(OBJECTS) --scatter memmap.sct --list "$(patsubst %.axf,%.map,$@)" -o $@

.PHONY: clean
clean:
	del /q obj\*