#! /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
# 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