zephyr/scripts/Makefile.preparch
Andrew Boie 6fbbcbac22 build: don't use FORCE in deps for sysgen
We only want to rebuild this if the MDEF file has been touched.
Otherwise, zephyr.h gets rebuilt with every build, causing
unnecessary rebuilds of application source.

Change-Id: If128da48c9688f043c467f6b163ec6cb3e1d952c
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-02-05 20:14:42 -05:00

108 lines
3.2 KiB
Makefile

ifneq ($(strip $(CONFIG_MAX_NUM_TASK_IRQS)),)
ifneq (${CONFIG_MAX_NUM_TASK_IRQS},0)
TASK_IRQS=y
endif
endif
define filechk_prj.mdef
(echo "% WARNING. THIS FILE IS AUTO-GENERATED. DO NOT MODIFY!"; \
echo; \
echo "% CONFIG NUM_COMMAND_PACKETS NUM_TIMER_PACKETS NUM_TASK_PRIORITIES"; \
echo "% ============================================================="; \
echo " CONFIG ${CONFIG_NUM_COMMAND_PACKETS} ${CONFIG_NUM_TIMER_PACKETS} ${CONFIG_NUM_TASK_PRIORITIES}"; \
echo; \
echo "% TASKGROUP NAME";\
echo "% ==============";\
echo " TASKGROUP EXE";\
echo " TASKGROUP SYS";\
echo " TASKGROUP FPU";\
echo " TASKGROUP SSE";\
echo; \
if test "$(TASK_IRQS)" = "y"; then \
echo "% Task IRQ objects";\
echo "% EVENT NAME HANDLER"; \
echo "% ======================================="; \
i=0; \
while [ $$i -lt $(CONFIG_MAX_NUM_TASK_IRQS) ]; do \
echo " EVENT _TaskIrqEvt$$i NULL"; \
i=$$(($$i+1));\
done; \
fi; \
cat $(PROJECT_BASE)/$(MDEF_FILE);)
endef
misc/generated/sysgen/prj.mdef: $(PROJECT_BASE)/$(MDEF_FILE) \
include/config/auto.conf FORCE
$(call filechk,prj.mdef)
misc/generated/sysgen/kernel_main.c: misc/generated/sysgen/prj.mdef
$(Q)$(srctree)/scripts/sysgen $(CURDIR)/misc/generated/sysgen/prj.mdef $(CURDIR)/misc/generated/sysgen/
define filechk_configs.c
(echo "/* file is auto-generated, do not modify ! */"; \
echo; \
echo "#include <toolchain.h>"; \
echo; \
echo "GEN_ABS_SYM_BEGIN (_ConfigAbsSyms)"; \
echo; \
cat $(CURDIR)/include/generated/autoconf.h | sed \
's/".*"/1/' | awk \
'/#define/{printf "GEN_ABSOLUTE_SYM(%s, %s);\n", $$2, $$3}'; \
echo; \
echo "GEN_ABS_SYM_END";)
endef
misc/generated/configs.c: include/config/auto.conf FORCE
$(call filechk,configs.c)
define filechk_offsets.h
(echo "/* THIS FILE IS AUTO-GENERATED. PLEASE DO NOT EDIT */"; \
echo; \
echo "/*"; \
echo " * This header file provides macros for the offsets of various structure"; \
echo " * members. These offset macros are primarily intended to be used in"; \
echo " * assembly code."; \
echo " */"; \
echo; \
echo "/*"; \
echo " * Auto-generated header guard."; \
echo " */"; \
echo "#ifndef _OFFSETS_H_"; \
echo "#define _OFFSETS_H_"; \
echo; \
echo "#ifdef __cplusplus"; \
echo "extern "C" {"; \
echo "#endif"; \
echo; \
echo "/* defines */"; \
echo; \
nm -g $(CURDIR)/include/generated/offsets.o | sed -n 's/^\([0-9a-z]*\)\s\w\s\(\S*\)$$/#define \2 0x\1/p'; \
echo; \
echo "#ifdef __cplusplus"; \
echo "}"; \
echo "#endif"; \
echo; \
echo "#endif /* _OFFSETS_H_ */";)
endef
include/generated/offsets.h: include/generated/offsets.o include/config/auto.conf FORCE
$(call filechk,offsets.h)
define rule_cc_o_c
$(call echo-cmd,cc_o_c) $(cmd_cc_o_c);
endef
OFFSETS_INCLUDE = $(strip \
-I $(srctree)/include \
-I $(CURDIR)/include/generated \
-I $(srctree)/kernel/microkernel/include \
-I $(srctree)/kernel/nanokernel/include \
-I $(srctree)/target/src/kernel/arch/common/include \
-I $(srctree)/lib/libc/minimal/include \
-I $(srctree)/arch/${SRCARCH}/include )
cmd_cc_o_c = $(CC) $(KBUILD_CFLAGS) $(OFFSETS_INCLUDE) $(USERINCLUDE) -c -o $@ $<
include/generated/offsets.o: $(srctree)/arch/$(SRCARCH)/core/offsets/offsets.c FORCE
$(call if_changed_rule,cc_o_c)