xref: /OK3568_Linux_fs/device/rockchip/common/scripts/mk-all.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash -e
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunBOARD=$(echo ${RK_KERNEL_DTS_NAME:-$(echo "$RK_DEFCONFIG" | \
4*4882a593Smuzhiyun	sed -n "s/.*\($RK_CHIP.*\)_defconfig/\1/p")} | \
5*4882a593Smuzhiyun	tr '[:lower:]' '[:upper:]')
6*4882a593Smuzhiyun
7*4882a593Smuzhiyunbuild_all()
8*4882a593Smuzhiyun{
9*4882a593Smuzhiyun	echo "=========================================="
10*4882a593Smuzhiyun	echo "          Start building all images"
11*4882a593Smuzhiyun	echo "=========================================="
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun	rm -rf "$RK_FIRMWARE_DIR" "$RK_SECURITY_FIRMWARE_DIR"
14*4882a593Smuzhiyun	mkdir -p "$RK_FIRMWARE_DIR" "$RK_SECURITY_FIRMWARE_DIR"
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun	if [ "$RK_RTOS" ]; then
17*4882a593Smuzhiyun		"$SCRIPTS_DIR/mk-loader.sh"
18*4882a593Smuzhiyun		"$SCRIPTS_DIR/mk-rtos.sh"
19*4882a593Smuzhiyun		"$SCRIPTS_DIR/mk-firmware.sh"
20*4882a593Smuzhiyun		finish_build
21*4882a593Smuzhiyun		return 0
22*4882a593Smuzhiyun	fi
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun	if [ "$RK_SECURITY" ]; then
25*4882a593Smuzhiyun		"$SCRIPTS_DIR/mk-security.sh" security_check
26*4882a593Smuzhiyun	fi
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun	if [ "$RK_KERNEL_CFG" ]; then
29*4882a593Smuzhiyun		"$SCRIPTS_DIR/mk-kernel.sh"
30*4882a593Smuzhiyun		if [ "$RK_ROOTFS_SYSTEM" == "ubuntu" ]; then
31*4882a593Smuzhiyun			"$SCRIPTS_DIR/mk-rootfs.sh" ubuntu
32*4882a593Smuzhiyun		else
33*4882a593Smuzhiyun			"$SCRIPTS_DIR/mk-rootfs.sh" linuxfs
34*4882a593Smuzhiyun		fi
35*4882a593Smuzhiyun		"$SCRIPTS_DIR/mk-linuxrecovery.sh"
36*4882a593Smuzhiyun	fi
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun	if [ "$RK_SECURITY" ]; then
39*4882a593Smuzhiyun		"$SCRIPTS_DIR/mk-security.sh" security_ramboot
40*4882a593Smuzhiyun	fi
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun	# Will repack boot and recovery images when security enabled
43*4882a593Smuzhiyun	"$SCRIPTS_DIR/mk-loader.sh"
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun	"$SCRIPTS_DIR/mk-firmware.sh"
46*4882a593Smuzhiyun	"$SCRIPTS_DIR/mk-updateimg.sh"
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun	finish_build
49*4882a593Smuzhiyun}
50*4882a593Smuzhiyun
51*4882a593Smuzhiyunbuild_save()
52*4882a593Smuzhiyun{
53*4882a593Smuzhiyun	echo "=========================================="
54*4882a593Smuzhiyun	echo "          Start saving images and build info"
55*4882a593Smuzhiyun	echo "=========================================="
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun	shift
58*4882a593Smuzhiyun	SAVE_BASE_DIR="$RK_OUTDIR/$BOARD${1:+/$1}"
59*4882a593Smuzhiyun	case "$(grep "^ID=" "$RK_OUTDIR/os-release" 2>/dev/null)" in
60*4882a593Smuzhiyun		ID=buildroot) SAVE_DIR="$SAVE_BASE_DIR/BUILDROOT" ;;
61*4882a593Smuzhiyun		ID=debian) SAVE_DIR="$SAVE_BASE_DIR/DEBIAN" ;;
62*4882a593Smuzhiyun		ID=poky) SAVE_DIR="$SAVE_BASE_DIR/YOCTO" ;;
63*4882a593Smuzhiyun		*) SAVE_DIR="$SAVE_BASE_DIR" ;;
64*4882a593Smuzhiyun	esac
65*4882a593Smuzhiyun	[ "$1" ] || SAVE_DIR="$SAVE_DIR/$(date  +%Y%m%d_%H%M%S)"
66*4882a593Smuzhiyun	mkdir -p "$SAVE_DIR"
67*4882a593Smuzhiyun	rm -rf "$SAVE_BASE_DIR/latest"
68*4882a593Smuzhiyun	ln -rsf "$SAVE_DIR" "$SAVE_BASE_DIR/latest"
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun	echo "Saving into $SAVE_DIR..."
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun	if [ "$RK_KERNEL_CFG" ]; then
73*4882a593Smuzhiyun		mkdir -p "$SAVE_DIR/kernel"
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun		echo "Saving linux-headers..."
76*4882a593Smuzhiyun		"$SCRIPTS_DIR/mk-kernel.sh" linux-headers \
77*4882a593Smuzhiyun			"$SAVE_DIR/kernel"
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun		echo "Saving kernel files..."
80*4882a593Smuzhiyun		cp kernel/.config kernel/System.map kernel/vmlinux \
81*4882a593Smuzhiyun			$RK_KERNEL_DTB "$SAVE_DIR/kernel"
82*4882a593Smuzhiyun	fi
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun	echo "Saving images..."
85*4882a593Smuzhiyun	mkdir -p "$SAVE_DIR/IMAGES"
86*4882a593Smuzhiyun	cp "$RK_FIRMWARE_DIR"/* "$SAVE_DIR/IMAGES/"
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun	echo "Saving build info..."
89*4882a593Smuzhiyun#	if yes | ${PYTHON3:-python3} .repo/repo/repo manifest -r \
90*4882a593Smuzhiyun#		-o "$SAVE_DIR/manifest.xml"; then
91*4882a593Smuzhiyun		# Only do this when repositories are available
92*4882a593Smuzhiyun#		echo "Saving patches..."
93*4882a593Smuzhiyun#		PATCHES_DIR="$SAVE_DIR/PATCHES"
94*4882a593Smuzhiyun#		mkdir -p "$PATCHES_DIR"
95*4882a593Smuzhiyun#		.repo/repo/repo forall -j $(( $CPUS + 1 )) -c \
96*4882a593Smuzhiyun#			"\"$SCRIPTS_DIR/save-patches.sh\" \
97*4882a593Smuzhiyun#			\"$PATCHES_DIR/\$REPO_PATH\" \$REPO_PATH \$REPO_LREV"
98*4882a593Smuzhiyun#		install -D -m 0755 "$RK_DATA_DIR/apply-all.sh" "$PATCHES_DIR"
99*4882a593Smuzhiyun#	fi
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun	cp "$RK_FINAL_ENV" "$RK_CONFIG" "$RK_DEFCONFIG_LINK" "$SAVE_DIR/"
102*4882a593Smuzhiyun	cp "$RK_CONFIG" "$SAVE_DIR/build_info"
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun	echo "Saving build logs..."
105*4882a593Smuzhiyun	cp -rp "$RK_LOG_BASE_DIR" "$SAVE_DIR/"
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun	finish_build
108*4882a593Smuzhiyun}
109*4882a593Smuzhiyun
110*4882a593Smuzhiyunbuild_allsave()
111*4882a593Smuzhiyun{
112*4882a593Smuzhiyun	echo "=========================================="
113*4882a593Smuzhiyun	echo "          Start building allsave"
114*4882a593Smuzhiyun	echo "=========================================="
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun	build_all
117*4882a593Smuzhiyun	build_save $@
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun	finish_build
120*4882a593Smuzhiyun}
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun# Hooks
123*4882a593Smuzhiyun
124*4882a593Smuzhiyunusage_hook()
125*4882a593Smuzhiyun{
126*4882a593Smuzhiyun	echo -e "all                               \tbuild all images"
127*4882a593Smuzhiyun	echo -e "save                              \tsave images and build info"
128*4882a593Smuzhiyun	echo -e "allsave                           \tbuild all images and save them"
129*4882a593Smuzhiyun}
130*4882a593Smuzhiyun
131*4882a593Smuzhiyunclean_hook()
132*4882a593Smuzhiyun{
133*4882a593Smuzhiyun	rm -rf "$RK_OUTDIR"/$BOARD*
134*4882a593Smuzhiyun}
135*4882a593Smuzhiyun
136*4882a593SmuzhiyunBUILD_CMDS="all allsave"
137*4882a593Smuzhiyunbuild_hook()
138*4882a593Smuzhiyun{
139*4882a593Smuzhiyun	case "$1" in
140*4882a593Smuzhiyun		all) build_all ;;
141*4882a593Smuzhiyun		allsave) build_allsave $@ ;;
142*4882a593Smuzhiyun	esac
143*4882a593Smuzhiyun}
144*4882a593Smuzhiyun
145*4882a593SmuzhiyunPOST_BUILD_CMDS="save"
146*4882a593Smuzhiyunpost_build_hook()
147*4882a593Smuzhiyun{
148*4882a593Smuzhiyun	build_save $@
149*4882a593Smuzhiyun}
150*4882a593Smuzhiyun
151*4882a593Smuzhiyunsource "${BUILD_HELPER:-$(dirname "$(realpath "$0")")/../build-hooks/build-helper}"
152*4882a593Smuzhiyun
153*4882a593Smuzhiyuncase "${1:-allsave}" in
154*4882a593Smuzhiyun	all) build_all ;;
155*4882a593Smuzhiyun	allsave) build_allsave $@ ;;
156*4882a593Smuzhiyun	save) build_save $@ ;;
157*4882a593Smuzhiyun	*) usage ;;
158*4882a593Smuzhiyunesac
159