| #!/bin/bash |
| |
| set -o errtrace |
| trap 'echo Fatal error: script $0 aborting at line $LINENO, command \"$BASH_COMMAND\" returned $?; exit 1' ERR |
| |
| # Build agnostic variables |
| readonly LOCAL_PATH=external/nss |
| |
| if [ ! -d "${LOCAL_PATH}" ]; then |
| echo "Must be run from Eureka root" |
| exit 1 |
| fi |
| |
| readonly PREBUILT_DIR=${LOCAL_PATH}/prebuilt |
| |
| export CURDIR=${PWD} |
| |
| export NSS_SRC_TAR_GZ=${LOCAL_PATH}/nss-3.26-with-nspr-4.12.tar.gz |
| export NSS_TOP_DIR=nss-3.26 |
| |
| readonly GENERIC_CFLAGS="\ |
| -Wa,--noexecstack \ |
| -Werror=format-security \ |
| -fno-short-enums \ |
| -D_FORTIFY_SOURCE=2 \ |
| -fPIC \ |
| -Wno-psabi \ |
| -mthumb-interwork \ |
| -Wall \ |
| -Wno-unused \ |
| -Winit-self \ |
| -Wpointer-arith \ |
| -Werror=return-type \ |
| -Werror=non-virtual-dtor \ |
| -Werror=address \ |
| -Werror=sequence-point \ |
| -fgcse-after-reload \ |
| -frerun-cse-after-loop \ |
| -frename-registers \ |
| -fomit-frame-pointer \ |
| -fstrict-aliasing" |
| |
| export TARGET_LDFLAGS="\ |
| -static-libstdc++ \ |
| -static-libgcc \ |
| -Wl,-z,noexecstack \ |
| -Wl,-z,relro,-z,now \ |
| -Wl,--hash-style=both \ |
| -ldl \ |
| -lc \ |
| -lrt \ |
| -lpthread" |
| |
| |
| # Set build specific variables and execute build script |
| build_nss() { |
| DEVICE_TYPE=$1 |
| export TARGET_ARCH=$2 |
| SYSROOT_SOURCE=$3 |
| export TARGET_CC=$4 |
| export TARGET_AR=$5 |
| |
| export TARGET_CFLAGS="${GENERIC_CFLAGS} $6" |
| |
| |
| export TARGET_OUT=${LOCAL_PATH}/out/${DEVICE_TYPE} |
| export HOST_OUT=${LOCAL_PATH}/out/host |
| TARGET_SYSROOT=${TARGET_OUT}/build_sysroot |
| export INSTALL_SYSROOT=${PREBUILT_DIR}/${DEVICE_TYPE}/files |
| |
| mkdir -p ${HOST_OUT} ${TARGET_SYSROOT} |
| |
| # Install the sysroot |
| rsync -a ${SYSROOT_SOURCE}/ ${TARGET_SYSROOT} |
| |
| # Update the sysroot |
| rsync -a ${PREBUILT_DIR}/${DEVICE_TYPE}/sysroot/ ${TARGET_SYSROOT} |
| |
| ${LOCAL_PATH}/build.sh |
| } |
| |
| readonly armv7a_sysroot=prebuilt/toolchain/armv7a/usr/armv7a-cros-linux-gnueabi |
| readonly armv7a_CC=prebuilt/toolchain/armv7a/bin/armv7a-cros-linux-gnueabi-gcc |
| readonly armv7a_AR=prebuilt/toolchain/armv7a/bin/armv7a-cros-linux-gnueabi-ar |
| readonly armv7a_ARCH=arm |
| readonly armv7a_CFLAGS=${GENERIC_CFLAGS} |
| |
| build_nss armv7-a-neon arm ${armv7a_sysroot} ${armv7a_CC} ${armv7a_AR} \ |
| "${armv7a_CFLAGS} -mfpu=neon" |
| |
| build_nss armv7-a arm ${armv7a_sysroot} ${armv7a_CC} ${armv7a_AR} \ |
| ${armv7a_CFLAGS} |
| |
| build_nss armv8-a-neon arm ${armv7a_sysroot} ${armv7a_CC} ${armv7a_AR} \ |
| "${armv7a_CFLAGS} -march=armv8-a -mfpu=crypto-neon-fp-armv8" |