#!/bin/sh
if [ "x$1" = "x--help" -o "x$1" = "x-h" ]; then
echo "usage: ./configure"
echo ""
echo "Certian environment variables can be set to change how the compile,"
echo "happens. On some OSes, you don't need to, as it makes a good guess."
echo "Here is a list:"
echo "CC Path to a C compiler to use"
echo "CFLAGS Options to pass the C compiler"
echo "EXTRACFLAGS Extra options to pass to the C compiler"
echo "LIBS Any libraries (put -lm -lsocket etc here)"
echo "DEFS Any other definitions"
echo "LUALIB Path to the Lua library binaries"
echo "LUAINC Path to the Lua header files"
echo "LUABIN Path to the Lua programs 'lua' and 'luac'"
echo ""
echo "If you want to compile colloquy, and your system doesn't have Lua 4.0"
echo "installed (and you're not root), then you can download it from "
echo "http://www.lua.org/ and compile it in your home directory (make sure"
echo "to enable POPEN in Lua's config file) and do something similar to the"
echo "following:"
echo " LUALIB=/home/rjek/lua-4.0/lib/ LUALIB=/home/rjek/lua-4.0/include/"
echo " LUABIN=home/rjek/lua-4.0/bin/ ./configure"
echo "As a shortcut, if the /lib, /include and /bin directories are all in"
echo "the same parent directory, you can just set LUA to point to that."
echo "(ie, LUA=/home/rjek/lua-4.0/ ./configure)"
echo "This configure script is routinely tested on Debian GNU/Linux (testing),"
echo "NetBSD 1.6, Solaris 8, and a recentish version FreeBSD. If it doesn't"
echo "word for you, then email me, and I'll see what I can do."
exit
fi
printf "colloquy configure begins for "
UNAME_MACHINE=`(uname -m) 2> /dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2> /dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2> /dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2> /dev/null` || UNAME_VERSION=unknown
UNAME_OS=`(uname -o) 2> /dev/null` || UNAME_OS=unknown
if [ "x$UNAME_OS" = "xCygwin" ]; then
UNAME_SYSTEM="Windows"
EXE=.exe
else
EXE=
fi
OUR_CFLAGS=
OUR_LIBS=-lm
OUR_DEFS=
OUR_CC=
OUR_LD=
OUR_LDFLAGS=
OUR_LUALIB=
OUR_LUAINC=
OUR_LUABIN=
echo $UNAME_SYSTEM $UNAME_MACHINE
printf "looking for a cc... "
case "${UNAME_OS}:${UNAME_MACHINE}:${UNAME_SYSTEM}" in
*:Linux)
if [ -x "/usr/bin/icc" ]; then
OUR_CC="/usr/bin/icc"
OUR_CFLAGS="-O2 -ip -Ob2"
else
OUR_CC=`which gcc`
OUR_CFLAGS=-O2
fi
OUR_LIBS=-lm
OUR_DEFS=-D_POSIX_SOURCE
OUR_LD=`which gcc`
;;
*:FreeBSD)
OUR_CC=`which gcc`
OUR_CFLAGS=-O2
OUR_LD=`which gcc`
;;
*:OpenBSD)
OUR_CC=`which gcc`;
OUR_CFLAGS=-O2
OUR_LD=`which gcc`
;;
*:NetBSD)
OUR_CC=`which gcc`
OUR_CFLAGS=-O2
OUR_LD=`which gcc`
;;
*:QNX)
OUR_CC=`which qcc`
OUR_CFLAGS=-O2
OUR_LIBS="-lm -lsocket"
OUR_LD=`which qcc`
;;
Cygwin:*)
OUR_CC=`which gcc`
OUR_CFLAGS=-O2
OUR_LIBS=-lm
OUR_LD=`which gcc`
;;
*:SunOS)
OUR_LIBS="-lm -lsocket -lnsl -lresolv"
if [ -x "/usr/local/opt/SUNWspro/bin/cc" ]; then
# they have Solaris CC
OUR_CC=/usr/local/opt/SUNWspro/bin/cc
OUR_CFLAGS="-fast -v -xstrconst -xprefetch -native"
OUR_LD=/usr/local/opt/SUNWspro/bin/cc
else
# they don't. or at least I can't find it.
if [ -x `which gcc` ]; then
# gcc?
OUR_CC=`which gcc`
OUR_CFLAGS=-O2
OUR_LD=`which gcc`
fi
fi
esac
if [ "x$CC" != "x" ]; then
OUR_CC=$CC
fi
if [ "x$CFLAGS" != "x" ]; then
OUR_CFLAGS=$CFLAGS
fi
OUR_CFLAGS="$OUR_CFLAGS $EXTRACFLAGS"
if [ "x$LIBS" != "x" ]; then
OUR_LIBS=$LIBS
fi
if [ "x$DEFS" != "x" ]; then
OUR_DEFS=$DEFS
fi
if [ "x$LD" != "x" ]; then
OUR_LD=$LD
fi
if [ "x$LDFLAGS" != "x" ]; then
OUR_LDFLAGS=$LDFLAGS
fi
if [ "x$OUR_CC" = "x" ]; then
if [ "x$CC" = "x" ]; then
# we havn't found one, and they havn't specified one, either.
# Errm, hmm.
echo "not found. Define CC environment variable."
exit
else
OUR_CC=$CC
fi
else
echo $OUR_CC $OUR_CFLAGS
fi
if [ "x$OUR_LD" = "x" ]; then
OUR_LD=$OUR_CC
fi
findlua ()
{
cat <<MARK > conftest.c
#include <stdio.h>
#include "lua.h"
#include "lualib.h"
int main(int argc, char** argv) {
lua_State *L = lua_open(0);
lua_baselibopen(L);
lua_iolibopen(L);
lua_dostring(L, "f=readfrom('|echo cheese'); if not f then print('no popen') else print('popen present') end");
return 0;
}
MARK
for i in "$LUAINC" "/usr/local/include/lua40" "/usr/local/include/lua" "/usr/local/include" "/usr/include/lua40" "/usr/include/lua" "/usr/include"; do
if [ "x$i" != "x" ]; then
for l in "$LUALIB" "" "/usr/local/lib"; do
[ "x$l" = "x" ] || l="-L$l"
for s in "" "40"; do
$OUR_CC -o conftest conftest.c -I$i $l -llua$s -llualib$s $LIBS > /dev/null 2>&1
if [ $? = 0 ]; then
rm conftest.c
return
fi
done
done
fi
done
rm conftest.c
i=FAIL
s=FAIL
}
printf "finding lua... "
if [ "x$LUA" != "x" ]; then
# It's all in one place.
LUAINC=${LUA}/include/
LUALIB=${LUA}/lib/
LUABIN=${LUA}/bin/
fi
findlua
if [ "x$i" = "xFAIL" -o "x$s" = "xFAIL" ]; then
echo "not found."
echo "You should define the environment variables LUAINC, LUALIB and"
echo "LUABIN to point to the directories with the Lua header files,"
echo "the Lua libraries, and the lua/luac programs reside, and rerun"
echo "this configure script."
rm ./conftest$EXE
exit 1
else
OUR_LUALIB="$l -llua$s -llualib$s"
OUR_LUAINC="-I$i"
fi
echo "$OUR_LUALIB $OUR_LUAINC"
printf "checking for popen support... "
if [ "`./conftest$EXE;rm ./conftest$EXE`" != "popen present" ]; then
echo "none! You must run colloquy with noFork = 1"
else
echo "found."
fi
printf "creating config... "
echo "# config - automatically generated by ./configure" > config
echo BUILDNAME=${UNAME_SYSTEM}-${UNAME_MACHINE} >> config
echo UNAME_SYSTEM=$UNAME_SYSTEM >> config
echo UNAME_MACHINE=`(uname -m) 2> /dev/null` >> config
echo CC=${OUR_CC} >> config
echo CFLAGS=${OUR_CFLAGS} >> config
echo LD=${OUR_LD} >> config
echo LDFLAGS=${OUR_LDFLAGS} >> config
echo EXTRALIBS=${OUR_LIBS} >> config
echo DEFS=${OUR_DEFS} >> config
echo LUALIB=$OUR_LUALIB >> config
echo LUAINC=$OUR_LUAINC >> config
echo LUA=${LUABIN}lua >> config
echo LUAC=${LUABIN}luac >> config
echo EXE=${EXE} >> config
echo done.