2013-02-06 11:16:49 -05:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
function cmake_install {
|
|
|
|
if [[ `uname -s` == "Darwin" ]]; then
|
|
|
|
homebrew_cmake_install
|
|
|
|
else
|
|
|
|
linux_cmake_install
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function homebrew_cmake_install {
|
|
|
|
if [[ `which brew &> /dev/null` ]]; then
|
|
|
|
brew install cmake
|
|
|
|
else
|
2013-02-07 21:12:42 -05:00
|
|
|
echo "Homebrew was not found installed in your system."
|
|
|
|
echo "Go to http://mxcl.github.com/homebrew/ and follow the instructions."
|
|
|
|
echo "Or install CMake somehow and retry."
|
2013-02-06 11:16:49 -05:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2013-02-17 12:01:54 -05:00
|
|
|
function python_finder {
|
|
|
|
python_library="-DPYTHON_LIBRARY="
|
|
|
|
python_include="-DPYTHON_INCLUDE_DIR="
|
|
|
|
|
|
|
|
# The CMake 'FindPythonLibs' Module does not work properly.
|
|
|
|
# So we are forced to do its job for it.
|
|
|
|
python_prefix=$(python-config --prefix | sed 's/^[ \t]*//')
|
|
|
|
if [ -f "${python_prefix}/Python" ]; then
|
|
|
|
python_library+="${python_prefix}/Python"
|
|
|
|
python_include+="${python_prefix}/Headers"
|
|
|
|
else
|
2013-02-17 13:39:17 -05:00
|
|
|
which_python=$(python -c 'import sys;print(sys.version)' | sed 's/^[ \t]*//')
|
|
|
|
which_python="python${which_python:0:3}"
|
2013-02-17 13:47:14 -05:00
|
|
|
lib_python="${python_prefix}/lib/lib${which_python}"
|
2013-02-17 12:01:54 -05:00
|
|
|
if [ -f "${lib_python}.a" ]; then
|
|
|
|
python_library+="${lib_python}.a"
|
|
|
|
else
|
|
|
|
python_library+="${lib_python}.dylib"
|
|
|
|
fi
|
|
|
|
python_include+="${python_prefix}/include/${which_python}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "${python_library} ${python_include}"
|
|
|
|
}
|
|
|
|
|
2013-02-06 11:16:49 -05:00
|
|
|
function install {
|
|
|
|
ycm_dir=`pwd`
|
2013-02-07 22:19:55 -05:00
|
|
|
build_dir=`mktemp -d -t ycm_build.XXXX`
|
2013-02-06 11:16:49 -05:00
|
|
|
pushd $build_dir
|
2013-02-17 14:01:31 -05:00
|
|
|
|
|
|
|
if [[ `uname -s` == "Darwin" ]]; then
|
|
|
|
cmake -G "Unix Makefiles" $(python_finder) $1 . $ycm_dir/cpp
|
|
|
|
else
|
|
|
|
cmake -G "Unix Makefiles" $1 . $ycm_dir/cpp
|
|
|
|
fi
|
|
|
|
|
2013-02-17 14:03:22 -05:00
|
|
|
make ycm_core
|
2013-02-06 11:16:49 -05:00
|
|
|
popd
|
|
|
|
}
|
|
|
|
|
|
|
|
function linux_cmake_install {
|
2013-02-07 21:12:42 -05:00
|
|
|
echo "Please install CMake using your package manager and retry."
|
2013-02-06 11:16:49 -05:00
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
2013-02-07 21:24:25 -05:00
|
|
|
function usage {
|
2013-02-07 21:12:42 -05:00
|
|
|
echo "Usage: $0 [--clang-completer]"
|
|
|
|
exit 0
|
2013-02-07 21:24:25 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
if [[ $# -gt 1 ]]; then
|
|
|
|
usage
|
2013-02-07 21:12:42 -05:00
|
|
|
fi
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
--clang-completer)
|
|
|
|
cmake_args='-DUSE_CLANG_COMPLETER=ON'
|
|
|
|
;;
|
2013-02-07 21:24:25 -05:00
|
|
|
'')
|
2013-02-07 21:12:42 -05:00
|
|
|
cmake_args=''
|
|
|
|
;;
|
2013-02-07 21:24:25 -05:00
|
|
|
*)
|
|
|
|
usage
|
|
|
|
;;
|
2013-02-07 21:12:42 -05:00
|
|
|
esac
|
|
|
|
|
2013-02-06 11:16:49 -05:00
|
|
|
if [[ ! -z `which cmake &> /dev/null` ]]; then
|
2013-02-07 21:12:42 -05:00
|
|
|
echo "CMake is required to build YouCompleteMe."
|
2013-02-06 11:16:49 -05:00
|
|
|
cmake_install
|
|
|
|
fi
|
2013-02-07 21:12:42 -05:00
|
|
|
install $cmake_args
|