summaryrefslogtreecommitdiffstats
path: root/sbe/image/Makefile
diff options
context:
space:
mode:
authorDerk Rembold <rembold@de.ibm.com>2015-04-28 10:48:11 +0200
committerDerk Rembold <rembold@de.ibm.com>2015-05-21 02:32:32 -0500
commit17fbff7a8a14bc1ee53217f9b316d611e0047a3e (patch)
tree6a86f8b9072367eb725bd73b423baea83169febb /sbe/image/Makefile
parenta51afa0f5ea1320c0d55b0258eac6cfd64cd41cc (diff)
downloadtalos-sbe-17fbff7a8a14bc1ee53217f9b316d611e0047a3e.tar.gz
talos-sbe-17fbff7a8a14bc1ee53217f9b316d611e0047a3e.zip
files to create base image, corrected pervfiles.mk
Change-Id: I78f6f1aa49c2f11b2e3ede82f19b48d7f14a50a8 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/17478 Reviewed-by: Brian Silver <bsilver@us.ibm.com> Reviewed-by: Derk Rembold <rembold@de.ibm.com> Tested-by: Derk Rembold <rembold@de.ibm.com>
Diffstat (limited to 'sbe/image/Makefile')
-rw-r--r--sbe/image/Makefile133
1 files changed, 124 insertions, 9 deletions
diff --git a/sbe/image/Makefile b/sbe/image/Makefile
index 08583884..71a57456 100644
--- a/sbe/image/Makefile
+++ b/sbe/image/Makefile
@@ -1,6 +1,9 @@
#remove this once we have a real compiler
export P2P_ENABLE = 1
+#remove this once we have a real compiler
+export SBEFW_ENABLE = 1
+
#Pull in the definitions that affect all makefiles for this image
include img_defs.mk
@@ -11,20 +14,76 @@ ifdef P2P_ENABLE
include $(P2P_SRCDIR)/p2pfiles.mk
endif
+#Pull in PPE complier libraries .
+# Sets up the following variables:
+# $(GCCLIBS) -> Libary objects to be linked
+# $(LIB_DIRS) -> Include directories
+include ../../include/ppe_compiler.mk
+
+
PK_MAKE_DIR := $(PK_SRCDIR)/$(PPE_TYPE)
-OBJS := $(addprefix $(OBJDIR)/, $(TOP_OBJECTS))
+LIB_DIRS += -L$(OBJDIR)/pk
PKLIB := $(OBJDIR)/pk/libpk.a
+LLIBS += -lpk
-LIB_DIRS = -L$(OBJDIR)/pk #-L$(OBJDIR)/commonlib
-LINK_OBJS = $(OBJS) $(PKLIB) #$(COMMONLIB)
-LINK_SCRIPT = $(addprefix $(OBJDIR)/, linkscript)
+SBEFW_MAKE_DIR := ../sbefw
+LIB_DIRS += -L$(OBJDIR)/sbefw
+SBEFWLIB := $(OBJDIR)/sbefw/libsbefw.a
+LLIBS += -lsbefw
+
+SAMPLE_MAKE_DIR := ../sample
+LIB_DIRS += -L$(OBJDIR)/sample
+SAMPLELIB := $(OBJDIR)/sample/libsample.a
+#LLIBS += -lsample
+
+# FAPI2 library
+FAPI2_MAKE_DIR := $(PLAT_FAPI2_DIR)
+LIB_DIRS += -L$(OBJDIR)/fapi2
+FAPI2LIB := $(OBJDIR)/fapi2/libfapi2.a
+LLIBS += -lfapi2
ifdef P2P_ENABLE
-P2PLIB := $(OBJDIR)/p2p/libp2p.a
LIB_DIRS += -L$(OBJDIR)/p2p
+P2PLIB := $(OBJDIR)/p2p/libp2p.a
LINK_OBJS += $(P2PLIB)
+LLIBS += -lp2p
endif
+# HWP LIB library
+HWPLIB_MAKE_DIR := $(HWPLIB_SRCDIR)
+LIB_DIRS += -L$(OBJDIR)/lib
+HWPLIB := $(OBJDIR)/libcommon.a
+LLIBS += -lcommon
+
+# Common Cache HWP Exit library
+CACHE_MAKE_DIR := $(CACHE_SRCDIR)
+LIB_DIRS += -L$(OBJDIR)/cache
+CACHELIB := $(OBJDIR)/cache/libcache.a
+LLIBS += -lcache
+
+
+# Common Core libraries
+CORE_MAKE_DIR := $(CORE_SRCDIR)
+LIB_DIRS += -L$(OBJDIR)/core
+CORELIB := $(OBJDIR)/core/libcore.a
+LLIBS += -lcore
+
+# Common Perv libraries
+PERV_MAKE_DIR := $(PERV_SRCDIR)
+LIB_DIRS += -L$(OBJDIR)/perv
+PERVLIB := $(OBJDIR)/perv/libperv.a
+LLIBS += -lperv
+
+LINK_OBJS = $(OBJS) $(PKLIB) $(SBEFWLIB) $(FAPI2LIB) $(CACHELIB) $(CORELIB) $(HWPLIB) $(P2PLIB) $(PERVLIB)
+
+# Define the objects
+OBJS := $(addprefix $(OBJDIR)/, $(TOP_OBJECTS))
+LINK_OBJS += $(OBJS) $(GCCLIBS)
+#LINK_OBJS += $(OBJS) $(PKLIB) $(CPPLIB) $(PPELIB)
+LINK_SCRIPT = $(addprefix $(OBJDIR)/, linkscript)
+
+
+
#default target is to make a binary application image
#This removes all unecessary headers from the ELF executable
$(OBJDIR)/$(IMAGE_NAME).bin $(OBJDIR)/$(IMAGE_NAME).dis: $(OBJDIR)/$(IMAGE_NAME).out
@@ -33,7 +92,7 @@ $(OBJDIR)/$(IMAGE_NAME).bin $(OBJDIR)/$(IMAGE_NAME).dis: $(OBJDIR)/$(IMAGE_NAME)
#create a linked ELF executable
$(OBJDIR)/$(IMAGE_NAME).out: $(LINK_OBJS) $(LINK_SCRIPT)
- $(LD) -e __system_reset -T$(LINK_SCRIPT) -Map $(OBJDIR)/$(IMAGE_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_NAME).out $(LIB_DIRS) $(OBJS) -lpk -lp2p #-lcommon
+ $(LD) -e __system_reset -T$(LINK_SCRIPT) -Map $(OBJDIR)/$(IMAGE_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_NAME).out $(LIB_DIRS) $(OBJS) --start-group $(LLIBS) --end-group
#pass the link command file through the C preprocessor to evaluate macros and remove comments
$(LINK_SCRIPT): link.cmd
@@ -43,17 +102,71 @@ $(LINK_SCRIPT): link.cmd
$(LINK_OBJS) $(OBJS) $(OBJS:.o=.d): | $(OBJDIR)
$(OBJDIR):
+ $(BASE_FAPI2_DIR)/tools/ppeParseProcSbeFixed.pl . $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES)
+ $(BASE_FAPI2_DIR)/tools/ppeParseAttributeInfo.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES)
+ $(BASE_FAPI2_DIR)/tools/ppeCreateAttrGetSetMacros.pl -path $(BASE_FAPI2_DIR)/tools -inc $(PPE_FAPI2_DIR)/include -src $(PPE_FAPI2_DIR)/src
+ $(BASE_FAPI2_DIR)/tools/ppeCreateIfAttrService.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES)
mkdir -p $(OBJDIR)
-.PHONY: clean $(PKLIB) $(P2PLIB)
+.PHONY: clean topfixedheaders $(PKLIB) $(P2PLIB) $(SBEFWLIB) $(PPELIB) $(FAPI2LIB) $(CACHELIB) $(CORELIB) $(PERVLIB) $(HWPLIB)
+
+ATTRFILES += $(TOOLS_ATTR_DIR)/perv_attributes.xml
+ATTRFILES += $(TOOLS_ATTR_DIR)/proc_attributes.xml
+ATTRFILES += $(TOOLS_ATTR_DIR)/ex_attributes.xml
+ATTRFILES += $(TOOLS_ATTR_DIR)/eq_attributes.xml
+ATTRFILES += $(TOOLS_ATTR_DIR)/core_attributes.xml
+
+topfixedheaders:
+ $(BASE_FAPI2_DIR)/tools/ppeParseProcSbeFixed.pl . $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES)
+
+attrids:
+ $(BASE_FAPI2_DIR)/tools/ppeParseAttributeInfo.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES)
+
+platattr:
+ $(BASE_FAPI2_DIR)/tools/ppeCreateAttrGetSetMacros.pl --path $(BASE_FAPI2_DIR)/tools --inc $(PPE_FAPI2_DIR)/include --src $(PPE_FAPI2_DIR)/src
+
+attrserv:
+ $(BASE_FAPI2_DIR)/tools/ppeCreateIfAttrService.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES)
+
#Build macro-specific kernel code
$(PKLIB):
$(MAKE) -I $(IMAGE_SRCDIR) -C $(PK_MAKE_DIR)
+#Build macro-specific kernel code
+$(SBEFWLIB):
+ $(MAKE) -I $(IMAGE_SRCDIR) -C $(SBEFW_MAKE_DIR)
+
+
#Build the code that is common for all processors (PPEs and 405)
-#$(COMMONLIB):
-# $(MAKE) -I $(IMAGE_SRCDIR) -C $(COMMONLIB_SRCDIR)
+$(PPELIB):
+ @echo "Processing ppelibmakefile"
+ $(MAKE) -I $(IMAGE_SRCDIR) -C $(LIB_MAKE_DIR)
+
+#Build the cache exit code shared with the SBE
+$(CACHELIB):
+ @echo "Processing cache makefile"
+ $(MAKE) -I $(IMAGE_SRCDIR) -C $(CACHE_MAKE_DIR)
+
+#Build the core exit code shared with the SBE
+$(CORELIB):
+ @echo "Processing core makefile"
+ $(MAKE) -I $(IMAGE_SRCDIR) -C $(CORE_MAKE_DIR)
+
+#Build the perv code
+$(PERVLIB):
+ @echo "Processing perv makefile"
+ $(MAKE) -I $(IMAGE_SRCDIR) -C $(PERV_MAKE_DIR)
+
+#Build the comming HWP lib procedures
+$(HWPLIB):
+ @echo "Processing HWP lib makefile"
+ $(MAKE) -I $(IMAGE_SRCDIR) -C $(HWPLIB_MAKE_DIR)
+
+#Build the FAPI2 library
+$(FAPI2LIB):
+ @echo "Processing fapi2 makefile"
+ $(MAKE) -I $(IMAGE_SRCDIR) -C $(FAPI2_MAKE_DIR)/src
ifdef P2P_ENABLE
$(P2PLIB):
@@ -69,8 +182,10 @@ tracehash:
#clean the kernel directory first, then the application level clean
clean:
rm -fr $(OBJDIR)
+ rm $(TOP-FIXED-HEADERS)
rm *.dump
+
dump:
objdump -s $(OBJDIR)/$(IMAGE_NAME).out > $(IMAGE_NAME).dump
OpenPOWER on IntegriCloud