mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-04 01:41:57 +00:00
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>
114 lines
3.3 KiB
Makefile
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)
|