| Index: third_party/instrumented_libraries/download_build_install.sh
|
| ===================================================================
|
| --- third_party/instrumented_libraries/download_build_install.sh (revision 235305)
|
| +++ third_party/instrumented_libraries/download_build_install.sh (working copy)
|
| @@ -1,138 +0,0 @@
|
| -#!/bin/bash
|
| -# Copyright 2013 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -# Downloads, builds (with instrumentation) and installs shared libraries.
|
| -
|
| -# Go to this shell script directory
|
| -cd $(dirname "$0")
|
| -
|
| -# Colored print.
|
| -
|
| -RED_COLOR='\e[0;31m'
|
| -GREEN_COLOR='\e[0;32m'
|
| -NO_COLOR='\e[0m'
|
| -
|
| -function echo_red {
|
| - echo -e "${RED_COLOR}$1${NO_COLOR}"
|
| -}
|
| -
|
| -function echo_green {
|
| - echo -e "${GREEN_COLOR}$1${NO_COLOR}"
|
| -}
|
| -
|
| -# Default values.
|
| -
|
| -product_dir=$(pwd)
|
| -intermediate_dir=$(pwd)
|
| -
|
| -# Should be without spaces to pass it to dpkg-buildpackage.
|
| -makejobs="-j14"
|
| -
|
| -# Parsing args.
|
| -
|
| -while getopts ":i:l:m:hp:s:j:" opt; do
|
| - case ${opt} in
|
| - p)
|
| - echo_green "Only installing dependencies (requires root access)"
|
| - echo_green "Installing dependencies for: ${OPTARG}"
|
| - sudo apt-get -y --no-remove build-dep ${OPTARG}
|
| - exit
|
| - ;;
|
| - h)
|
| - echo "Possible flags:
|
| - -p - install dependencies for packages,
|
| - -h - this help,
|
| - -l - which library to build,
|
| - -i - sets relative product_dir,
|
| - -s - sanitizer (only asan is supported now)."
|
| - echo "Environment variabless, which affect this script: CC and CXX"
|
| - exit
|
| - ;;
|
| - i)
|
| - product_dir="$(pwd)/${OPTARG}"
|
| - ;;
|
| - l)
|
| - library="${OPTARG}"
|
| - ;;
|
| - m)
|
| - intermediate_dir="${OPTARG}"
|
| - ;;
|
| - j)
|
| - makejobs="-j${OPTARG}"
|
| - ;;
|
| - s)
|
| - sanitizer_type="${OPTARG}"
|
| - if [[ "${OPTARG}" == "asan" ]]; then
|
| - sanitizer_flag_string="address"
|
| - else
|
| - echo_red "Invalid sanitizer: ${OPTARG}" >&2
|
| - exit 1
|
| - fi
|
| - ;;
|
| - *)
|
| - echo_red "Invalid option: -${OPTARG}" >&2
|
| - exit 1
|
| - ;;
|
| - esac
|
| -done
|
| -
|
| -if [[ -z "${library}" ]]; then
|
| - echo_red "No library specified to build" >&2
|
| - exit 1
|
| -fi
|
| -
|
| -if [[ -z "${sanitizer_type}" ]]; then
|
| - echo_red "No sanitizer specified" >&2
|
| - exit
|
| -fi
|
| -
|
| -export CFLAGS="-fsanitize=${sanitizer_flag_string} -g -fPIC -w"
|
| -export CXXFLAGS="-fsanitize=${sanitizer_flag_string} -g -fPIC -w"
|
| -
|
| -# We use XORIGIN as RPATH and after building library replace it to $ORIGIN
|
| -# The reason: this flag goes through configure script and makefiles
|
| -# differently for different libraries. So the dollar sign "$" should be
|
| -# differently escaped. Instead of having problems with that it just
|
| -# uses XORIGIN to build library and after that replaces it to $ORIGIN
|
| -# directly in .so file.
|
| -export LDFLAGS="-Wl,-z,origin -Wl,-R,XORIGIN/."
|
| -
|
| -mkdir -p ${product_dir}/instrumented_libraries/${sanitizer_type}
|
| -
|
| -needed_dependencies=$(apt-get -s build-dep ${library} | grep Inst \
|
| - | cut -d " " -f 2)
|
| -
|
| -if [[ -n "${needed_dependencies}" ]]; then
|
| - echo_red "Library ${library} needs dependencies: ${needed_dependencies}" >&2
|
| - echo_red "Please, install dependencies using:
|
| - third_party/instrumented_libraries/download_build_install -p ${library}" >&2
|
| - exit 1
|
| -fi
|
| -
|
| -(
|
| - # Downloading library
|
| - mkdir -p ${intermediate_dir}/${library}
|
| - cd ${intermediate_dir}/${library}
|
| - apt-get source ${library} 2>&1
|
| -
|
| - # cd into the only directory in the current folder
|
| - # where our package has been unpacked.
|
| - cd $(ls -F |grep \/$)
|
| -
|
| - # Build library
|
| - ./configure --prefix="${product_dir}/instrumented_libraries/${sanitizer_type}"
|
| - make ${makejobs}
|
| -
|
| - # Install library
|
| - make ${makejobs} install 2>&1
|
| -) > /dev/null
|
| -
|
| -# Mark that library is installed.
|
| -# This file is used by GYP as 'output' to mark that it's already build
|
| -# while making incremental build.
|
| -touch ${product_dir}/instrumented_libraries/${sanitizer_type}/${library}.txt
|
| -
|
| -# Clean up.
|
| -rm -rf ${intermediate_dir}/${library}
|
|
|