mirror of
git://git.acid.vegas/anope.git
synced 2024-11-14 03:37:25 +00:00
418 lines
9.5 KiB
Bash
Executable File
418 lines
9.5 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Configuration script for Services.
|
|
#
|
|
# Anope (C) 2003-2022 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=""
|
|
EXTRA_INCLUDE=""
|
|
EXTRA_LIBS=""
|
|
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_PCH" = "yes" ] ; then
|
|
PCH="-DUSE_PCH:BOOLEAN=ON"
|
|
else
|
|
PCH="-DUSE_PCH:BOOLEAN=OFF"
|
|
fi
|
|
|
|
if [ "$EXTRA_INCLUDE_DIRS" != "" ] ; then
|
|
EXTRA_INCLUDE="-DEXTRA_INCLUDE:STRING=$EXTRA_INCLUDE_DIRS"
|
|
fi
|
|
|
|
if [ "$EXTRA_LIB_DIRS" != "" ] ; then
|
|
EXTRA_LIBS="-DEXTRA_LIBS:STRING=$EXTRA_LIB_DIRS"
|
|
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 $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR"
|
|
|
|
cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $PCH $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR
|
|
if [ $? -ne 0 ]; then
|
|
echo "You should fix these issues and then run ./Config -quick to rerun CMake."
|
|
exit 1
|
|
fi
|
|
|
|
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="no"
|
|
USE_PCH="no"
|
|
EXTRA_INCLUDE_DIRS=
|
|
EXTRA_LIB_DIRS=
|
|
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 = "-devel" ] ; then
|
|
DEBUG="yes"
|
|
INSTDIR="$PWD/run"
|
|
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
|
|
|
|
###########################################################################
|
|
# Check for CMake and (optionally) install it
|
|
###########################################################################
|
|
|
|
cmake --version 2>&1 > /dev/null
|
|
if [ $? -ne 0 ] ; then
|
|
clear
|
|
echo "Anope requires CMake 2.4 or newer, which can be downloaded at https://cmake.org/ or through your system's package manager."
|
|
echo "If you have installed 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
|
|
cat $SOURCE_DIR/.BANNER | sed "s/CURVER/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA/" | 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 should Anope 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_PCH" = "yes" ] ; then
|
|
TEMP_YN="y"
|
|
fi
|
|
echo "Do you want to build using precompiled headers? This can speed up"
|
|
echo "the build, but uses more disk space."
|
|
echo2 "[$TEMP_YN] "
|
|
read YN
|
|
if [ "$YN" ] ; then
|
|
if [ "$YN" = "y" ] ; then
|
|
USE_PCH="yes"
|
|
else
|
|
USE_PCH="no"
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
####
|
|
|
|
echo "Are there any extra include directories you wish to use?"
|
|
echo "You may only need to do this if CMake is unable to locate"
|
|
echo "missing dependencies without hints."
|
|
echo "Separate directories with semicolons."
|
|
echo "If you need no extra include directories, enter NONE in all caps."
|
|
echo2 "[$EXTRA_INCLUDE_DIRS] "
|
|
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
|
if [ "$INPUT" ] ; then
|
|
if [ "$INPUT" = "NONE" ] ; then
|
|
EXTRA_INCLUDE_DIRS=""
|
|
else
|
|
EXTRA_INCLUDE_DIRS=$INPUT
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
####
|
|
|
|
echo "Are there any extra library directories you wish to use?"
|
|
echo "You may only need to do this if CMake is unable to locate"
|
|
echo "missing dependencies without hints."
|
|
echo "Separate directories with semicolons."
|
|
echo "If you need no extra library directories, enter NONE in all caps."
|
|
echo2 "[$EXTRA_LIB_DIRS] "
|
|
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
|
if [ "$INPUT" ] ; then
|
|
if [ "$INPUT" = "NONE" ] ; then
|
|
EXTRA_LIB_DIRS=""
|
|
else
|
|
EXTRA_LIB_DIRS=$INPUT
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
####
|
|
|
|
echo "Are there any extra arguments you wish to pass to CMake?"
|
|
echo "If you need no extra arguments to CMake, enter NONE in all caps."
|
|
echo2 "[$EXTRA_CONFIG_ARGS] "
|
|
if read INPUT ; then : ; else echo "" ; exit 1 ; fi
|
|
if [ "$INPUT" ] ; then
|
|
if [ "$INPUT" = "NONE" ] ; then
|
|
EXTRA_CONFIG_ARGS=""
|
|
else
|
|
EXTRA_CONFIG_ARGS=$INPUT
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
####
|
|
|
|
################################################################################
|
|
# Store values
|
|
################################################################################
|
|
|
|
echo2 "Saving configuration results in config.cache... "
|
|
|
|
cat <<EOT >$SOURCE_DIR/config.cache
|
|
INSTDIR="$INSTDIR"
|
|
RUNGROUP="$RUNGROUP"
|
|
UMASK=$UMASK
|
|
DEBUG="$DEBUG"
|
|
USE_PCH="$USE_PCH"
|
|
EXTRA_INCLUDE_DIRS="$EXTRA_INCLUDE_DIRS"
|
|
EXTRA_LIB_DIRS="$EXTRA_LIB_DIRS"
|
|
EXTRA_CONFIG_ARGS="$EXTRA_CONFIG_ARGS"
|
|
EOT
|
|
echo "done."
|
|
|
|
|
|
################################################################################
|
|
# Build the build system string
|
|
################################################################################
|
|
|
|
Run_Build_System
|