#!/usr/bin/env bash # # Copyright 2016 Software Freedom Conservancy Inc. # # This software is licensed under the GNU LGPL (version 2.1 or later). # See the COPYING file in this distribution. srcdir=$(cd $(dirname $0) && pwd) DEFAULT_PREFIX="/usr/local" PREFIX=$DEFAULT_PREFIX configure_help() { cat <<- EOT Usage: ./configure [OPTIONS]... Options: -h, --help Print this help and exit. --prefix=PREFIX Prepend PREFIX to program installation paths. [$DEFAULT_PREFIX] --debug Build for debugging. --disable-fatal-warnings Disable Vala fatal warnings when compiling. --enable-ref-tracking Enable reference tracking which is dumped to stdout when the program exits. --disable-schemas-compile Disable compiling the GSettings schema. --disable-desktop-update Disable desktop database update. --disable-desktop-validate Disable checking for errors in generated desktop file. --disable-icon-update Disable icon cache update. --disable-documentation Disable generating and installing translated help documentation. --disable-contractor Disable installing Contractor files. --disable-poodle-ssl3 Disable POODLE SSLv3 GnuTLS priority fix. (Not recommended.) Some influential environment variables: PKG_CONFIG_PATH Adds directories to pkg-config's search path. PKG_CONFIG_LIBDIR Overrides pkg-config's built-in search path. VALAC Name of the vala compiler to use, e.g. "valac-0.18". EOT } abort() { printf "%s: Invalid argument %s\n" $0 $1 configure_help exit 1 } while [ $# != 0 ] do if [[ "$1" = *=* ]] then option=${1%%=*} value=${1#*=} else option=$1 value= fi case $option in -h | --help) configure_help exit 0 ;; --prefix) [ ! $value ] && abort $1 CMDLINE="${CMDLINE} -DCMAKE_INSTALL_PREFIX=${value}" ;; # ignored for autotools compatibility --bindir | --libdir | --sbindir |--datadir | --localstatedir | --includedir) ;; --infodir | --sysconfdir | --mandir | --libexecdir) ;; --build | --host | --target) ;; --disable-silent-rules | --disable-static ) ;; --debug) CMDLINE="${CMDLINE} -DDEBUG=ON" ;; --disable-fatal-warnings) CMDLINE="${CMDLINE} -DNO_FATAL_WARNINGS=ON" ;; --enable-ref-tracking) CMDLINE="${CMDLINE} -DREF_TRACKING=ON" ;; --disable-schemas-compile) CMDLINE="${CMDLINE} -DGSETTINGS_COMPILE=OFF" CMDLINE="${CMDLINE} -DGSETTINGS_COMPILE_IN_PLACE=OFF" ;; --disable-icon-update) CMDLINE="${CMDLINE} -DICON_UPDATE=OFF" ;; --disable-desktop-update) CMDLINE="${CMDLINE} -DDESKTOP_UPDATE=OFF" ;; --disable-desktop-validate) CMDLINE="${CMDLINE} -DDESKTOP_VALIDATE=OFF" ;; --disable-documentation) CMDLINE="${CMDLINE} -DTRANSLATE_HELP=OFF" ;; --disable-contractor) CMDLINE="${CMDLINE} -DDISABLE_CONTRACT=ON" ;; --disable-poodle-ssl3) CMDLINE="${CMDLINE} -DDISABLE_POODLE=ON" ;; VALAC) [ ! $value ] && abort $1 VALAC=$value ;; *) abort $option ;; esac shift done # Verify use supplied vala executable if [ -n "$VALAC" ] then VALA_EXECUTABLE=`type -p "$VALAC"` if [ -z "$VALA_EXECUTABLE" ] then printf "$VALAC is not an executable program.\n" exit 1 fi CMDLINE="${CMDLINE} -DVALA_EXECUTABLE='$VALA_EXECUTABLE'" fi # Verify cmake is installed # TODO: Check for minimum version number if ! cmake --version then printf "cmake must be installed to configure and build.\n" exit 1 fi using_srcdir_ne_builddir=false # Simple check to verify this script is running in the root of the source tree if [ -e Makefile.in ] then using_srcdir_ne_builddir=true # Remove existing Makefile so it's not left around if configure fails rm -f Makefile # Remove the build folder to force Cmake to update its cache. rm -fr build if ! mkdir -p build then printf "Unable to create build directory.\n" exit 1 fi cd build fi if ! (cmake $CMDLINE ${srcdir}) then printf "Unable to prepare build directory.\n" exit 1 fi if ${using_srcdir_ne_builddir} then cd .. if ! cp -f ${srcdir}/Makefile.in Makefile then printf "Unable to prepare Makefile.\n" exit 1 fi fi printf "Configured. Type 'make' to build, 'make install' to install.\n"