blob: 0de474df6a56ad269d0c66c4f152fd64a969c46b [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
set -xe
ncpus=$(getconf _NPROCESSORS_ONLN || echo 2)
DEBUG=0
PNACL=1
NACLSDK_VERSION=49.0.2623.87
WEBPORTS_REVISION=${NACLSDK_VERSION%%.*}
CDS_ROOT="https://commondatastorage.googleapis.com"
SDK_ROOT="$CDS_ROOT/nativeclient-mirror/nacl/nacl_sdk"
NACL_SDK="$SDK_ROOT/$NACLSDK_VERSION/naclsdk_linux.tar.bz2"
for i in $@; do
case $i in
"--debug")
DEBUG=1
;;
"--no-pnacl")
PNACL=0
;;
*)
echo "usage: $0 [--no-pnacl] [--debug]"
exit 1
;;
esac
done
cd "$(dirname "$0")"
mkdir -p output
if [[ ($NACL_SDK_ROOT == "") || !(-d $NACL_SDK_ROOT) ]]; then
pushd output
if [[ !(-f naclsdk_linux.tar.bz2) || !(-d naclsdk) ]]; then
rm -rf naclsdk_linux.tar.bz2 nacl_sdk && mkdir naclsdk
wget "$NACL_SDK"
tar xjf naclsdk_linux.tar.bz2 -C naclsdk
fi
export NACL_SDK_ROOT=$(echo $PWD/naclsdk/pepper_*)
popd
fi
if [[ ($WEB_PORTS == "") || !(-d $WEB_PORTS) ]]; then
pushd output
if [[ !(-d webports/src) ]]; then
rm -rf webports && mkdir webports
cd webports
gclient config --name=src https://chromium.googlesource.com/webports.git
gclient sync --jobs=8 -r src@pepper_$WEBPORTS_REVISION
cd ..
fi
export WEB_PORTS=$PWD/webports
popd
fi
build() {
pushd $WEB_PORTS/src
NACL_ARCH=$1 TOOLCHAIN=$2 make openssl zlib jsoncpp
popd
pushd output
if [[ !(-f libopenssh-$1.a) ]]; then
NACL_ARCH=$1 TOOLCHAIN=$2 ../nacl-openssh.sh
fi
popd
}
if [[ $PNACL == 1 ]]; then
build "pnacl" "pnacl"
else
build "i686" "glibc"
build "x86_64" "glibc"
fi
if [[ $DEBUG == 1 ]]; then
BUILD_ARGS="CXXFLAGS=-g -O0 -DDEBUG"
tarname="debug.tar"
else
BUILD_ARGS="CXXFLAGS=-g -O2 -DNDEBUG"
tarname="release.tar"
fi
if [[ $PNACL == 1 ]]; then
readonly DEFAULT_TARGET=all_newlib
else
readonly DEFAULT_TARGET=all_glibc
fi
make clean && make -j${ncpus} "$BUILD_ARGS" $DEFAULT_TARGET
cd output
mkdir -p hterm/plugin/docs/
cp *.[0-9].html hterm/plugin/docs/
if [[ $PNACL == 1 ]]; then
rm -rf hterm/plugin/pnacl
mkdir -p hterm/plugin/pnacl
cp -f ../ssh_client_newlib.nmf hterm/plugin/pnacl/ssh_client.nmf
cp -f ssh_client_nl_x86_32.nexe hterm/plugin/pnacl/
cp -f ssh_client_nl_x86_64.nexe hterm/plugin/pnacl/
cp -f ssh_client_nl_arm.nexe hterm/plugin/pnacl/
else
rm -rf hterm/plugin/nacl
mkdir -p hterm/plugin/nacl
cp -f ../ssh_client.nmf hterm/plugin/nacl
GLIBC_VERSION=`ls \
$NACL_SDK_ROOT/toolchain/linux_x86_glibc/x86_64-nacl/lib32/libc.so.* \
| sed s/.*libc.so.//`
sed -i s/xxxxxxxx/$GLIBC_VERSION/ hterm/plugin/nacl/ssh_client.nmf
cp -f ssh_client_x86_32.nexe \
hterm/plugin/nacl/ssh_client_x86_32.nexe
cp -f ssh_client_x86_64.nexe \
hterm/plugin/nacl/ssh_client_x86_64.nexe
mkdir hterm/plugin/nacl/lib32
mkdir hterm/plugin/nacl/lib64
LIBS="runnable-ld.so libstdc++.so.6 libgcc_s.so.1 libpthread.so.* \
libresolv.so.* libdl.so.* libnsl.so.* libm.so.* libc.so.*"
for i in $LIBS; do
cp -f $NACL_SDK_ROOT/toolchain/linux_x86_glibc/x86_64-nacl/lib32/$i \
hterm/plugin/nacl/lib32/
cp -f $NACL_SDK_ROOT/toolchain/linux_x86_glibc/x86_64-nacl/lib64/$i \
hterm/plugin/nacl/lib64/
done
LIBS="libppapi_cpp.so libppapi_cpp_private.so libjsoncpp.so"
for i in $LIBS; do
cp -f $NACL_SDK_ROOT/lib/glibc_x86_32/Release/$i \
hterm/plugin/nacl/lib32/
cp -f $NACL_SDK_ROOT/lib/glibc_x86_64/Release/$i \
hterm/plugin/nacl/lib64/
done
LIBS="libz.so.1 libcrypto.so.1.0.0"
for i in $LIBS; do
cp -f $NACL_SDK_ROOT/toolchain/linux_x86_glibc/i686-nacl/usr/lib/$i \
hterm/plugin/nacl/lib32/
cp -f $NACL_SDK_ROOT/toolchain/linux_x86_glibc/x86_64-nacl/usr/lib/$i \
hterm/plugin/nacl/lib64/
done
fi
tar cf "${tarname}" hterm/plugin/ *.pexe *.dbg.nexe
if [[ -f ../ssh_client.pem ]]; then
/opt/google/chrome/chrome --pack-extension=hterm \
--pack-extension-key=../ssh_client.pem
fi