1654c1fc8SKrishna Kanth Reddy#!/usr/bin/env bash 2*eb53c232Spaul luse# SPDX-License-Identifier: BSD-3-Clause 3*eb53c232Spaul luse# All rights reserved. 4*eb53c232Spaul luse# 5654c1fc8SKrishna Kanth Reddy 6654c1fc8SKrishna Kanth Reddy# exit on errors 7654c1fc8SKrishna Kanth Reddyset -e 8654c1fc8SKrishna Kanth Reddy 9654c1fc8SKrishna Kanth ReddyROOT_DIR=$(readlink -f $(dirname $0))/../.. 10654c1fc8SKrishna Kanth Reddyexport CROSS_COMPILE_DIR=$ROOT_DIR/cross_compiling 11654c1fc8SKrishna Kanth Reddyexport SPDK_DIR=$ROOT_DIR/spdk 12654c1fc8SKrishna Kanth Reddyexport DPDK_DIR=$SPDK_DIR/dpdk 13654c1fc8SKrishna Kanth Reddy 14654c1fc8SKrishna Kanth Reddy# Get Toolchain 15654c1fc8SKrishna Kanth Reddyfunction get_cc_toolchain() { 16654c1fc8SKrishna Kanth Reddy cd $CROSS_COMPILE_DIR 17654c1fc8SKrishna Kanth Reddy 18654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu" ]; then 19654c1fc8SKrishna Kanth Reddy echo -e "Getting ARM Cross Compiler Toolchain..." 20654c1fc8SKrishna Kanth Reddy wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz --no-check-certificate 21654c1fc8SKrishna Kanth Reddy tar xvf gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz 22654c1fc8SKrishna Kanth Reddy else 23654c1fc8SKrishna Kanth Reddy echo -e "ARM Cross Compiler Toolchain already downloaded" 24654c1fc8SKrishna Kanth Reddy fi 25654c1fc8SKrishna Kanth Reddy 26654c1fc8SKrishna Kanth Reddy export PATH=$PATH:$CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin 27654c1fc8SKrishna Kanth Reddy} 28654c1fc8SKrishna Kanth Reddy 29654c1fc8SKrishna Kanth Reddy# NUMA 30654c1fc8SKrishna Kanth Reddyfunction cross_compile_numa() { 31654c1fc8SKrishna Kanth Reddy cd $CROSS_COMPILE_DIR 32654c1fc8SKrishna Kanth Reddy 33654c1fc8SKrishna Kanth Reddy # Download NUMA library 34654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/numactl" ]; then 35654c1fc8SKrishna Kanth Reddy echo -e "Downloading NUMA library..." 36654c1fc8SKrishna Kanth Reddy git clone https://github.com/numactl/numactl.git 37654c1fc8SKrishna Kanth Reddy cd numactl/ 38654c1fc8SKrishna Kanth Reddy git checkout v2.0.13 -b v2.0.13 39654c1fc8SKrishna Kanth Reddy else 40654c1fc8SKrishna Kanth Reddy echo -e "NUMA library already downloaded" 41654c1fc8SKrishna Kanth Reddy cd numactl/ 42654c1fc8SKrishna Kanth Reddy fi 43654c1fc8SKrishna Kanth Reddy 44654c1fc8SKrishna Kanth Reddy # Build NUMA library 45654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/numactl/build" ]; then 46654c1fc8SKrishna Kanth Reddy echo -e "Building NUMA library..." 47654c1fc8SKrishna Kanth Reddy ./autogen.sh 48654c1fc8SKrishna Kanth Reddy autoconf -i 49654c1fc8SKrishna Kanth Reddy mkdir build 50654c1fc8SKrishna Kanth Reddy ./configure --host=aarch64-none-linux-gnu CC=aarch64-none-linux-gnu-gcc --prefix=$CROSS_COMPILE_DIR/numactl/build 51654c1fc8SKrishna Kanth Reddy make -j install 52654c1fc8SKrishna Kanth Reddy 53654c1fc8SKrishna Kanth Reddy # Copy NUMA related dependencies 54654c1fc8SKrishna Kanth Reddy echo -e "Copying NUMA library dependencies..." 55654c1fc8SKrishna Kanth Reddy 56654c1fc8SKrishna Kanth Reddy cp build/include/numa*.h $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 57654c1fc8SKrishna Kanth Reddy cp build/lib/libnuma.a $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/ 58654c1fc8SKrishna Kanth Reddy cp build/lib/libnuma.so $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/ 59654c1fc8SKrishna Kanth Reddy else 60654c1fc8SKrishna Kanth Reddy echo -e "NUMA library already built" 61654c1fc8SKrishna Kanth Reddy fi 62654c1fc8SKrishna Kanth Reddy} 63654c1fc8SKrishna Kanth Reddy 64654c1fc8SKrishna Kanth Reddy# util-linux UUID 65654c1fc8SKrishna Kanth Reddyfunction cross_compile_uuid() { 66654c1fc8SKrishna Kanth Reddy cd $CROSS_COMPILE_DIR 67654c1fc8SKrishna Kanth Reddy 68654c1fc8SKrishna Kanth Reddy # Download util-linux UUID library 69654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/util-linux" ]; then 70654c1fc8SKrishna Kanth Reddy echo -e "Downloading util-linux UUID library..." 71654c1fc8SKrishna Kanth Reddy git clone https://github.com/karelzak/util-linux.git 72654c1fc8SKrishna Kanth Reddy else 73654c1fc8SKrishna Kanth Reddy echo -e "util-linux UUID library already downloaded" 74654c1fc8SKrishna Kanth Reddy fi 75654c1fc8SKrishna Kanth Reddy 76654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/util-linux/.libs" ]; then 77654c1fc8SKrishna Kanth Reddy cd util-linux/ 78654c1fc8SKrishna Kanth Reddy 79654c1fc8SKrishna Kanth Reddy # Build util-linux UUID library 80654c1fc8SKrishna Kanth Reddy echo -e "Building util-linux UUID library..." 81654c1fc8SKrishna Kanth Reddy 82654c1fc8SKrishna Kanth Reddy ./autogen.sh 83654c1fc8SKrishna Kanth Reddy CC=aarch64-none-linux-gnu-gcc CXX=aarch64-none-linux-gnu-g++ LD=aarch64-none-linux-gnu-ld CFLAGS+=-Wl,-rpath=$CROSS_COMPILE_DIR/util-linux/.libs ./configure --host=aarch64-none-linux-gnu --without-tinfo --without-ncurses --without-ncursesw --disable-mount --disable-libmount --disable-pylibmount --disable-libblkid --disable-fdisks --disable-libfdisk 84654c1fc8SKrishna Kanth Reddy make clean 85654c1fc8SKrishna Kanth Reddy make -j 86654c1fc8SKrishna Kanth Reddy 87654c1fc8SKrishna Kanth Reddy # Copy util-linux UUID related dependencies 88654c1fc8SKrishna Kanth Reddy echo -e "Copying util-linux UUID library dependencies..." 89654c1fc8SKrishna Kanth Reddy 90654c1fc8SKrishna Kanth Reddy cp .libs/libuuid.so.1.3.0 $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libuuid.so 91654c1fc8SKrishna Kanth Reddy mkdir -p $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/uuid/ 92654c1fc8SKrishna Kanth Reddy cp libuuid/src/uuid.h $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/uuid/ 93654c1fc8SKrishna Kanth Reddy else 94654c1fc8SKrishna Kanth Reddy echo -e "util-linux UUID library already built" 95654c1fc8SKrishna Kanth Reddy fi 96654c1fc8SKrishna Kanth Reddy} 97654c1fc8SKrishna Kanth Reddy 98654c1fc8SKrishna Kanth Reddy# Openssl Crypto and SSL 99654c1fc8SKrishna Kanth Reddyfunction cross_compile_crypto_ssl() { 100654c1fc8SKrishna Kanth Reddy cd $CROSS_COMPILE_DIR 101654c1fc8SKrishna Kanth Reddy 102654c1fc8SKrishna Kanth Reddy # Download Openssl Crypto and SSL libraries 103654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/openssl" ]; then 104654c1fc8SKrishna Kanth Reddy echo -e "Downloading Openssl Crypto and SSL libraries..." 105654c1fc8SKrishna Kanth Reddy git clone https://github.com/openssl/openssl.git 106654c1fc8SKrishna Kanth Reddy else 107654c1fc8SKrishna Kanth Reddy echo -e "Openssl Crypto and SSL libraries already downloaded" 108654c1fc8SKrishna Kanth Reddy fi 109654c1fc8SKrishna Kanth Reddy 110654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/openssl/build" ]; then 111654c1fc8SKrishna Kanth Reddy cd openssl 112654c1fc8SKrishna Kanth Reddy 113654c1fc8SKrishna Kanth Reddy # Build Openssl Crypto and SSL libraries 114654c1fc8SKrishna Kanth Reddy echo -e "Building Openssl Crypto and SSL libraries..." 115654c1fc8SKrishna Kanth Reddy 116654c1fc8SKrishna Kanth Reddy mkdir build 117654c1fc8SKrishna Kanth Reddy ./Configure linux-aarch64 --prefix=$CROSS_COMPILE_DIR/openssl/build --cross-compile-prefix=aarch64-none-linux-gnu- 118654c1fc8SKrishna Kanth Reddy make -j 119654c1fc8SKrishna Kanth Reddy make -j install 120654c1fc8SKrishna Kanth Reddy 121654c1fc8SKrishna Kanth Reddy # Copy Openssl Crypto and SSL related dependencies 122654c1fc8SKrishna Kanth Reddy echo -e "Copying Openssl Crypto and SSL libraries dependencies..." 123654c1fc8SKrishna Kanth Reddy 124654c1fc8SKrishna Kanth Reddy cp -fr build/include/openssl $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 125654c1fc8SKrishna Kanth Reddy cp build/lib/libcrypto.so.3 $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libcrypto.so 126654c1fc8SKrishna Kanth Reddy cp build/lib/libcrypto.so.3 $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libcrypto.so.3 127654c1fc8SKrishna Kanth Reddy cp build/lib/libssl.so.3 $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libssl.so 128654c1fc8SKrishna Kanth Reddy else 129654c1fc8SKrishna Kanth Reddy echo -e "Openssl Crypto and SSL libraries already built" 130654c1fc8SKrishna Kanth Reddy fi 131654c1fc8SKrishna Kanth Reddy} 132654c1fc8SKrishna Kanth Reddy 133654c1fc8SKrishna Kanth Reddy# Libaio 134654c1fc8SKrishna Kanth Reddyfunction cross_compile_libaio() { 135654c1fc8SKrishna Kanth Reddy cd $CROSS_COMPILE_DIR 136654c1fc8SKrishna Kanth Reddy 137654c1fc8SKrishna Kanth Reddy # Download libaio library 138654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/libaio" ]; then 139654c1fc8SKrishna Kanth Reddy echo -e "Downloading libaio library..." 140654c1fc8SKrishna Kanth Reddy 141654c1fc8SKrishna Kanth Reddy wget https://ftp.debian.org/debian/pool/main/liba/libaio/libaio_0.3.112.orig.tar.xz --no-check-certificate 142654c1fc8SKrishna Kanth Reddy tar xvf libaio_0.3.112.orig.tar.xz 143654c1fc8SKrishna Kanth Reddy mv libaio-0.3.112 libaio 144654c1fc8SKrishna Kanth Reddy else 145654c1fc8SKrishna Kanth Reddy echo -e "libaio library already downloaded" 146654c1fc8SKrishna Kanth Reddy fi 147654c1fc8SKrishna Kanth Reddy 148654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/libaio/build" ]; then 149654c1fc8SKrishna Kanth Reddy cd libaio 150654c1fc8SKrishna Kanth Reddy 151654c1fc8SKrishna Kanth Reddy # Build libaio library 152654c1fc8SKrishna Kanth Reddy echo -e "Building libaio library..." 153654c1fc8SKrishna Kanth Reddy 154654c1fc8SKrishna Kanth Reddy mkdir build 155654c1fc8SKrishna Kanth Reddy CC=aarch64-none-linux-gnu-gcc CXX=aarch64-none-linux-gnu-g++ LD=aarch64-none-linux-gnu-ld make -j 156654c1fc8SKrishna Kanth Reddy make -j install DESTDIR=$CROSS_COMPILE_DIR/libaio/build 157654c1fc8SKrishna Kanth Reddy 158654c1fc8SKrishna Kanth Reddy # Copy libaio related dependencies 159654c1fc8SKrishna Kanth Reddy echo -e "Copying libaio library dependencies..." 160654c1fc8SKrishna Kanth Reddy 161654c1fc8SKrishna Kanth Reddy cp build/usr/include/libaio.h $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 162654c1fc8SKrishna Kanth Reddy cp build/usr/lib/libaio.so.1.0.1 $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libaio.so 163654c1fc8SKrishna Kanth Reddy else 164654c1fc8SKrishna Kanth Reddy echo -e "libaio library already built" 165654c1fc8SKrishna Kanth Reddy fi 166654c1fc8SKrishna Kanth Reddy} 167654c1fc8SKrishna Kanth Reddy 168654c1fc8SKrishna Kanth Reddy# Ncurses 169654c1fc8SKrishna Kanth Reddyfunction cross_compile_ncurses() { 170654c1fc8SKrishna Kanth Reddy cd $CROSS_COMPILE_DIR 171654c1fc8SKrishna Kanth Reddy 172654c1fc8SKrishna Kanth Reddy # Download ncurses library 173654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/ncurses" ]; then 174654c1fc8SKrishna Kanth Reddy echo -e "Downloading ncurses library..." 175654c1fc8SKrishna Kanth Reddy 176654c1fc8SKrishna Kanth Reddy wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.2.tar.gz --no-check-certificate 177654c1fc8SKrishna Kanth Reddy tar xvf ncurses-6.2.tar.gz 178654c1fc8SKrishna Kanth Reddy mv ncurses-6.2 ncurses 179654c1fc8SKrishna Kanth Reddy else 180654c1fc8SKrishna Kanth Reddy echo -e "ncurses library already downloaded" 181654c1fc8SKrishna Kanth Reddy fi 182654c1fc8SKrishna Kanth Reddy 183654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/ncurses_build" ]; then 184654c1fc8SKrishna Kanth Reddy mkdir ncurses_build 185654c1fc8SKrishna Kanth Reddy 186654c1fc8SKrishna Kanth Reddy # Build ncurses library 187654c1fc8SKrishna Kanth Reddy echo -e "Building ncurses library..." 188654c1fc8SKrishna Kanth Reddy 189654c1fc8SKrishna Kanth Reddy (cd ncurses && ./configure --host=aarch64-none-linux-gnu --prefix=$CROSS_COMPILE_DIR/ncurses_build --disable-stripping && make -j install) 190654c1fc8SKrishna Kanth Reddy 191654c1fc8SKrishna Kanth Reddy # Copy ncurses related dependencies 192654c1fc8SKrishna Kanth Reddy echo -e "Copying ncurses library dependencies..." 193654c1fc8SKrishna Kanth Reddy 194654c1fc8SKrishna Kanth Reddy cp ncurses_build/include/ncurses/ncurses.h $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 195654c1fc8SKrishna Kanth Reddy cp ncurses_build/include/ncurses/curses.h $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 196654c1fc8SKrishna Kanth Reddy cp -fr ncurses_build/include/ncurses $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 197654c1fc8SKrishna Kanth Reddy cp ncurses_build/include/ncurses/menu.h $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 198654c1fc8SKrishna Kanth Reddy cp ncurses_build/include/ncurses/eti.h $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 199654c1fc8SKrishna Kanth Reddy cp ncurses_build/include/ncurses/panel.h $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 200654c1fc8SKrishna Kanth Reddy cp ncurses_build/lib/libncurses* $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/ 201654c1fc8SKrishna Kanth Reddy cp ncurses_build/lib/libmenu.a $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/ 202654c1fc8SKrishna Kanth Reddy cp ncurses_build/lib/libpanel.a $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/ 203654c1fc8SKrishna Kanth Reddy else 204654c1fc8SKrishna Kanth Reddy echo -e "ncurses library already built" 205654c1fc8SKrishna Kanth Reddy fi 206654c1fc8SKrishna Kanth Reddy 207654c1fc8SKrishna Kanth Reddy} 208654c1fc8SKrishna Kanth Reddy 209654c1fc8SKrishna Kanth Reddy# CUnit 210654c1fc8SKrishna Kanth Reddyfunction cross_compile_cunit() { 211654c1fc8SKrishna Kanth Reddy cd $CROSS_COMPILE_DIR 212654c1fc8SKrishna Kanth Reddy 213654c1fc8SKrishna Kanth Reddy # Download cunit library 214654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/CUnit" ]; then 215654c1fc8SKrishna Kanth Reddy echo -e "Downloading cunit library..." 216654c1fc8SKrishna Kanth Reddy 217654c1fc8SKrishna Kanth Reddy git clone https://github.com/jacklicn/CUnit.git 218654c1fc8SKrishna Kanth Reddy else 219654c1fc8SKrishna Kanth Reddy echo -e "cunit library already downloaded" 220654c1fc8SKrishna Kanth Reddy fi 221654c1fc8SKrishna Kanth Reddy 222654c1fc8SKrishna Kanth Reddy if [ ! -d "$CROSS_COMPILE_DIR/CUnit/build" ]; then 223654c1fc8SKrishna Kanth Reddy cd CUnit 224654c1fc8SKrishna Kanth Reddy 225654c1fc8SKrishna Kanth Reddy # Build cunit library 226654c1fc8SKrishna Kanth Reddy echo -e "Building cunit library..." 227654c1fc8SKrishna Kanth Reddy 228654c1fc8SKrishna Kanth Reddy mkdir build 229654c1fc8SKrishna Kanth Reddy libtoolize --force 230654c1fc8SKrishna Kanth Reddy aclocal 231654c1fc8SKrishna Kanth Reddy autoheader 232654c1fc8SKrishna Kanth Reddy automake --force-missing --add-missing 233654c1fc8SKrishna Kanth Reddy autoconf 234654c1fc8SKrishna Kanth Reddy ./configure --host=aarch64-none-linux-gnu --prefix=$CROSS_COMPILE_DIR/CUnit/build 235654c1fc8SKrishna Kanth Reddy make -j 236654c1fc8SKrishna Kanth Reddy make -j install 237654c1fc8SKrishna Kanth Reddy 238654c1fc8SKrishna Kanth Reddy # Copy cunit related dependencies 239654c1fc8SKrishna Kanth Reddy echo -e "Copying cunit library dependencies..." 240654c1fc8SKrishna Kanth Reddy 241654c1fc8SKrishna Kanth Reddy cp -fr build/include/CUnit $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 242654c1fc8SKrishna Kanth Reddy cp build/lib/libcunit.a $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/ 243654c1fc8SKrishna Kanth Reddy cp build/lib/libcunit.so.1.0.1 $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libcunit.so 244654c1fc8SKrishna Kanth Reddy else 245654c1fc8SKrishna Kanth Reddy echo -e "cunit library already built" 246654c1fc8SKrishna Kanth Reddy fi 247654c1fc8SKrishna Kanth Reddy} 248654c1fc8SKrishna Kanth Reddy 249654c1fc8SKrishna Kanth Reddy# ISA-L 250654c1fc8SKrishna Kanth Reddyfunction cross_compile_isal() { 251654c1fc8SKrishna Kanth Reddy cd $SPDK_DIR 252654c1fc8SKrishna Kanth Reddy 253654c1fc8SKrishna Kanth Reddy if [ ! -d "$SPDK_DIR/isa-l/build" ]; then 254654c1fc8SKrishna Kanth Reddy # Build ISA-L library 255654c1fc8SKrishna Kanth Reddy echo -e "Building ISA-L library..." 256654c1fc8SKrishna Kanth Reddy 257654c1fc8SKrishna Kanth Reddy cd isa-l 258654c1fc8SKrishna Kanth Reddy ./autogen.sh 259654c1fc8SKrishna Kanth Reddy mkdir -p build/lib 260654c1fc8SKrishna Kanth Reddy ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes ./configure --prefix=$SPDK_DIR/isa-l/build --libdir=$SPDK_DIR/isa-l/build/lib --host=aarch64-none-linux-gnu 261654c1fc8SKrishna Kanth Reddy make -j 262654c1fc8SKrishna Kanth Reddy make -j install 263654c1fc8SKrishna Kanth Reddy 264654c1fc8SKrishna Kanth Reddy # Copy ISAL related dependencies 265654c1fc8SKrishna Kanth Reddy echo -e "Copying ISA-L library dependencies..." 266654c1fc8SKrishna Kanth Reddy 267654c1fc8SKrishna Kanth Reddy cp -fr build/include/isa-l $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 268654c1fc8SKrishna Kanth Reddy cp build/include/isa-l.h $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc/usr/include/ 269654c1fc8SKrishna Kanth Reddy cp build/lib/libisal.a $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/ 270654c1fc8SKrishna Kanth Reddy cp build/lib/libisal.so.2.0.30 $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/ 271654c1fc8SKrishna Kanth Reddy ln -sf $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libisal.so.2.0.30 $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libisal.so 272654c1fc8SKrishna Kanth Reddy ln -sf $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libisal.so.2.0.30 $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libisal.so.2 273654c1fc8SKrishna Kanth Reddy else 274654c1fc8SKrishna Kanth Reddy echo -e "ISA-L library already built" 275654c1fc8SKrishna Kanth Reddy fi 276654c1fc8SKrishna Kanth Reddy} 277654c1fc8SKrishna Kanth Reddy 278654c1fc8SKrishna Kanth Reddy# DPDK 279654c1fc8SKrishna Kanth Reddyfunction cross_compile_dpdk() { 280654c1fc8SKrishna Kanth Reddy cd $DPDK_DIR 281654c1fc8SKrishna Kanth Reddy 282654c1fc8SKrishna Kanth Reddy if [ ! -d "$DPDK_DIR/build" ]; then 283654c1fc8SKrishna Kanth Reddy # Build DPDK libraries 284654c1fc8SKrishna Kanth Reddy echo -e "Building DPDK libraries..." 285654c1fc8SKrishna Kanth Reddy 286654c1fc8SKrishna Kanth Reddy apt install pkg-config-aarch64-linux-gnu 287654c1fc8SKrishna Kanth Reddy meson aarch64-build-gcc --cross-file config/arm/arm64_armv8_linux_gcc -Dprefix=$DPDK_DIR/build 288654c1fc8SKrishna Kanth Reddy ninja -C aarch64-build-gcc 289654c1fc8SKrishna Kanth Reddy ninja -C aarch64-build-gcc install 290654c1fc8SKrishna Kanth Reddy cd .. 291654c1fc8SKrishna Kanth Reddy 292654c1fc8SKrishna Kanth Reddy # Copy DPDK related dependencies 293654c1fc8SKrishna Kanth Reddy echo -e "Copying DPDK libraries dependencies..." 294654c1fc8SKrishna Kanth Reddy 295654c1fc8SKrishna Kanth Reddy cp -fr dpdk/build/bin dpdk/aarch64-build-gcc/ 296654c1fc8SKrishna Kanth Reddy cp -fr dpdk/build/include dpdk/aarch64-build-gcc/ 297654c1fc8SKrishna Kanth Reddy cp -fr dpdk/build/share dpdk/aarch64-build-gcc/ 298654c1fc8SKrishna Kanth Reddy cp -fr dpdk/build/lib/* dpdk/aarch64-build-gcc/lib/ 299654c1fc8SKrishna Kanth Reddy cp $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libcrypto.so.3 dpdk/aarch64-build-gcc/lib/ 300654c1fc8SKrishna Kanth Reddy cp $CROSS_COMPILE_DIR/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/libcrypto.so dpdk/aarch64-build-gcc/lib/ 301654c1fc8SKrishna Kanth Reddy else 302654c1fc8SKrishna Kanth Reddy echo -e "DPDK libraries already built" 303654c1fc8SKrishna Kanth Reddy fi 304654c1fc8SKrishna Kanth Reddy} 305654c1fc8SKrishna Kanth Reddy 306654c1fc8SKrishna Kanth Reddy# SPDK 307654c1fc8SKrishna Kanth Reddyfunction cross_compile_spdk() { 308654c1fc8SKrishna Kanth Reddy cd $SPDK_DIR 309654c1fc8SKrishna Kanth Reddy 310654c1fc8SKrishna Kanth Reddy # Build SPDK libraries and binaries 311654c1fc8SKrishna Kanth Reddy echo -e "Building SPDK libraries and binaries..." 312654c1fc8SKrishna Kanth Reddy 313654c1fc8SKrishna Kanth Reddy CC=aarch64-none-linux-gnu-gcc CXX=aarch64-none-linux-gnu-g++ LD=aarch64-none-linux-gnu-ld CFLAGS+=-I$DPDK_DIR/aarch64-build-gcc/include ./configure --cross-prefix=aarch64-none-linux-gnu --without-vhost --with-dpdk=$DPDK_DIR/aarch64-build-gcc --target-arch=armv8-a 314654c1fc8SKrishna Kanth Reddy 315654c1fc8SKrishna Kanth Reddy make -j 316654c1fc8SKrishna Kanth Reddy} 317654c1fc8SKrishna Kanth Reddy 318654c1fc8SKrishna Kanth Reddymkdir -p $CROSS_COMPILE_DIR 319654c1fc8SKrishna Kanth Reddy 320654c1fc8SKrishna Kanth Reddyget_cc_toolchain 321654c1fc8SKrishna Kanth Reddy 322654c1fc8SKrishna Kanth Reddycross_compile_packages=(numa uuid crypto_ssl libaio ncurses cunit isal dpdk spdk) 323654c1fc8SKrishna Kanth Reddy 3246e7b3e4cSSebastian Brzezinkafor index in "${cross_compile_packages[@]}"; do 325654c1fc8SKrishna Kanth Reddy cross_compile_$index 326654c1fc8SKrishna Kanth Reddydone 327