|
- #!/bin/bash
-
- set -ex
-
- BUILD_DIR=${TRAVIS_BUILD_DIR}
-
- mkdir -p "${DEPENDENCY_DIR}" && cd "${DEPENDENCY_DIR}"
-
-
- # --- CMake
- CMAKE_INSTALLER=install-cmake.sh
-
- if [[ ! -f ${CMAKE_INSTALLER} ]]
- then
- curl -sSL https://cmake.org/files/v3.8/cmake-3.8.2-Linux-x86_64.sh -o ${CMAKE_INSTALLER}
- chmod +x ${CMAKE_INSTALLER}
- fi
-
- sudo ./${CMAKE_INSTALLER} --prefix=/usr/local --skip-license
- cmake --version
-
-
- cd ${DEPENDENCY_DIR}
-
-
- # --- LibC++
- #if [[ "${CXX}" = clang* ]]
- #then
- # if [[ ! -d "${DEPENDENCY_DIR}/llvm-source" ]]
- # then
- # LLVM_RELEASE=release_50
- # git clone --depth=1 -b ${LLVM_RELEASE} https://github.com/llvm-mirror/llvm.git llvm-source
- # git clone --depth=1 -b ${LLVM_RELEASE} https://github.com/llvm-mirror/libcxx.git llvm-source/projects/libcxx
- # git clone --depth=1 -b ${LLVM_RELEASE} https://github.com/llvm-mirror/libcxxabi.git llvm-source/projects/libcxxabi
- # fi
- #
- # mkdir -p build && cd build
- #
- # cmake -DCMAKE_C_COMPILER=${CC} \
- # -DCMAKE_CXX_COMPILER=${CXX} \
- # -DCMAKE_BUILD_TYPE=RelWithDebInfo \
- # -DCMAKE_INSTALL_PREFIX=/usr \
- # -DLIBCXX_ABI_UNSTABLE=ON \
- # ../llvm-source
- # make cxx -j4
- #
- # sudo make install-cxxabi install-cxx
- # rm -rf *
- #fi
-
- # source: https://github.com/ericniebler/range-v3
-
- TRUNK_VERSION="5.*"
-
- set -e
-
- # The pattern of clang --version is: clang version X.Y.Z (sometimes, see below).
- COMPILER_VERSION_OUTPUT="$($CXX --version)"
- arr=(${COMPILER_VERSION_OUTPUT// / })
-
- COMPILER="${arr[0]}"
- VERSION="${arr[2]}"
-
- case $COMPILER in
- "clang")
- # Some Ubuntu clang builds are advertised as "just clang", but the
- # Version still follows the pattern: 3.6.2-svn240577-1~exp1
- # echo "Compiler is clang :)"
- arr2=(${VERSION//-/ })
- VERSION="${arr2[0]}"
- ;;
- "Ubuntu")
- # Ubuntu renames _some_ (not all) of its clang compilers, the pattern of
- # clang --version is then:
- # Ubuntu clang version 3.6.2-svn240577-1~exp1
- COMPILER="${arr[1]}"
- VERSION="${arr[3]}"
- arr2=(${VERSION//-/ })
- VERSION="${arr2[0]}"
- ;;
- *)
- echo "case did not match: compiler: ${COMPILER}"
- exit 1
- ;;
- esac
-
- if [ ${COMPILER} != "clang" ]; then
- echo "Error: trying to install libc++ for a compiler that is not clang: ${COMPILER}"
- exit 1
- fi
-
- if [ -z ${VERSION+x} ]; then
- echo "libc++ version is not set. To set the libc++ version: ./install_libcxx.sh -v X.Y.Z"
- exit 4
- fi
-
- if [[ ${VERSION} == $TRUNK_VERSION ]]; then
- echo "Fetching libc++ and libc++abi tip-of-trunk..."
-
- # Checkout LLVM sources
- git clone --depth=1 https://github.com/llvm-mirror/llvm.git llvm-source
- git clone --depth=1 https://github.com/llvm-mirror/libcxx.git llvm-source/projects/libcxx
- git clone --depth=1 https://github.com/llvm-mirror/libcxxabi.git llvm-source/projects/libcxxabi
- else
- echo "Fetching libc++/libc++abi version: ${VERSION}..."
- LLVM_URL="http://releases.llvm.org/${VERSION}/llvm-${VERSION}.src.tar.xz"
- LIBCXX_URL="http://releases.llvm.org/${VERSION}/libcxx-${VERSION}.src.tar.xz"
- LIBCXXABI_URL="http://releases.llvm.org/${VERSION}/libcxxabi-${VERSION}.src.tar.xz"
- curl -O $LLVM_URL
- curl -O $LIBCXX_URL
- curl -O $LIBCXXABI_URL
-
- mkdir llvm-source
- mkdir llvm-source/projects
- mkdir llvm-source/projects/libcxx
- mkdir llvm-source/projects/libcxxabi
-
- tar -xf llvm-${VERSION}.src.tar.xz -C llvm-source --strip-components=1
- tar -xf libcxx-${VERSION}.src.tar.xz -C llvm-source/projects/libcxx --strip-components=1
- tar -xf libcxxabi-${VERSION}.src.tar.xz -C llvm-source/projects/libcxxabi --strip-components=1
- fi
-
- mkdir llvm-build
- cd llvm-build
-
- # - libc++ versions < 4.x do not have the install-cxxabi and install-cxx targets
- # - only ASAN is enabled for clang/libc++ versions < 4.x
- if [[ $VERSION == *"3."* ]]; then
- cmake -DCMAKE_C_COMPILER=${CC} -DCMAKE_CXX_COMPILER=${CXX} \
- -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr \
- ../llvm-source
- if [[ $SANITIZER == "Address;Undefined" ]]; then
- ASAN_FLAGS="-fsanitize=address"
- cmake -DCMAKE_CXX_FLAGS="${ASAN_FLAGS}" -DCMAKE_EXE_LINKER_FLAGS="${ASAN_FLAGS}" ../llvm-source
- fi
- make cxx -j2 VERBOSE=0
- sudo cp -r lib/* /usr/lib/
- sudo cp -r include/c++ /usr/include/
- else
- cmake -DCMAKE_C_COMPILER=${CC} -DCMAKE_CXX_COMPILER=${CXX} \
- -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr \
- -DLIBCXX_ABI_UNSTABLE=ON \
- -DLLVM_USE_SANITIZER=${SANITIZER} \
- ../llvm-source
- make cxx -j2 VERBOSE=0
- sudo make install-cxxabi install-cxx
- fi
-
-
-
-
- cd ${BUILD_DIR}
|