aboutsummaryrefslogtreecommitdiff
path: root/configure-cmake
diff options
context:
space:
mode:
authorEugene Kliuchnikov <eustas@google.com>2016-12-20 17:45:40 +0100
committerGitHub <noreply@github.com>2016-12-20 17:45:40 +0100
commit5814438791fb2d4394b46e5682a96b68cd092803 (patch)
treec82530a0114a9285182f0f1ced3a2509f01e6294 /configure-cmake
parentf62cd2bcd294fa1562034acd4c6cde028744191e (diff)
downloadbrotli-5814438791fb2d4394b46e5682a96b68cd092803.zip
brotli-5814438791fb2d4394b46e5682a96b68cd092803.tar.gz
brotli-5814438791fb2d4394b46e5682a96b68cd092803.tar.bz2
Add configure-cmake (#474) (#486)
* Add configure-cmake * `curl https://raw.githubusercontent.com/nemequ/configure-cmake/7b0464af79bbaca535f0279316558e1d84e5c124/configure > configure-cmake` * Add `--disable-shared-libs` parameter. * Unix-friendly script prologue. * Update README.md
Diffstat (limited to 'configure-cmake')
-rwxr-xr-xconfigure-cmake318
1 files changed, 318 insertions, 0 deletions
diff --git a/configure-cmake b/configure-cmake
new file mode 100755
index 0000000..9f32456
--- /dev/null
+++ b/configure-cmake
@@ -0,0 +1,318 @@
+#!/usr/bin/env bash
+
+# Autotools-style (./configure) wrapper for CMake
+# <https://github.com/nemequ/configure-cmake>
+#
+# *** IMPORTANT ***
+#
+# You must include the GNUInstallDirs module (which comes with
+# CMake) in your project. Just put "include (GNUInstallDirs)" in
+# you CMakeLists.txt and you should be good.
+#
+# This script was originally written for Squash
+# <https://quixdb.github.io/squash/> by Evan Nemerson
+# <evan@nemerson.com>, but has been spun off into a separate
+# repository. Please feel free to copy it into your own repository,
+# though I would appreciate it if you would post improvements, bugs,
+# feature requests, etc. to the issue tracker at
+# <https://github.com/nemequ/configure-cmake/issues>.
+#
+# To the extent possible under law, the author(s) hereby waive all
+# copyright and related or neighboring rights to this work. For
+# details, see <https://creativecommons.org/publicdomain/zero/1.0/>
+
+TOP_SRCDIR="$(dirname $0)"
+
+if [ "${CMAKE_CMD}" = "" ]; then
+ CMAKE_CMD="cmake"
+fi
+
+BUILD_TYPE="Debug"
+PREFIX=/usr/local
+LIBDIR=
+CMAKE_ARGS=
+
+if [ -e "${TOP_SRCDIR}/.configure-custom.sh" ]; then
+ . "${TOP_SRCDIR}/.configure-custom.sh"
+fi
+
+quote() {
+ echo "$1" | sed -e "s|'|'\\\\''|g; 1s/^/'/; \$s/\$/'/"
+}
+
+extract_var_string() {
+ VAR_NAME=$1
+ VAR_NAME=$(echo $1 | sed -e 's/[ \t]*$//')
+ if [ "x$2" != "x" ]; then
+ VAR_VALUE=$2
+ else
+ VAR_VALUE=yes
+ fi
+
+ if [ "x$3" != "x" ]; then
+ VAR_UC_NAME=$3
+ else
+ VAR_UC_NAME=$(echo "$1" | tr '[:lower:]' '[:upper:]' | tr -c '[:alnum:]' '_' | sed 's/_$//g')
+ fi
+}
+
+set_config_var() {
+ is_with=n
+ case "$1" in
+ "--enable-"*)
+ name="${1#--enable-}"
+ cfg="${ENABLE_VARS}"
+ ;;
+ "--disable-"*)
+ name="${1#--disable-}";
+ cfg="${DISABLE_VARS}";
+ ;;
+ "--with-"*)
+ # IFS="=" read -ra WITHARGS <<< "${1}"
+ name="${1#--with-}"
+ cfg="${WITH_VARS}"
+ is_with=y
+ ;;
+ esac
+
+ found=n
+ for varstring in $cfg; do
+ extract_var_string $(echo "${varstring}" | tr '|' ' ')
+ if [ "x$VAR_NAME" = "x$name" ]; then
+ found=y
+ break;
+ fi
+ done
+
+ if [ "$found" = "y" ]; then
+ if [ "x$is_with" = "xy" ]; then
+ CMAKE_ARGS="$CMAKE_ARGS -D${VAR_UC_NAME}=$(quote "$2")"
+ else
+ CMAKE_ARGS="$CMAKE_ARGS -D${VAR_UC_NAME}=$(quote "${VAR_VALUE}")"
+ fi
+ else
+ echo "Unknown parameter: ${1}"
+ exit 1
+ fi
+}
+
+prefix_to_offset() {
+ expr $(echo "${1}" | awk '{ print length }') + 1
+}
+
+print_help() {
+ cat <<EOF >&2
+ -h, --help display this help and exit
+ --disable-debug disable debugging mode
+ --pass-thru pass remaining arguments through to CMake
+
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$PREFIX]
+ --bindir=DIR user executables [PREFIX/bin]
+ --sbindir=DIR system admin executables [PREFIX/sbin]
+ --libexecdir=DIR program executables [PREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [PREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/PROJECT_NAME]
+EOF
+
+ first=y
+ for varstring in ${ENABLE_VARS}; do
+ if [ $first = 'y' ]; then
+ echo ""
+ first=n
+ fi
+ extract_var_string $(echo "${varstring}" | tr '|' ' ')
+ var_doc_name="ENABLE_${VAR_UC_NAME}_DOC"
+ eval "docstring=\$$var_doc_name"
+ if [ "x${docstring}" = "x" ]; then
+ printf " --enable-%-14s enable %s support\n" "${VAR_NAME}" "$(echo -n "${VAR_NAME}" | tr '-' ' ')"
+ else
+ printf " --enable-%-14s %s\n" "${VAR_NAME}" "$docstring"
+ fi
+ done
+
+ first=y
+ for varstring in ${DISABLE_VARS}; do
+ if [ $first = 'y' ]; then
+ echo ""
+ first=n
+ fi
+ extract_var_string $(echo "${varstring}" | tr '|' ' ')
+ var_doc_name="DISABLE_${VAR_UC_NAME}_DOC"
+ eval "docstring=\$$var_doc_name"
+ if [ "x${docstring}" = "x" ]; then
+ printf " --disable-%-13s disable %s support\n" "${VAR_NAME}" "$(echo -n "${VAR_NAME}" | tr '-' ' ')"
+ else
+ printf " --disable-%-13s %s\n" "${VAR_NAME}" "$docstring"
+ fi
+ done
+
+ first=y
+ for varstring in ${WITH_VARS}; do
+ if [ $first = 'y' ]; then
+ echo ""
+ first=n
+ fi
+ extract_var_string $(echo "${varstring}" | tr '|' ' ')
+ var_doc_name="WITH_${VAR_UC_NAME}_DOC"
+ eval "docstring=\$$var_doc_name"
+ paraminfo="${VAR_NAME}=${VAR_VALUE}"
+ if [ "x${docstring}" = "x" ]; then
+ printf " --with-%-16s enable %s support\n" "$paraminfo" "$(echo -n "${VAR_NAME}" | tr '-' ' ')"
+ else
+ printf " --with-%-16s %s\n" "$paraminfo" "$docstring"
+ fi
+ done
+
+ exit 0
+}
+
+while [ $# != 0 ]; do
+ case "$1" in
+ "--prefix="*)
+ PREFIX="${1#*=}";;
+ "--prefix")
+ PREFIX="${2}"; shift;;
+ "--bindir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_BINDIR=$(quote "${1#*=}")";;
+ "--bindir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_BINDIR=$(quote "$2")"; shift;;
+ "--sbindir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SBINDIR=$(quote "${1#*=}")";;
+ "--sbindir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SBINDIR=$(quote "$2")"; shift;;
+ "--libexecdir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LIBEXECDIR=$(quote "${1#*=}")";;
+ "--libexecdir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LIBEXECDIR=$(quote "$2")"; shift;;
+ "--sysconfdir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SYSCONFDIR=$(quote "${1#*=}")";;
+ "--sysconfdir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SYSCONFDIR=$(quote "$2")"; shift;;
+ "--sharedstatedir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SHAREDSTATEDIR=$(quote "${1#*=}")";;
+ "--sharedstatedir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_SHAREDSTATEDIR=$(quote "$2")"; shift;;
+ "--localstatedir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALSTATEDIR=$(quote "${1#*=}")";;
+ "--localstatedir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALSTATEDIR=$(quote "$2")"; shift;;
+ "--libdir="*)
+ LIBDIR="${1#*=}";;
+ "--libdir")
+ LIBDIR="${2}"; shift;;
+ "--includedir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INCLUDEDIR=$(quote "${1#*=}")";;
+ "--includedir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INCLUDEDIR=$(quote "$2")"; shift;;
+ "--oldincludedir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_OLDINCLUDEDIR=$(quote "${1#*=}")";;
+ "--oldincludedir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_OLDINCLUDEDIR=$(quote "$2")"; shift;;
+ "--datarootdir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATAROOTDIR=$(quote "${1#*=}")";;
+ "--datarootdir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATAROOTDIR=$(quote "$2")"; shift;;
+ "--datadir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATADIR=$(quote "${1#*=}")";;
+ "--datadir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DATADIR=$(quote "$2")"; shift;;
+ "--infodir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INFODIR=$(quote "${1#*=}")";;
+ "--infodir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_INFODIR=$(quote "$2")"; shift;;
+ "--localedir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALEDIR=$(quote "${1#*=}")";;
+ "--localedir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_LOCALEDIR=$(quote "$2")"; shift;;
+ "--mandir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_MANDIR=$(quote "${1#*=}")";;
+ "--mandir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_MANDIR=$(quote "$2")"; shift;;
+ "--docdir="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DOCDIR=$(quote "${1#*=}")";;
+ "--docdir")
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_INSTALL_DOCDIR=$(quote "$2")"; shift;;
+
+ "CC="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_COMPILER=$(quote "${1#*=}")";;
+ "CXX="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_COMPILER=$(quote "${1#*=}")";;
+ "CFLAGS="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_FLAGS=$(quote "${1#*=}")";;
+ "CXXFLAGS="*)
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_FLAGS=$(quote "${1#*=}")";;
+ "LDFLAGS="*)
+ LDFLAGS="$LDFLAGS ${1#*=}";;
+
+ "--help")
+ print_help;;
+ "-h")
+ print_help;;
+
+ # This flag is the only one which may be a bit surprising to
+ # people. Autotools always builds with debugging symbols enabled
+ # (AFAIK), but for cmake you have to do -DCMAKE_BUILD_TYPE=Debug.
+ # Unfortunately this can change other things as well, so although
+ # I realize there is no --disable-debug flag I thought it would be
+ # prudent to support one here.
+ "--disable-debug")
+ BUILD_TYPE="Release";;
+
+ "--pass-thru")
+ shift;
+ while [ $# != 0 ]; do
+ CMAKE_ARGS="$CMAKE_ARGS $(quote "${1}")";
+ shift;
+ done;;
+
+ "--enable-"*)
+ set_config_var "$1"
+ ;;
+
+ "--disable-"*)
+ set_config_var "$1"
+ ;;
+
+ "--with-"*)
+ name=$(echo "${1#--with-}" | awk '{split($1,v,"="); print v[1]}')
+ case "${1}" in
+ "--with-${name}="*)
+ set_config_var "--with-${name}" "${1#--with-${name}=}";;
+ "--with-${name}")
+ set_config_var "$1" "$2";
+ shift;;
+ esac
+ ;;
+
+ *)
+ echo "$0: error: unrecognized option: \`$1'" >&2
+ echo "Try \`$0 --help' for more information" >&2
+ exit -1
+ esac;
+ shift
+done
+
+if [ "x${LIBDIR}" = "x" ]; then
+ LIBDIR="${PREFIX}/lib"
+fi
+
+# Unlike CFLAGS/CXXFLAGS/CC/CXX, LDFLAGS isn't handled by CMake, so we
+# need to parse it here.
+if [ "x${LDFLAGS}" != "x" ]; then
+ for varname in EXE MODULE SHARED STATIC; do
+ CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_${varname}_LINKER_FLAGS=$(quote "$LDFLAGS")"
+ done
+fi
+
+eval "${CMAKE_CMD}" "${TOP_SRCDIR}" -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" -DCMAKE_INSTALL_PREFIX="${PREFIX}" -DCMAKE_INSTALL_LIBDIR="${LIBDIR}" ${CMAKE_ARGS}