Skip to main content

run from a scratch directory

#! /bin/sh

# Clang 3.4.2 Recipe
#  run from a scratch directory

# LLDB does not compile on OS X (how ironic). On Linux, be
#   sure to have swig, python-dev and libedit-dev installed.

# For LLDB and the missing makefile, see
#   http://stackoverflow.com/questions/24923650/undefined-symbols-systemruntimemacosxinitialize-and-systemruntimemacosxtermi

# Fetch

if [ ! -e llvm-3.4.2.src.tar.gz ]; then
  wget http://llvm.org/releases/3.4.2/llvm-3.4.2.src.tar.gz
fi

if [ ! -e cfe-3.4.2.src.tar.gz ]; then
  wget http://llvm.org/releases/3.4.2/cfe-3.4.2.src.tar.gz
fi

if [ ! -e compiler-rt-3.4.src.tar.gz ]; then
  wget http://llvm.org/releases/3.4/compiler-rt-3.4.src.tar.gz
fi

if [ ! -e lldb-3.4.src.tar.gz ]; then
  wget http://llvm.org/releases/3.4/lldb-3.4.src.tar.gz
fi

if [ ! -e clang-tools-extra-3.4.src.tar.gz ]; then
  wget http://llvm.org/releases/3.4/clang-tools-extra-3.4.src.tar.gz
fi

# Cleanup

rm -rf llvm build

# LLVM
tar xvf llvm-3.4.2.src.tar.gz
mv llvm-3.4.2.src/ llvm

# Clang Front End
cd llvm/tools
tar xvf ../../cfe-3.4.2.src.tar.gz
mv cfe-3.4.2.src clang
cd ../../

# LLDB
cd llvm/tools
tar xvf ../../lldb-3.4.src.tar.gz
mv lldb-3.4/ lldb
cd ../../

# Extra Tools
cd llvm/tools/clang/tools/
tar xvf ../../../../clang-tools-extra-3.4.src.tar.gz
mv clang-tools-extra-3.4.src extra
cd ../../../../

# Compiler RT
cd llvm/projects
tar xvf ../../compiler-rt-3.4.src.tar.gz
mv compiler-rt-3.4/ compiler-rt
cd ../../

# Determine if Apple
IS_DARWIN=`uname -s | egrep -i -c "Darwin"`
if [ $IS_DARWIN -ne 0 ]; then
  OTHER_OPTIONS=" --enable-libcpp"
fi

# Fix LLDB on Apple
if [ $IS_DARWIN -ne 0 ]; then
  cp Missing-Makefile llvm/tools/lldb/source/Plugins/SystemRuntime/MacOSX/Makefile
  chmod a+x llvm/tools/lldb/source/Plugins/SystemRuntime/MacOSX/Makefile

  COUNT=`cat llvm/tools/lldb/lib/Makefile | egrep -i -c lldbPluginSystemRuntimeMacOSX`

  if [ $COUNT -eq 0 ]; then
    echo "Patching makefile with lldbPluginSystemRuntimeMacOSX"
    sed -i '' "s/lldbPluginProcessMachCore.a/lldbPluginProcessMachCore.a lldbPluginSystemRuntimeMacOSX.a/" llvm/tools/lldb/lib/Makefile
    sed -i '' '\|DIRS += Process/mach-core|a\
    DIRS += SystemRuntime/MacOSX\
    ' llvm/tools/lldb/source/Plugins/Makefile
  else
    echo "Makefile has lldbPluginSystemRuntimeMacOSX recipe"
  fi
fi

# Build
mkdir -p build
cd build
../llvm/configure --enable-optimized --enable-cxx11 $OTHER_OPTIONS --prefix=/usr/local
make -j2
sudo make install

# ****************************************
# ****************************************

# Install does not install scan-build and scan-view
# Perform the copy, and/or put them on-path

#sudo cp llvm/projects/compiler-rt/lib/asan/scripts/asan_symbolize.py /usr/local/bin
#sudo 2to3 -w /usr/local/bin/asan_symbolize.py

#sudo mkdir /usr/local/bin/scan-build
#sudo cp -r llvm/tools/clang/tools/scan-build /usr/local/bin

#sudo mkdir /usr/local/bin/scan-view
#sudo cp -r llvm/tools/clang/tools/scan-view /usr/local/bin