summaryrefslogtreecommitdiff
path: root/cesar/cp/eoc/fsm/Module
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/cp/eoc/fsm/Module')
-rw-r--r--cesar/cp/eoc/fsm/Module40
1 files changed, 40 insertions, 0 deletions
diff --git a/cesar/cp/eoc/fsm/Module b/cesar/cp/eoc/fsm/Module
new file mode 100644
index 0000000000..1dd483c94c
--- /dev/null
+++ b/cesar/cp/eoc/fsm/Module
@@ -0,0 +1,40 @@
+SOURCES := tables.c
+
+MODULES := cp/fsm
+
+ifndef $(MODULE_VAR)_ONCE
+$(MODULE_VAR)_ONCE := 1$(CONFIG_CP_FSM_DEF)
+
+cp_fsm_defs_h := $(OBJ_INC_DIR)/cp_fsm_defs.h
+cp_fsm_tables_h = $(OBJ_INC_DIR)/cp_fsm_tables.h
+CLEAN_FILES += $(cp_fsm_defs_h) $(cp_fsm_tables_h)
+
+COMPILE_DEPS += $(cp_fsm_defs_h)
+
+cp_fsm_deps = $(CONFIG_CP_FSM_DEF:"%"=%) \
+ $(call src2src,cp.conf template_defs.h \
+ template_tables.h,$(MODULE)/src/fsm)
+
+$(cp_fsm_defs_h) $(cp_fsm_tables_h): $(cp_fsm_deps) $(DFAGEN) \
+ $(OBJ_INC_DIR_STAMP)
+ echo $(cp_fsm_deps) ; \
+ python $(DFAGEN) -O $(OBJ_INC_DIR) \
+ -o c -d $< -c $(filter %.conf,$^) -p cp_fsm
+
+CLEAN_FILES += $(OBJ_DIR)/cp_fsm.png $(OBJ_DIR)/cp_fsm.dot
+
+$(OBJ_DIR)/cp_fsm.png: $(OBJ_DIR)/cp_fsm.dot $(OBJ_DIR_STAMP)
+ dot -Tpng -o $@ $<
+
+$(OBJ_DIR)/cp_fsm.dot: $(cp_fsm_deps) $(DFAGEN) $(OBJ_DIR_STAMP)
+ python $(DFAGEN) -O $(OBJ_DIR) -o dot -d $< -p cp_fsm
+
+$(call src2obj,cp/eoc/fsm/src/tables.c,target): $(cp_fsm_tables_h)
+
+else
+# This module rules depend on a configuration item, it need work to be used in
+# several build type.
+ifneq ($($(MODULE_VAR)_ONCE),1$(CONFIG_CP_FSM_DEF))
+$(error Module not safe for multiple build types)
+endif
+endif