223 lines
6.4 KiB
Bash
Executable file
223 lines
6.4 KiB
Bash
Executable file
#!/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".
|
|
VALADOC Name of the valadoc executable to use, e.g. "valadoc-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) if [ -z "$value"]; then
|
|
# handle jhbuild's use of "--prefix /path"
|
|
value="$2"
|
|
shift
|
|
fi
|
|
[ ! "$value" ] && abort $1
|
|
CMDLINE="${CMDLINE} -DCMAKE_INSTALL_PREFIX=${value}"
|
|
;;
|
|
|
|
# ignored for autotools compatibility
|
|
--bindir | --libdir | --sbindir | --datadir | --localstatedir | \
|
|
--includedir | --infodir | --sysconfdir | --mandir | --libexecdir)
|
|
if [ -z "$value"]; then
|
|
# handle jhbuild's use of "--option /path"
|
|
value="$2"
|
|
shift
|
|
fi
|
|
;;
|
|
--build | --host | --target) ;;
|
|
--disable-gtk-doc | --disable-silent-rules | --disable-static ) ;;
|
|
|
|
--debug)
|
|
CMDLINE="${CMDLINE} -DCMAKE_BUILD_TYPE=Debug"
|
|
;;
|
|
|
|
--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 use supplied valadoc executable
|
|
if [ -n "$VALADOC" ]
|
|
then
|
|
VALADOC_EXECUTABLE=`type -p "$VALADOC"`
|
|
|
|
if [ -z "$VALADOC_EXECUTABLE" ]
|
|
then
|
|
printf "$VALADOC is not an executable program.\n"
|
|
exit 1
|
|
fi
|
|
|
|
CMDLINE="${CMDLINE} -DVALADOC_EXECUTABLE='$VALADOC_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"
|