#!/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 -h for help"; echo " -b : 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