1*f4ee7fbaSAndroid Build Coastguard Worker#!/usr/bin/env bash 2*f4ee7fbaSAndroid Build Coastguard Worker 3*f4ee7fbaSAndroid Build Coastguard Worker# Autotools-style (./configure) wrapper for CMake 4*f4ee7fbaSAndroid Build Coastguard Worker# <https://github.com/nemequ/configure-cmake> 5*f4ee7fbaSAndroid Build Coastguard Worker# 6*f4ee7fbaSAndroid Build Coastguard Worker# *** IMPORTANT *** 7*f4ee7fbaSAndroid Build Coastguard Worker# 8*f4ee7fbaSAndroid Build Coastguard Worker# You must include the GNUInstallDirs module (which comes with 9*f4ee7fbaSAndroid Build Coastguard Worker# CMake) in your project. Just put "include (GNUInstallDirs)" in 10*f4ee7fbaSAndroid Build Coastguard Worker# you CMakeLists.txt and you should be good. 11*f4ee7fbaSAndroid Build Coastguard Worker# 12*f4ee7fbaSAndroid Build Coastguard Worker# This script was originally written for Squash 13*f4ee7fbaSAndroid Build Coastguard Worker# <https://quixdb.github.io/squash/> by Evan Nemerson 14*f4ee7fbaSAndroid Build Coastguard Worker# <[email protected]>, but has been spun off into a separate 15*f4ee7fbaSAndroid Build Coastguard Worker# repository. Please feel free to copy it into your own repository, 16*f4ee7fbaSAndroid Build Coastguard Worker# though I would appreciate it if you would post improvements, bugs, 17*f4ee7fbaSAndroid Build Coastguard Worker# feature requests, etc. to the issue tracker at 18*f4ee7fbaSAndroid Build Coastguard Worker# <https://github.com/nemequ/configure-cmake/issues>. 19*f4ee7fbaSAndroid Build Coastguard Worker# 20*f4ee7fbaSAndroid Build Coastguard Worker# To the extent possible under law, the author(s) hereby waive all 21*f4ee7fbaSAndroid Build Coastguard Worker# copyright and related or neighboring rights to this work. For 22*f4ee7fbaSAndroid Build Coastguard Worker# details, see <https://creativecommons.org/publicdomain/zero/1.0/> 23*f4ee7fbaSAndroid Build Coastguard Worker 24*f4ee7fbaSAndroid Build Coastguard WorkerTOP_SRCDIR="$(dirname $0)" 25*f4ee7fbaSAndroid Build Coastguard Worker 26*f4ee7fbaSAndroid Build Coastguard Workerif [ "${CMAKE_CMD}" = "" ]; then 27*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_CMD="cmake" 28*f4ee7fbaSAndroid Build Coastguard Workerfi 29*f4ee7fbaSAndroid Build Coastguard Worker 30*f4ee7fbaSAndroid Build Coastguard WorkerBUILD_TYPE="Debug" 31*f4ee7fbaSAndroid Build Coastguard WorkerPREFIX=/usr/local 32*f4ee7fbaSAndroid Build Coastguard WorkerLIBDIR= 33*f4ee7fbaSAndroid Build Coastguard WorkerCMAKE_ARGS= 34*f4ee7fbaSAndroid Build Coastguard Worker 35*f4ee7fbaSAndroid Build Coastguard Workerif [ -e "${TOP_SRCDIR}/scripts/.configure-custom.sh" ]; then 36*f4ee7fbaSAndroid Build Coastguard Worker . "${TOP_SRCDIR}/scripts/.configure-custom.sh" 37*f4ee7fbaSAndroid Build Coastguard Workerfi 38*f4ee7fbaSAndroid Build Coastguard Worker 39*f4ee7fbaSAndroid Build Coastguard Workerquote() { 40*f4ee7fbaSAndroid Build Coastguard Worker echo "$1" | sed -e "s|'|'\\\\''|g; 1s/^/'/; \$s/\$/'/" 41*f4ee7fbaSAndroid Build Coastguard Worker} 42*f4ee7fbaSAndroid Build Coastguard Worker 43*f4ee7fbaSAndroid Build Coastguard Workerextract_var_string() { 44*f4ee7fbaSAndroid Build Coastguard Worker VAR_NAME=$1 45*f4ee7fbaSAndroid Build Coastguard Worker VAR_NAME=$(echo $1 | sed -e 's/[ \t]*$//') 46*f4ee7fbaSAndroid Build Coastguard Worker if [ "x$2" != "x" ]; then 47*f4ee7fbaSAndroid Build Coastguard Worker VAR_VALUE=$2 48*f4ee7fbaSAndroid Build Coastguard Worker else 49*f4ee7fbaSAndroid Build Coastguard Worker VAR_VALUE=yes 50*f4ee7fbaSAndroid Build Coastguard Worker fi 51*f4ee7fbaSAndroid Build Coastguard Worker 52*f4ee7fbaSAndroid Build Coastguard Worker if [ "x$3" != "x" ]; then 53*f4ee7fbaSAndroid Build Coastguard Worker VAR_UC_NAME=$3 54*f4ee7fbaSAndroid Build Coastguard Worker else 55*f4ee7fbaSAndroid Build Coastguard Worker VAR_UC_NAME=$(echo "$1" | tr '[:lower:]' '[:upper:]' | tr -c '[:alnum:]' '_' | sed 's/_$//g') 56*f4ee7fbaSAndroid Build Coastguard Worker fi 57*f4ee7fbaSAndroid Build Coastguard Worker} 58*f4ee7fbaSAndroid Build Coastguard Worker 59*f4ee7fbaSAndroid Build Coastguard Workerset_config_var() { 60*f4ee7fbaSAndroid Build Coastguard Worker is_with=n 61*f4ee7fbaSAndroid Build Coastguard Worker case "$1" in 62*f4ee7fbaSAndroid Build Coastguard Worker "--enable-"*) 63*f4ee7fbaSAndroid Build Coastguard Worker name="${1#--enable-}" 64*f4ee7fbaSAndroid Build Coastguard Worker cfg="${ENABLE_VARS}" 65*f4ee7fbaSAndroid Build Coastguard Worker ;; 66*f4ee7fbaSAndroid Build Coastguard Worker "--disable-"*) 67*f4ee7fbaSAndroid Build Coastguard Worker name="${1#--disable-}"; 68*f4ee7fbaSAndroid Build Coastguard Worker cfg="${DISABLE_VARS}"; 69*f4ee7fbaSAndroid Build Coastguard Worker ;; 70*f4ee7fbaSAndroid Build Coastguard Worker "--with-"*) 71*f4ee7fbaSAndroid Build Coastguard Worker # IFS="=" read -ra WITHARGS <<< "${1}" 72*f4ee7fbaSAndroid Build Coastguard Worker name="${1#--with-}" 73*f4ee7fbaSAndroid Build Coastguard Worker cfg="${WITH_VARS}" 74*f4ee7fbaSAndroid Build Coastguard Worker is_with=y 75*f4ee7fbaSAndroid Build Coastguard Worker ;; 76*f4ee7fbaSAndroid Build Coastguard Worker esac 77*f4ee7fbaSAndroid Build Coastguard Worker 78*f4ee7fbaSAndroid Build Coastguard Worker found=n 79*f4ee7fbaSAndroid Build Coastguard Worker for varstring in $cfg; do 80*f4ee7fbaSAndroid Build Coastguard Worker extract_var_string $(echo "${varstring}" | tr '|' ' ') 81*f4ee7fbaSAndroid Build Coastguard Worker if [ "x$VAR_NAME" = "x$name" ]; then 82*f4ee7fbaSAndroid Build Coastguard Worker found=y 83*f4ee7fbaSAndroid Build Coastguard Worker break; 84*f4ee7fbaSAndroid Build Coastguard Worker fi 85*f4ee7fbaSAndroid Build Coastguard Worker done 86*f4ee7fbaSAndroid Build Coastguard Worker 87*f4ee7fbaSAndroid Build Coastguard Worker if [ "$found" = "y" ]; then 88*f4ee7fbaSAndroid Build Coastguard Worker if [ "x$is_with" = "xy" ]; then 89*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -D${VAR_UC_NAME}=$(quote "$2")" 90*f4ee7fbaSAndroid Build Coastguard Worker else 91*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -D${VAR_UC_NAME}=$(quote "${VAR_VALUE}")" 92*f4ee7fbaSAndroid Build Coastguard Worker fi 93*f4ee7fbaSAndroid Build Coastguard Worker else 94*f4ee7fbaSAndroid Build Coastguard Worker echo "Unknown parameter: ${1}" 95*f4ee7fbaSAndroid Build Coastguard Worker exit 1 96*f4ee7fbaSAndroid Build Coastguard Worker fi 97*f4ee7fbaSAndroid Build Coastguard Worker} 98*f4ee7fbaSAndroid Build Coastguard Worker 99*f4ee7fbaSAndroid Build Coastguard Workerprefix_to_offset() { 100*f4ee7fbaSAndroid Build Coastguard Worker expr $(echo "${1}" | awk '{ print length }') + 1 101*f4ee7fbaSAndroid Build Coastguard Worker} 102*f4ee7fbaSAndroid Build Coastguard Worker 103*f4ee7fbaSAndroid Build Coastguard Workerprint_help() { 104*f4ee7fbaSAndroid Build Coastguard Worker cat <<EOF >&2 105*f4ee7fbaSAndroid Build Coastguard Worker -h, --help display this help and exit 106*f4ee7fbaSAndroid Build Coastguard Worker --disable-debug disable debugging mode 107*f4ee7fbaSAndroid Build Coastguard Worker --pass-thru pass remaining arguments through to CMake 108*f4ee7fbaSAndroid Build Coastguard Worker 109*f4ee7fbaSAndroid Build Coastguard Worker --prefix=PREFIX install architecture-independent files in PREFIX 110*f4ee7fbaSAndroid Build Coastguard Worker [$PREFIX] 111*f4ee7fbaSAndroid Build Coastguard Worker --bindir=DIR user executables [PREFIX/bin] 112*f4ee7fbaSAndroid Build Coastguard Worker --sbindir=DIR system admin executables [PREFIX/sbin] 113*f4ee7fbaSAndroid Build Coastguard Worker --libexecdir=DIR program executables [PREFIX/libexec] 114*f4ee7fbaSAndroid Build Coastguard Worker --sysconfdir=DIR read-only single-machine data [PREFIX/etc] 115*f4ee7fbaSAndroid Build Coastguard Worker --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 116*f4ee7fbaSAndroid Build Coastguard Worker --localstatedir=DIR modifiable single-machine data [PREFIX/var] 117*f4ee7fbaSAndroid Build Coastguard Worker --libdir=DIR object code libraries [PREFIX/lib] 118*f4ee7fbaSAndroid Build Coastguard Worker --includedir=DIR C header files [PREFIX/include] 119*f4ee7fbaSAndroid Build Coastguard Worker --oldincludedir=DIR C header files for non-gcc [/usr/include] 120*f4ee7fbaSAndroid Build Coastguard Worker --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] 121*f4ee7fbaSAndroid Build Coastguard Worker --datadir=DIR read-only architecture-independent data [DATAROOTDIR] 122*f4ee7fbaSAndroid Build Coastguard Worker --infodir=DIR info documentation [DATAROOTDIR/info] 123*f4ee7fbaSAndroid Build Coastguard Worker --localedir=DIR locale-dependent data [DATAROOTDIR/locale] 124*f4ee7fbaSAndroid Build Coastguard Worker --mandir=DIR man documentation [DATAROOTDIR/man] 125*f4ee7fbaSAndroid Build Coastguard Worker --docdir=DIR documentation root [DATAROOTDIR/doc/PROJECT_NAME] 126*f4ee7fbaSAndroid Build Coastguard WorkerEOF 127*f4ee7fbaSAndroid Build Coastguard Worker 128*f4ee7fbaSAndroid Build Coastguard Worker first=y 129*f4ee7fbaSAndroid Build Coastguard Worker for varstring in ${ENABLE_VARS}; do 130*f4ee7fbaSAndroid Build Coastguard Worker if [ $first = 'y' ]; then 131*f4ee7fbaSAndroid Build Coastguard Worker echo "" 132*f4ee7fbaSAndroid Build Coastguard Worker first=n 133*f4ee7fbaSAndroid Build Coastguard Worker fi 134*f4ee7fbaSAndroid Build Coastguard Worker extract_var_string $(echo "${varstring}" | tr '|' ' ') 135*f4ee7fbaSAndroid Build Coastguard Worker var_doc_name="ENABLE_${VAR_UC_NAME}_DOC" 136*f4ee7fbaSAndroid Build Coastguard Worker eval "docstring=\$$var_doc_name" 137*f4ee7fbaSAndroid Build Coastguard Worker if [ "x${docstring}" = "x" ]; then 138*f4ee7fbaSAndroid Build Coastguard Worker printf " --enable-%-14s enable %s support\n" "${VAR_NAME}" "$(echo -n "${VAR_NAME}" | tr '-' ' ')" 139*f4ee7fbaSAndroid Build Coastguard Worker else 140*f4ee7fbaSAndroid Build Coastguard Worker printf " --enable-%-14s %s\n" "${VAR_NAME}" "$docstring" 141*f4ee7fbaSAndroid Build Coastguard Worker fi 142*f4ee7fbaSAndroid Build Coastguard Worker done 143*f4ee7fbaSAndroid Build Coastguard Worker 144*f4ee7fbaSAndroid Build Coastguard Worker first=y 145*f4ee7fbaSAndroid Build Coastguard Worker for varstring in ${DISABLE_VARS}; do 146*f4ee7fbaSAndroid Build Coastguard Worker if [ $first = 'y' ]; then 147*f4ee7fbaSAndroid Build Coastguard Worker echo "" 148*f4ee7fbaSAndroid Build Coastguard Worker first=n 149*f4ee7fbaSAndroid Build Coastguard Worker fi 150*f4ee7fbaSAndroid Build Coastguard Worker extract_var_string $(echo "${varstring}" | tr '|' ' ') 151*f4ee7fbaSAndroid Build Coastguard Worker var_doc_name="DISABLE_${VAR_UC_NAME}_DOC" 152*f4ee7fbaSAndroid Build Coastguard Worker eval "docstring=\$$var_doc_name" 153*f4ee7fbaSAndroid Build Coastguard Worker if [ "x${docstring}" = "x" ]; then 154*f4ee7fbaSAndroid Build Coastguard Worker printf " --disable-%-13s disable %s support\n" "${VAR_NAME}" "$(echo -n "${VAR_NAME}" | tr '-' ' ')" 155*f4ee7fbaSAndroid Build Coastguard Worker else 156*f4ee7fbaSAndroid Build Coastguard Worker printf " --disable-%-13s %s\n" "${VAR_NAME}" "$docstring" 157*f4ee7fbaSAndroid Build Coastguard Worker fi 158*f4ee7fbaSAndroid Build Coastguard Worker done 159*f4ee7fbaSAndroid Build Coastguard Worker 160*f4ee7fbaSAndroid Build Coastguard Worker first=y 161*f4ee7fbaSAndroid Build Coastguard Worker for varstring in ${WITH_VARS}; do 162*f4ee7fbaSAndroid Build Coastguard Worker if [ $first = 'y' ]; then 163*f4ee7fbaSAndroid Build Coastguard Worker echo "" 164*f4ee7fbaSAndroid Build Coastguard Worker first=n 165*f4ee7fbaSAndroid Build Coastguard Worker fi 166*f4ee7fbaSAndroid Build Coastguard Worker extract_var_string $(echo "${varstring}" | tr '|' ' ') 167*f4ee7fbaSAndroid Build Coastguard Worker var_doc_name="WITH_${VAR_UC_NAME}_DOC" 168*f4ee7fbaSAndroid Build Coastguard Worker eval "docstring=\$$var_doc_name" 169*f4ee7fbaSAndroid Build Coastguard Worker paraminfo="${VAR_NAME}=${VAR_VALUE}" 170*f4ee7fbaSAndroid Build Coastguard Worker if [ "x${docstring}" = "x" ]; then 171*f4ee7fbaSAndroid Build Coastguard Worker printf " --with-%-16s enable %s support\n" "$paraminfo" "$(echo -n "${VAR_NAME}" | tr '-' ' ')" 172*f4ee7fbaSAndroid Build Coastguard Worker else 173*f4ee7fbaSAndroid Build Coastguard Worker printf " --with-%-16s %s\n" "$paraminfo" "$docstring" 174*f4ee7fbaSAndroid Build Coastguard Worker fi 175*f4ee7fbaSAndroid Build Coastguard Worker done 176*f4ee7fbaSAndroid Build Coastguard Worker 177*f4ee7fbaSAndroid Build Coastguard Worker exit 0 178*f4ee7fbaSAndroid Build Coastguard Worker} 179*f4ee7fbaSAndroid Build Coastguard Worker 180*f4ee7fbaSAndroid Build Coastguard Workerwhile [ $# != 0 ]; do 181*f4ee7fbaSAndroid Build Coastguard Worker case "$1" in 182*f4ee7fbaSAndroid Build Coastguard Worker "--prefix="*) 183*f4ee7fbaSAndroid Build Coastguard Worker PREFIX="${1#*=}";; 184*f4ee7fbaSAndroid Build Coastguard Worker "--prefix") 185*f4ee7fbaSAndroid Build Coastguard Worker PREFIX="${2}"; shift;; 186*f4ee7fbaSAndroid Build Coastguard Worker "--bindir="*) 187*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_BINDIR=$(quote "${1#*=}")";; 188*f4ee7fbaSAndroid Build Coastguard Worker "--bindir") 189*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_BINDIR=$(quote "$2")"; shift;; 190*f4ee7fbaSAndroid Build Coastguard Worker "--sbindir="*) 191*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SBINDIR=$(quote "${1#*=}")";; 192*f4ee7fbaSAndroid Build Coastguard Worker "--sbindir") 193*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SBINDIR=$(quote "$2")"; shift;; 194*f4ee7fbaSAndroid Build Coastguard Worker "--libexecdir="*) 195*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LIBEXECDIR=$(quote "${1#*=}")";; 196*f4ee7fbaSAndroid Build Coastguard Worker "--libexecdir") 197*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LIBEXECDIR=$(quote "$2")"; shift;; 198*f4ee7fbaSAndroid Build Coastguard Worker "--sysconfdir="*) 199*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SYSCONFDIR=$(quote "${1#*=}")";; 200*f4ee7fbaSAndroid Build Coastguard Worker "--sysconfdir") 201*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SYSCONFDIR=$(quote "$2")"; shift;; 202*f4ee7fbaSAndroid Build Coastguard Worker "--sharedstatedir="*) 203*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SHAREDSTATEDIR=$(quote "${1#*=}")";; 204*f4ee7fbaSAndroid Build Coastguard Worker "--sharedstatedir") 205*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SHAREDSTATEDIR=$(quote "$2")"; shift;; 206*f4ee7fbaSAndroid Build Coastguard Worker "--localstatedir="*) 207*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALSTATEDIR=$(quote "${1#*=}")";; 208*f4ee7fbaSAndroid Build Coastguard Worker "--localstatedir") 209*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALSTATEDIR=$(quote "$2")"; shift;; 210*f4ee7fbaSAndroid Build Coastguard Worker "--libdir="*) 211*f4ee7fbaSAndroid Build Coastguard Worker LIBDIR="${1#*=}";; 212*f4ee7fbaSAndroid Build Coastguard Worker "--libdir") 213*f4ee7fbaSAndroid Build Coastguard Worker LIBDIR="${2}"; shift;; 214*f4ee7fbaSAndroid Build Coastguard Worker "--includedir="*) 215*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INCLUDEDIR=$(quote "${1#*=}")";; 216*f4ee7fbaSAndroid Build Coastguard Worker "--includedir") 217*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INCLUDEDIR=$(quote "$2")"; shift;; 218*f4ee7fbaSAndroid Build Coastguard Worker "--oldincludedir="*) 219*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_OLDINCLUDEDIR=$(quote "${1#*=}")";; 220*f4ee7fbaSAndroid Build Coastguard Worker "--oldincludedir") 221*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_OLDINCLUDEDIR=$(quote "$2")"; shift;; 222*f4ee7fbaSAndroid Build Coastguard Worker "--datarootdir="*) 223*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATAROOTDIR=$(quote "${1#*=}")";; 224*f4ee7fbaSAndroid Build Coastguard Worker "--datarootdir") 225*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATAROOTDIR=$(quote "$2")"; shift;; 226*f4ee7fbaSAndroid Build Coastguard Worker "--datadir="*) 227*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATADIR=$(quote "${1#*=}")";; 228*f4ee7fbaSAndroid Build Coastguard Worker "--datadir") 229*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATADIR=$(quote "$2")"; shift;; 230*f4ee7fbaSAndroid Build Coastguard Worker "--infodir="*) 231*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INFODIR=$(quote "${1#*=}")";; 232*f4ee7fbaSAndroid Build Coastguard Worker "--infodir") 233*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INFODIR=$(quote "$2")"; shift;; 234*f4ee7fbaSAndroid Build Coastguard Worker "--localedir="*) 235*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALEDIR=$(quote "${1#*=}")";; 236*f4ee7fbaSAndroid Build Coastguard Worker "--localedir") 237*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALEDIR=$(quote "$2")"; shift;; 238*f4ee7fbaSAndroid Build Coastguard Worker "--mandir="*) 239*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_MANDIR=$(quote "${1#*=}")";; 240*f4ee7fbaSAndroid Build Coastguard Worker "--mandir") 241*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_MANDIR=$(quote "$2")"; shift;; 242*f4ee7fbaSAndroid Build Coastguard Worker "--docdir="*) 243*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DOCDIR=$(quote "${1#*=}")";; 244*f4ee7fbaSAndroid Build Coastguard Worker "--docdir") 245*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DOCDIR=$(quote "$2")"; shift;; 246*f4ee7fbaSAndroid Build Coastguard Worker 247*f4ee7fbaSAndroid Build Coastguard Worker "CC="*) 248*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_COMPILER=$(quote "${1#*=}")";; 249*f4ee7fbaSAndroid Build Coastguard Worker "CXX="*) 250*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_COMPILER=$(quote "${1#*=}")";; 251*f4ee7fbaSAndroid Build Coastguard Worker "CFLAGS="*) 252*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_FLAGS=$(quote "${1#*=}")";; 253*f4ee7fbaSAndroid Build Coastguard Worker "CXXFLAGS="*) 254*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_FLAGS=$(quote "${1#*=}")";; 255*f4ee7fbaSAndroid Build Coastguard Worker "LDFLAGS="*) 256*f4ee7fbaSAndroid Build Coastguard Worker LDFLAGS="$LDFLAGS ${1#*=}";; 257*f4ee7fbaSAndroid Build Coastguard Worker 258*f4ee7fbaSAndroid Build Coastguard Worker "--help") 259*f4ee7fbaSAndroid Build Coastguard Worker print_help;; 260*f4ee7fbaSAndroid Build Coastguard Worker "-h") 261*f4ee7fbaSAndroid Build Coastguard Worker print_help;; 262*f4ee7fbaSAndroid Build Coastguard Worker 263*f4ee7fbaSAndroid Build Coastguard Worker # This flag is the only one which may be a bit surprising to 264*f4ee7fbaSAndroid Build Coastguard Worker # people. Autotools always builds with debugging symbols enabled 265*f4ee7fbaSAndroid Build Coastguard Worker # (AFAIK), but for cmake you have to do -DCMAKE_BUILD_TYPE=Debug. 266*f4ee7fbaSAndroid Build Coastguard Worker # Unfortunately this can change other things as well, so although 267*f4ee7fbaSAndroid Build Coastguard Worker # I realize there is no --disable-debug flag I thought it would be 268*f4ee7fbaSAndroid Build Coastguard Worker # prudent to support one here. 269*f4ee7fbaSAndroid Build Coastguard Worker "--disable-debug") 270*f4ee7fbaSAndroid Build Coastguard Worker BUILD_TYPE="Release";; 271*f4ee7fbaSAndroid Build Coastguard Worker 272*f4ee7fbaSAndroid Build Coastguard Worker "--pass-thru") 273*f4ee7fbaSAndroid Build Coastguard Worker shift; 274*f4ee7fbaSAndroid Build Coastguard Worker while [ $# != 0 ]; do 275*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS $(quote "${1}")"; 276*f4ee7fbaSAndroid Build Coastguard Worker shift; 277*f4ee7fbaSAndroid Build Coastguard Worker done;; 278*f4ee7fbaSAndroid Build Coastguard Worker 279*f4ee7fbaSAndroid Build Coastguard Worker "--enable-"*) 280*f4ee7fbaSAndroid Build Coastguard Worker set_config_var "$1" 281*f4ee7fbaSAndroid Build Coastguard Worker ;; 282*f4ee7fbaSAndroid Build Coastguard Worker 283*f4ee7fbaSAndroid Build Coastguard Worker "--disable-"*) 284*f4ee7fbaSAndroid Build Coastguard Worker set_config_var "$1" 285*f4ee7fbaSAndroid Build Coastguard Worker ;; 286*f4ee7fbaSAndroid Build Coastguard Worker 287*f4ee7fbaSAndroid Build Coastguard Worker "--with-"*) 288*f4ee7fbaSAndroid Build Coastguard Worker name=$(echo "${1#--with-}" | awk '{split($1,v,"="); print v[1]}') 289*f4ee7fbaSAndroid Build Coastguard Worker case "${1}" in 290*f4ee7fbaSAndroid Build Coastguard Worker "--with-${name}="*) 291*f4ee7fbaSAndroid Build Coastguard Worker set_config_var "--with-${name}" "${1#--with-${name}=}";; 292*f4ee7fbaSAndroid Build Coastguard Worker "--with-${name}") 293*f4ee7fbaSAndroid Build Coastguard Worker set_config_var "$1" "$2"; 294*f4ee7fbaSAndroid Build Coastguard Worker shift;; 295*f4ee7fbaSAndroid Build Coastguard Worker esac 296*f4ee7fbaSAndroid Build Coastguard Worker ;; 297*f4ee7fbaSAndroid Build Coastguard Worker 298*f4ee7fbaSAndroid Build Coastguard Worker *) 299*f4ee7fbaSAndroid Build Coastguard Worker echo "$0: error: unrecognized option: \`$1'" >&2 300*f4ee7fbaSAndroid Build Coastguard Worker echo "Try \`$0 --help' for more information" >&2 301*f4ee7fbaSAndroid Build Coastguard Worker exit -1 302*f4ee7fbaSAndroid Build Coastguard Worker esac; 303*f4ee7fbaSAndroid Build Coastguard Worker shift 304*f4ee7fbaSAndroid Build Coastguard Workerdone 305*f4ee7fbaSAndroid Build Coastguard Worker 306*f4ee7fbaSAndroid Build Coastguard Workerif [ "x${LIBDIR}" = "x" ]; then 307*f4ee7fbaSAndroid Build Coastguard Worker LIBDIR="${PREFIX}/lib" 308*f4ee7fbaSAndroid Build Coastguard Workerfi 309*f4ee7fbaSAndroid Build Coastguard Worker 310*f4ee7fbaSAndroid Build Coastguard Worker# Unlike CFLAGS/CXXFLAGS/CC/CXX, LDFLAGS isn't handled by CMake, so we 311*f4ee7fbaSAndroid Build Coastguard Worker# need to parse it here. 312*f4ee7fbaSAndroid Build Coastguard Workerif [ "x${LDFLAGS}" != "x" ]; then 313*f4ee7fbaSAndroid Build Coastguard Worker for varname in EXE MODULE SHARED STATIC; do 314*f4ee7fbaSAndroid Build Coastguard Worker CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_${varname}_LINKER_FLAGS=$(quote "$LDFLAGS")" 315*f4ee7fbaSAndroid Build Coastguard Worker done 316*f4ee7fbaSAndroid Build Coastguard Workerfi 317*f4ee7fbaSAndroid Build Coastguard Worker 318*f4ee7fbaSAndroid Build Coastguard Workereval "${CMAKE_CMD}" "${TOP_SRCDIR}" -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DCMAKE_INSTALL_LIBDIR="${LIBDIR}" ${CMAKE_ARGS} 319