File

configure @ 7690:861a747e441b

Merge 0.10->trunk
author Kim Alvefur <zash@zash.se>
date Sat, 08 Oct 2016 21:07:12 +0200
parent 7632:2b14e2121700
child 7748:4ba697569f84
line wrap: on
line source

#!/bin/sh

# Defaults

PREFIX="/usr/local"
SYSCONFDIR="$PREFIX/etc/prosody"
LIBDIR="$PREFIX/lib"
DATADIR="$PREFIX/var/lib/prosody"
LUA_SUFFIX=""
LUA_DIR="/usr"
LUA_BINDIR="/usr/bin"
LUA_INCDIR="/usr/include"
LUA_LIBDIR="/usr/lib"
IDN_LIB="idn"
ICU_FLAGS="-licui18n -licudata -licuuc"
OPENSSL_LIB="crypto"
CC="gcc"
LD="gcc"
RUNWITH="lua"
EXCERTS="yes"
PRNG=
PRNGLIBS=

CFLAGS="-fPIC -Wall -pedantic -std=c89"
LDFLAGS="-shared"

IDN_LIBRARY="idn"
# Help

show_help() {
cat <<EOF
Configure Prosody prior to building.

--help                      This help.
--ostype=OS                 Use one of the OS presets. May be one of:
                            debian, macosx, linux, freebsd, openbsd, netbsd
--prefix=DIR                Prefix where Prosody should be installed.
                            Default is $PREFIX
--sysconfdir=DIR            Location where the config file should be installed.
                            Default is \$PREFIX/etc/prosody
--libdir=DIR                Location where the server files should be stored.
                            Default is \$PREFIX/lib
--datadir=DIR               Location where the server data should be stored.
                            Default is \$PREFIX/var/lib/prosody
--lua-suffix=SUFFIX         Versioning suffix to use in Lua filenames.
                            Default is "$LUA_SUFFIX" (lua$LUA_SUFFIX...)
--with-lua=PREFIX           Use Lua from given prefix.
                            Default is $LUA_DIR
--runwith=BINARY            What Lua binary to set as runtime environment.
                            Default is $RUNWITH
--with-lua-include=DIR      You can also specify Lua's includes dir.
                            Default is \$LUA_DIR/include
--with-lua-lib=DIR          You can also specify Lua's libraries dir.
                            Default is \$LUA_DIR/lib
--with-idn=LIB              The name of the IDN library to link with.
                            Default is $IDN_LIB
--idn-library=(idn|icu)     Select library to use for IDNA functionality.
                            idn: use GNU libidn (default)
                            icu: use ICU from IBM
--with-ssl=LIB              The name of the SSL to link with.
                            Default is $OPENSSL_LIB
--with-random=METHOD        CSPRNG backend to use. One of
                            getrandom: Linux kernel
                            arc4random: OpenBSD kernel
                            openssl: OpenSSL RAND method
                            Default is to use /dev/urandom
--cflags=FLAGS              Flags to pass to the compiler
                            Default is $CFLAGS
--ldflags=FLAGS             Flags to pass to the linker
                            Default is $LDFLAGS
--c-compiler=CC             The C compiler to use when building modules.
                            Default is $CC
--linker=CC                 The linker to use when building modules.
                            Default is $LD
--require-config            Will cause Prosody to refuse to run when
                            it fails to find a configuration file
--no-example-certs          Disables generation of example certificates.
EOF
}


