summaryrefslogtreecommitdiffstats
path: root/src/build
diff options
context:
space:
mode:
authorspashabk-in <shakeebbk@in.ibm.com>2018-09-05 08:23:14 -0500
committerSachin Gupta <sgupta2m@in.ibm.com>2018-09-16 23:41:45 -0500
commit3aa7b7c2918f4da9e5d8d5d9ba05ec5a5daace47 (patch)
tree787dae119ec60727716e9fd4e02ca082d422b434 /src/build
parentd103f7adad9db03b0a13878ad9f80bd02b54b4c1 (diff)
downloadtalos-sbe-3aa7b7c2918f4da9e5d8d5d9ba05ec5a5daace47.tar.gz
talos-sbe-3aa7b7c2918f4da9e5d8d5d9ba05ec5a5daace47.zip
Enable parallel builds in SBE
Change-Id: Iae7c898d9352bd2d2ac6c909cb9c7b3bd346a5b3 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/65700 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: RAJA DAS <rajadas2@in.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src/build')
-rw-r--r--src/build/Makefile80
-rw-r--r--src/build/img_defs.mk48
2 files changed, 60 insertions, 68 deletions
diff --git a/src/build/Makefile b/src/build/Makefile
index 0ad36e1c..37daa666 100644
--- a/src/build/Makefile
+++ b/src/build/Makefile
@@ -142,21 +142,22 @@ LINK_SCRIPT_SEEPROM = $(addprefix $(OBJDIR)/build/linkerscripts, linkscriptseepr
LINK_SCRIPT_SBE = $(addprefix $(OBJDIR)/build/linkerscripts, linkscriptsbe)
# ---- SEEPROM Image ------
-# This removes all unecessary headers from the ELF executable
-$(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).dis: $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out
- ./parsAndCutElf.py $(IMAGE_SUFFIX) $(IMG_DIR)
- $(OBJDUMP) -S $< > $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).dis
-
-#create a linked ELF executable
-$(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out: ppe_trace_bin buildInfo $(SUBDIRS) $(SEEPROM_SUBDIRS) $(LINK_OBJS) $(LINK_SCRIPT_SEEPROM)
- $(LD) -n -T$(LINK_SCRIPT_SEEPROM) -Map $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).map \
+pre_sbe_image: xml ppe_trace_bin buildInfo linker_seeprom $(SBE_TOOLS) $(SBE_IPL_TOOLS) $(P9_XIP_TOOL) security
+build_sbe_image: $(SUBDIRS) $(SEEPROM_SUBDIRS)
+
+output_sbe_image:
+ $(C2) "Generating $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out"
+ $(C1)$(LD) -n -T$(LINK_SCRIPT_SEEPROM) -Map $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).map \
-Bstatic -o $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out $(addprefix $(BOOT_OBJDIR)/, $(BOOT_OBJECTS)) $(BUILDDATA_OBJDIR)/$(IMAGE_BASE_PPE_HEADER).o $(OBJS) $(LIB_DIRS) \
--start-group $(LLIBS) --end-group
+ $(C1)./parsAndCutElf.py $(IMAGE_SUFFIX) $(IMG_DIR)
+ $(C1)$(OBJDUMP) -S $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out > $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).dis
# pass the link command file through the C preprocessor to evaluate macros
# and remove comments
-$(LINK_SCRIPT_SEEPROM): $(LINKER_DIR)/linkseeprom.cmd
- $(CPP) -I $(INCLUDES) -E -x c++ -P $(DEFS) $(LINKER_DIR)/linkseeprom.cmd -o $(LINK_SCRIPT_SEEPROM)
+linker_seeprom:
+ @mkdir -p $(OBJDIR)/build
+ $(C1)$(CPP) -I $(INCLUDES) -E -x c++ -P $(DEFS) $(LINKER_DIR)/linkseeprom.cmd -o $(LINK_SCRIPT_SEEPROM)
ifeq ($(img), pibmem)
# ---- PIBMEM Image ------
@@ -173,7 +174,8 @@ $(IMG_DIR)/$(IMAGE_SBE_NAME).out: ppe_trace_bin buildInfo $(SUBDIRS) $(SEEPROM_
# pass the link command file through the C preprocessor to evaluate macros and remove comments
$(LINK_SCRIPT_SBE): $(LINKER_DIR)/linksbe.cmd
- $(CPP) -E -x c++ -I $(INCLUDES) -P $(DEFS) $(LINKER_DIR)/linksbe.cmd -o $(LINK_SCRIPT_SBE)
+ $(C2) " CMD $(notdir $<)"
+ $(C1)$(CPP) -E -x c++ -I $(INCLUDES) -P $(DEFS) $(LINKER_DIR)/linksbe.cmd -o $(LINK_SCRIPT_SBE)
endif
ifeq ($(img), pibmem)
@@ -182,14 +184,20 @@ all: $(OBJDIR) xml security\
symbols tracehash
endif
ifeq ($(img), seeprom)
-all: $(OBJDIR) xml security $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin \
- $(SBE_TOOLS) $(SBE_IPL_TOOLS) normalize compress defaultset $(IMG_DIR)/fixed.bin \
- appendloader appendoverrides add_LoaderAddr symbols tracehash buildinfo \
- report
+all:
+ $(MAKE) $(OBJDIR)
+ $(MAKE) pre_sbe_image
+ $(MAKE) build_sbe_image
+ $(MAKE) output_sbe_image
+ $(MAKE) normalize
+ $(MAKE) appendloader
+ $(MAKE) compress
+ $(MAKE) defaultset
+ $(MAKE) add_LoaderAddr
+ $(MAKE) symbols tracehash buildtag
+ $(MAKE) report
endif
-install: all tar
-
tar:
@cp $(IMG_DIR)/$(SBE_STRINGFILE_NAME) $(IMG_DIR)/sbeStringFile || true
@echo "Installing simics.tar"
@@ -206,21 +214,18 @@ tar:
@echo "Generated simics.tar in Sbe images Directory"
.PHONY: all normalize compress defaultset appendloader add_LoaderAddr symbols report \
- appendoverrides xml security tracehash topfixedheaders $(SUBDIRS) $(SEEPROM_SUBDIRS) \
+ appendoverrides xml security tracehash topfixedheaders \
tar install
-buildinfo: $(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin
- ./updateBuildTag.py $(P9_XIP_TOOL) $(IMG_DIR) $(IMAGE_SEEPROM_NAME)
-
-add_LoaderAddr: $(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out
+add_LoaderAddr:
$(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin set L1_LoaderAddr 0x`nm $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out | grep __l1Loader | cut -f 1 -d " "`
$(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin set L2_LoaderAddr 0x`nm $(IMG_DIR)/$(IMAGE_LOADER_NAME).out | grep __l2_loader_setup | cut -f 1 -d " "`
$(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin set kernelAddr 0x`nm $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out | grep __pk_boot | cut -f 1 -d " "`
ifeq ($(img), seeprom)
-symbols: $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out $(IMG_DIR)/$(IMAGE_LOADER_NAME).out
- $(NM) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out > $(IMG_DIR)/$(SBE_SYMBOLS_NAME)
- $(NM) $(IMG_DIR)/$(IMAGE_LOADER_NAME).out >> $(IMG_DIR)/$(SBE_SYMBOLS_NAME)
+symbols:
+ $(C1)$(NM) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out > $(IMG_DIR)/$(SBE_SYMBOLS_NAME)
+ $(C1)$(NM) $(IMG_DIR)/$(IMAGE_LOADER_NAME).out >> $(IMG_DIR)/$(SBE_SYMBOLS_NAME)
endif
ifeq ($(img), pibmem)
symbols: $(IMG_DIR)/$(IMAGE_SBE_NAME).out
@@ -234,6 +239,9 @@ report: $(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin
buildInfo:
python buildInfo.py $(GENFILES_DIR)
+buildtag:
+ ./updateBuildTag.py $(P9_XIP_TOOL) $(IMG_DIR) $(IMAGE_SEEPROM_NAME)
+
#Create an obj directory if needed
$(LINK_OBJS) $(OBJS) $(OBJS:.o=.d)
@@ -270,10 +278,10 @@ platattr:
$(TOOLS_ATTR_DIR)/ppeCreateAttrGetSetMacros.pl --path $(PLAT_FAPI2_DIR) --inc $(GENFILES_DIR) --src $(GENFILES_DIR)
# Build the subdirectories
-$(SUBDIRS):
- $(MAKE) -I $(INCLUDES) -C $@ -f Makefile
-$(SEEPROM_SUBDIRS):
- $(MAKE) -I $(INCLUDES) -C $(subst targetseeprom_,, $@) -f Makefile img_mem=seeprom
+$(SUBDIRS): ppe_trace_bin
+ $(C1)$(MAKE) -I $(INCLUDES) -C $@ -f Makefile
+$(SEEPROM_SUBDIRS): ppe_trace_bin
+ $(C1)$(MAKE) -I $(INCLUDES) -C $(subst targetseeprom_,, $@) -f Makefile img_mem=seeprom
#Build the SBE XIP Tools
$(SBE_TOOLS): $(P9_XIP_TOOL)
@@ -286,15 +294,15 @@ $(SBE_IPL_TOOLS): $(P9_XIP_TOOL)
# Build the P9-XIP Tool
$(P9_XIP_TOOL):
$(MAKE) -I $(P9_XIP_SRCDIR) -C $(P9_XIP_SRCDIR) -f Makefile BINDIR=$(P9_XIP_BINDIR) CXX_FLAGS=-D__PPE__=1
- cp $(P9_XIP_TOOL) $(IMG_DIR)/
+ cp -f $(P9_XIP_TOOL) $(IMG_DIR)/
-normalize: $(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin
+normalize:
$(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin normalize
-compress:
+compress: $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin
$(BOOT_SRCDIR)/sbeCompression.py -l $(IMG_DIR) -i $(IMAGE_SEEPROM_NAME).bin
-defaultset:$(SBE_TOOLS) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin normalize
+defaultset:
$(TOOLS_ATTR_DIR)/ppeSetFixed.pl $(IMG_DIR) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin $(IMPORT_XML_DIR)/attribute_info/p9_sbe_attributes.xml $(ATTRFILES)
# Build the trace utilities
@@ -302,7 +310,7 @@ ppe_trace_bin:
$(MAKE) -I $(INCLUDES) -C $(PPETRACEPP_DIR) -f Makefile #$(PK trace util)
# generate whitelist and blacklist security algorithm
-security:
+security: $(OBJDIR)
python $(SECURITY_SRC_DIR)/securityRegListGen.py -f $(SECURITY_LIST) -o $(GENFILES_DIR)
# Build hwp_error_info.H. If the script fails then print the contents of
@@ -318,13 +326,11 @@ $(FAPI_RC): $(IMPORT_TOOLS_DIR)/parseErrorInfo.pl $(ERROR_XML_FILES)
$(IMG_DIR)/fixed.bin: $(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin
$(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin extract .fixed $(IMG_DIR)/fixed.bin
-
-appendloader: $(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin $(IMG_DIR)/$(IMAGE_LOADER_NAME).bin
+appendloader:
$(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin append .baseloader $(IMG_DIR)/$(IMAGE_LOADER_NAME).bin
# collect all of the trace hash files for this image into a single sbeStringFile
tracehash:
- mkdir -p $(OBJDIR)
$(THASH) -c -d $(OBJDIR) -s $(IMG_DIR)/$(SBE_STRINGFILE_NAME)
#clean the kernel directory first, then the application level clean
diff --git a/src/build/img_defs.mk b/src/build/img_defs.mk
index 75e94102..9a35e56c 100644
--- a/src/build/img_defs.mk
+++ b/src/build/img_defs.mk
@@ -515,32 +515,45 @@ endif
DEFS += $(GCC-DEFS)
###########################################################################
+ifdef BUILD_VERBOSE
+C1=
+C2=@true || echo
+else
+C1=@
+C2=@echo
+MAKE+= --no-print-directory
+endif
+
#override the GNU Make implicit rule for going from a .C to a .o
%.o: %.C
# -Wno-conversion-null is necesary to allow mapping of NULL to TARGET_TYPE_SYSTEM
# for attribute accesses
$(OBJDIR)/%.s: %.C
- $(TCC) $(PPE-CFLAGS) $(DEFS) -Wno-conversion-null -S $(CXXFLAGS) -o $@ $<
+ $(C2) " CC $(notdir $<)"
+ $(C1)$(TCC) $(PPE-CFLAGS) $(DEFS) -Wno-conversion-null -S $(CXXFLAGS) -o $@ $<
#override the GNU Make implicit rule for going from a .c to a .o
%.o: %.c
$(OBJDIR)/%.s: %.c
- $(CC) $(PPE-CFLAGS) $(DEFS) -S -o $@ $<
+ $(C2) " C $(notdir $<)"
+ $(C1)$(CC) $(PPE-CFLAGS) $(DEFS) -S -o $@ $<
#override the GNU Make implicit rule for going from a .S to a .o
%.o: %.S
$(OBJDIR)/%.s: %.S
- $(TCPP) $(PPE-CFLAGS) $(DEFS) $(CPPFLAGS) -o $@ $<
+ $(C2) " ASM $(notdir $<)"
+ $(C1)$(TCPP) $(PPE-CFLAGS) $(DEFS) $(CPPFLAGS) -o $@ $<
.PRECIOUS: $(OBJDIR)/%.s
ifndef P2P_ENABLE
$(OBJDIR)/%.o: $(OBJDIR)/%.s
- $(AS) $(ASFLAGS) -o $@ $<
+ $(C2) " ASM $(notdir $<)"
+ $(C1)$(AS) $(ASFLAGS) -o $@ $<
else
@@ -552,30 +565,3 @@ $(OBJDIR)/%.o: $(OBJDIR)/%.es
$(AS) $(ASFLAGS) -o $@ $<
endif
-
-# From the GNU 'Make' manual - these scripts uses the preprocessor to
-# create dependency files (*.d), then mungs them slightly to make them
-# work as Make targets. The *.d files are include-ed in the
-# subdirectory Makefiles.
-
-$(OBJDIR)/%.d: %.C $(FAPI_RC)
- @set -e; rm -f $@; \
- echo -n "$(OBJDIR)/" > $@.$$$$; \
- $(CC_ASM) -MM $(INCLUDES) $(CPPFLAGS) $(DEFS) $< >> $@.$$$$; \
- sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$
-
-$(OBJDIR)/%.d: %.c $(FAPI_RC)
- @set -e; rm -f $@; \
- echo -n "$(OBJDIR)/" > $@.$$$$; \
- echo "$(INCLUDES)"; \
- $(CC_ASM) -MM $(INCLUDES) $(CPPFLAGS) $(DEFS) $< >> $@.$$$$; \
- sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$
-
-$(OBJDIR)/%.d: %.S $(FAPI_RC)
- @set -e; rm -f $@; \
- echo -n "$(OBJDIR)/" > $@.$$$$; \
- $(CC_ASM) -MM $(INCLUDES) $(CPPFLAGS) $(DEFS) $< >> $@.$$$$; \
- sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$
OpenPOWER on IntegriCloud