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