while [ "$1" ]
do
   value="`echo $1 | sed 's/[^=]*=\(.*\)/\1/'`"
   if echo "$value" | grep -q "~"
   then
      echo
      echo '*WARNING*: the "~" sign is not expanded in flags.'
      echo 'If you mean the home directory, use $HOME instead.'
      echo
   fi
   case "$1" in
   --help)
      show_help
      exit 0
      ;;
   --prefix=*)
      PREFIX="$value"
      PREFIX_SET=yes
      ;;
   --sysconfdir=*)
      SYSCONFDIR="$value"
      SYSCONFDIR_SET=yes
      ;;
   --ostype=*)
      OSTYPE="$value"
      OSTYPE_SET=yes
      if [ "$OSTYPE" = "debian" ]; then
         if [ "$LUA_SUFFIX_SET" != "yes" ]; then
            LUA_SUFFIX="5.1";
            LUA_SUFFIX_SET=yes
         fi
         RUNWITH="lua$LUA_SUFFIX"
         LUA_INCDIR="/usr/include/lua$LUA_SUFFIX"
         LUA_INCDIR_SET=yes
         CFLAGS="$CFLAGS -ggdb -D_GNU_SOURCE"
      fi
      if [ "$OSTYPE" = "macosx" ]; then
         LUA_INCDIR=/usr/local/include;
         LUA_INCDIR_SET=yes
         LUA_LIBDIR=/usr/local/lib
         LUA_LIBDIR_SET=yes
         CFLAGS="$CFLAGS -mmacosx-version-min=10.3"
         LDFLAGS="-bundle -undefined dynamic_lookup"
      fi
      if [ "$OSTYPE" = "linux" ]; then
         LUA_INCDIR=/usr/local/include;
         LUA_INCDIR_SET=yes
         LUA_LIBDIR=/usr/local/lib
         LUA_LIBDIR_SET=yes
         CFLAGS="$CFLAGS -ggdb -D_GNU_SOURCE"
      fi
      if [ "$OSTYPE" = "freebsd" -o "$OSTYPE" = "openbsd" ]; then
         LUA_INCDIR="/usr/local/include/lua51"
         LUA_INCDIR_SET=yes
         CFLAGS="-Wall -fPIC -I/usr/local/include"
         LDFLAGS="-I/usr/local/include -L/usr/local/lib -shared"
         LUA_SUFFIX="-5.1"
         LUA_SUFFIX_SET=yes
         LUA_DIR=/usr/local
         LUA_DIR_SET=yes
         CC=cc
         LD=ld
      fi
      if [ "$OSTYPE" = "openbsd" ]; then
         LUA_INCDIR="/usr/local/include";
         LUA_INCDIR_SET="yes"
      fi
      if [ "$OSTYPE" = "netbsd" ]; then
         RUNWITH="lua5.1"
         LUA_INCDIR="/usr/pkg/include/lua-5.1"
         LUA_INCDIR_SET=yes
         LUA_LIBDIR="/usr/pkg/lib/lua/5.1"
         LUA_LIBDIR_SET=yes
         CFLAGS="-Wall -fPIC -I/usr/pkg/include"
         LDFLAGS="-L/usr/pkg/lib -Wl,-rpath,/usr/pkg/lib -shared"
      fi
      if [ "$OSTYPE" = "pkg-config" ]; then
         if [ "$LUA_SUFFIX_SET" != "yes" ]; then
            LUA_SUFFIX="5.1";
            LUA_SUFFIX_SET=yes
         fi
         LUA_CF="$(pkg-config --cflags-only-I lua$LUA_SUFFIX)"
         LUA_CF="${LUA_CF#*-I}"
         LUA_CF="${LUA_CF%% *}"
         if [ "$LUA_CF" != "" ]; then
            LUA_INCDIR="$LUA_CF"
            LUA_INCDIR_SET=yes
         fi
         CFLAGS="$CFLAGS -D_GNU_SOURCE"
      fi
      ;;
   --libdir=*)
      LIBDIR="$value"
      LIBDIR_SET=yes
      ;;
   --datadir=*)
      DATADIR="$value"
      DATADIR_SET=yes
      ;;
   --require-config)
      REQUIRE_CONFIG=yes
      ;;
   --lua-suffix=*)
      LUA_SUFFIX="$value"
      LUA_SUFFIX_SET=yes
      ;;
   --with-lua=*)
      LUA_DIR="$value"
      LUA_DIR_SET=yes
      ;;
   --with-lua-include=*)
      LUA_INCDIR="$value"
      LUA_INCDIR_SET=yes
      ;;
   --with-lua-lib=*)
      LUA_LIBDIR="$value" LUA_LIBDIR_SET=yes
      ;;
   --with-idn=*)
      IDN_LIB="$value"
      ;;
   --idn-library=*)
      IDN_LIBRARY="$value"
      ;;
   --with-ssl=*)
      OPENSSL_LIB="$value"
      ;;
  --with-random=getrandom)
      PRNG=GETRANDOM
      ;;
  --with-random=openssl)
      PRNG=OPENSSL
      PRNGLIBS=-lcrypto
      ;;
  --with-random=arc4random)
      PRNG=ARC4RANDOM
      ;;
   --cflags=*)
      CFLAGS="$value"
      ;;
   --ldflags=*)
      LDFLAGS="$value"
      ;;
   --c-compiler=*)
      CC="$value"
      ;;
   --linker=*)
      LD="$value"
      ;;
   --runwith=*)
      RUNWITH="$value"
      ;;
    --no-example-certs)
      EXCERTS=
      ;;
   --compiler-wrapper=*)
      CC="$value $CC"
      LD="$value $LD"
      ;;
   *)
      echo "Error: Unknown flag: $1"
      exit 1
      ;;
   esac
   shift
done

if [ "$PREFIX_SET" = "yes" -a ! "$SYSCONFDIR_SET" = "yes" ]
then
   if [ "$PREFIX" = "/usr" ]
   then SYSCONFDIR=/etc/prosody
   else SYSCONFDIR=$PREFIX/etc/prosody
   fi
fi

