Files
filament/build/linux/ci-common.sh
Romain Guy d780e8b2a0 Add link_library(libc++.a) (#1245)
* Add link_library(libc++.a)

* Always link statically against libc++ and libc++abi on Linux
2019-05-30 11:49:03 -07:00

101 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# version of clang we want to use
CLANG_VERSION=7
# version of libcxx and libcxxabi we want to use
CXX_VERSION=7.0.0
# version of CMake to use instead of the default one
CMAKE_VERSION=3.13.4
# version of ninja to use
NINJA_VERSION=1.8.2
# Steps specific to our CI environment
# CI runs on Ubuntu 14.04, we need to install clang-7.0 and the
# appropriate libc++ ourselves
if [[ "$KOKORO_BUILD_ID" ]]; then
sudo ln -s /usr/include/x86_64-linux-gnu/asm /usr/include/asm
if [[ "$FILAMENT_ANDROID_CI_BUILD" ]]; then
# Update NDK
yes | $ANDROID_HOME/tools/bin/sdkmanager "ndk-bundle" > /dev/null
# Install CMake
mkdir -p cmake
cd cmake
sudo wget https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-Linux-x86_64.sh
sudo chmod +x ./cmake-$CMAKE_VERSION-Linux-x86_64.sh
sudo ./cmake-$CMAKE_VERSION-Linux-x86_64.sh --skip-license > /dev/null
sudo update-alternatives --install /usr/bin/cmake cmake `pwd`/bin/cmake 1000 --force
cd ..
fi
# Install clang
# This may or may not be needed...
# sudo apt-key adv --keyserver apt.llvm.org --recv-keys 15CF4D18AF4F7421
sudo apt-add-repository "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-$CLANG_VERSION main"
sudo apt-get update -y
sudo apt-get --assume-yes --force-yes install clang-$CLANG_VERSION
mkdir -p clang
cd clang
# download LLVM sources
curl -O http://releases.llvm.org/$CXX_VERSION/llvm-$CXX_VERSION.src.tar.xz
tar xf llvm-$CXX_VERSION.src.tar.xz
mv llvm-$CXX_VERSION.src llvm_src
# download libc++ sources
curl -O http://releases.llvm.org/$CXX_VERSION/libcxx-$CXX_VERSION.src.tar.xz
tar xf libcxx-$CXX_VERSION.src.tar.xz
mv libcxx-$CXX_VERSION.src llvm_src/projects/libcxx
# download libc++abi sources
curl -O http://releases.llvm.org/$CXX_VERSION/libcxxabi-$CXX_VERSION.src.tar.xz
tar xf libcxxabi-$CXX_VERSION.src.tar.xz
mv libcxxabi-$CXX_VERSION.src llvm_src/projects/libcxxabi
mkdir -p build
cd build
export CC=/usr/bin/clang-$CLANG_VERSION
export CXX=/usr/bin/clang++-$CLANG_VERSION
# prepare makefiles
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DLIBCXX_ENABLE_RTTI=YES \
-DLIBCXX_ENABLE_EXCEPTIONS=YES \
-DLIBCXX_USE_COMPILER_RT=NO \
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=YES \
-DLIBCXXABI_USE_COMPILER_RT=NO \
../llvm_src
# compile libraries
make -j cxx
make -j cxxabi
# install libraries
(cd projects/libcxx && sudo make -j install)
(cd projects/libcxxabi && sudo make -j install)
# install embree 3+ to test buildability of the light baking pipeline
sudo apt-get install -y alien libtbb-dev
curl -LO https://github.com/embree/embree/releases/download/v3.5.2/embree-3.5.2.x86_64.rpm.tar.gz
tar xzf embree-3.5.2.x86_64.rpm.tar.gz
sudo alien embree3-devel-3.5.2-1.noarch.rpm
sudo alien embree3-lib-3.5.2-1.x86_64.rpm
sudo dpkg -i embree3-lib_3.5.2-2_amd64.deb
sudo dpkg -i embree3-devel_3.5.2-2_all.deb
cd ../..
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
fi
wget -q https://github.com/ninja-build/ninja/releases/download/v$NINJA_VERSION/ninja-linux.zip
unzip -q ninja-linux.zip
export PATH="$PWD:$PATH"