summaryrefslogtreecommitdiff
path: root/scripts/ci/compile.sh
blob: f412952538b331a4d26327587123a68257964541 (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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#!/bin/bash
# Copyright (C) 2018 Marvell International Ltd.
#
# SPDX-License-Identifier:           GPL-2.0
# https://spdx.org/licenses
###############################################################################
## This is the compile script for atf                                        ##
## This script is called by CI automated builds                              ##
## It may also be used interactively by users to compile the same way as CI  ##
###############################################################################
## WARNING: Do NOT MODIFY the CI wrapper code segments.                      ##
## You can only modify the config and compile commands                       ##
###############################################################################


## =v=v=v=v=v=v=v=v=v=v=v CI WRAPPER - Do not Modify! v=v=v=v=v=v=v=v=v=v=v= ##
set -euo pipefail
shopt -s extglob
##==================================== USAGE ================================##
function usage {
	echo """
Usage: compile [--no_configure] [--echo_only] BUILD_NAME
 or:   compile --list
 or:   compile --help

Compiles atf similar to the given CI build

 -N, --no_configure   Skip configuration steps (make distclean)
 -e, --echo_only      Print out the compilation sequence but do not execute it
 -l, --list           List all supported BUILD_NAME values and exit
 -h, --help           Display this help and exit

Prerequisites:
  CROSS_COMPILE       path to cross compiler
  BL33                path to u-boot or uefi binary
  MV_DDR_PATH         path to ddr source
  SCP_BL2             path to FreeRTOS binary (optional)
  WTMI_IMG            path to FreeRTOS binary for armada-3700 (optional)
  WTP                 path to a3700 utils source (optional)


"""
	exit 0
}
##============================ PARSE ARGUMENTS ==============================##
TEMP=`getopt -a -o Nelh --long no_configure,echo_only,list,help \
             -n 'compile' -- "$@"`

if [ $? != 0 ] ; then
	echo "Error: Failed parsing command options" >&2
	exit 1
fi
eval set -- "$TEMP"

no_configure=
echo_only=
list=

while true; do
	case "$1" in
		-N | --no_configure ) no_configure=true; shift ;;
		-e | --echo_only )    echo_only=true; shift ;;
		-l | --list ) 	      list=true; shift ;;
		-h | --help )         usage; ;;
		-- ) shift; break ;;
		* ) break ;;
	esac
done

if [[ $list ]] ; then
	DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
	echo "Supported build names:"
	grep -v '^#' "$DIR/supported_builds.txt"
	echo
	echo
	exit 0
fi

[[ $# -ne 1 ]] && usage
build_name=$1

grep ^$build_name$ ./scripts/ci/supported_builds.txt >&/dev/null ||
	( echo "Error: Unsupported build ${build_name}"; exit -1 )
echo "running compile.sh ${build_name}"
## =^=^=^=^=^=^=^=^=^=^=^=^  End of CI WRAPPER code -=^=^=^=^=^=^=^=^=^=^=^= ##


########################### U-BOOT CONFIGURATION ##############################
case $build_name in
	*_a70x0_pcap )   platform="a70x0_pcac"; ;;
	*_a70x0* )       platform="a70x0"; ;;
	*_a7020_amc )    platform="a70x0_amc"; ;;
	*_a80x0_mcbin* ) platform="a80x0_mcbin"; ;;
	*_a80x0* )       platform="a80x0"; ;;
	*_a3900_z1* )    platform="a3900_z1"; ;;
	*_a3900_z2* )    platform="a3900_z2"; ;;
	*_a3900* )       platform="a3900"; ;;
	*_a37xx* )       platform="a3700"; ;;
	* ) echo "Error: Could not configure platform."
		"Unsupported build ${build_name}"; exit -1; ;;
esac

