Using nm and sed works fine on Linux, however when moving to other platforms, nm and sed do not work the same way and might have different behaviour. This reduces dependency on host tools and brings back the code for generating the offsets.h directly using a built utility that is portable. Change-Id: I13db1c16cbed12e366fd41d151886bbcbf419548 Signed-off-by: Anas Nashif <anas.nashif@intel.com>
84 lines
2.6 KiB
Makefile
84 lines
2.6 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)
|
|
|
|
include/generated/offsets.h: $(GENOFFSET_H) include/generated/offsets.o include/config/auto.conf FORCE
|
|
$(Q)$(GENOFFSET_H) -i $(CURDIR)/include/generated/offsets.o -o $@
|
|
|
|
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)
|