xref: /aosp_15_r20/external/intel-media-driver/cmrtlib/build_linux.sh (revision ba62d9d3abf0e404f2022b4cd7a85e107f48596f)
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