1*b2055c35SXin Li#!/bin/bash 2*b2055c35SXin Li# Copyright (c) 2021, Google Inc. All rights reserved. 3*b2055c35SXin Li# 4*b2055c35SXin Li# Redistribution and use in source and binary forms, with or without 5*b2055c35SXin Li# modification, are permitted provided that the following conditions are 6*b2055c35SXin Li# met: 7*b2055c35SXin Li# 8*b2055c35SXin Li# * Redistributions of source code must retain the above copyright 9*b2055c35SXin Li# notice, this list of conditions and the following disclaimer. 10*b2055c35SXin Li# 11*b2055c35SXin Li# * Redistributions in binary form must reproduce the above copyright 12*b2055c35SXin Li# notice, this list of conditions and the following disclaimer in 13*b2055c35SXin Li# the documentation and/or other materials provided with the 14*b2055c35SXin Li# distribution. 15*b2055c35SXin Li# 16*b2055c35SXin Li# * Neither the name of Google nor the names of its contributors may 17*b2055c35SXin Li# be used to endorse or promote products derived from this software 18*b2055c35SXin Li# without specific prior written permission. 19*b2055c35SXin Li# 20*b2055c35SXin Li# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21*b2055c35SXin Li# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22*b2055c35SXin Li# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23*b2055c35SXin Li# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24*b2055c35SXin Li# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25*b2055c35SXin Li# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26*b2055c35SXin Li# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27*b2055c35SXin Li# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28*b2055c35SXin Li# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29*b2055c35SXin Li# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30*b2055c35SXin Li# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*b2055c35SXin Li 32*b2055c35SXin Liset -xe 33*b2055c35SXin LiLIBWEBP_ROOT="$(realpath "$(dirname "$0")/..")" 34*b2055c35SXin LiWORKSPACE=${WORKSPACE:-"$(mktemp -d -t webp.XXX)"} 35*b2055c35SXin Li 36*b2055c35SXin Li# shellcheck source=infra/common.sh 37*b2055c35SXin Lisource "${LIBWEBP_ROOT}/infra/common.sh" 38*b2055c35SXin Li 39*b2055c35SXin Liusage() { 40*b2055c35SXin Li cat << EOF 41*b2055c35SXin LiUsage: compile.sh BUILD_TYPE TARGET 42*b2055c35SXin LiOptions: 43*b2055c35SXin LiBUILD_TYPE supported build type: (shared, static, static-debug) 44*b2055c35SXin LiTARGET supported target platforms: 45*b2055c35SXin Li aarch64-linux-clang 46*b2055c35SXin Li aarch64-linux-gnu 47*b2055c35SXin Li arm-linux-gnueabi 48*b2055c35SXin Li arm-neon-linux-gnueabi 49*b2055c35SXin Li cmake 50*b2055c35SXin Li cmake-aarch64 51*b2055c35SXin Li cmake-arm 52*b2055c35SXin Li cmake-clang 53*b2055c35SXin Li disable-near-lossless 54*b2055c35SXin Li disable-sse4.1 55*b2055c35SXin Li disable-stats 56*b2055c35SXin Li force-aligned-32 57*b2055c35SXin Li force-aligned-64 58*b2055c35SXin Li gradle 59*b2055c35SXin Li i686-linux-asan 60*b2055c35SXin Li i686-linux-clang 61*b2055c35SXin Li i686-linux-gnu 62*b2055c35SXin Li i686-w64-mingw32 63*b2055c35SXin Li mips2el-linux-gnu 64*b2055c35SXin Li mips32dspr2el-linux-gnu 65*b2055c35SXin Li mips32eb-linux-gnu 66*b2055c35SXin Li mips32el-linux-gnu 67*b2055c35SXin Li mips32r2el-linux-gnu 68*b2055c35SXin Li mips32r5el-linux-gnu 69*b2055c35SXin Li mips64r2el-linux-gnu 70*b2055c35SXin Li mips64r6el-linux-gnu 71*b2055c35SXin Li native 72*b2055c35SXin Li reduce-csp 73*b2055c35SXin Li reduce-size 74*b2055c35SXin Li reduce-size-disable-stats 75*b2055c35SXin Li visibility-default-gnu 76*b2055c35SXin Li visibility-hidden-clang 77*b2055c35SXin Li visibility-hidden-gnu 78*b2055c35SXin Li wasm 79*b2055c35SXin Li x86_64-linux-clang 80*b2055c35SXin Li x86_64-linux-gnu 81*b2055c35SXin Li x86_64-linux-msan 82*b2055c35SXin Li x86_64-w64-mingw32 83*b2055c35SXin LiEnvironment variables: 84*b2055c35SXin LiWORKSPACE directory where the build is done 85*b2055c35SXin LiEOF 86*b2055c35SXin Li} 87*b2055c35SXin Li 88*b2055c35SXin Li################################################################################ 89*b2055c35SXin Liecho "Building libwebp in ${WORKSPACE}" 90*b2055c35SXin Li 91*b2055c35SXin Liif [[ ! -d "${WORKSPACE}" ]]; then 92*b2055c35SXin Li log_err "${WORKSPACE} directory does not exist" 93*b2055c35SXin Li exit 1 94*b2055c35SXin Lifi 95*b2055c35SXin Li 96*b2055c35SXin LiBUILD_TYPE=${1:?"Build type not defined.$( 97*b2055c35SXin Li echo 98*b2055c35SXin Li usage 99*b2055c35SXin Li)"} 100*b2055c35SXin LiTARGET=${2:?"Target not defined.$( 101*b2055c35SXin Li echo 102*b2055c35SXin Li usage 103*b2055c35SXin Li)"} 104*b2055c35SXin Lireadonly BUILD_DIR="${WORKSPACE}/build-${BUILD_TYPE}" 105*b2055c35SXin Li 106*b2055c35SXin Litrap 'cleanup ${BUILD_DIR}' EXIT 107*b2055c35SXin Limake_build_dir "${BUILD_DIR}" 108*b2055c35SXin Li 109*b2055c35SXin Liconfig_flags=() 110*b2055c35SXin Licase "${BUILD_TYPE}" in 111*b2055c35SXin Li shared*) ;; # Valid BUILD_TYPE but no setup required 112*b2055c35SXin Li static*) config_flags+=("--disable-shared") ;; 113*b2055c35SXin Li experimental) config_flags+=("--enable-experimental") ;; 114*b2055c35SXin Li *) 115*b2055c35SXin Li log_err "Invalid BUILD_TYPE" 116*b2055c35SXin Li usage 117*b2055c35SXin Li exit 1 118*b2055c35SXin Li ;; 119*b2055c35SXin Liesac 120*b2055c35SXin Li 121*b2055c35SXin Liif grep -m 1 -q "enable-asserts" "${LIBWEBP_ROOT}/configure.ac"; then 122*b2055c35SXin Li config_flags+=("--enable-asserts") 123*b2055c35SXin Lifi 124*b2055c35SXin Li 125*b2055c35SXin Licase "${TARGET}" in 126*b2055c35SXin Li aarch64-linux-clang) 127*b2055c35SXin Li TARGET="aarch64-linux-gnu" 128*b2055c35SXin Li CC="clang" 129*b2055c35SXin Li CC="${CC} --target=aarch64-linux-gnu" 130*b2055c35SXin Li export CC 131*b2055c35SXin Li export CFLAGS="-isystem /usr/aarch64-linux-gnu/include" 132*b2055c35SXin Li ;; 133*b2055c35SXin Li arm-linux-gnueabi) 134*b2055c35SXin Li export CFLAGS="-O3 -march=armv7-a -mfloat-abi=softfp -ftree-vectorize" 135*b2055c35SXin Li ;; 136*b2055c35SXin Li arm-neon-linux-gnueabi) 137*b2055c35SXin Li TARGET="arm-linux-gnueabi" 138*b2055c35SXin Li CFLAGS="-O3 -march=armv7-a -mfpu=neon -mfloat-abi=softfp -ftree-vectorize" 139*b2055c35SXin Li export CFLAGS 140*b2055c35SXin Li ;; 141*b2055c35SXin Li mips2el-linux-gnu) 142*b2055c35SXin Li export CFLAGS="-EL -O2 -mips2" 143*b2055c35SXin Li TARGET="mipsel-linux-gnu" 144*b2055c35SXin Li ;; 145*b2055c35SXin Li mips32el-linux-gnu) 146*b2055c35SXin Li export CFLAGS="-EL -O2 -mips32" 147*b2055c35SXin Li TARGET="mipsel-linux-gnu" 148*b2055c35SXin Li ;; 149*b2055c35SXin Li mips32r2el-linux-gnu) 150*b2055c35SXin Li export CFLAGS="-EL -O2 -mips32r2" 151*b2055c35SXin Li TARGET="mipsel-linux-gnu" 152*b2055c35SXin Li ;; 153*b2055c35SXin Li mips32dspr2el-linux-gnu) 154*b2055c35SXin Li export CFLAGS="-EL -O2 -mdspr2" 155*b2055c35SXin Li TARGET="mipsel-linux-gnu" 156*b2055c35SXin Li ;; 157*b2055c35SXin Li mips32r5el-linux-gnu) 158*b2055c35SXin Li export CFLAGS="-EL -O2 -mips32r5 -mmsa" 159*b2055c35SXin Li TARGET="mipsel-linux-gnu" 160*b2055c35SXin Li ;; 161*b2055c35SXin Li mips32eb-linux-gnu) 162*b2055c35SXin Li export CFLAGS="-EB -O2 -mips32" 163*b2055c35SXin Li TARGET="mips-linux-gnu" 164*b2055c35SXin Li ;; 165*b2055c35SXin Li mips64r2el-linux-gnu) 166*b2055c35SXin Li export CFLAGS="-EL -O2 -mips64r2 -mabi=64" 167*b2055c35SXin Li TARGET="mips64el-linux-gnuabi64" 168*b2055c35SXin Li ;; 169*b2055c35SXin Li mips64r6el-linux-gnu) 170*b2055c35SXin Li export CFLAGS="-EL -O2 -mips64r6 -mabi=64 -mmsa" 171*b2055c35SXin Li TARGET="mips-img-linux-gnu" 172*b2055c35SXin Li ;; 173*b2055c35SXin Li i686-linux-gnu) 174*b2055c35SXin Li export CC="gcc -m32" 175*b2055c35SXin Li ;; 176*b2055c35SXin Li i686-linux-clang) 177*b2055c35SXin Li TARGET="i686-linux-gnu" 178*b2055c35SXin Li export CC="clang -m32" 179*b2055c35SXin Li ;; 180*b2055c35SXin Li i686-linux-asan) 181*b2055c35SXin Li TARGET="i686-linux-gnu" 182*b2055c35SXin Li export CC="clang -m32 -fsanitize=address" 183*b2055c35SXin Li ;; 184*b2055c35SXin Li i686-linux-msan) 185*b2055c35SXin Li TARGET="i686-linux-gnu" 186*b2055c35SXin Li export CC="clang -m32 -fsanitize=memory" 187*b2055c35SXin Li ;; 188*b2055c35SXin Li x86_64-linux-clang) 189*b2055c35SXin Li TARGET="x86_64-linux-gnu" 190*b2055c35SXin Li export CC=clang 191*b2055c35SXin Li ;; 192*b2055c35SXin Li x86_64-linux-msan) 193*b2055c35SXin Li TARGET="x86_64-linux-gnu" 194*b2055c35SXin Li export CC="clang -fsanitize=memory" 195*b2055c35SXin Li ;; 196*b2055c35SXin Li force-aligned-32) 197*b2055c35SXin Li config_flags+=("--enable-aligned") 198*b2055c35SXin Li TARGET="i686-linux-gnu" 199*b2055c35SXin Li export CC="gcc -m32" 200*b2055c35SXin Li ;; 201*b2055c35SXin Li force-aligned-64) 202*b2055c35SXin Li config_flags+=("--enable-aligned") 203*b2055c35SXin Li TARGET="x86_64-linux-gnu" 204*b2055c35SXin Li ;; 205*b2055c35SXin Li visibility-default-*) 206*b2055c35SXin Li export CFLAGS="-O2 -g -fvisibility=default" 207*b2055c35SXin Li TARGET="x86_64-linux-gnu" 208*b2055c35SXin Li ;; 209*b2055c35SXin Li visibility-hidden-*) 210*b2055c35SXin Li export CFLAGS="-O2 -g -fvisibility=hidden" 211*b2055c35SXin Li if [[ "${TARGET}" = "visibility-hidden-clang" ]]; then 212*b2055c35SXin Li export CC=clang 213*b2055c35SXin Li fi 214*b2055c35SXin Li TARGET="x86_64-linux-gnu" 215*b2055c35SXin Li ;; 216*b2055c35SXin Li disable-sse4.1) 217*b2055c35SXin Li grep "${TARGET}" "${LIBWEBP_ROOT}/configure.ac" || exit 0 218*b2055c35SXin Li config_flags+=("--${TARGET}") 219*b2055c35SXin Li TARGET="x86_64-linux-gnu" 220*b2055c35SXin Li ;; 221*b2055c35SXin Li disable-near-lossless) 222*b2055c35SXin Li grep "${TARGET}" "${LIBWEBP_ROOT}/configure.ac" || exit 0 223*b2055c35SXin Li config_flags+=("--${TARGET}") 224*b2055c35SXin Li TARGET="x86_64-linux-gnu" 225*b2055c35SXin Li ;; 226*b2055c35SXin Li disable-stats) 227*b2055c35SXin Li git -C "${LIBWEBP_ROOT}" grep WEBP_DISABLE_STATS || exit 0 228*b2055c35SXin Li export CFLAGS="-O2 -g -DWEBP_DISABLE_STATS" 229*b2055c35SXin Li TARGET="x86_64-linux-gnu" 230*b2055c35SXin Li ;; 231*b2055c35SXin Li reduce-size) 232*b2055c35SXin Li git -C "${LIBWEBP_ROOT}" grep WEBP_REDUCE_SIZE || exit 0 233*b2055c35SXin Li export CFLAGS="-O2 -g -DWEBP_REDUCE_SIZE" 234*b2055c35SXin Li TARGET="x86_64-linux-gnu" 235*b2055c35SXin Li ;; 236*b2055c35SXin Li reduce-size-disable-stats) 237*b2055c35SXin Li git -C "${LIBWEBP_ROOT}" grep -e WEBP_DISABLE_STATS -e WEBP_REDUCE_SIZE \ 238*b2055c35SXin Li || exit 0 239*b2055c35SXin Li export CFLAGS="-O2 -g -DWEBP_DISABLE_STATS -DWEBP_REDUCE_SIZE" 240*b2055c35SXin Li TARGET="x86_64-linux-gnu" 241*b2055c35SXin Li ;; 242*b2055c35SXin Li reduce-csp) 243*b2055c35SXin Li git -C "${LIBWEBP_ROOT}" grep WEBP_REDUCE_CSP || exit 0 244*b2055c35SXin Li export CFLAGS="-O2 -g -DWEBP_REDUCE_CSP" 245*b2055c35SXin Li TARGET="x86_64-linux-gnu" 246*b2055c35SXin Li ;; 247*b2055c35SXin Li x86_64-linux-gnu | *mingw32 | aarch64*) ;; # Default target configuration 248*b2055c35SXin Li # non-configure based builds 249*b2055c35SXin Li native) 250*b2055c35SXin Li setup_ccache 251*b2055c35SXin Li # exercise makefile.unix then quit 252*b2055c35SXin Li make -C "${LIBWEBP_ROOT}" -f makefile.unix -j all 253*b2055c35SXin Li for tgt in extras examples/anim_diff; do 254*b2055c35SXin Li grep -q -m 1 "${tgt}" "${LIBWEBP_ROOT}/makefile.unix" \ 255*b2055c35SXin Li && make -C "${LIBWEBP_ROOT}" -f makefile.unix -j "${tgt}" 256*b2055c35SXin Li done 257*b2055c35SXin Li [[ -d "${LIBWEBP_ROOT}/tests/fuzzer" ]] \ 258*b2055c35SXin Li && make -j -C "${LIBWEBP_ROOT}/tests/fuzzer" -f makefile.unix 259*b2055c35SXin Li exit 0 260*b2055c35SXin Li ;; 261*b2055c35SXin Li cmake*) 262*b2055c35SXin Li setup_ccache 263*b2055c35SXin Li # exercise cmake then quit 264*b2055c35SXin Li opts=() 265*b2055c35SXin Li case "${TARGET}" in 266*b2055c35SXin Li cmake-clang) 267*b2055c35SXin Li opts+=("-DCMAKE_C_COMPILER=clang") 268*b2055c35SXin Li ;; 269*b2055c35SXin Li cmake-arm) 270*b2055c35SXin Li opts+=("-DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc") 271*b2055c35SXin Li case "${GERRIT_BRANCH:-}" in 272*b2055c35SXin Li portable-intrinsics | 0.6.1) exit 0 ;; 273*b2055c35SXin Li *) ;; # Skip configuration 274*b2055c35SXin Li esac 275*b2055c35SXin Li ;; 276*b2055c35SXin Li cmake-aarch64) 277*b2055c35SXin Li opts+=("-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc") 278*b2055c35SXin Li case "${GERRIT_BRANCH:-}" in 279*b2055c35SXin Li portable-intrinsics | 0.6.1) exit 0 ;; 280*b2055c35SXin Li *) ;; # Skip configuration 281*b2055c35SXin Li esac 282*b2055c35SXin Li ;; 283*b2055c35SXin Li *) ;; # Skip configuration 284*b2055c35SXin Li esac 285*b2055c35SXin Li case "${BUILD_TYPE}" in 286*b2055c35SXin Li static*) 287*b2055c35SXin Li opts+=("-DBUILD_SHARED_LIBS=OFF") 288*b2055c35SXin Li ;; 289*b2055c35SXin Li experimental) 290*b2055c35SXin Li opts+=("-DWEBP_EXPERIMENTAL_FEATURES=ON" "-DBUILD_SHARED_LIBS=ON") 291*b2055c35SXin Li ;; 292*b2055c35SXin Li *) 293*b2055c35SXin Li opts+=("-DBUILD_SHARED_LIBS=ON") 294*b2055c35SXin Li ;; 295*b2055c35SXin Li esac 296*b2055c35SXin Li case "${BUILD_TYPE}" in 297*b2055c35SXin Li *debug) opts+=("-DCMAKE_BUILD_TYPE=Debug") ;; 298*b2055c35SXin Li *) opts+=("-DCMAKE_BUILD_TYPE=RelWithDebInfo") ;; 299*b2055c35SXin Li esac 300*b2055c35SXin Li cd "${BUILD_DIR}" 301*b2055c35SXin Li opts+=("-DWEBP_BUILD_CWEBP=ON" "-DWEBP_BUILD_DWEBP=ON") 302*b2055c35SXin Li grep -m 1 -q WEBP_BUILD_GIF2WEBP "${LIBWEBP_ROOT}/CMakeLists.txt" \ 303*b2055c35SXin Li && opts+=("-DWEBP_BUILD_GIF2WEBP=ON") 304*b2055c35SXin Li grep -m 1 -q WEBP_BUILD_IMG2WEBP "${LIBWEBP_ROOT}/CMakeLists.txt" \ 305*b2055c35SXin Li && opts+=("-DWEBP_BUILD_IMG2WEBP=ON") 306*b2055c35SXin Li cmake "${opts[@]}" "${LIBWEBP_ROOT}" 307*b2055c35SXin Li make VERBOSE=1 -j 308*b2055c35SXin Li case "${BUILD_TYPE}" in 309*b2055c35SXin Li static) 310*b2055c35SXin Li mkdir -p examples 311*b2055c35SXin Li cp [cd]webp examples 312*b2055c35SXin Li ;; 313*b2055c35SXin Li *) ;; # Skip configuration. 314*b2055c35SXin Li esac 315*b2055c35SXin Li 316*b2055c35SXin Li grep "install" "${LIBWEBP_ROOT}/CMakeLists.txt" || exit 0 317*b2055c35SXin Li 318*b2055c35SXin Li make DESTDIR="${BUILD_DIR}/webp-install" install/strip 319*b2055c35SXin Li mkdir tmp 320*b2055c35SXin Li cd tmp 321*b2055c35SXin Li cat > CMakeLists.txt << EOF 322*b2055c35SXin Licmake_minimum_required(VERSION 2.8.7) 323*b2055c35SXin Li 324*b2055c35SXin Liproject(libwebp C) 325*b2055c35SXin Li 326*b2055c35SXin Lifind_package(WebP) 327*b2055c35SXin Liif (NOT WebP_FOUND) 328*b2055c35SXin Li message(FATAL_ERROR "WebP package not found") 329*b2055c35SXin Liendif () 330*b2055c35SXin Limessage("WebP_FOUND: \${WebP_FOUND}") 331*b2055c35SXin Limessage("WebP_INCLUDE_DIRS: \${WebP_INCLUDE_DIRS}") 332*b2055c35SXin Limessage("WebP_LIBRARIES: \${WebP_LIBRARIES}") 333*b2055c35SXin Limessage("WEBP_INCLUDE_DIRS: \${WEBP_INCLUDE_DIRS}") 334*b2055c35SXin Limessage("WEBP_LIBRARIES: \${WEBP_LIBRARIES}") 335*b2055c35SXin LiEOF 336*b2055c35SXin Li cmake . "${opts[@]}" \ 337*b2055c35SXin Li "-DCMAKE_PREFIX_PATH=${BUILD_DIR}/webp-install/usr/local" 338*b2055c35SXin Li exit 0 339*b2055c35SXin Li ;; 340*b2055c35SXin Li gradle) 341*b2055c35SXin Li setup_ccache 342*b2055c35SXin Li # exercise gradle then quit 343*b2055c35SXin Li [[ -f "${LIBWEBP_ROOT}/gradlew" ]] || exit 0 344*b2055c35SXin Li 345*b2055c35SXin Li cd "${BUILD_DIR}" 346*b2055c35SXin Li # TODO -g / --gradle-user-home could be used if there's a race between jobs 347*b2055c35SXin Li "${LIBWEBP_ROOT}/gradlew" -p "${LIBWEBP_ROOT}" buildAllExecutables 348*b2055c35SXin Li exit 0 349*b2055c35SXin Li ;; 350*b2055c35SXin Li wasm) 351*b2055c35SXin Li grep -m 1 -q WEBP_ENABLE_WASM "${LIBWEBP_ROOT}/CMakeLists.txt" || exit 0 352*b2055c35SXin Li opts+=("-DCMAKE_C_COMPILER=clang" "-DWEBP_ENABLE_WASM=ON") 353*b2055c35SXin Li opts+=("-DWEBP_BUILD_CWEBP=ON" "-DWEBP_BUILD_DWEBP=ON") 354*b2055c35SXin Li case "${BUILD_TYPE}" in 355*b2055c35SXin Li *debug) opts+=("-DCMAKE_BUILD_TYPE=Debug") ;; 356*b2055c35SXin Li *) opts+=("-DCMAKE_BUILD_TYPE=RelWithDebInfo") ;; 357*b2055c35SXin Li esac 358*b2055c35SXin Li cd "${BUILD_DIR}" 359*b2055c35SXin Li cmake "${opts[@]}" "${LIBWEBP_ROOT}" 360*b2055c35SXin Li make VERBOSE=1 -j 361*b2055c35SXin Li mkdir examples 362*b2055c35SXin Li case "${BUILD_TYPE}" in 363*b2055c35SXin Li static) 364*b2055c35SXin Li mkdir -p examples 365*b2055c35SXin Li cp [cd]webp examples 366*b2055c35SXin Li ;; 367*b2055c35SXin Li *) ;; # Skip configuration 368*b2055c35SXin Li esac 369*b2055c35SXin Li exit 0 370*b2055c35SXin Li ;; 371*b2055c35SXin Li *) 372*b2055c35SXin Li log_err "Invalid TARGET" 373*b2055c35SXin Li usage 374*b2055c35SXin Li exit 1 375*b2055c35SXin Li ;; 376*b2055c35SXin Liesac 377*b2055c35SXin Li 378*b2055c35SXin Licase "${TARGET}" in 379*b2055c35SXin Li *mingw32) ;; # Skip configuration 380*b2055c35SXin Li *) 381*b2055c35SXin Li case "${TARGET}-${CC}" in 382*b2055c35SXin Li static-debug-gcc* | static-debug-) 383*b2055c35SXin Li CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage -O0 -g" 384*b2055c35SXin Li CXXFLAGS="${CXXFLAGS} -fprofile-arcs -ftest-coverage -O0 -g" 385*b2055c35SXin Li export CFLAGS CXXFLAGS 386*b2055c35SXin Li ;; 387*b2055c35SXin Li *) ;; # This case should not be reached. 388*b2055c35SXin Li esac 389*b2055c35SXin Li ;; 390*b2055c35SXin Liesac 391*b2055c35SXin Li 392*b2055c35SXin Lisetup_ccache 393*b2055c35SXin Li 394*b2055c35SXin Licd "${LIBWEBP_ROOT}" 395*b2055c35SXin Li./autogen.sh 396*b2055c35SXin Li 397*b2055c35SXin Licd "${BUILD_DIR}" 398*b2055c35SXin Li"${LIBWEBP_ROOT}/configure" \ 399*b2055c35SXin Li --host "${TARGET}" --build "$("${LIBWEBP_ROOT}/config.guess")" \ 400*b2055c35SXin Li --enable-everything "${config_flags[@]}" 401*b2055c35SXin Limake -j V=1 402