zephyr/scripts/Makefile.preparch
Anas Nashif 7312837c5f mdef: allow mdef file to be at custom location
Right now mdef file of an app can only be hosted in the
application root or under the same tree. This patch
allows hosting the file at custom location outside the
application tree.

Change-Id: I5ffdacb00d29d754d0fdd826c8f190f5a7968905
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:15:21 -05:00

114 lines
3.3 KiB
Makefile

ifneq ($(strip $(CONFIG_MAX_NUM_TASK_IRQS)),)
ifneq (${CONFIG_MAX_NUM_TASK_IRQS},0)
TASK_IRQS=y
endif
endif
ifneq ("$(wildcard $(MDEF_FILE))","")
MDEF_FILE_PATH=$(MDEF_FILE)
else
MDEF_FILE_PATH=$(PROJECT_BASE)/$(MDEF_FILE)
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 $(MDEF_FILE_PATH);)
endef
misc/generated/sysgen/prj.mdef: $(MDEF_FILE_PATH) \
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)