case $build_name in
	uefi* )       build_flags="USE_COHERENT_MEM=0 LOG_LEVEL=20 WORKAROUND_CVE_2018_3639=0"; ;;
	*_a70x0* )    build_flags="DEBUG=0 USE_COHERENT_MEM=0 LOG_LEVEL=20 WORKAROUND_CVE_2018_3639=0"; ;;
	*_a7020_amc ) build_flags="DEBUG=0 USE_COHERENT_MEM=0 LOG_LEVEL=20 WORKAROUND_CVE_2018_3639=0"; ;;
	*_a80x0_mcbin_cve_2018_3639) build_flags="DEBUG=0 USE_COHERENT_MEM=0 LOG_LEVEL=20"; ;;
	*_a80x0* )    build_flags="DEBUG=0 USE_COHERENT_MEM=0 LOG_LEVEL=20 WORKAROUND_CVE_2018_3639=0"; ;;
	*_a3900* )    build_flags="DEBUG=0 USE_COHERENT_MEM=0 LOG_LEVEL=20 WORKAROUND_CVE_2018_3639=0 MV_DDR4_BUILD=y"; ;;
	*_a37xx_ddr3_* ) build_flags="DDR_TYPE=DDR3 USE_COHERENT_MEM=0 LOG_LEVEL=20 DDR_TOPOLOGY=0"; ;;
	*_a37xx_ddr4_v1_* ) build_flags="DDR_TYPE=DDR4 USE_COHERENT_MEM=0 LOG_LEVEL=20 DDR_TOPOLOGY=1"; ;;
	*_a37xx_ddr4_v3_* ) build_flags="DDR_TYPE=DDR4 USE_COHERENT_MEM=0 LOG_LEVEL=20 DDR_TOPOLOGY=3"; ;;
	*_a37xx_espressobin_ddr3_1cs_* ) build_flags="DDR_TYPE=DDR3 USE_COHERENT_MEM=0 LOG_LEVEL=20 DDR_TOPOLOGY=0"; ;;
	*_a37xx_espressobin_ddr3_2cs_* ) build_flags="DDR_TYPE=DDR3 USE_COHERENT_MEM=0 LOG_LEVEL=20 DDR_TOPOLOGY=2"; ;;
	*_a37xx_espressobin_ddr4_v7_1G_* ) build_flags="DDR_TYPE=DDR4 USE_COHERENT_MEM=0 LOG_LEVEL=20 DDR_TOPOLOGY=5"; ;;
	*_a37xx_espressobin_ddr4_v7_2G_* ) build_flags="DDR_TYPE=DDR4 USE_COHERENT_MEM=0 LOG_LEVEL=20 DDR_TOPOLOGY=6"; ;;
	* ) echo "Error: Could not configure build_flags. Unsupported build ${build_name}"; exit -1; ;;
esac

pm_fw_export=""
if [[ $build_name =~ _a37xx_ ]]; then
	case $build_name in
		*a37xx_*_1000_800 )  build_flags="${build_flags} CLOCKSPRESET=CPU_1000_DDR_800"; ;;
		*a37xx_*_1200_750 )  build_flags="${build_flags} CLOCKSPRESET=CPU_1200_DDR_750"; ;;
		*a37xx_*_600_600 )   build_flags="${build_flags} CLOCKSPRESET=CPU_600_DDR_600"; ;;
		*a37xx_*_800_800 )   build_flags="${build_flags} CLOCKSPRESET=CPU_800_DDR_800"; ;;
		* ) echo "Error: Could not configure build_flags. Unsupported build ${build_name}"; exit -1; ;;
	esac
	[[ -z ${WTMI_IMG:-} ]] || pm_fw_export="WTMI_IMG=${WTMI_IMG}"
else
	[[ -z ${SCP_BL2:-} ]]  || pm_fw_export="SCP_BL2=${SCP_BL2}"
fi
###############################################################################


## =v=v=v=v=v=v=v=v=v=v=v CI WRAPPER - Do not Modify! v=v=v=v=v=v=v=v=v=v=v= ##
cmd="""
set -x
pwd"""
## =^=^=^=^=^=^=^=^=^=^=^=^  End of CI WRAPPER code -=^=^=^=^=^=^=^=^=^=^=^= ##


if [[ $build_name =~ _a3700_ ]]; then
##[ 3700
##################################### CONFIG ##################################
[[ $no_configure ]] || cmd=$cmd"""
make distclean"""

#################################### COMPILE ##################################
cmd=$cmd"""
make MV_DDR_PATH=$MV_DDR_PATH ${build_flags} PLAT=${platform} ${pm_fw_export} all fip"""
###############################################################################
##]

else
##[ All other SOCs
##################################### CONFIG ##################################
[[ $no_configure ]] || cmd=$cmd"""
${pm_fw_export}
make distclean"""

#################################### COMPILE ##################################
cmd=$cmd"""
make MV_DDR_PATH=$MV_DDR_PATH ${build_flags} PLAT=${platform} all fip"""
###############################################################################
##]
fi


## =v=v=v=v=v=v=v=v=v=v=v CI WRAPPER - Do not Modify! v=v=v=v=v=v=v=v=v=v=v= ##
if [[ $echo_only ]]; then
	echo "$cmd"
	exit 0
fi

eval "$cmd"
## =^=^=^=^=^=^=^=^=^=^=^=^  End of CI WRAPPER code -=^=^=^=^=^=^=^=^=^=^=^= ##