blob: 9441140df6cb00e0dc55a8ebb163d76d6dccc324 [file] [log] [blame] [edit]
#!/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"