#!/bin/sh # # Configuration script for Services. # # Anope (c) 2003-2011 Anope team # Contact us at team@anope.org # # This program is free but copyrighted software; see the file COPYING for # details. # # Based on the original code of Epona by PegSoft. # Based on the original code of Services by Andy Church. # ########################################################################### echo2 () { $ECHO2 "$*$ECHO2SUF" # these are defined later } exists () { # because some shells don't have test -e if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then return 0 else return 1 fi } Load_Cache () { if [ -f $SOURCE_DIR/config.cache -a -r $SOURCE_DIR/config.cache -a ! "$IGNORE_CACHE" ] ; then echo "Using defaults from config.cache. To ignore, $SOURCE_DIR/Config -nocache" echo "" . $SOURCE_DIR/config.cache CAN_QUICK="yes" else CAN_QUICK="no" fi } Run_Build_System () { WITH_INST="" WITH_RUN="" WITH_PERM="" RUN_CC_PL="" GEN_TYPE="" if [ "$INSTDIR" != "" ] ; then WITH_INST="-DINSTDIR:STRING=$INSTDIR" fi if [ "$RUNGROUP" != "" ] ; then WITH_RUN="-DRUNGROUP:STRING=$RUNGROUP" fi if [ "$UMASK" != "" ] ; then WITH_PERM="-DDEFUMASK:STRING=$UMASK" fi if [ "$DEBUG" = "yes" ] ; then BUILD_TYPE="-DCMAKE_BUILD_TYPE:STRING=DEBUG" else BUILD_TYPE="-DCMAKE_BUILD_TYPE:STRING=RELEASE" fi if [ "$USE_RUN_CC_PL" = "yes" ] ; then RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=ON" else RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=OFF" fi case `uname -s` in MINGW*) GEN_TYPE="-G\"MSYS Makefiles\"" ;; esac if [ "$SOURCE_DIR" = "." ] ; then pwdsave=`pwd` test -d build || mkdir build cd "build" REAL_SOURCE_DIR=".." else REAL_SOURCE_DIR="$SOURCE_DIR" fi echo "cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR" cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR echo "" if [ "$SOURCE_DIR" = "." ] ; then echo "Now cd build, then run make to build Anope." cd "$pwdsave" else echo "Now run make to build Anope." fi } ECHO2SUF='' if [ "`echo -n a ; echo -n b`" = "ab" ] ; then ECHO2='echo -n' elif [ "`echo 'a\c' ; echo 'b\c'`" = "ab" ] ; then ECHO2='echo' ; ECHO2SUF='\c' elif [ "`printf 'a' 2>&1 ; printf 'b' 2>&1`" = "ab" ] ; then ECHO2='printf "%s"' else # oh well... ECHO2='echo' fi export ECHO2 ECHO2SUF ########################################################################### # Init values ########################################################################### INSTDIR=$HOME/services RUNGROUP= UMASK= DEBUG="yes" USE_RUN_CC_PL="no" EXTRA_CONFIG_ARGS= CAN_QUICK="no" SOURCE_DIR=`dirname $0` ########################################################################### # Check out the options ########################################################################### while [ $# -ge 1 ] ; do if [ $1 = "--help" ] ; then echo "Config utility for Anope" echo "------------------------" echo "Syntax: ./Config [options]" echo "-nocache Ignore settings saved in config.cache" echo "-nointro Skip intro (disclaimer, etc)" echo "-quick Skip questions, go straight to cmake" exit 0 elif [ $1 = "-nocache" ] ; then IGNORE_CACHE="1" elif [ $1 = "-nointro" ] ; then NO_INTRO="1" elif [ $1 = "-quick" -o $1 = "-q" ] ; then Load_Cache if [ "$CAN_QUICK" = "yes" ] ; then Run_Build_System else echo "" echo "Can't find cache file (config.cache), aborting..." fi exit 0 fi shift 1 done ########################################################################### which cmake > /dev/null if [ $? -ne 0 ] ; then clear echo "Anope requires CMake 2.4 or newer to be configured, which can" echo "be downloaded at http://www.cmake.org/. If you have installed" echo "CMake already, ensure it is in your PATH environment variable." exit 0 fi ########################################################################### if [ ! "$NO_INTRO" ] ; then case `uname -s` in MINGW*) PAGER=less ;; *) PAGER=more clear ;; esac . $SOURCE_DIR/src/version.sh if [ -d .git ] ; then VERSION=`git describe --tags` VERSION_BUILD=`echo "$VERSION" | cut -d'-' -f2` VERSION_EXTRA=`echo "$VERSION" | cut -d'-' -f3` # Only do this if we are not on a tag, src/version.sh will be all we need then. if [ "$VERSION_BUILD" != "$VERSION_EXTRA" ] ; then echo "#define VERSION_BUILD $VERSION_BUILD" > include/version.h echo "#define VERSION_EXTRA \"-$VERSION_EXTRA\"" >> include/version.h fi fi cat $SOURCE_DIR/.BANNER | sed "s/CURVER/$VERSION/" | sed "s@SOURCE_DIR@$SOURCE_DIR@" | $PAGER echo "" else echo "" fi echo "Beginning Services configuration." echo "" ########################################################################### # Load the cache ########################################################################### if [ ! "$IGNORE_CACHE" ] ; then Load_Cache fi # Ask the user anything we need to know ahead of time. export ok INPUT #### ok=0 echo "In what directory do you want the binaries to be installed?" while [ $ok -eq 0 ] ; do echo2 "[$INSTDIR] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ ! "$INPUT" ] ; then INPUT=$INSTDIR fi if [ ! -d "$INPUT" ] ; then if exists "$INPUT" ; then echo "$INPUT exists, but is not a directory!" else echo "$INPUT does not exist. Create it?" echo2 "[y] " read YN if [ "$YN" != "n" ] ; then if mkdir -p $INPUT ; then ok=1 fi fi fi elif exists "$INPUT/include/services.h" ; then echo "You cannot use the Services source directory as a target directory." else ok=1 fi done INSTDIR=$INPUT echo "" #### OLD_RUNGROUP="$RUNGROUP" if [ "$RUNGROUP" ] ; then echo "Which group should all Services data files be owned by? (If Services" echo "should not force files to be owned by a particular group, type \"none\"" echo "(without the quotes) and press Return.)" else echo "Which group should all Services data files be owned by? (If Services" echo "should not force files to be owned by a particular group, just press" echo "Return.)" fi echo2 "[$RUNGROUP] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ "$INPUT" ] ; then if [ "$INPUT" = "none" ] ; then RUNGROUP="" else RUNGROUP="$INPUT" fi fi echo "" #### if [ ! "$UMASK" -o "$RUNGROUP" != "$OLD_RUNGROUP" ] ; then if [ "$RUNGROUP" ] ; then UMASK=007 else UMASK=077 fi fi ok=0 echo "What should the default umask for data files be (in octal)?" echo "(077 = only accessible by owner; 007 = accessible by owner and group)" while [ $ok -eq 0 ] ; do echo2 "[$UMASK] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ ! "$INPUT" ] ; then INPUT=$UMASK fi if [ `echo "$INPUT" | grep -c '[^0-7]'` -gt 0 ] ; then echo "$UMASK is not a valid octal number!" else if [ "`echo $INPUT | cut -c1`" != "0" ] ; then INPUT=0$INPUT fi ok=1 fi done UMASK=$INPUT echo "" #### TEMP_YN="n" if [ "$DEBUG" = "yes" ] ; then TEMP_YN="y" fi echo "Would you like to build a debug version of Anope?" echo2 "[$TEMP_YN] " read YN if [ "$YN" ] ; then if [ "$YN" = "y" ] ; then DEBUG="yes" else DEBUG="no" fi fi echo "" #### TEMP_YN="n" if [ "$USE_RUN_CC_PL" = "yes" ] ; then TEMP_YN="y" fi echo "You can optionally have the build run through run-cc.pl, which will" echo "cause warnings and errors (if any) to be colored yellow and red," echo "respectively. This relies on Perl being installed, so if you say yes" echo "to this without Perl, the option will be ignored." echo "NOTE: If you are using MinGW, it is NOT recommended to say yes to" echo "this, it may fail." echo "Would you like to utilize run-cc.pl?" echo2 "[$TEMP_YN] " read YN if [ "$YN" ] ; then if [ "$YN" = "y" ] ; then USE_RUN_CC_PL="yes" else USE_RUN_CC_PL="no" fi fi echo "" #### echo "Are there any extra arguments you wish to pass to cmake?" echo "You may only need to do this if cmake is unable to locate" echo "missing dependencies without hints." echo "You can do this by: -DEXTRA_INCLUDE:STRING=/path/to/files;/path/to/more/files" echo2 "[$EXTRA_CONFIG_ARGS] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ "$INPUT" ] ; then EXTRA_CONFIG_ARGS=$INPUT fi echo "" #### ################################################################################ # Store values ################################################################################ echo2 "Saving configuration results in config.cache... " cat <$SOURCE_DIR/config.cache INSTDIR="$INSTDIR" RUNGROUP="$RUNGROUP" UMASK=$UMASK DEBUG="$DEBUG" USE_RUN_CC_PL="$USE_RUN_CC_PL" EXTRA_CONFIG_ARGS="$EXTRA_CONFIG_ARGS" EOT echo "done." ################################################################################ # Build the build system string ################################################################################ Run_Build_System