File

configure @ 7567:495de404a8ae

ejabberdsql2prosody: rename variable 'host' to prevent shadowing upvalue [luacheck] Functions roster(), roster_pending(), roster_group(), private_storage() and offline_msg() have argument named "host", which used to shadow upvalue of this variable before this change. Instead of renaming this argument, let's rename the variable to match what the script says in usage: Usage: ejabberdsql2prosody.lua filename.txt hostname
author Anton Shestakov <av6@dwimlabs.net>
date Fri, 12 Aug 2016 13:44:47 +0800
parent 7548:69d8e1477c43
child 7607:d17bc0d0748e
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"
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
--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
        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
      	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="-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
        CC=cc
        LD=ld
      fi
      if [ "$OSTYPE" = "openbsd" ]; then
        LUA_INCDIR="/usr/local/include";
      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=
      ;;
   *)
      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

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
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