configure
author Waqas Hussain <waqas20@gmail.com>
Wed, 30 Oct 2013 17:44:42 -0400
changeset 5877 615a0774e4cc
parent 5641 92ffddd02c96
child 5935 a367bae38385
permissions -rwxr-xr-x
util.timer: Updated to use util.indexedbheap to provide a more complete API. Timers can now be stopped or rescheduled. Callbacks are now pcall'd. Adding/removing timers from within timer callbacks works better. Optional parameter can be passed when creating timer which gets passed to callback, eliminating the need for closures in various timer uses. Timers are now much more lightweight.

#!/bin/sh

# Defaults

PREFIX=/usr/local
SYSCONFDIR="$PREFIX/etc/prosody"
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
CXX=g++
LD=gcc
RUNWITH=lua

CFLAGS="-fPIC -Wall"
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
--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
--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
--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
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
        LUA_SUFFIX="5.1";
      	LUA_SUFFIX_SET=yes
      	RUNWITH="lua5.1"
      	LUA_INCDIR=/usr/include/lua5.1;
      	LUA_INCDIR_SET=yes
      	CFLAGS="$CFLAGS -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
      	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="-Wall -fPIC -D_GNU_SOURCE"
        LDFLAGS="-shared"
      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
      fi
      if [ "$OSTYPE" = "openbsd" ]; then
        LUA_INCDIR="/usr/local/include";
      fi
      ;;
   --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"
      ;;
   --cflags=*)
      CFLAGS="$value"
      ;;
   --ldflags=*)
      LDFLAGS="$value"
      ;;
   --c-compiler=*)
      CC="$value"
      ;;
   --linker=*)
      LD="$value"
      ;;
   --runwith=*)
      RUNWITH="$value"
      ;;
   *)
      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

find_program() {
   path="$PATH"
   item="`echo "$path" | sed 's/\([^:]*\):.*/\1/'`"
   path="`echo "$path" | sed -n 's/[^:]*::*\(.*\)/\1/p'`"
   found="no"
   while [ "$item" ]
   do
      if [ -e "$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 [ -e "$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

echo -n "Checking Lua includes... "
lua_h="$LUA_INCDIR/lua.h"
if [ -e "$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

find_helper() {
   explanation="$1"
   shift
   tried="$*"
   while [ "$1" ]
   do
      found=`find_program "$1"`
      if [ "$found" ]
      then
         echo "$1 found at $found"
         HELPER=$1
         return
      fi
      shift
   done
   echo "Could not find a $explanation. Tried: $tried."
   echo "Make sure one of them is installed and available in your PATH."
   exit 1
}

# 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
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_LIB=$OPENSSL_LIB
CFLAGS=$CFLAGS
LDFLAGS=$LDFLAGS
CC=$CC
CXX=$CXX
LD=$LD
RUNWITH=$RUNWITH

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