if [ "$PREFIX_SET" = "yes" -a ! "$DATADIR_SET" = "yes" ]
then
   if [ "$PREFIX" = "/usr" ]
   then DATADIR=/var/lib/prosody
   else DATADIR=$PREFIX/var/lib/prosody
   fi
fi

if [ "$PREFIX_SET" = "yes" -a ! "$LIBDIR_SET" = "yes" ]
then
   LIBDIR=$PREFIX/lib
fi

find_program() {
   path="$PATH"
   item="`echo "$path" | sed 's/\([^:]*\):.*/\1/'`"
   path="`echo "$path" | sed -n 's/[^:]*::*\(.*\)/\1/p'`"
   found="no"
   while [ "$item" ]
   do
      if [ -f "$item/$1" ]
      then
         found="yes"
         break
      fi
      item="`echo "$path" | sed 's/\([^:]*\):.*/\1/'`"
      path="`echo "$path" | sed -n 's/[^:]*::*\(.*\)/\1/p'`"
   done
   if [ "$found" = "yes" ]
   then
      echo "$item"
   else
      echo ""
   fi
}

if [ "$LUA_SUFFIX_SET" != "yes" ]
then
   for suffix in "5.1" "51" ""
   do
      LUA_SUFFIX="$suffix"
      if [ "$LUA_DIR_SET" = "yes" ]
      then
         if [ -f "$LUA_DIR/bin/lua$suffix" ]
         then
            find_lua="$LUA_DIR"
         fi
      else
         find_lua=`find_program lua$suffix`
      fi
      if [ "$find_lua" ]
      then
         echo "Lua interpreter found: $find_lua/lua$suffix..."
         break
      fi
   done
fi

if [ "$LUA_DIR_SET" != "yes" ]
then
   echo -n "Looking for Lua... "
   if [ ! "$find_lua" ]
   then
      find_lua=`find_program lua$LUA_SUFFIX`
      echo "lua$LUA_SUFFIX found in \$PATH: $find_lua"
   fi
   if [ "$find_lua" ]
   then
      LUA_DIR=`dirname $find_lua`
      LUA_BINDIR="$find_lua"
   else
      echo "lua$LUA_SUFFIX not found in \$PATH."
      echo "You may want to use the flags --with-lua and/or --lua-suffix. See --help."
      exit 1
   fi
fi

if [ "$LUA_INCDIR_SET" != "yes" ]
then
   LUA_INCDIR="$LUA_DIR/include"
fi

if [ "$LUA_LIBDIR_SET" != "yes" ]
then
   LUA_LIBDIR="$LUA_DIR/lib"
fi

if [ "$LUA_DIR_SET" = "yes" ]
then
   LUA_BINDIR="$LUA_DIR/bin"
fi

if [ "$IDN_LIBRARY" = "icu" ]
then
   IDNA_LIBS="$ICU_FLAGS"
   CFLAGS="$CFLAGS -DUSE_STRINGPREP_ICU"
fi
if [ "$IDN_LIBRARY" = "idn" ]
then
   IDNA_LIBS="-l$IDN_LIB"
fi

OPENSSL_LIBS="-l$OPENSSL_LIB"

echo -n "Checking Lua includes... "
lua_h="$LUA_INCDIR/lua.h"
if [ -f "$lua_h" ]
then
   echo "lua.h found in $lua_h"
else
   echo "lua.h not found (looked in $lua_h)"
   echo "You may want to use the flag --with-lua-include. See --help."
   exit 1
fi

# Write config

echo "Writing configuration..."
echo

cat <<EOF > config.unix
# This file was automatically generated by the configure script.
# Run "./configure --help" for details.

PREFIX=$PREFIX
SYSCONFDIR=$SYSCONFDIR
LIBDIR=$LIBDIR
DATADIR=$DATADIR
LUA_SUFFIX=$LUA_SUFFIX
LUA_DIR=$LUA_DIR
LUA_INCDIR=$LUA_INCDIR
LUA_LIBDIR=$LUA_LIBDIR
LUA_BINDIR=$LUA_BINDIR
REQUIRE_CONFIG=$REQUIRE_CONFIG
IDN_LIB=$IDN_LIB
IDNA_LIBS=$IDNA_LIBS
OPENSSL_LIBS=$OPENSSL_LIBS
CFLAGS=$CFLAGS
LDFLAGS=$LDFLAGS
CC=$CC
LD=$LD
RUNWITH=$RUNWITH
EXCERTS=$EXCERTS
RANDOM=$PRNG
RANDOM_LIBS=$PRNGLIBS


EOF

echo "Installation prefix: $PREFIX"
echo "Prosody configuration directory: $SYSCONFDIR"
echo "Using Lua from: $LUA_DIR"

make clean > /dev/null 2> /dev/null

echo
echo "Done. You can now run 'make' to build."
echo