# vim: filetype=make ifneq ("$(wildcard $(MDEF_FILE))","") MDEF_FILE_PATH=$(strip $(MDEF_FILE)) else ifneq ($(MDEF_FILE),) MDEF_FILE_PATH=$(strip $(PROJECT_BASE)/$(MDEF_FILE)) endif endif ifeq (${CONFIG_NUM_COMMAND_PACKETS},) CONFIG_NUM_COMMAND_PACKETS=0 endif ifeq (${CONFIG_NUM_TIMER_PACKETS},) CONFIG_NUM_TIMER_PACKETS=0 endif ifeq (${CONFIG_NUM_TASK_PRIORITIES},) CONFIG_NUM_TASK_PRIORITIES=$(CONFIG_NUM_PREEMPT_PRIORITIES) endif ifeq ($(ARCH),x86) TASKGROUP_SSE=" TASKGROUP SSE" 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 -e "$(MDEF_FILE_PATH)"; then \ cat $(MDEF_FILE_PATH); \ fi;) endef misc/generated/sysgen/prj.mdef: $(MDEF_FILE_PATH) \ include/config/auto.conf FORCE $(call filechk,prj.mdef) sysgen_cmd=$(strip \ $(PYTHON) $(srctree)/scripts/sysgen \ -i $(CURDIR)/misc/generated/sysgen/prj.mdef \ -o $(CURDIR)/misc/generated/sysgen/ \ -k $(if $(CONFIG_KERNEL_V2),unified,micro) \ ) misc/generated/sysgen/kernel_main.c: misc/generated/sysgen/prj.mdef \ kernel/microkernel/include/micro_private_types.h \ kernel/microkernel/include/kernel_main.h $(Q)$(sysgen_cmd) define filechk_configs.c (echo "/* file is auto-generated, do not modify ! */"; \ echo; \ echo "#include "; \ 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_MDEF),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 ifeq ($(CONFIG_KERNEL_V2),y) OFFSETS_INCLUDE_KERNEL_LOCATION=$(strip \ -I $(srctree)/kernel/unified/include \ ) else OFFSETS_INCLUDE_KERNEL_LOCATION=$(strip \ -I $(srctree)/kernel/microkernel/include \ -I $(srctree)/kernel/nanokernel/include \ ) endif OFFSETS_INCLUDE = $(strip \ -include $(CURDIR)/include/generated/autoconf.h \ -I $(srctree)/include \ -I $(CURDIR)/include/generated \ $(OFFSETS_INCLUDE_KERNEL_LOCATION) \ -I $(srctree)/lib/libc/minimal/include \ -I $(srctree)/arch/${ARCH}/include ) cmd_cc_o_c_1 = $(CC) $(KBUILD_CFLAGS) $(OFFSETS_INCLUDE) -c -o $@ $< arch/$(ARCH)/core/offsets/offsets.o: arch/$(ARCH)/core/offsets/offsets.c $(KCONFIG_CONFIG) $(Q)mkdir -p $(dir $@) $(call if_changed,cc_o_c_1) define offsetchk $(Q)set -e; \ $(kecho) ' CHK $@'; \ mkdir -p $(dir $@); \ $(GENOFFSET_H) -i $(1) -o $@.tmp; \ if [ -r $@ ] && cmp -s $@ $@.tmp; then \ rm -f $@.tmp; \ else \ $(kecho) ' UPD $@'; \ mv -f $@.tmp $@; \ fi endef include/generated/offsets.h: arch/$(ARCH)/core/offsets/offsets.o \ include/config/auto.conf FORCE $(call offsetchk,arch/$(ARCH)/core/offsets/offsets.o)