summaryrefslogtreecommitdiffstats
path: root/src/makefile
blob: 74179a56eade2ef1dc78259b0689abbfc8f88416 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# IBM_PROLOG_BEGIN_TAG
# This is an automatically generated prolog.
#
# $Source: src/makefile $
#
# IBM CONFIDENTIAL
#
# COPYRIGHT International Business Machines Corp. 2010,2013
#
# p1
#
# Object Code Only (OCO) source materials
# Licensed Internal Code Source Materials
# IBM HostBoot Licensed Internal Code
#
# The source code for this program is not published or otherwise
# divested of its trade secrets, irrespective of what has been
# deposited with the U.S. Copyright Office.
#
# Origin: 30
#
# IBM_PROLOG_END_TAG

ROOTPATH = ..

SUBDIRS = kernel.d lib.d libc++.d sys.d usr.d build.d
IMGS = hbicore hbicore_test

BASE_OBJECTS = console.o spinlock.o string.o string_ext.o stdlib.o ctype.o \
               assert.o stdio.o builtins.o vfs_init.o heapmgr.o pagemgr.o \
               math.o barrier.o idebug.o intmsghandler.o deferred.o \
               idletask.o splaytree.o

ifdef HOSTBOOT_PROFILE
BASE_OBJECTS += gcov.o
endif

DIRECT_BOOT_OBJECTS = start.o kernel.o taskmgr.o cpumgr.o syscall.o \
                      scheduler.o exception.o vmmmgr.o timemgr.o \
                      syscall_stub.o syscall_task.o syscall_misc.o \
                      syscall_msg.o syscall_mmio.o syscall_time.o \
                      syscall_mm.o init_main.o vfs_main.o sync.o futexmgr.o \
                      ptmgr.o segmentmgr.o basesegment.o devicesegment.o \
                      block.o cxxtest_data.o cpuid.o misc.o msghandler.o \
                      blockmsghdlr.o stacksegment.o softpatch_p8.o \
                      shutdown.o forceattn_p8.o terminate.o 

BASE_MODULES = trace errl devicefw scom xscom initservice \
               pnor vfs 

EXTENDED_MODULES = targeting ecmddatabuffer fapi hwp plat	\
                   extinitsvc istepdisp hwas fsi fsiscom i2c intr scan \
                   vpd dmi_training fapiporeve poreve util tracedaemon	\
                   sbe_centaur_init mc_config dram_training \
                   mdia mbox prdf bus_training \
                   activate_powerbus build_winkle_images \
                   core_activate dram_initialization edi_ei_initialization \
                   establish_system_smp occ\
                   nest_chiplets start_payload thread_activate slave_sbe \
                   attn runtime ibscom dump tod_init

TESTCASE_MODULES = cxxtest testtrace testerrl testdevicefw testsyslib \
                   testscom testxscom testtargeting testinitservice testkernel \
                   testhwpf testecmddatabuffer initsvctesttask testcxxtest \
                   testpnor testi2c testfsi testvfs testhwas testintr testvpd \
                   testpore testutil testmbox testmdia testprdf testattn \
                   testscan testruntime testibscom testdump

RELOCATABLE_IMAGE_LDFLAGS = -pie --export-dynamic

hbicore_OBJECTS = ${BASE_OBJECTS} ${DIRECT_BOOT_OBJECTS}
hbicore_MODULES = ${BASE_MODULES}
hbicore_EXTENDED_MODULES = ${EXTENDED_MODULES}

# for PRDR_RULE_TABLE_TARGETS
include ${ROOTPATH}/src/usr/diag/prdf/common/prd_ruletable.mk

#@todo - Temporary workaround
# The centaur.sbe_pnor.bin is manually built from CVS SBE procedure files in
# CVS then copy into HostBoot for now.
# HostBoot build team will have a process of building centaur.sbe_pnor.bin
# image later.
hbicore_DATA_MODULES =  sample.if p8.dmi.scom.if cen.dmi.scom.if \
                        p8.fbc.scom.if mbs_def.if mba_def.if cen_ddrphy.if \
                        p8.pe.phase1.scom.if p8.pe.phase2.scom.if \
                        centaur.sbe_pnor.bin ${PRDR_RULE_TABLE_TARGETS} \
                        p8.abus.scom.if p8.xbus.scom.if p8.mcs.scom.if \
                        p8.as.scom.if p8.nx.scom.if p8.dmi.custom.scom.if \
                        cen.dmi.custom.scom.if p8.abus.custom.scom.if \
                        p8.xbus.custom.scom.if p8.psi.scom.if p8.tpbridge.scom.if \
                        p8.cxa.scom.if

hbicore_test_OBJECTS = ${hbicore_OBJECTS}
hbicore_test_MODULES = ${hbicore_MODULES}
hbicore_test_EXTENDED_MODULES = ${hbicore_EXTENDED_MODULES} ${TESTCASE_MODULES}
hbicore_test_DATA_MODULES = ${hbicore_DATA_MODULES} testdata

IMAGE_PASS_BODY += buildpnor imgsizecheck

IMAGE_PASS_BODY += $(IMGDIR)/hbotStringFile
CLEAN_TARGETS += $(IMGDIR)/hbotStringFile

include ${ROOTPATH}/config.mk

buildpnor: ${IMAGES}
	cd build/buildpnor/ && ${MAKE} buildpnor

$(IMGDIR)/hbotStringFile : $(IMAGES)
	$(ROOTPATH)/src/build/trace/tracehash_hb.pl -c -d $(ROOTPATH)/obj -s $@

.PHONY: imgsizecheck
#make sure base image isn't over 508k  (512K - 4K for secure header)
#PROCESS: get size of hbicore.bin, sort with respect to 508k (520192), then see if
#last word is 508k.  If not, the base image is too big.
MAX_BASE_SIZE = 520192
imgsizecheck: ${IMGDIR}/hbicore.bin
	$(if $(findstring $(shell (stat -c%s ${IMGDIR}/hbicore.bin; echo $(MAX_BASE_SIZE)) | sort -n | tail -n1), $(MAX_BASE_SIZE)),true, @echo ERROR: ${IMGDIR}/hbicore.bin too large.  Max allowed size is $(MAX_BASE_SIZE); false)
OpenPOWER on IntegriCloud