summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/pal/tools/gen-buildsys-clang.sh35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/pal/tools/gen-buildsys-clang.sh b/src/pal/tools/gen-buildsys-clang.sh
index 15327d0574..92a92cd6d6 100755
--- a/src/pal/tools/gen-buildsys-clang.sh
+++ b/src/pal/tools/gen-buildsys-clang.sh
@@ -24,6 +24,39 @@ else
buildtype=$2
fi
+# Locate llvm
+# This can be a little complicated, because the common use-case of Ubuntu with
+# llvm-3.5 installed uses a rather unusual llvm installation with the version
+# number postfixed (i.e. llvm-ar-3.5), so we check for that first.
+desired_llvm_version=3.5
+locate_llvm_exec() {
+ if which $1-$desired_llvm_version > /dev/null 2>&1
+ then
+ echo $(which $1-$desired_llvm_version)
+ elif which $1 > /dev/null 2>&1
+ then
+ echo $(which $1)
+ else
+ exit 1
+ fi
+}
+llvm_ar=$(locate_llvm_exec llvm-ar)
+[[ $? -eq 0 ]] || { echo "Unable to locate llvm-ar"; exit 1; }
+llvm_link=$(locate_llvm_exec llvm-link)
+[[ $? -eq 0 ]] || { echo "Unable to locate llvm-link"; exit 1; }
+llvm_nm=$(locate_llvm_exec llvm-nm)
+[[ $? -eq 0 ]] || { echo "Unable to locate llvm-nm"; exit 1; }
+llvm_objdump=$(locate_llvm_exec llvm-objdump)
+[[ $? -eq 0 ]] || { echo "Unable to locate llvm-objdump"; exit 1; }
+llvm_ranlib=$(locate_llvm_exec llvm-ranlib)
+[[ $? -eq 0 ]] || { echo "Unable to locate llvm-ranlib"; exit 1; }
-cmake -DCMAKE_USER_MAKE_RULES_OVERRIDE=$1/src/pal/tools/clang-compiler-override.txt -D_CMAKE_TOOLCHAIN_PREFIX=llvm- -D_CMAKE_TOOLCHAIN_SUFFIX=-3.5 -DCMAKE_BUILD_TYPE=$buildtype $1
+cmake -DCMAKE_USER_MAKE_RULES_OVERRIDE=$1/src/pal/tools/clang-compiler-override.txt \
+ -DCMAKE_AR=$llvm_ar \
+ -DCMAKE_LINKER=$llvm_link \
+ -DCMAKE_NM=$llvm_nm \
+ -DCMAKE_OBJDUMP=$llvm_objdump \
+ -DCMAKE_RANLIB=$llvm_ranlib \
+ -DCMAKE_BUILD_TYPE=$buildtype \
+ $1