RISCV: configs: tizen_visionfive2: Enable RT2800USB config
[platform/kernel/linux-starfive.git] / build.sh
1 #!/bin/bash
2 MOD_DIR="usr/tmp_mod"
3 MOD_IMG="usr/modules.img"
4 MOD_SIZE=20
5 NCPUS=`grep ^processor /proc/cpuinfo | wc -l`
6 NCPUS=$(($NCPUS * 2))
7 BUILD_ROOT=$PWD
8 KERNEL_PATH=`basename ${BUILD_ROOT}`
9
10 # Check this system has ccache
11 check_ccache()
12 {
13         type ccache
14         if [ "$?" -eq "0" ]; then
15                 CCACHE=ccache
16         fi
17 }
18
19 function mk_tizen_modules()
20 {
21         if [ -e ${BUILD_ROOT}/../linux-tizen-modules-source ]; then
22                 pushd ${BUILD_ROOT}/../linux-tizen-modules-source
23
24                 ln -s ${PWD}/include kernel
25
26                 export BUILD_logger=m
27                 export LOGGER_MAIN_BUFFER_SIZE=256
28                 export LOGGER_EVENTS_BUFFER_SIZE=256
29                 export LOGGER_RADIO_BUFFER_SIZE=256
30                 export LOGGER_SYSTEM_BUFFER_SIZE=256
31
32                 export BUILD_proc_tsm=n
33                 export BUILD_kdbus=n
34                 export BUILD_zlogger=m
35
36                 ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILER}" make -C kernel KERNELDIR=${BUILD_ROOT}
37
38                 rm -f kernel/include
39
40                 ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILER}" make -C kernel modules_install KERNELDIR=${BUILD_ROOT} INSTALL_MOD_PATH=../${KERNEL_PATH}/${MOD_DIR} INSTALL_MOD_STRIP=1 INSTALL_MOD_DIR=extra
41
42                 popd
43
44                 if [ -e ${BUILD_ROOT}/../linux-tizen-modules ]; then
45                         mkdir -p ${MOD_DIR}/lib/modules/modules-load.d
46                         cp ${BUILD_ROOT}/../linux-tizen-modules/conf/tizen-modules-visionfive2.conf ${MOD_DIR}/lib/modules/modules-load.d
47                 fi
48         else
49                 echo "linux-tizen-modules-source/linux-tizen-modules are not cloned in parent path, so skip building linux-tizen-modules."
50                 echo "To build linux-tizen-modules, please use below command:"
51                 echo "   git clone git://git.tizen.org/platform/kernel/linux-tizen-modules-source -b tizen ../linux-tizen-modules-source"
52                 echo "   git clone git://git.tizen.org/platform/kernel/linux-tizen-modules -b tizen ../linux-tizen-modules"
53         fi
54 }
55
56 function mk_modules() {
57         [ -e /usr/bin/make_ext4fs ] && USE_MAKE_EXT4FS=1
58         if [ "$USE_MAKE_EXT4FS" != "1" ]; then
59                 sudo ls > /dev/null
60         fi
61
62         make ARCH=${ARCH} CROSS_COMPILE="$CROSS_COMPILER" modules_prepare
63         make ARCH=${ARCH} CROSS_COMPILE="$CROSS_COMPILER" modules -j ${NCPUS}
64
65         if [ "$?" != "0" ]; then
66                 echo "Failed to make modules"
67                 exit 1
68         fi
69
70         [ -d ${MOD_DIR} ] || mkdir ${MOD_DIR}
71
72         make ARCH=${ARCH} CROSS_COMPILE="$CROSS_COMPILER" modules_install INSTALL_MOD_PATH=${MOD_DIR} INSTALL_MOD_STRIP=1
73
74         # build and install linux-tizen-modules if cloned in parent path
75         mk_tizen_modules
76
77         if [ "$USE_MAKE_EXT4FS" == "1" ]; then
78                 /usr/bin/make_ext4fs -b 4096 -L modules -l ${MOD_SIZE}M $MOD_IMG ${MOD_DIR}/lib/modules/
79         else
80                 dd if=/dev/zero of=${MOD_IMG} bs=1M count=${MOD_SIZE}
81                 mkfs.ext4 -F -b 4096 -L modules ${MOD_IMG}
82                 [ -d ${MOD_DIR}/mnt ] || mkdir ${MOD_DIR}/mnt
83                 sudo mount -o loop ${MOD_IMG} ${MOD_DIR}/mnt
84                 sudo cp -rf ${MOD_DIR}/lib/modules/* ${MOD_DIR}/mnt
85                 sync
86                 sudo umount ${MOD_DIR}/mnt
87         fi
88         rm -rf ${MOD_DIR}
89         ls -al ${MOD_IMG}
90 }
91
92 check_ccache
93
94 echo "riscv64"
95 rm -f arch/riscv/boot/Image
96 rm -f arch/riscv/boot/dts/starfive/*.dtb
97 rm -f output/Image
98 rm -f output/*.dtb
99 rm -f output/modules.img
100 rm -f output/*.tar
101
102 CROSS_COMPILER=riscv64-linux-gnu-
103 ARCH=riscv
104 if ! [ -e .config ] ; then
105         make ARCH=${ARCH} CROSS_COMPILE="$CROSS_COMPILER" tizen_visionfive2_defconfig
106 fi
107 make ARCH=${ARCH} CROSS_COMPILE="$CROSS_COMPILER" -j ${NCPUS}
108 if [ ! -f "./arch/riscv/boot/Image" ]; then
109         echo "Build fail"
110         exit 1
111 fi
112
113 # Make module.img file
114 mk_modules
115
116 if [ ! -d output ] ; then
117         mkdir ./output
118 fi
119
120 cp usr/modules.img ./output
121
122 cp ./arch/riscv/boot/Image ./output
123 cp ./arch/riscv/boot/dts/starfive/*.dtb ./output
124 tar cvf linux-visionfive2.tar -C output Image jh7110-starfive-visionfive-2-v1.2a.dtb jh7110-starfive-visionfive-2-v1.3b.dtb modules.img
125 mv linux-visionfive2.tar ./output/