summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/framework
diff options
context:
space:
mode:
authorsachin gupta <sgupta2m@in.ibm.com>2013-07-15 03:05:21 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-08-23 16:17:34 -0500
commit6c82992a3ea6bb0acef08050f5dd110376ca3ac4 (patch)
treeca400125c0c0ed9f236b69e1ea7f7d093b3d1b57 /src/usr/diag/prdf/framework
parent13c1d30ad8dad508635fa3faaa3c4e9e8b37f2dc (diff)
downloadtalos-hostboot-6c82992a3ea6bb0acef08050f5dd110376ca3ac4.tar.gz
talos-hostboot-6c82992a3ea6bb0acef08050f5dd110376ca3ac4.zip
PRD: Add error log parser for hostboot
Change-Id: I401ae1810ec21cd161eee389d4d71063841ba1e3 CQ: SW215983 CMVC-Prereq: 885671 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5399 Tested-by: Jenkins Server Reviewed-by: Christopher T. Phan <cphan@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-by: Zane Shelley <zshelle@us.ibm.com> Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5904
Diffstat (limited to 'src/usr/diag/prdf/framework')
-rwxr-xr-xsrc/usr/diag/prdf/framework/rule/makefile188
1 files changed, 136 insertions, 52 deletions
diff --git a/src/usr/diag/prdf/framework/rule/makefile b/src/usr/diag/prdf/framework/rule/makefile
index 1db208551..774e3979d 100755
--- a/src/usr/diag/prdf/framework/rule/makefile
+++ b/src/usr/diag/prdf/framework/rule/makefile
@@ -21,17 +21,29 @@
#
# IBM_PROLOG_END_TAG
+# Relative path to root from this makefile
ROOTPATH = ../../../../../..
-RULEOBJDIR = ${ROOTPATH}/obj/modules/prdf/rule
+# Relative path to root from OBJ_RULE
+OBJ_PLUG_LINK_PATH = ../../../..
-PRD_USR_PATH = ${ROOTPATH}/src/usr/diag/prdf
+OBJ_RULE = obj/modules/prdf/rule
+OBJ_PLUG = obj/genfiles/plugins/prdf
+SRC_USR = src/usr/diag/prdf
+SRC_INC = src/include/usr/diag/prdf
-VPATH = ${PRD_USR_PATH}/common/framework/rule
+OBJ_RULE_DIR = ${ROOTPATH}/${OBJ_RULE}
+OBJ_PLUG_DIR = ${ROOTPATH}/${OBJ_PLUG}
+SRC_USR_DIR = ${ROOTPATH}/${SRC_USR}
+
+OBJ_RULE_LINK_DIR = ${OBJ_PLUG_LINK_PATH}/${OBJ_RULE}
+
+VPATH = ${SRC_USR_DIR}/common/framework/rule
#------------------------------------------------------------------------------
# Generated files
#------------------------------------------------------------------------------
+
PRDR_CMP = prdrCompile
PRDR_CMP_o = ${PRDR_CMP}.o
PRDR_CMP_C = ${PRDR_CMP}.C
@@ -45,51 +57,99 @@ PRDR_CMP_FLEX = ${PRDR_CMP}.lex
PRDR_CMP_FLEX_o = ${PRDR_CMP_FLEX}.o
PRDR_CMP_FLEX_C = ${PRDR_CMP_FLEX}.C
-PRDR_CMP_PATH = ${RULEOBJDIR}/${PRDR_CMP}
-PRDR_CMP_o_PATH = ${RULEOBJDIR}/${PRDR_CMP_o}
+PRDR_CMP_PATH = ${OBJ_RULE_DIR}/${PRDR_CMP}
+PRDR_CMP_o_PATH = ${OBJ_RULE_DIR}/${PRDR_CMP_o}
-PRDR_CMP_YACC_o_PATH = ${RULEOBJDIR}/${PRDR_CMP_YACC_o}
-PRDR_CMP_YACC_C_PATH = ${RULEOBJDIR}/${PRDR_CMP_YACC_C}
-PRDR_CMP_YACC_H_PATH = ${RULEOBJDIR}/${PRDR_CMP_YACC_H}
+PRDR_CMP_YACC_o_PATH = ${OBJ_RULE_DIR}/${PRDR_CMP_YACC_o}
+PRDR_CMP_YACC_C_PATH = ${OBJ_RULE_DIR}/${PRDR_CMP_YACC_C}
+PRDR_CMP_YACC_H_PATH = ${OBJ_RULE_DIR}/${PRDR_CMP_YACC_H}
-PRDR_CMP_FLEX_o_PATH = ${RULEOBJDIR}/${PRDR_CMP_FLEX_o}
-PRDR_CMP_FLEX_C_PATH = ${RULEOBJDIR}/${PRDR_CMP_FLEX_C}
+PRDR_CMP_FLEX_o_PATH = ${OBJ_RULE_DIR}/${PRDR_CMP_FLEX_o}
+PRDR_CMP_FLEX_C_PATH = ${OBJ_RULE_DIR}/${PRDR_CMP_FLEX_C}
include ../../common/prd_ruletable.mk # for PRDR_RULE_TABLE_TARGETS
+ERR_PLUGIN_TARGETS = ${PRDR_RULE_TABLE_FILES:.rule=.prf.err.C}
+REG_PLUGIN_TARGETS = ${PRDR_RULE_TABLE_FILES:.rule=.prf.reg.C}
+HTML_PLUGIN_TARGETS = ${PRDR_RULE_TABLE_FILES:.rule=.prf.html}
+
+PRF_IMG_PATHS = $(addprefix ${IMGDIR}/, ${PRDR_RULE_TABLE_TARGETS})
+ERR_PLUGIN_PATHS = $(addprefix ${OBJ_PLUG_DIR}/, ${ERR_PLUGIN_TARGETS})
+REG_PLUGIN_PATHS = $(addprefix ${OBJ_PLUG_DIR}/, ${REG_PLUGIN_TARGETS})
+
#-------------------------------------------------------------------------------
-# code_pass
+# Files linked to the error log plugins directory
#-------------------------------------------------------------------------------
-# Build the .prf image files
-EXTRA_PARTS = $(addprefix ${IMGDIR}/, ${PRDR_RULE_TABLE_TARGETS})
+# Entire directories to link.
+SOURCE_PLUGIN_DIRS = \
+ ${SRC_USR}/common/plugins \
+ ${SRC_USR}/plugins
+
+# Individual source files to link.
+SOURCE_PLUGIN_FILES = \
+ ${SRC_USR}/common/framework/rule/tables.mk \
+ ${SRC_USR}/common/util/UtilHash.H \
+ ${SRC_USR}/common/plat/pegasus/prdfCenConst.H \
+ ${SRC_USR}/common/iipconst.h \
+ ${SRC_USR}/common/prdf_types.h \
+ ${SRC_INC}/common/prdf_service_codes.H \
+ $(foreach d, ${SOURCE_PLUGIN_DIRS}, \
+ $(addprefix $(d)/, $(notdir $(wildcard ${ROOTPATH}/$(d)/*))))
+
+LINK_PLUGIN_FILES = \
+ $(addprefix ${OBJ_PLUG_DIR}/,$(notdir ${SOURCE_PLUGIN_FILES}))
-# Clean up the auto generate source files
-CLEAN_TARGETS += ${PRDR_CMP_PATH} \
- ${PRDR_CMP_o_PATH} \
- ${PRDR_CMP_YACC_o_PATH} \
- ${PRDR_CMP_YACC_C_PATH} \
- ${PRDR_CMP_YACC_H_PATH} \
- ${PRDR_CMP_FLEX_o_PATH} \
- ${PRDR_CMP_FLEX_C_PATH} \
- $(addprefix ${RULEOBJDIR}/, ${PRDR_RULE_TABLE_TARGETS})
+#-------------------------------------------------------------------------------
+# CODE_PASS
+#-------------------------------------------------------------------------------
+
+CODE_PASS_BODY += \
+ ${PRF_IMG_PATHS} ${ERR_PLUGIN_PATHS} ${REG_PLUGIN_PATHS} \
+ ${LINK_PLUGIN_FILES}
+
+CLEAN_TARGETS += \
+ ${PRDR_CMP_PATH} ${PRDR_CMP_o_PATH} \
+ ${PRDR_CMP_YACC_o_PATH} ${PRDR_CMP_YACC_C_PATH} \
+ ${PRDR_CMP_YACC_H_PATH} ${PRDR_CMP_FLEX_o_PATH} ${PRDR_CMP_FLEX_C_PATH} \
+ $(addprefix ${OBJ_RULE_DIR}/, ${PRDR_RULE_TABLE_TARGETS}) \
+ $(addprefix ${OBJ_RULE_DIR}/, ${ERR_PLUGIN_TARGETS}) \
+ $(addprefix ${OBJ_RULE_DIR}/, ${REG_PLUGIN_TARGETS}) \
+ $(addprefix ${OBJ_RULE_DIR}/, ${HTML_PLUGIN_TARGETS}) \
+ ${PRF_IMG_PATHS} ${ERR_PLUGIN_PATHS} ${REG_PLUGIN_PATHS} \
+ ${LINK_PLUGIN_FILES}
# NOTE: All rules defined in this makefile must be done after this line
# otherwise the default rule 'all' will not be called.
include ${ROOTPATH}/config.mk
+# Special recipes to make the output less chatty
+PRD_OUT_MAKE = $(C2) " MAKE $(notdir $@)"
+PRD_OUT_LINK = $(C2) " LINK $(notdir $@)"
+
+#-------------------------------------------------------------------------------
+# Rules for directories that may not exist.
+#-------------------------------------------------------------------------------
+
+${OBJ_RULE_DIR}:
+ $(C1)mkdir -p ${OBJ_RULE_DIR}
+
+${OBJ_PLUG_DIR}:
+ $(C1)mkdir -p ${OBJ_PLUG_DIR}
+
#-------------------------------------------------------------------------------
# Build the flex/yacc source code
#-------------------------------------------------------------------------------
-${PRDR_CMP_YACC_C_PATH} ${PRDR_CMP_YACC_H_PATH}: ${PRDR_CMP_YACC}
- mkdir -p ${RULEOBJDIR}
- bison -d -o ${PRDR_CMP_YACC_C_PATH} $^
+${PRDR_CMP_YACC_C_PATH} \
+${PRDR_CMP_YACC_H_PATH}: ${PRDR_CMP_YACC} | ${OBJ_RULE_DIR}
+ ${PRD_OUT_MAKE}
+ $(C1)bison -d -o ${PRDR_CMP_YACC_C_PATH} $^
PRDR_CMP_FLEX: ; # Discard implicit rule for %.lex <- %.lex.C
-${PRDR_CMP_FLEX_C_PATH}: ${PRDR_CMP_FLEX}
- mkdir -p ${RULEOBJDIR}
- flex -o$@ $^
+${PRDR_CMP_FLEX_C_PATH}: ${PRDR_CMP_FLEX} | ${OBJ_RULE_DIR}
+ ${PRD_OUT_MAKE}
+ $(C1)flex -o$@ $^
#------------------------------------------------------------------------------
# Build the PRD rule compiler
@@ -98,47 +158,71 @@ ${PRDR_CMP_FLEX_C_PATH}: ${PRDR_CMP_FLEX}
USERDEFINES = -D__HOSTBOOT_MODULE -O3 -pipe
${PRDR_CMP_YACC_o_PATH}: ${PRDR_CMP_YACC_C_PATH} ${PRDR_CMP_YACC_H_PATH}
- $(CCACHE) $(HOST_PREFIX)g++ -c $(USERDEFINES) $< \
- -I ${PRD_USR_PATH}/common/framework/rule \
- -I ${PRD_USR_PATH}/common/util -I ${RULEOBJDIR} \
+ ${PRD_OUT_MAKE}
+ $(C1)$(CCACHE) $(HOST_PREFIX)g++ -c $(USERDEFINES) $< \
+ -I ${SRC_USR_DIR}/common/framework/rule \
+ -I ${SRC_USR_DIR}/common/util -I ${OBJ_RULE_DIR} \
-o $@
${PRDR_CMP_FLEX_o_PATH}: ${PRDR_CMP_FLEX_C_PATH} ${PRDR_CMP_YACC_H_PATH}
- $(CCACHE) $(HOST_PREFIX)g++ -c $(USERDEFINES) $< \
- -I ${PRD_USR_PATH}/common/framework/rule \
- -I ${PRD_USR_PATH}/common/util -I ${RULEOBJDIR} \
+ ${PRD_OUT_MAKE}
+ $(C1)$(CCACHE) $(HOST_PREFIX)g++ -c $(USERDEFINES) $< \
+ -I ${SRC_USR_DIR}/common/framework/rule \
+ -I ${SRC_USR_DIR}/common/util -I ${OBJ_RULE_DIR} \
-o $@
-${PRDR_CMP_o_PATH}: ${PRDR_CMP_C}
- mkdir -p ${RULEOBJDIR}
- $(CCACHE) $(HOST_PREFIX)g++ -c $(USERDEFINES) $< \
- -I ${PRD_USR_PATH}/common/framework/rule \
- -I ${PRD_USR_PATH}/common \
- -I ${PRD_USR_PATH}/common/util \
- -I ${GENDIR} -I ${RULEOBJDIR} \
- -I ${PRD_USR_PATH}/common/framework/resolution \
- -I ${PRD_USR_PATH}/common/framework/service \
+${PRDR_CMP_o_PATH}: ${PRDR_CMP_C} | ${OBJ_RULE_DIR}
+ ${PRD_OUT_MAKE}
+ $(C1)$(CCACHE) $(HOST_PREFIX)g++ -c $(USERDEFINES) $< \
+ -I ${SRC_USR_DIR}/common/framework/rule \
+ -I ${SRC_USR_DIR}/common \
+ -I ${SRC_USR_DIR}/common/plugins \
+ -I ${SRC_USR_DIR}/common/util \
+ -I ${GENDIR} -I ${OBJ_RULE_DIR} \
+ -I ${SRC_USR_DIR}/common/framework/resolution \
+ -I ${SRC_USR_DIR}/common/framework/service \
-o $@
${PRDR_CMP_PATH}: ${PRDR_CMP_YACC_o_PATH} ${PRDR_CMP_FLEX_o_PATH} \
${PRDR_CMP_o_PATH}
- $(HOST_PREFIX)g++ $(USERDEFINES) \
+ ${PRD_OUT_MAKE}
+ $(C1)$(HOST_PREFIX)g++ $(USERDEFINES) \
${PRDR_CMP_YACC_o_PATH} ${PRDR_CMP_FLEX_o_PATH} ${PRDR_CMP_o_PATH} \
-o $@
#------------------------------------------------------------------------------
-# Build the .prf files
+# Build the *.prf, *.err.C, and *.reg.C files
#------------------------------------------------------------------------------
vpath %.rule ../../common/plat/pegasus
PRDRPP_SEARCHDIRS = -I../../common/plat/pegasus
-# Build .prf files from .rule files and store them in ${RULEOBJDIR}
-${RULEOBJDIR}/%.prf : %.rule ${PRDR_CMP_PATH}
- cat $< | ${PRD_USR_PATH}/common/framework/rule/prdrpp ${PRDRPP_SEARCHDIRS} \
- | $(HOST_PREFIX)jail ${PRDR_CMP_PATH} $@
+${OBJ_RULE_DIR}/%.prf \
+${OBJ_RULE_DIR}/%.prf.err.C \
+${OBJ_RULE_DIR}/%.prf.reg.C : %.rule ${PRDR_CMP_PATH}
+ ${PRD_OUT_MAKE}
+ $(C1)cat $< | ${SRC_USR_DIR}/common/framework/rule/prdrpp \
+ ${PRDRPP_SEARCHDIRS} | $(HOST_PREFIX)jail ${PRDR_CMP_PATH} $@
+
+# Copy all .prf files from ${OBJ_RULE_DIR} to ${IMGDIR}
+${PRF_IMG_PATHS}: ${IMGDIR}/% : ${OBJ_RULE_DIR}/%
+ $(C1)cp -f $^ $@
+
+#------------------------------------------------------------------------------
+# Link the necessary files to the plugins directory
+#------------------------------------------------------------------------------
-# Copy all .prf files from ${RULEOBJDIR} to ${IMGDIR}
-${EXTRA_PARTS}: ${IMGDIR}/% : ${RULEOBJDIR}/%
- cp -f $^ $@
+# Link all .prf.err.C and .prf.reg.C files from OBJ_RULE_DIR to OBJ_PLUG_DIR
+${ERR_PLUGIN_PATHS} \
+${REG_PLUGIN_PATHS}: ${OBJ_PLUG_DIR}/% : ${OBJ_RULE_DIR}/% | ${OBJ_PLUG_DIR}
+ ${PRD_OUT_LINK}
+ $(C1)ln -sf ${OBJ_RULE_LINK_DIR}/$(notdir $^) $@
+
+# Link all individual header file needed to compile plugin code.
+define LINK_RULE
+${OBJ_PLUG_DIR}/$(notdir $(1)): $(ROOTPATH)/$(1)
+ $(C2) " LINK $$(notdir $$@)"
+ $(C1)ln -sf ${OBJ_PLUG_LINK_PATH}/$(1) $$@
+endef
+$(foreach file,${SOURCE_PLUGIN_FILES}, $(eval $(call LINK_RULE,$(file))))
OpenPOWER on IntegriCloud