aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/build/common-functions
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build/common-functions')
-rw-r--r--scripts/build/common-functions211
1 files changed, 13 insertions, 198 deletions
diff --git a/scripts/build/common-functions b/scripts/build/common-functions
index 499b51b7..6d810d73 100644
--- a/scripts/build/common-functions
+++ b/scripts/build/common-functions
@@ -16,203 +16,18 @@ function git_clone_or_update() {
fi
}
-function to_upper() {
- echo "$1" | tr '[:lower:]' '[:upper:]'
-}
-
-function to_lower() {
- echo "$1" | tr '[:upper:]' '[:lower:]'
-}
-
-# This file is meant to be included by shell scripts
-# that need to do a sanitized build.
-
-# Users of this script can use this variable
-# to detect if a Sanitized build was enabled.
-IS_SANITIZED_BUILD=0
-
-# Remove ":" separator
-sanitizers=(${SANITIZER_BUILD//:/ })
-# Sort sanitizers
-IFS=$'\n' sorted_sanitizers=($(sort <<<"${sanitizers[*]}"))
-unset IFS
-
-# Set variables used by clients.
-## Build variables
-SANITIZER_CXX_FLAGS=""
-SANITIZER_C_FLAGS=""
-SANITIZER_LD_FLAGS=""
-# Docker_suffix
-SANITIZER_SUFFIX=""
-
-#
-for sanitizer in ${sorted_sanitizers[@]}; do
- # AddressSanitizer
- if [ "X${sanitizer}" == "Xaddress" ]; then
- echo "Using ASan"
- flags=" -fsanitize=address -fno-omit-frame-pointer -g"
- SANITIZER_CXX_FLAGS+=" ${flags}"
- SANITIZER_C_FLAGS+=" ${flags}"
- SANITIZER_LD_FLAGS+=" ${flags}"
- SANITIZER_SUFFIX+="_asan"
- IS_SANITIZED_BUILD=1
- continue
- fi
-
- # Undefined Behaviour Sanitizer
- if [ "X${sanitizer}" == "Xundefined" ]; then
- echo "Using UBSan"
- flags="-fsanitize=undefined -fno-omit-frame-pointer -g"
- SANITIZER_CXX_FLAGS+=" ${flags}"
- SANITIZER_C_FLAGS+=" ${flags}"
- SANITIZER_LD_FLAGS+=" ${flags} -lubsan -fuse-ld=gold"
- SANITIZER_SUFFIX+="_ubsan"
- IS_SANITIZED_BUILD=1
- continue
- fi
-
- # Undefined Behaviour Sanitizer
- if [ "X${sanitizer}" == "Xmemory" ]; then
- echo "Using Memory Sanitizer"
- if [[ "X${PACKAGED}" == "X1" ]]; then
- echo "simultanously memory sanitizer and packaged is not supported "
- exit 1
- fi
-
- SANITIZER_SUFFIX+="_memsan"
- SANITIZER_LLVM_UNINSTRUMENTED="${LLVM_BUILD}_uninstrumented"
- SANITIZER_LLVM_LIBCXX="${LLVM_BUILD}_libcxx"
-
- SANITIZER_C_COMPILER="${SANITIZER_LLVM_UNINSTRUMENTED}/bin/clang"
- SANITIZER_CXX_COMPILER="${SANITIZER_LLVM_UNINSTRUMENTED}/bin/clang++"
- SANITIZER_CMAKE_C_COMPILER="-DCMAKE_C_COMPILER=${SANITIZER_C_COMPILER}"
- SANITIZER_CMAKE_CXX_COMPILER="-DCMAKE_CXX_COMPILER=${SANITIZER_CXX_COMPILER}"
-
- MSAN_LINK_FLAGS="-lc++abi -Wl,--rpath=${SANITIZER_LLVM_LIBCXX}/lib -L${SANITIZER_LLVM_LIBCXX}/lib";
- MSAN_FLAGS="$MSAN_LINK_FLAGS -nostdinc++ \
- -isystem ${SANITIZER_LLVM_LIBCXX}/include \
- -isystem ${SANITIZER_LLVM_LIBCXX}/include/c++/v1 \
- -fsanitize=memory \
- -fsanitize-memory-track-origins \
- -w -fno-omit-frame-pointer -g";
-
- SANITIZER_CXX_FLAGS+="${MSAN_FLAGS} -stdlib=libc++"
- SANITIZER_C_FLAGS+="${MSAN_FLAGS}"
- SANITIZER_LD_FLAGS+="${MSAN_LINK_FLAGS}"
-
- IS_SANITIZED_BUILD=1
- continue
- fi
-
- echo "Unknown sanitizer: $sanitizer"
- exit 1
-done
-
-# This file is meant to be included by shell scripts
-# that need to retrieve llvm-specifi variables
-
-LLVM_VERSION_SHORT="${LLVM_VERSION/./}"
-LLVM_VERSION_MAJOR="${LLVM_VERSION/.*/}"
-LLVM_SUFFIX=""
-
-BuildMode=''
-
-# Build from source
-if [[ "${PACKAGED}x" == "1x" ]]; then
- LLVM_SUFFIX+="_packaged"
- set +e
- llvm_config_path=$(which llvm-config-${LLVM_VERSION})
- if [[ -e "${llvm_config_path}" ]]; then
- LLVM_BIN="$(llvm-config-${LLVM_VERSION} --bindir)"
- fi
- set -e
-else
- if [[ "${ENABLE_OPTIMIZED}" == "1" ]]; then
- LLVM_SUFFIX+="_O"
- BuildMode="Release"
- else
- LLVM_SUFFIX+="_NO"
- fi
-
- if [[ ("${ENABLE_DEBUG}" == "1") || ("${ENABLE_OPTIMIZED}" != "1") ]]; then
- LLVM_SUFFIX+="_D"
- [ -z "$BuildMode" ] && BuildMode="Debug" || BuildMode="$BuildMode+Debug"
- else
- LLVM_SUFFIX+="_ND"
- fi
-
- if [[ "${DISABLE_ASSERTIONS}" == "1" || -z "${DISABLE_ASSERTIONS}" ]]; then
- LLVM_SUFFIX+="_NA"
- else
- LLVM_SUFFIX+="_A"
- [ -z "$BuildMode" ] && BuildMode="Asserts" || BuildMode="$BuildMode+Asserts"
- fi
-
- if [[ "${REQUIRES_RTTI}" == "1" ]]; then
- LLVM_SUFFIX+="_RTTI"
- fi
-
- if [[ "${SANITIZER_SUFFIX}x" != "x" ]]; then
- LLVM_SUFFIX+="${SANITIZER_SUFFIX}"
- fi
-
- LLVM_BASE="${BASE}/llvm-${LLVM_VERSION_SHORT}"
- LLVM_BUILD="${LLVM_BASE}-build${LLVM_SUFFIX}"
- LLVM_INSTALL="${LLVM_BASE}-install${LLVM_SUFFIX}"
- LLVM_BIN="${LLVM_INSTALL}/bin"
- if [[ ${LLVM_VERSION_SHORT} -le 37 ]]; then
- LLVM_BUILDMODE="$BuildMode"
- LLVM_BUILD_BIN="${LLVM_BUILD}/${LLVM_BUILDMODE}/bin"
+function get_git_hash() {
+ local url="$1"
+ local branch="$2"
+ local commit_id=""
+
+ # List remote git branches and get the commit id of the branch
+ commit_id="$(git ls-remote -h "$url" |grep "$branch" | cut -d$'\t' -f 1)"
+
+ # If that doesn't work use the branch instead of the commit id
+ if [[ -z "${commit_id}" ]]; then
+ echo "${branch}"
else
- LLVM_BUILD_BIN="${LLVM_BUILD}/bin"
- fi
-fi
-
-# Generate the suffix used for the solver combination
-# Every solver needs to have a version explicitly specified
-SOLVER_SUFFIX=""
-
-# Remove ":" separator
-solvers=(${SOLVERS//:/ })
-
-# Sort solvers
-IFS=$'\n' sorted_solvers=($(sort <<<"${solvers[*]}"))
-unset IFS
-
-for solver in ${sorted_solvers[@]}; do
- # Make sure version a solver specific version variable is used
- solver_var="$(to_upper "$solver")_VERSION"
- SOLVER_VERSION="${!solver_var}"
- if [[ -z "${SOLVER_VERSION}" ]] ; then
- echo "Solver version for $solver not defined"
- exit 1
- fi
- # Add the solver to the suffix and lower case it
- SOLVER_SUFFIX+="_$(to_lower "$solver")$(to_lower "$SOLVER_VERSION")"
- echo $SOLVER_SUFFIX
- if [[ "$(to_lower "$solver")" == "metasmt" ]]; then
- if [[ "${REQUIRES_RTTI}x" != "1x" ]]; then
- echo "METASMT requires an RTTI build"
- exit 1
- fi
- if [[ -z "${METASMT_DEFAULT}" ]]; then
- echo "METASMT_DEFAULT not defined"
- exit 1
- fi
- if [[ -z "${METASMT_BOOST_VERSION}" ]] ; then
- echo "METASMT_BOOST_VERSION not defined - use default"
- SOLVER_SUFFIX+="_$(to_lower "$METASMT_DEFAULT")_boost-dev"
- else
- SOLVER_SUFFIX+="_$(to_lower "$METASMT_DEFAULT")_$(to_lower "$METASMT_BOOST_VERSION")"
- fi
+ echo "${commit_id:0:7}"
fi
-done
-
-# This file is meant to be included by shell scripts that handle dependencies by
-# KLEE beside LLVM and solvers
-#
-# Generate the suffix used for direct dependencies of KLEE like uclibc
-DEPS_SUFFIX=""
-if [[ "${KLEE_UCLIBC}" != "0" ]]; then
- DEPS_SUFFIX+="_${KLEE_UCLIBC}"
-fi
+} \ No newline at end of file