Merge pull request #1300 from PeterDaveHello/clang-llvm
[New] `nvm install -s`: Use clang as C/C++ compiler if detected Fixes #902
commit
ab6be9c0c1
|
@ -17,7 +17,10 @@ before_install:
|
|||
- $SHELL --version 2> /dev/null || dpkg -s $SHELL 2> /dev/null || which $SHELL
|
||||
- curl --version
|
||||
- wget --version
|
||||
- clang --version
|
||||
- clang++ --version
|
||||
- if [ -n "${SHELLCHECK-}" ]; then sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 575159689BEFB442 && echo 'deb http://download.fpcomplete.com/ubuntu precise main' | sudo tee /etc/apt/sources.list.d/fpco.list && sudo apt-get update && sudo apt-get install stack bc -y && stack setup && stack install ShellCheck && shellcheck --version ; fi
|
||||
- if [ -z "${SHELLCHECK-}" ]; then wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && echo -e "deb http://apt.llvm.org/precise/ llvm-toolchain-precise main\ndeb http://apt.llvm.org/precise/ llvm-toolchain-precise-3.8 main" | sudo tee /etc/apt/sources.list.d/clang.list && sudo apt-get update && sudo apt-get install clang-3.8 lldb-3.8 -y --force-yes && sudo ln -sf /usr/bin/clang-3.8 /usr/bin/clang && sudo ln -sf /usr/bin/clang++-3.8 /usr/bin/clang++ && clang --version ; fi
|
||||
install:
|
||||
- (mkdir /tmp/urchin && cd /tmp/urchin && curl -s "$(curl -s https://registry.npmjs.com/urchin | grep -Eo '"tarball":\s*"[^"]+"' | tail -n 1 | awk -F\" '{ print $4 }')" -O && tar -x -f urchin*)
|
||||
- chmod +x /tmp/urchin/package/urchin
|
||||
|
|
10
nvm.sh
10
nvm.sh
|
@ -192,6 +192,10 @@ nvm_rc_version() {
|
|||
fi
|
||||
}
|
||||
|
||||
nvm_clang_version() {
|
||||
clang --version | command awk '{ if ($2 == "version") print $3; else if ($3 == "version") print $4 }' | command sed 's/-.*$//g'
|
||||
}
|
||||
|
||||
nvm_version_greater() {
|
||||
command awk 'BEGIN {
|
||||
if (ARGV[1] == "" || ARGV[2] == "") exit(1)
|
||||
|
@ -1854,6 +1858,10 @@ nvm_install_source() {
|
|||
elif [ "${NVM_OS}" = 'aix' ]; then
|
||||
make='gmake'
|
||||
fi
|
||||
if nvm_has "clang++" && nvm_has "clang" && nvm_version_greater_than_or_equal_to nvm_clang_version 3.5 ; then
|
||||
nvm_echo "Clang v3.5+ detected! Use Clang as c/c++ compiler!"
|
||||
MAKE_CXX='CC=clang CXX=clang++'
|
||||
fi
|
||||
|
||||
local tar_compression_flag
|
||||
tar_compression_flag='z'
|
||||
|
@ -3141,7 +3149,7 @@ nvm() {
|
|||
nvm_is_iojs_version nvm_is_alias \
|
||||
nvm_ls_remote nvm_ls_remote_iojs nvm_ls_remote_index_tab \
|
||||
nvm_ls nvm_remote_version nvm_remote_versions \
|
||||
nvm_install_binary \
|
||||
nvm_install_binary nvm_clang_version \
|
||||
nvm_get_mirror nvm_get_download_slug nvm_download_artifact \
|
||||
nvm_install_source nvm_check_file_permissions \
|
||||
nvm_print_versions nvm_compute_checksum nvm_checksum \
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
#!/bin/sh
|
||||
|
||||
cleanup () {
|
||||
unset -f die
|
||||
}
|
||||
|
||||
die () { echo -e "$@" ; cleanup ; exit 1; }
|
||||
|
||||
if type "clang" > /dev/null 2>&1 ; then
|
||||
clang_exec="$(type "clang")"
|
||||
sudo rm -rf "${clang_exec}"
|
||||
fi
|
||||
if type "clang++" > /dev/null 2>&1 ; then
|
||||
clangxx_exec="$(type "clang++")"
|
||||
sudo rm -rf "${clangxx_exec}"
|
||||
fi
|
||||
|
||||
NVM_ENV=testing \. ../../../nvm.sh
|
||||
|
||||
clang() {
|
||||
if [ "$1" = "--version" ]; then
|
||||
echo "${VERSION_MESSAGE}"
|
||||
fi
|
||||
}
|
||||
|
||||
assert_version_is() {
|
||||
if [ "${1}" != "${2}" ]; then
|
||||
die "Expected ${2}, got ${1}, origin version message:\n${VERSION_MESSAGE}"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
CLANG_VERSION_ON_DEBIAN_JESSIE="Debian clang version 3.5.0-10 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
|
||||
Target: x86_64-pc-linux-gnu
|
||||
Thread model: posix"
|
||||
|
||||
CLANG_VERSION_ON_UBUNTU_TRUSTY="Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4)
|
||||
Target: x86_64-pc-linux-gnu
|
||||
Thread model: posix"
|
||||
|
||||
CLANG_VERSION_ON_ARCHLINUX="clang version 3.9.0 (tags/RELEASE_390/final)
|
||||
Target: x86_64-unknown-linux-gnu
|
||||
Thread model: posix
|
||||
InstalledDir: /usr/sbin"
|
||||
|
||||
CLANG_VERSION_ON_FREEBSD="FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
|
||||
Target: x86_64-unknown-freebsd10.3
|
||||
Thread model: posix"
|
||||
|
||||
VERSION_MESSAGE="${CLANG_VERSION_ON_DEBIAN_JESSIE}"
|
||||
assert_version_is "$(nvm_clang_version)" "3.5.0"
|
||||
|
||||
VERSION_MESSAGE="${CLANG_VERSION_ON_UBUNTU_TRUSTY}"
|
||||
assert_version_is "$(nvm_clang_version)" "3.4"
|
||||
|
||||
VERSION_MESSAGE="${CLANG_VERSION_ON_ARCHLINUX}"
|
||||
assert_version_is "$(nvm_clang_version)" "3.9.0"
|
||||
|
||||
VERSION_MESSAGE="${CLANG_VERSION_ON_FREEBSD}"
|
||||
assert_version_is "$(nvm_clang_version)" "3.4.1"
|
||||
|
||||
cleanup
|
Loading…
Reference in New Issue