1*ba62d9d3SAndroid Build Coastguard Worker#!/bin/bash 2*ba62d9d3SAndroid Build Coastguard Worker 3*ba62d9d3SAndroid Build Coastguard Worker# Written by David Stuttard, Intel ([email protected]) 26 June, 2013 4*ba62d9d3SAndroid Build Coastguard Worker# This script will use cmake to build and install the linux cm and cmrt libraries 5*ba62d9d3SAndroid Build Coastguard Worker 6*ba62d9d3SAndroid Build Coastguard Worker# Process the input options using built-in getopts 7*ba62d9d3SAndroid Build Coastguard Workerusage(){ 8*ba62d9d3SAndroid Build Coastguard Worker echo "Usage: `basename $0` -b <relative-path> -h for help"; 9*ba62d9d3SAndroid Build Coastguard Worker echo " -b <relative-path> : Set the build dir to something other than the default (build.linux)"; 10*ba62d9d3SAndroid Build Coastguard Worker echo " -h : Help (print out this usage)"; 11*ba62d9d3SAndroid Build Coastguard Worker echo " -a : build jitter shared library and GenX_IR"; 12*ba62d9d3SAndroid Build Coastguard Worker echo " -d : Debug build (default build.linux.debug)"; 13*ba62d9d3SAndroid Build Coastguard Worker echo " -e : Enable EMU build"; 14*ba62d9d3SAndroid Build Coastguard Worker echo " --32 : Build 32 bit variant (default on 32 bit systems)"; 15*ba62d9d3SAndroid Build Coastguard Worker echo " --64 : Build 64 bit variant (default on 64 bit systems)"; 16*ba62d9d3SAndroid Build Coastguard Worker} 17*ba62d9d3SAndroid Build Coastguard Worker 18*ba62d9d3SAndroid Build Coastguard Workerfunction define_colours_on() { 19*ba62d9d3SAndroid Build Coastguard Worker # Reset 20*ba62d9d3SAndroid Build Coastguard Worker Colour_Off='\033[0m' # Text Reset 21*ba62d9d3SAndroid Build Coastguard Worker 22*ba62d9d3SAndroid Build Coastguard Worker # Regular Colours 23*ba62d9d3SAndroid Build Coastguard Worker Black='\033[0;30m' # Black 24*ba62d9d3SAndroid Build Coastguard Worker Red='\033[0;31m' # Red 25*ba62d9d3SAndroid Build Coastguard Worker Green='\033[0;32m' # Green 26*ba62d9d3SAndroid Build Coastguard Worker Yellow='\033[0;33m' # Yellow 27*ba62d9d3SAndroid Build Coastguard Worker Blue='\033[0;34m' # Blue 28*ba62d9d3SAndroid Build Coastguard Worker Purple='\033[0;35m' # Purple 29*ba62d9d3SAndroid Build Coastguard Worker Cyan='\033[0;36m' # Cyan 30*ba62d9d3SAndroid Build Coastguard Worker White='\033[0;37m' # White 31*ba62d9d3SAndroid Build Coastguard Worker 32*ba62d9d3SAndroid Build Coastguard Worker # Bold 33*ba62d9d3SAndroid Build Coastguard Worker BBlack='\033[1;30m' # Black 34*ba62d9d3SAndroid Build Coastguard Worker BRed='\033[1;31m' # Red 35*ba62d9d3SAndroid Build Coastguard Worker BGreen='\033[1;32m' # Green 36*ba62d9d3SAndroid Build Coastguard Worker BYellow='\033[1;33m' # Yellow 37*ba62d9d3SAndroid Build Coastguard Worker BBlue='\033[1;34m' # Blue 38*ba62d9d3SAndroid Build Coastguard Worker BPurple='\033[1;35m' # Purple 39*ba62d9d3SAndroid Build Coastguard Worker BCyan='\033[1;36m' # Cyan 40*ba62d9d3SAndroid Build Coastguard Worker BWhite='\033[1;37m' # White 41*ba62d9d3SAndroid Build Coastguard Worker} 42*ba62d9d3SAndroid Build Coastguard Worker 43*ba62d9d3SAndroid Build Coastguard Workerfunction define_colours_off() { 44*ba62d9d3SAndroid Build Coastguard Worker # Reset 45*ba62d9d3SAndroid Build Coastguard Worker Colour_Off='' # Text Reset 46*ba62d9d3SAndroid Build Coastguard Worker 47*ba62d9d3SAndroid Build Coastguard Worker # Regular Colours 48*ba62d9d3SAndroid Build Coastguard Worker Black='' # Black 49*ba62d9d3SAndroid Build Coastguard Worker Red='' # Red 50*ba62d9d3SAndroid Build Coastguard Worker Green='' # Green 51*ba62d9d3SAndroid Build Coastguard Worker Yellow='' # Yellow 52*ba62d9d3SAndroid Build Coastguard Worker Blue='' # Blue 53*ba62d9d3SAndroid Build Coastguard Worker Purple='' # Purple 54*ba62d9d3SAndroid Build Coastguard Worker Cyan='' # Cyan 55*ba62d9d3SAndroid Build Coastguard Worker White='' # White 56*ba62d9d3SAndroid Build Coastguard Worker 57*ba62d9d3SAndroid Build Coastguard Worker # Bold 58*ba62d9d3SAndroid Build Coastguard Worker BBlack='' # Black 59*ba62d9d3SAndroid Build Coastguard Worker BRed='' # Red 60*ba62d9d3SAndroid Build Coastguard Worker BGreen='' # Green 61*ba62d9d3SAndroid Build Coastguard Worker BYellow='' # Yellow 62*ba62d9d3SAndroid Build Coastguard Worker BBlue='' # Blue 63*ba62d9d3SAndroid Build Coastguard Worker BPurple='' # Purple 64*ba62d9d3SAndroid Build Coastguard Worker BCyan='' # Cyan 65*ba62d9d3SAndroid Build Coastguard Worker BWhite='' # White 66*ba62d9d3SAndroid Build Coastguard Worker} 67*ba62d9d3SAndroid Build Coastguard Worker 68*ba62d9d3SAndroid Build Coastguard WorkerBUILD_DIR=build.linux 69*ba62d9d3SAndroid Build Coastguard WorkerDEBUG=0 70*ba62d9d3SAndroid Build Coastguard WorkerBUILD_SET=0 71*ba62d9d3SAndroid Build Coastguard WorkerBUILD_32=0 72*ba62d9d3SAndroid Build Coastguard WorkerBUILD_64=0 73*ba62d9d3SAndroid Build Coastguard WorkerBUILD_EMU=0 74*ba62d9d3SAndroid Build Coastguard WorkerCROSS_BUILD=0 75*ba62d9d3SAndroid Build Coastguard WorkerBUILD_SIZE=0 76*ba62d9d3SAndroid Build Coastguard Worker 77*ba62d9d3SAndroid Build Coastguard Worker# Set up build size 78*ba62d9d3SAndroid Build Coastguard WorkerMACHINE_TYPE=`uname -m` 79*ba62d9d3SAndroid Build Coastguard Workerif [ ${MACHINE_TYPE} == 'x86_64' ]; then 80*ba62d9d3SAndroid Build Coastguard Worker BUILD_SIZE=64 81*ba62d9d3SAndroid Build Coastguard Workerelse 82*ba62d9d3SAndroid Build Coastguard Worker BUILD_SIZE=32 83*ba62d9d3SAndroid Build Coastguard Workerfi 84*ba62d9d3SAndroid Build Coastguard Worker 85*ba62d9d3SAndroid Build Coastguard Workerwhile getopts "b:edah-:" opt; do 86*ba62d9d3SAndroid Build Coastguard Worker case $opt in 87*ba62d9d3SAndroid Build Coastguard Worker -) 88*ba62d9d3SAndroid Build Coastguard Worker case "${OPTARG}" in 89*ba62d9d3SAndroid Build Coastguard Worker 32) 90*ba62d9d3SAndroid Build Coastguard Worker BUILD_32=1 91*ba62d9d3SAndroid Build Coastguard Worker ;; 92*ba62d9d3SAndroid Build Coastguard Worker 64) 93*ba62d9d3SAndroid Build Coastguard Worker BUILD_64=1 94*ba62d9d3SAndroid Build Coastguard Worker ;; 95*ba62d9d3SAndroid Build Coastguard Worker esac;; 96*ba62d9d3SAndroid Build Coastguard Worker b) 97*ba62d9d3SAndroid Build Coastguard Worker BUILD_DIR=$OPTARG 98*ba62d9d3SAndroid Build Coastguard Worker BUILD_SET=1 99*ba62d9d3SAndroid Build Coastguard Worker ;; 100*ba62d9d3SAndroid Build Coastguard Worker e) 101*ba62d9d3SAndroid Build Coastguard Worker BUILD_EMU=1 102*ba62d9d3SAndroid Build Coastguard Worker ;; 103*ba62d9d3SAndroid Build Coastguard Worker d) 104*ba62d9d3SAndroid Build Coastguard Worker DEBUG=1 105*ba62d9d3SAndroid Build Coastguard Worker ;; 106*ba62d9d3SAndroid Build Coastguard Worker a) 107*ba62d9d3SAndroid Build Coastguard Worker export BUILD_ALL=1 108*ba62d9d3SAndroid Build Coastguard Worker ;; 109*ba62d9d3SAndroid Build Coastguard Worker h) 110*ba62d9d3SAndroid Build Coastguard Worker usage 111*ba62d9d3SAndroid Build Coastguard Worker exit 1 112*ba62d9d3SAndroid Build Coastguard Worker ;; 113*ba62d9d3SAndroid Build Coastguard Worker \?) 114*ba62d9d3SAndroid Build Coastguard Worker echo "Unknown option" 115*ba62d9d3SAndroid Build Coastguard Worker usage 116*ba62d9d3SAndroid Build Coastguard Worker exit 1 117*ba62d9d3SAndroid Build Coastguard Worker ;; 118*ba62d9d3SAndroid Build Coastguard Worker esac 119*ba62d9d3SAndroid Build Coastguard Workerdone 120*ba62d9d3SAndroid Build Coastguard Worker 121*ba62d9d3SAndroid Build Coastguard Workerif [[ $BUILD_32 -eq 1 ]]; then 122*ba62d9d3SAndroid Build Coastguard Worker if [[ $BUILD_64 -eq 1 ]]; then 123*ba62d9d3SAndroid Build Coastguard Worker echo "Can't specify 32 *and* 64 bit at the same time" 124*ba62d9d3SAndroid Build Coastguard Worker usage 125*ba62d9d3SAndroid Build Coastguard Worker exit 1 126*ba62d9d3SAndroid Build Coastguard Worker fi 127*ba62d9d3SAndroid Build Coastguard Workerfi 128*ba62d9d3SAndroid Build Coastguard Worker 129*ba62d9d3SAndroid Build Coastguard WorkerEXTRA_OPTIONS= 130*ba62d9d3SAndroid Build Coastguard WorkerEXTRA_CMAKE_FLAGS= 131*ba62d9d3SAndroid Build Coastguard Worker 132*ba62d9d3SAndroid Build Coastguard Workerif [[ $BUILD_EMU -eq 1 ]]; then 133*ba62d9d3SAndroid Build Coastguard Worker EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DLATEST_CPP_NEEDED=TRUE -DLIBVA_INSTALL_PATH=$(realpath ../../../../libva-prebuilt-headers)" 134*ba62d9d3SAndroid Build Coastguard Workerfi 135*ba62d9d3SAndroid Build Coastguard Worker 136*ba62d9d3SAndroid Build Coastguard Workercase $BUILD_SIZE in 137*ba62d9d3SAndroid Build Coastguard Worker 32) 138*ba62d9d3SAndroid Build Coastguard Worker if [[ $BUILD_64 -eq 1 ]]; then 139*ba62d9d3SAndroid Build Coastguard Worker CROSS_BUILD=1 140*ba62d9d3SAndroid Build Coastguard Worker BUILD_SIZE=64 141*ba62d9d3SAndroid Build Coastguard Worker EXTRA_OPTIONS="export CFLAGS=-m64 CXXFLAGS=-m64" 142*ba62d9d3SAndroid Build Coastguard Worker fi 143*ba62d9d3SAndroid Build Coastguard Worker ;; 144*ba62d9d3SAndroid Build Coastguard Worker 64) 145*ba62d9d3SAndroid Build Coastguard Worker if [[ $BUILD_32 -eq 1 ]]; then 146*ba62d9d3SAndroid Build Coastguard Worker CROSS_BUILD=1 147*ba62d9d3SAndroid Build Coastguard Worker BUILD_SIZE=32 148*ba62d9d3SAndroid Build Coastguard Worker EXTRA_OPTIONS="export CFLAGS=-m32 CXXFLAGS=-m32" 149*ba62d9d3SAndroid Build Coastguard Worker fi 150*ba62d9d3SAndroid Build Coastguard Worker ;; 151*ba62d9d3SAndroid Build Coastguard Workeresac 152*ba62d9d3SAndroid Build Coastguard Worker 153*ba62d9d3SAndroid Build Coastguard Workerif [[ $BUILD_SET -eq 0 ]]; then 154*ba62d9d3SAndroid Build Coastguard Worker if [[ $DEBUG -eq 1 ]]; then 155*ba62d9d3SAndroid Build Coastguard Worker BUILD_DIR=build.linux.debug 156*ba62d9d3SAndroid Build Coastguard Worker fi 157*ba62d9d3SAndroid Build Coastguard Worker # Add .x. if a cross compile build 158*ba62d9d3SAndroid Build Coastguard Worker if [[ $CROSS_BUILD -eq 1 ]]; then 159*ba62d9d3SAndroid Build Coastguard Worker BUILD_DIR="$BUILD_DIR.x" 160*ba62d9d3SAndroid Build Coastguard Worker fi 161*ba62d9d3SAndroid Build Coastguard Worker # Append build size to directory name 162*ba62d9d3SAndroid Build Coastguard Worker BUILD_DIR="$BUILD_DIR.$BUILD_SIZE" 163*ba62d9d3SAndroid Build Coastguard Workerfi 164*ba62d9d3SAndroid Build Coastguard Worker 165*ba62d9d3SAndroid Build Coastguard Workerif [[ $DEBUG -eq 1 ]]; then 166*ba62d9d3SAndroid Build Coastguard Worker EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Debug" 167*ba62d9d3SAndroid Build Coastguard Workerelse 168*ba62d9d3SAndroid Build Coastguard Worker EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Release" 169*ba62d9d3SAndroid Build Coastguard Workerfi 170*ba62d9d3SAndroid Build Coastguard Worker 171*ba62d9d3SAndroid Build Coastguard Workerdefine_colours_on 172*ba62d9d3SAndroid Build Coastguard Worker 173*ba62d9d3SAndroid Build Coastguard Workerecho "We're going to do the build in " $BUILD_DIR 174*ba62d9d3SAndroid Build Coastguard Worker 175*ba62d9d3SAndroid Build Coastguard Worker# Do we have cmake installed? 176*ba62d9d3SAndroid Build Coastguard Workerif hash cmake 2>/dev/null; then 177*ba62d9d3SAndroid Build Coastguard Worker echo "cmake has been detected ... proceeding" 178*ba62d9d3SAndroid Build Coastguard Workerelse 179*ba62d9d3SAndroid Build Coastguard Worker echo "cmake is required to perform a linux build. Please install the package (sudo apt-get install cmake)" 180*ba62d9d3SAndroid Build Coastguard Worker exit 1 181*ba62d9d3SAndroid Build Coastguard Workerfi 182*ba62d9d3SAndroid Build Coastguard Worker 183*ba62d9d3SAndroid Build Coastguard Worker# By default we will create and do the build in build.linux but this can overridden 184*ba62d9d3SAndroid Build Coastguard Workerif [ ! -d "$BUILD_DIR" ]; then 185*ba62d9d3SAndroid Build Coastguard Worker mkdir -p $BUILD_DIR 186*ba62d9d3SAndroid Build Coastguard Workerfi 187*ba62d9d3SAndroid Build Coastguard Worker 188*ba62d9d3SAndroid Build Coastguard WorkerCMAKE_ROOT=`pwd` 189*ba62d9d3SAndroid Build Coastguard Worker 190*ba62d9d3SAndroid Build Coastguard Worker# The root CMakeLists.txt file is in the same directory as this script - remember this location 191*ba62d9d3SAndroid Build Coastguard Workercd $CMAKE_ROOT 192*ba62d9d3SAndroid Build Coastguard Workercd $BUILD_DIR 193*ba62d9d3SAndroid Build Coastguard Workerecho "executing : $EXTRA_OPTIONS cmake" $CMAKE_ROOT 194*ba62d9d3SAndroid Build Coastguard Worker( 195*ba62d9d3SAndroid Build Coastguard Workerif [[ $BUILD_EMU -eq 0 ]]; then 196*ba62d9d3SAndroid Build Coastguard Worker $EXTRA_OPTIONS 197*ba62d9d3SAndroid Build Coastguard Workerfi 198*ba62d9d3SAndroid Build Coastguard Workercmake $EXTRA_CMAKE_FLAGS $CMAKE_ROOT 199*ba62d9d3SAndroid Build Coastguard Worker) 200*ba62d9d3SAndroid Build Coastguard Workerif [[ $BUILD_EMU -eq 0 ]]; then 201*ba62d9d3SAndroid Build Coastguard Worker echo "executing make" 202*ba62d9d3SAndroid Build Coastguard Worker make 203*ba62d9d3SAndroid Build Coastguard Workerfi 204