summaryrefslogtreecommitdiff
path: root/Kbuild
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2015-08-28 14:23:30 -0400
committerAnas Nashif <anas.nashif@intel.com>2016-02-05 20:15:33 -0500
commitcec625afc46c6444af39293b4a5bd41effca1448 (patch)
treee6e286a9ea8a766f86dadea5688271474c7253a4 /Kbuild
parent59302df0f6e6474fd3d3c03049b11b367bc6723f (diff)
Move sysgen hooks and file generation to top-level Kbuild
Change-Id: Icb06c0e041e08863947c7b31d843771c3f2c6a0c Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Diffstat (limited to 'Kbuild')
-rw-r--r--Kbuild98
1 files changed, 97 insertions, 1 deletions
diff --git a/Kbuild b/Kbuild
index ce2cbcf8e..1b3fcf06b 100644
--- a/Kbuild
+++ b/Kbuild
@@ -1,2 +1,98 @@
-# The build system expects this file
+# vim: filetype=make
+
+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)
+
+targets := misc/generated/configs.c
+targets += include/generated/offsets.h
+
+
+always := misc/generated/configs.c
+always += include/generated/offsets.h
+
+ifeq ($(CONFIG_MICROKERNEL),y)
+targets += misc/generated/sysgen/kernel_main.c
+always += misc/generated/sysgen/kernel_main.c
+endif
+
+define rule_cc_o_c_1
+ $(call echo-cmd,cc_o_c_1) $(cmd_cc_o_c_1);
+endef
+
+OFFSETS_INCLUDE = $(strip \
+ -I $(srctree)/include \
+ -I $(CURDIR)/include/generated \
+ -I $(srctree)/kernel/microkernel/include \
+ -I $(srctree)/kernel/nanokernel/include \
+ -I $(srctree)/lib/libc/minimal/include \
+ -I $(srctree)/arch/${SRCARCH}/include )
+
+cmd_cc_o_c_1 = $(CC) $(KBUILD_CFLAGS) $(OFFSETS_INCLUDE) -include $(CURDIR)/include/generated/autoconf.h $(USERINCLUDE) -c -o $@ $<
+
+arch/$(SRCARCH)/core/offsets/offsets.o: arch/$(SRCARCH)/core/offsets/offsets.c
+ $(Q)mkdir -p $(dir $@)
+ $(call if_changed_rule,cc_o_c_1)
+
+$(obj)/include/generated/offsets.h: $(GENOFFSET_H) arch/$(SRCARCH)/core/offsets/offsets.o include/config/auto.conf FORCE
+ $(Q)$(GENOFFSET_H) -i arch/$(SRCARCH)/core/offsets/offsets.o -o $@