xref: /aosp_15_r20/external/brotli/configure-cmake (revision f4ee7fba7774faf2a30f13154332c0a06550dbc4)
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