| #!/bin/bash |
| |
| # Written by David Stuttard, Intel (david.stuttard@intel.com) 26 June, 2013 |
| # This script will use cmake to build and install the linux cm and cmrt libraries |
| |
| # Process the input options using built-in getopts |
| usage(){ |
| echo "Usage: `basename $0` -b <relative-path> -h for help"; |
| echo " -b <relative-path> : Set the build dir to something other than the default (build.linux)"; |
| echo " -h : Help (print out this usage)"; |
| echo " -a : build jitter shared library and GenX_IR"; |
| echo " -d : Debug build (default build.linux.debug)"; |
| echo " -e : Enable EMU build"; |
| echo " --32 : Build 32 bit variant (default on 32 bit systems)"; |
| echo " --64 : Build 64 bit variant (default on 64 bit systems)"; |
| } |
| |
| function define_colours_on() { |
| # Reset |
| Colour_Off='\033[0m' # Text Reset |
| |
| # Regular Colours |
| Black='\033[0;30m' # Black |
| Red='\033[0;31m' # Red |
| Green='\033[0;32m' # Green |
| Yellow='\033[0;33m' # Yellow |
| Blue='\033[0;34m' # Blue |
| Purple='\033[0;35m' # Purple |
| Cyan='\033[0;36m' # Cyan |
| White='\033[0;37m' # White |
| |
| # Bold |
| BBlack='\033[1;30m' # Black |
| BRed='\033[1;31m' # Red |
| BGreen='\033[1;32m' # Green |
| BYellow='\033[1;33m' # Yellow |
| BBlue='\033[1;34m' # Blue |
| BPurple='\033[1;35m' # Purple |
| BCyan='\033[1;36m' # Cyan |
| BWhite='\033[1;37m' # White |
| } |
| |
| function define_colours_off() { |
| # Reset |
| Colour_Off='' # Text Reset |
| |
| # Regular Colours |
| Black='' # Black |
| Red='' # Red |
| Green='' # Green |
| Yellow='' # Yellow |
| Blue='' # Blue |
| Purple='' # Purple |
| Cyan='' # Cyan |
| White='' # White |
| |
| # Bold |
| BBlack='' # Black |
| BRed='' # Red |
| BGreen='' # Green |
| BYellow='' # Yellow |
| BBlue='' # Blue |
| BPurple='' # Purple |
| BCyan='' # Cyan |
| BWhite='' # White |
| } |
| |
| BUILD_DIR=build.linux |
| DEBUG=0 |
| BUILD_SET=0 |
| BUILD_32=0 |
| BUILD_64=0 |
| BUILD_EMU=0 |
| CROSS_BUILD=0 |
| BUILD_SIZE=0 |
| |
| # Set up build size |
| MACHINE_TYPE=`uname -m` |
| if [ ${MACHINE_TYPE} == 'x86_64' ]; then |
| BUILD_SIZE=64 |
| else |
| BUILD_SIZE=32 |
| fi |
| |
| while getopts "b:edah-:" opt; do |
| case $opt in |
| -) |
| case "${OPTARG}" in |
| 32) |
| BUILD_32=1 |
| ;; |
| 64) |
| BUILD_64=1 |
| ;; |
| esac;; |
| b) |
| BUILD_DIR=$OPTARG |
| BUILD_SET=1 |
| ;; |
| e) |
| BUILD_EMU=1 |
| ;; |
| d) |
| DEBUG=1 |
| ;; |
| a) |
| export BUILD_ALL=1 |
| ;; |
| h) |
| usage |
| exit 1 |
| ;; |
| \?) |
| echo "Unknown option" |
| usage |
| exit 1 |
| ;; |
| esac |
| done |
| |
| if [[ $BUILD_32 -eq 1 ]]; then |
| if [[ $BUILD_64 -eq 1 ]]; then |
| echo "Can't specify 32 *and* 64 bit at the same time" |
| usage |
| exit 1 |
| fi |
| fi |
| |
| EXTRA_OPTIONS= |
| EXTRA_CMAKE_FLAGS= |
| |
| if [[ $BUILD_EMU -eq 1 ]]; then |
| EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DLATEST_CPP_NEEDED=TRUE -DLIBVA_INSTALL_PATH=$(realpath ../../../../libva-prebuilt-headers)" |
| fi |
| |
| case $BUILD_SIZE in |
| 32) |
| if [[ $BUILD_64 -eq 1 ]]; then |
| CROSS_BUILD=1 |
| BUILD_SIZE=64 |
| EXTRA_OPTIONS="export CFLAGS=-m64 CXXFLAGS=-m64" |
| fi |
| ;; |
| 64) |
| if [[ $BUILD_32 -eq 1 ]]; then |
| CROSS_BUILD=1 |
| BUILD_SIZE=32 |
| EXTRA_OPTIONS="export CFLAGS=-m32 CXXFLAGS=-m32" |
| fi |
| ;; |
| esac |
| |
| if [[ $BUILD_SET -eq 0 ]]; then |
| if [[ $DEBUG -eq 1 ]]; then |
| BUILD_DIR=build.linux.debug |
| fi |
| # Add .x. if a cross compile build |
| if [[ $CROSS_BUILD -eq 1 ]]; then |
| BUILD_DIR="$BUILD_DIR.x" |
| fi |
| # Append build size to directory name |
| BUILD_DIR="$BUILD_DIR.$BUILD_SIZE" |
| fi |
| |
| if [[ $DEBUG -eq 1 ]]; then |
| EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Debug" |
| else |
| EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Release" |
| fi |
| |
| define_colours_on |
| |
| echo "We're going to do the build in " $BUILD_DIR |
| |
| # Do we have cmake installed? |
| if hash cmake 2>/dev/null; then |
| echo "cmake has been detected ... proceeding" |
| else |
| echo "cmake is required to perform a linux build. Please install the package (sudo apt-get install cmake)" |
| exit 1 |
| fi |
| |
| # By default we will create and do the build in build.linux but this can overridden |
| if [ ! -d "$BUILD_DIR" ]; then |
| mkdir -p $BUILD_DIR |
| fi |
| |
| CMAKE_ROOT=`pwd` |
| |
| # The root CMakeLists.txt file is in the same directory as this script - remember this location |
| cd $CMAKE_ROOT |
| cd $BUILD_DIR |
| echo "executing : $EXTRA_OPTIONS cmake" $CMAKE_ROOT |
| ( |
| if [[ $BUILD_EMU -eq 0 ]]; then |
| $EXTRA_OPTIONS |
| fi |
| cmake $EXTRA_CMAKE_FLAGS $CMAKE_ROOT |
| ) |
| if [[ $BUILD_EMU -eq 0 ]]; then |
| echo "executing make" |
| make |
| fi |