From 8006d7764486e87a6dc0e91a895584ed0e8c7aa4 Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Thu, 14 Feb 2013 14:49:29 +0000 Subject: [PATCH] Some fixed to build_clang.sh including ability to use libc++ --- scripts/build_clang.sh | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/scripts/build_clang.sh b/scripts/build_clang.sh index 9ed0c6d..9148ebb 100755 --- a/scripts/build_clang.sh +++ b/scripts/build_clang.sh @@ -1,19 +1,44 @@ #!/bin/sh +BUILD_DIR=${BUILD_DIR:-build} + +args() { + for flag in "$@"; do + case "$flag" in + --no-update) + NOUPDATE=1 + ;; + --use-libc++) + LIBCPP=1 + ;; + *) + echo Unknown parameter $flag + exit 1 + esac + shift + done +} +args "$@" + +LIBCPP_CXX_FLAGS="-std=c++11 -stdlib=libc++" +CXXFLAGS="${CXXFLAGS} ${LIBCPP:+$LIBCPP_CXX_FLAGS}" + # Default to Clang. if [ "$CC" == "gcc" ]; then CXX=g++ else CC=clang CXX=clang++ + CFLAGS="${CFLAGS} -fcolor-diagnostics" + CXXFLAGS="${CXXFLAGS} -fcolor-diagnostics" fi # Use the 'ninja' build tool by default, but allow 'make' for the non-ninja. if [ "$MAKE" == "make" ]; then - GENERATOR="-G 'Unix Makefiles'" + GENERATOR="Unix Makefiles" else MAKE="ninja" - GENERATOR="-G Ninja" + GENERATOR="Ninja" fi # If we don't have an LLVM directory, go get one. If we do, update it. @@ -22,7 +47,7 @@ if [ ! -d llvm ]; then cd llvm/tools git clone http://github.com/CTSRD-TESLA/clang cd ../../ -elif [ "$1" != "--no-update" ]; then +elif [ -z "$NOUPDATE" ]; then cd llvm git pull cd tools/clang @@ -31,16 +56,17 @@ elif [ "$1" != "--no-update" ]; then fi # Build out of tree. -mkdir -p build -cd build +mkdir -p "$BUILD_DIR" +cd "$BUILD_DIR" if [ -f CMakeCache.txt ]; then # CMake has already been run. No need to explicitly run it again: its # previously-generated makefiles will take care of that if needed. : else - cmake $GENERATOR \ + cmake -G "$GENERATOR" \ -D CMAKE_C_COMPILER=${CC} -D CMAKE_CXX_COMPILER=${CXX} \ + -D CMAKE_C_FLAGS="${CFLAGS}" -D CMAKE_CXX_FLAGS="${CXXFLAGS}" \ ../llvm fi