mirror of
https://github.com/anope/anope.git
synced 2026-06-12 18:54:47 +02:00
aee1e53cb3
This might have been useful two decades ago but on recent hardware this just makes builds take longer than without them.
391 lines
9.1 KiB
Bash
Executable File
391 lines
9.1 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Configuration script for Services.
|
|
#
|
|
# Anope (c) 2003-2021 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 [ "$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 $EXTRA_INCLUDE $EXTRA_LIBS $EXTRA_CONFIG_ARGS $REAL_SOURCE_DIR"
|
|
|
|
cmake $GEN_TYPE $WITH_INST $WITH_RUN $WITH_PERM $BUILD_TYPE $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/anope
|
|
RUNGROUP=
|
|
UMASK=
|
|
DEBUG="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 3.8 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 ""
|
|
|
|
####
|
|
|
|
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"
|
|
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
|