sogo/configure

443 lines
11 KiB
Plaintext
Raw Normal View History

#!/bin/sh
#
# Note: When adding make options to this script, ensure that the source still
# compiles without those options! (and just with GNUstep.sh being
# sourced)
# We do not want to force people to run configure.
#
# ******************** variables ****************
CFG_ARGS="$0 $1 $2 $3 $4 $5 $6 $7 $8 $9"
ARG_BEQUIET=0
ARG_NOCREATE=0
ARG_PREFIX=""
ARG_GSMAKE=`gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null`
ARG_CFGMAKE="$PWD/config.make"
ARG_WITH_DEBUG=1
ARG_WITH_STRIP=0
ARG_WITH_THREADS=0
ARG_WITH_LDAP_CONFIG=0
GNUSTEP_INSTALLATION_DOMAIN="LOCAL"
DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh"
# detect GNU make, needed at least on *BSD
make -v 2>/dev/null | grep GNU >/dev/null 2>/dev/null
if [ $? -eq 0 ];then
MAKE=make
else
MAKE=gmake
fi
NGSTREAMS_DIR="./sope-core/NGStreams"
LINK_SYSLIBDIRS="-L/usr/local/pgsql/lib -L/usr/local/lib -L/usr/lib"
# ******************** usage ********************
usage() {
cat <<_ACEOF
\`configure' configures a GNUstep-make based sourcetree for installation.
Usage: $0 [OPTION]...
Note: You do not need to configure this source tree, as another option
just ensure that the GNUstep.sh of your GNUstep make installation
is properly sourced prior running make.
Configuration:
-h, --help display this help and exit
-q, --quiet, --silent do not print \`checking...' messages
-n, --no-create do not create output files
Installation directories:
--prefix=PREFIX install files in PREFIX [/usr/local]
--gsmake=PATH path to gnustep-make tree
--configmake=PATH path to the config file being created
--enable-debug turn on debugging and compile time warnings
--enable-strip turn on stripping of debug symbols
--enable-thread-safety turn on thread-safety
--enable-ldap-config enable LDAP based configuration of SOGo
_ACEOF
exit 0;
}
# ******************** running ********************
printParas() {
echo "Configuration:"
if test $ARG_BEQUIET = 1; then echo " will be quite."; fi
if test $ARG_NOCREATE = 1; then echo " won't create files"; fi
if test $ARG_WITH_DEBUG = 1; then
echo " debug: yes";
else
echo " debug: no";
fi
if test $ARG_WITH_STRIP = 1; then
echo " strip: yes";
else
echo " strip: no";
fi
if test $ARG_WITH_THREADS = 1; then
echo " thread-safe: yes";
else
echo " thread-safe: no";
fi
if test $ARG_WITH_LDAP_CONFIG = 1; then
echo " ldap-based configuration: yes";
else
echo " ldap-based configuration: no";
fi
echo " prefix: $ARG_PREFIX"
echo " gstep: $ARG_GSMAKE"
echo " config: $ARG_CFGMAKE"
echo " script: $DARG_GNUSTEP_SH"
echo ""
}
validateGNUstepArgs() {
# GNUstep make
if test "x$ARG_GSMAKE" = "x"; then
if test -f $HOME/OGoRoot/Library/Makefiles/GNUstep.sh; then
ARG_GSMAKE="$HOME/OGoRoot/Library/Makefiles/"
elif test -f $HOME/GNUstep/Library/Makefiles/GNUstep.sh; then
ARG_GSMAKE="$HOME/GNUstep/Library/Makefiles/"
elif test -f /usr/GNUstep/System/Library/Makefiles/GNUstep.sh; then
ARG_GSMAKE="/usr/GNUstep/System/Library/Makefiles/"
elif test -f /usr/share/GNUstep/Makefiles/GNUstep.sh; then
ARG_GSMAKE="/usr/share/GNUstep/Makefiles/"
elif test -f $GNUSTEP_MAKEFILES/GNUstep.sh; then
ARG_GSMAKE="$GNUSTEP_MAKEFILES/"
else
echo "error: please specify a GNUstep make tree!"
exit 1
fi
DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh"
elif test -d $ARG_GSMAKE; then
if test -f $ARG_GSMAKE/GNUstep.sh; then
DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh"
elif test -f $ARG_GSMAKE/Library/Makefiles/GNUstep.sh; then
ARG_GSMAKE="$ARG_GSMAKE/Library/Makefiles"
DARG_GNUSTEP_SH="$ARG_GSMAKE/GNUstep.sh"
else
echo "error: specified directory contains no GNUstep.sh: $ARG_GSMAKE"
exit 1
fi
else
echo "error: specified GNUstep make tree does not exist: $ARG_GSMAKE"
exit 1
fi
}
validateArgs() {
# validate prefix (could be better?)
case "x$ARG_PREFIX" in
"x")
ARG_PREFIX="$GNUSTEP_LOCAL_ROOT"
GNUSTEP_INSTALLATION_DOMAIN="LOCAL"
if test $ARG_BEQUIET != 1; then
echo "Note: will install in GNUSTEP_LOCAL_ROOT: $ARG_PREFIX"
echo ""
fi
;;
"x$GNUSTEP_USER_ROOT")
GNUSTEP_INSTALLATION_DOMAIN="USER"
if test $ARG_BEQUIET != 1; then
echo "Note: will install in GNUSTEP_USER_ROOT: $ARG_PREFIX"
echo ""
fi
;;
"x$GNUSTEP_LOCAL_ROOT")
GNUSTEP_INSTALLATION_DOMAIN="LOCAL"
if test $ARG_BEQUIET != 1; then
echo "Note: will install in GNUSTEP_LOCAL_ROOT: $ARG_PREFIX"
echo ""
fi
;;
"x$GNUSTEP_NETWORK_ROOT")
GNUSTEP_INSTALLATION_DOMAIN="NETWORK"
if test $ARG_BEQUIET != 1; then
echo "Note: will install in GNUSTEP_NETWORK_ROOT: $ARG_PREFIX"
echo ""
fi
;;
"x$GNUSTEP_SYSTEM_ROOT")
GNUSTEP_INSTALLATION_DOMAIN="SYSTEM"
if test $ARG_BEQUIET != 1; then
echo "Note: will install in GNUSTEP_SYSTEM_ROOT: $ARG_PREFIX"
echo ""
fi
;;
*)
echo "error: specified prefix is not a GNUstep root: '$ARG_PREFIX'"
exit 1
;;
esac
}
printGNUstepSetup() {
echo "GNUstep environment:"
echo " system: ${GNUSTEP_SYSTEM_ROOT}"
echo " local: ${GNUSTEP_LOCAL_ROOT}"
echo " user: ${GNUSTEP_USER_ROOT}"
echo " path: ${GNUSTEP_PATHLIST}"
echo " flat: ${GNUSTEP_FLATTENED}"
echo " arch: ${GNUSTEP_HOST}"
echo " combo: ${LIBRARY_COMBO}"
echo ""
}
cfgwrite() {
echo "$1" >> $ARG_CFGMAKE
}
genConfigMake() {
# we ignore the following vars also patches by gstep-make:
# PATH
# DYLD_LIBRARY_PATH
# GUILE_LOAD_PATH
# CLASSPATH
if test $ARG_BEQUIET != 1; then
echo "creating: $ARG_CFGMAKE"
fi
echo "# GNUstep environment configuration" > $ARG_CFGMAKE
cfgwrite "# created by: '$CFG_ARGS'"
cfgwrite ""
cfgwrite "# Note: you can override any option as a 'make' parameter, eg:"
cfgwrite "# $MAKE debug=yes"
cfgwrite ""
#cfgwrite "# print on the cmdline that this file is being used"
#cfgwrite "all :: "
#cfgwrite " @echo Local GNUstep config.make is active"
#cfgwrite ""
cfgwrite "SOGO_MAJOR_VERSION=0"
cfgwrite "SOGO_MINOR_VERSION=9"
cfgwrite "SOPE_MAJOR_VERSION=4"
cfgwrite "SOPE_MINOR_VERSION=9"
if test $ARG_WITH_DEBUG = 1; then
cfgwrite "# configured to produce debugging code";
cfgwrite "debug:=yes"
else
cfgwrite "# configured to produce non-debugging code";
cfgwrite "debug:=no"
fi
cfgwrite ""
UNAME=`uname`
if [ "X${UNAME}" = "XLinux" ];then
UNAME=`uname -m`
if [ ${UNAME} = x86_64 -o ${UNAME} = sparc64 -o ${UNAME} = ppc64 ];then
cfgwrite "CGS_LIBDIR_NAME:=lib64"
else
cfgwrite "CGS_LIBDIR_NAME:=lib"
fi
else
cfgwrite "CGS_LIBDIR_NAME:=lib"
fi
cfgwrite "SOGO_SYSLIBDIR=\${GNUSTEP_LIBRARIES}"
cfgwrite "SOGO_LIBDIR=\${GNUSTEP_LIBRARY}/SOGo"
cfgwrite "SOGO_TEMPLATESDIR=\${SOGO_LIBDIR}/Templates"
cfgwrite "SOGO_WEBSERVERRESOURCESDIR=\${SOGO_LIBDIR}/WebServerResources"
cfgwrite "SOGO_TOOLS=\${GNUSTEP_TOOLS}"
cfgwrite "SOGO_ADMIN_TOOLS=\${GNUSTEP_ADMIN_TOOLS}"
cfgwrite "SOPE_SAXMAPPINGS=\${GNUSTEP_LIBRARY}/SaxMappings"
cfgwrite "SOPE_SAXDRIVERS=\${GNUSTEP_LIBRARY}/SaxDrivers-\${SOPE_MAJOR_VERSION}.\${SOPE_MINOR_VERSION}"
cfgwrite "SOPE_WOXBUILDERS=\${GNUSTEP_LIBRARY}/WOxElemBuilders-\${SOPE_MAJOR_VERSION}.\${SOPE_MINOR_VERSION}"
cfgwrite "SOGO_TYPEMODELS=\${GNUSTEP_LIBRARY}/OCSTypeModels"
if test $ARG_WITH_STRIP = 1; then
cfgwrite "# configured to produce stripped code";
cfgwrite "strip:=yes"
else
cfgwrite "# configured not to strip code";
cfgwrite "strip:=no"
fi
cfgwrite ""
if test $ARG_WITH_THREADS = 1; then
cfgwrite "# configured to produce thread-safe code";
cfgwrite "ADDITIONAL_CPPFLAGS += -DTHREADSAFE=1"
fi
cfgwrite "# enforce shared libraries";
cfgwrite "shared:=yes"
cfgwrite ""
cfgwrite "# GNUstep environment variables:";
cfgwrite "GNUSTEP_INSTALLATION_DOMAIN=$GNUSTEP_INSTALLATION_DOMAIN"
for i in `env | grep GNUSTEP_ | sort`; do
MAKE_ASSI="`echo $i | sed s/=/:=/`"
cfgwrite "${MAKE_ASSI}";
done
cfgwrite "LIBRARY_COMBO=$LIBRARY_COMBO"
cfgwrite ""
if test $ARG_WITH_LDAP_CONFIG = 1; then
cfgwrite "ADDITIONAL_CPPFLAGS += -DLDAP_CONFIG=1"
cfgwrite "ldap_config:=yes"
fi
}
checkLinking() {
local oldpwd=$PWD
local tmpdir=".configure-test-$$"
mkdir $tmpdir
cd $tmpdir
cp ../maintenance/dummytool.m .
tmpmake="GNUmakefile"
echo >$tmpmake "include ../config.make"
echo >>$tmpmake "include \$(GNUSTEP_MAKEFILES)/common.make"
echo >>$tmpmake "TOOL_NAME := linktest"
echo >>$tmpmake "linktest_OBJC_FILES := dummytool.m"
echo >>$tmpmake "linktest_TOOL_LIBS += -l$1"
echo >>$tmpmake "SYSTEM_LIB_DIR += ${LINK_SYSLIBDIRS}"
echo >>$tmpmake "include \$(GNUSTEP_MAKEFILES)/tool.make"
$MAKE -s messages=yes -f $tmpmake linktest >out.log 2>err.log
LINK_RESULT=$?
if test $LINK_RESULT = 0; then
echo "$2 library found: $1"
else
if test "x$2" = "xrequired"; then
echo "failed to link $2 library: $1"
rm ../config.make
exit 1
else
echo "failed to link $2 library: $1"
fi
fi
cd $oldpwd
rm -rf $tmpdir
}
checkDependencies() {
checkLinking "SaxObjC" required;
checkLinking "NGLdap" required;
}
runIt() {
DISABLED_STRIPPING=0
if test $ARG_WITH_DEBUG = 1 && test $ARG_WITH_STRIP = 1; then
DISABLED_STRIPPING=1;
ARG_WITH_STRIP=0;
fi
if test $ARG_BEQUIET != 1; then
if test $DISABLED_STRIPPING = 1; then
echo "Note: Disabling stripping of symbols since debug is enabled";
fi
printParas;
fi
if test $ARG_NOCREATE = 1; then
if test $ARG_BEQUIET != 1; then
echo "not creating the config file ...";
fi
else
genConfigMake;
#checkDependencies;
if test -x $NGSTREAMS_DIR/configure; then
if test $ARG_BEQUIET != 1; then
echo -n "configuring NGStreams library .."
old="$PWD"
cd $NGSTREAMS_DIR
./configure >$old/config-NGStreams.log
cd $old
echo ".. done (log in config-NGStreams.log)."
fi
fi
fi
}
# ******************** options ********************
extractFuncValue() {
VALUE="`echo "$1" | sed "s/[^=]*=//g"`"
}
processOption() {
case "x$1" in
"x--help"|"x-h")
usage;
;;
"x--quiet"|"x--silent"|"x-q") ARG_BEQUIET=1; ;;
"x--no-create"|"x-n") ARG_NOCREATE=1; ;;
x--prefix=*)
extractFuncValue $1;
ARG_PREFIX="$VALUE";
;;
x--gsmake=*)
extractFuncValue $1;
ARG_GSMAKE="$VALUE";
;;
x--configmake=*)
extractFuncValue $1;
ARG_CFGMAKE="$VALUE";
;;
"x--enable-debug")
ARG_WITH_DEBUG=1
;;
"x--disable-debug")
ARG_WITH_DEBUG=0
;;
"x--enable-strip")
ARG_WITH_STRIP=1
;;
"x--disable-strip")
ARG_WITH_STRIP=0
;;
"x--enable-thread-safety")
ARG_WITH_THREADS=1
;;
"x--disable-thread-safety")
ARG_WITH_THREADS=0
;;
"x--enable-ldap-config")
ARG_WITH_LDAP_CONFIG=1
;;
"x--disable-ldap-config")
ARG_WITH_LDAP_CONFIG=0
;;
*) echo "error: cannot process argument: $1"; exit 1; ;;
esac
}
for i in $@; do
processOption $i;
done
# load GNUstep environment
validateGNUstepArgs
# first we load the GNUstep.sh environment
. $DARG_GNUSTEP_SH
if test $ARG_BEQUIET != 1; then
printGNUstepSetup;
fi
# ensure the parameters make sense
validateArgs
# start it
runIt