rmilter/configure
2013-11-29 01:10:13 +00:00

836 lines
19 KiB
Bash
Executable file

#!/bin/sh
GCC="gcc"
MAKE=""
LEX=""
YACC=""
OS=""
LOCALBASE=/usr/local
PREFIX=$LOCALBASE
DCC_VER=1.2.74
COMPAT_DIR="./compat"
YACC_SRC="cfg_file.y"
LEX_SRC="cfg_file.l"
YACC_OUTPUT="cfg_yacc.c"
LEX_OUTPUT="cfg_lex.c"
SOURCES="upstream.c regexp.c rmilter.c libclamc.c cfg_file.c ratelimit.c memcached.c beanstalk.c main.c radix.c awl.c libspamd.c greylist.c ${LEX_OUTPUT} ${YACC_OUTPUT}"
CFLAGS="$CFLAGS -Wall -Wpointer-arith"
CFLAGS="$CFLAGS -ggdb -I${LOCALBASE}/include"
CFLAGS="$CFLAGS -DHASH_COMPAT"
LDFLAGS="$LDFLAGS -L${LOCALBASE}/lib"
PTHREAD_CFLAGS="-D_THREAD_SAFE"
OPT_FLAGS="-O -pipe -fno-omit-frame-pointer"
DEPS="awl.h cfg_file.h libclamc.h libspamd.h memcached.h radix.h ratelimit.h regexp.h \
rmilter.h spf.h upstream.h greylist.h ${LEX_OUTPUT} ${YACC_OUTPUT} \
uthash/uthash.h"
EXEC=rmilter
USER=postfix
GROUP=postfix
SENDMAIL=no
INSTALL="/usr/bin/install -v"
MKDIR="/usr/bin/install -v -d"
MANPATH="${PREFIX}/share/man"
CACHE=config.cache
MAKEFILE="Makefile"
MAKEFILE_IN="Makefile.in"
TARGETS="${EXEC}"
check_cache()
{
type=$1
name=$2
if [ -f $CACHE ] ; then
line=`fgrep "$type:$name" $CACHE 2>/dev/null`
if [ $? -eq 0 ] ; then
result=`echo $line | cut -d ':' -f 3`
CACHED=`echo $line | cut -d ':' -f 4-`
if [ "F$result" = "Fyes" ] ; then
return 0
elif [ "F$result" = "Fno" ] ; then
return 1
else
return 2
fi
else
return 3
fi
else
return 3
fi
}
write_cache()
{
type=$1
name=$2
result=$3
value=$4
echo "$type:$name:$result:$value" >> $CACHE
}
cleanup()
{
rm -f autotest.c
rm -f autotest
INCLUDE=""
}
test_binary()
{
path="$PATH:$PREFIX/bin:$LOCALBASE/bin"
while [ $# -ne 0 ] ; do
_binary=$1
_tmp_bin=`PATH="$PATH:$PREFIX/bin:$LOCALBASE/bin" which ${_binary} 2>/dev/null`
if [ $? -eq 0 ] ; then
BIN=$_binary
return 0
fi
shift
done
return 1
}
check_compiler()
{
if [ "F${CC}" != "F" ] ; then
GCC=${CC}
test_binary ${CC}
if [ $? -eq 0 ] ; then
GCC=$BIN
echo "found -> $GCC"
write_cache "compiler" "${GCC}" "yes" "$GCC"
return 0
else
echo "not found"
exit 1
fi
fi
echo -n "Testing for ${GCC}: "
check_cache "compiler" "${GCC}"
if [ $? -eq 0 ] ; then
GCC=$CACHED
echo "found(cached) -> $GCC"
return 0
fi
test_binary "gcc" "cc" "pcc" "clang"
if [ $? -eq 0 ] ; then
GCC=$BIN
echo "found -> $GCC"
write_cache "compiler" "${GCC}" "yes" "$GCC"
return 0
else
echo "not found"
exit 1
fi
}
check_make()
{
echo -n "Testing for make: "
check_cache "make" "make"
if [ $? -eq 0 ] ; then
MAKE=$CACHED
echo "found(cached) -> $MAKE"
return 0
fi
test_binary "make" "pmake"
if [ $? -eq 0 ] ; then
MAKE=$BIN
echo "found -> $MAKE"
write_cache "make" "make" "yes" "$MAKE"
return 0
else
echo "not found"
exit 1
fi
}
check_lex()
{
echo -n "Testing for lex: "
check_cache "binary" "lex"
if [ $? -eq 0 ] ; then
LEX=$CACHED
echo "found(cached) -> $LEX"
return 0
fi
test_binary "lex" "flex"
if [ $? -eq 0 ] ; then
LEX=$BIN
echo "found -> $LEX"
write_cache "binary" "lex" "yes" "$LEX"
return 0
else
echo "not found"
exit 1
fi
}
check_yacc()
{
echo -n "Testing for yacc: "
check_cache "binary" "yacc"
if [ $? -eq 0 ] ; then
YACC=$CACHED
echo "found(cached) -> $YACC"
return 0
fi
echo -n "Testing for yacc: "
test_binary "yacc" "byacc"
if [ $? -eq 0 ] ; then
YACC=$BIN
echo "found -> $YACC"
write_cache "binary" "yacc" "yes" "$YACC"
return 0
else
echo "not found"
exit 1
fi
}
check_util()
{
echo -n "Testing for $1: "
check_cache "binary" "$1"
if [ $? -eq 0 ] ; then
echo "found(cached) -> $CACHED"
return 0
fi
test_binary "$1"
if [ $? -eq 0 ] ; then
UTIL=$BIN
echo "found -> $UTIL"
write_cache "binary" "$1" "yes" "$UTIL"
return 0
else
echo "not found"
exit 1
fi
}
check_function()
{
FUNCTION=$1
while [ $# -ne 0 ] ; do
if [ ! -n $2 ] ; then
break
fi
shift
if [ "F$INCLUDE" = "F" ] ; then
INCLUDE="$1"
else
INCLUDE="$INCLUDE $1"
fi
done
echo -n "Testing for $FUNCTION: "
echo >> config.log
echo "Testing for $FUNCTION: " >> config.log
check_cache "function" "$FUNCTION"
if [ $? -eq 0 ] ; then
echo "-> OK (cached)"
echo "-> OK (cached)" >> config.log
return 0
fi
echo "#include <sys/types.h>" > autotest.c
if [ "F$INCLUDE" != "F" ] ; then
for inc in $INCLUDE ; do
echo "#include \"$inc\"" >> autotest.c
done
fi
echo "#include <stdlib.h>" >> autotest.c
echo "int main (int argc, char **argv) { $FUNCTION; return 0; }" >> autotest.c
echo "$GCC $PTHREAD_CFLAGS $CFLAGS -o autotest $LDFLAGS $LIBS $PTHREAD_LDFLAGS autotest.c" >>config.log
$GCC $PTHREAD_CFLAGS $CFLAGS -o autotest $LDFLAGS $LIBS $PTHREAD_LDFLAGS autotest.c >>config.log 2>&1
if [ $? -eq 0 ] ; then
echo "found"
cleanup
echo "-> OK" >> config.log
write_cache "function" "$FUNCTION" "yes" ""
return 0
else
echo "not found"
echo "-> FAILED" >> config.log
echo "Failed program was:" >> config.log
cat autotest.c >> config.log
cleanup
write_cache "function" "$FUNCTION" "no" ""
return 1
fi
}
check_include()
{
_INCLUDE="$1"
echo -n "Testing for $_INCLUDE: "
echo >> config.log
echo "Testing for $_INCLUDE: " >> config.log
check_cache "include" "$_INCLUDE"
if [ $? -eq 0 ] ; then
echo "-> OK (cached)"
echo "-> OK (cached)" >> config.log
_CFLAG=`echo "$_INCLUDE" | sed -e 's/[./]/_/g' | tr '[:lower:]' '[:upper:]'`
CFLAGS="$CFLAGS -DHAVE_$_CFLAG"
return 0
fi
echo "#include <sys/types.h>" > autotest.c
echo "#include \"$_INCLUDE\"" >> autotest.c
echo "#include <stdlib.h>" >> autotest.c
echo "int main (int argc, char **argv) { return 0; }" >> autotest.c
echo "$GCC $CFLAGS $PTHREAD_CFLAGS -o autotest $LDFLAGS $LIBS $PTHREAD_LDFLAGS autotest.c" >>config.log
$GCC $CFLAGS $PTHREAD_CFLAGS -o autotest $LDFLAGS $LIBS $PTHREAD_LDFLAGS autotest.c >>config.log 2>&1
if [ $? -eq 0 ] ; then
echo "found"
echo "-> OK" >> config.log
_CFLAG=`echo "$_INCLUDE" | sed -e 's/[./]/_/g' | tr '[:lower:]' '[:upper:]'`
CFLAGS="$CFLAGS -DHAVE_$_CFLAG"
write_cache "include" "$_INCLUDE" "yes" "$_CFLAG"
cleanup
return 0
else
echo "not found"
echo "-> FAILED" >> config.log
echo "Failed program was:" >> config.log
cat autotest.c >> config.log
write_cache "include" "$_INCLUDE" "no" ""
cleanup
return 1
fi
}
check_macro()
{
MACRO=$1
_INCLUDE=""
while [ $# -ne 1 -a -n $1 ] ; do
shift
if [ "F$_INCLUDE" = "F" ] ; then
_INCLUDE="$1"
else
_INCLUDE="$_INCLUDE $1"
fi
done
echo -n "Testing for $MACRO: "
echo >> config.log
echo "Testing for $MACRO: " >> config.log
check_cache "macro" "$MACRO"
if [ $? -eq 0 ] ; then
echo "-> OK (cached)"
echo "-> OK (cached)" >> config.log
return 0
fi
echo "#include <sys/types.h>" > autotest.c
for _inc in $_INCLUDE ; do
echo "#include \"$_inc\"" >> autotest.c
done
echo "#include <stdlib.h>" >> autotest.c
echo "int main (int argc, char **argv) {" >>autotest.c
echo "#ifndef $MACRO" >>autotest.c
echo "#error \"$MACRO not defined\"" >>autotest.c
echo "#endif" >> autotest.c
echo "}" >>autotest.c
echo "$GCC $CFLAGS $PTHREAD_CFLAGS -o autotest $LDFLAGS $LIBS $PTHREAD_LDFLAGS autotest.c" >> config.log
$GCC $CFLAGS $PTHREAD_CFLAGS -o autotest $LDFLAGS $LIBS $PTHREAD_LDFLAGS autotest.c >>config.log 2>&1
if [ $? -eq 0 ] ; then
echo "found"
echo "-> OK" >> config.log
write_cache "macro" "$MACRO" "yes" ""
cleanup
return 0
else
echo "not found"
echo "-> FAILED" >> config.log
echo "Failed program was:" >> config.log
cat autotest.c >> config.log
write_cache "macro" "$MACRO" "no" ""
cleanup
return 1
fi
}
check_single_lib()
{
_slib=$1
_path=$2
echo "#include <sys/types.h>" > autotest.c
if [ "F$INCLUDE" != "F" ] ; then
for inc in $INCLUDE ; do
echo "#include \"$inc\"" >> autotest.c
done
fi
echo "#include <stdlib.h>" >> autotest.c
echo "int main (int argc, char **argv) { return 0; }" >> autotest.c
echo "$GCC $CFLAGS $PTHREAD_CFLAGS -o autotest $LDFLAGS $LIBS -L$_path -l$_slib $PTHREAD_LDFLAGS autotest.c" >>config.log
$GCC $CFLAGS $PTHREAD_CFLAGS -o autotest $LDFLAGS $LIBS -L$_path -l$_slib $PTHREAD_LDFLAGS autotest.c >>config.log 2>&1
if [ $? -eq 0 ] ; then
_found="yes"
return 0
fi
return 1
}
check_lib()
{
_SEARCH=""
echo $1 | grep -- '--search=' > /dev/null
if [ $? -eq 0 ] ; then
_SEARCH=`echo $1 | sed -e 's/^--search=//'`
shift
fi
LIB=$1
while [ $# -ne 1 -a -n $1 ] ; do
shift
if [ "F$INCLUDE" = "F" ] ; then
INCLUDE="$1"
else
INCLUDE="$INCLUDE $1"
fi
done
echo -n "Testing for lib$LIB: "
echo >> config.log
echo "Testing for lib$LIB: " >> config.log
check_cache "lib" "$LIB"
if [ $? -eq 0 ] ; then
check_cache "libpath" "$LIB"
if [ $? -eq 0 ] ; then
LIBS="$LIBS -L$CACHED"
fi
LIBS="$LIBS -l$LIB"
echo "-> OK (cached)"
echo "-> OK (cached)" >> config.log
return 0
fi
if [ "F$_SEARCH" = "F" ] ; then
check_single_lib "$LIB" "/lib"
if [ $? -eq 0 ] ; then
echo "found"
LIBS="$LIBS -l$LIB"
echo "-> OK" >> config.log
write_cache "lib" "$LIB" "yes" ""
cleanup
return 0
else
echo "not found"
echo "-> FAILED" >> config.log
echo "Failed program was:" >> config.log
cat autotest.c >> config.log
write_cache "lib" "$LIB" "no" ""
cleanup
return 1
fi
else
_saved_ifs=$IFS
IFS=":"
for _p in $_SEARCH ; do
IFS=$_saved_ifs
check_single_lib "$LIB" "$_p"
if [ $? -eq 0 ] ; then
echo "found"
LIBS="$LIBS -L$_p -l$LIB"
echo "-> OK" >> config.log
write_cache "lib" "$LIB" "yes" ""
write_cache "libpath" "$LIB" "yes" "$_p"
cleanup
IFS=$_saved_ifs
return 0
fi
IFS=":"
done
IFS=$_saved_ifs
fi
echo "not found"
echo "-> FAILED" >> config.log
echo "Failed program was:" >> config.log
cat autotest.c >> config.log
write_cache "lib" "$LIB" "no" ""
cleanup
return 1
}
check_os()
{
_OS=`uname -s`
_PROCESSOR=`uname -p`
case "$_OS" in
FreeBSD*)
OS="freebsd"
CFLAGS="${CFLAGS} -DFREEBSD"
INSTALL="/usr/bin/install -C -S -v"
MKDIR="/usr/bin/install -d -v"
MANPATH="${PREFIX}/man"
case `uname -r` in
4.*)
CFLAGS="$CFLAGS -DFREEBSD_LEGACY"
PTHREAD_CFLAGS="$PTHREAD_CFLAGS -pthread" PTHREAD_LDFLAGS="-pthread" ;;
5.*)
PTHREAD_CFLAGS="$PTHREAD_CFLAGS -pthread" PTHREAD_LDFLAGS="-lpthread" ;;
*)
PTHREAD_CFLAGS="$PTHREAD_CFLAGS -pthread" PTHREAD_LDFLAGS="-pthread" ;;
esac
;;
Linux*)
OS="linux"
CFLAGS="${CFLAGS} -I/usr/include/${_PROCESSOR}-linux-gnu/ -DLINUX -D_GNU_SOURCE" PTHREAD_CFLAGS="$PTHREAD_CFLAGS -pthread"
PTHREAD_LDFLAGS="-pthread"
;;
*) OS="unknown" PTHREAD_LDFLAGS="" PTHREAD_CFLAGS="$PTHREAD_CFLAGS -pthread" ;;
esac
}
check_user()
{
_user=$1
echo -n "Checking for user $_user: "
grep $_user /etc/passwd > /dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "found"
return 0
else
echo "not found"
return 1
fi
}
check_group()
{
_group=$1
echo -n "Checking for group $_group: "
grep $_group /etc/group > /dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "found"
return 0
else
echo "not found"
return 1
fi
}
write_result()
{
echo "Compiler: $GCC" >> config.log
echo "Make: $MAKE" >> config.log
echo "Sources: $SOURCES" >> config.log
echo "Cflags: $CFLAGS" >> config.log
echo "Ldflags: $LDFLAGS" >> config.log
echo "Libs: $LIBS" >> config.log
OBJECTS=`echo $SOURCES | sed -e 's/\.c/\.o/g'`
cat > $MAKEFILE << END
# This is ${EXEC} Makefile
# For options edit Makefile.in, this file is autogenerated by configure
CC?=$GCC
# Optimization flags
OPT_FLAGS+=$OPT_FLAGS
# Compile time flags
CFLAGS+=$CFLAGS
# Link time flags
LDFLAGS+=$LDFLAGS
# Libraries to link
LIBS=$LIBS
# ${EXEC} sources
SOURCES=$SOURCES
# ${EXEC} objects
OBJECTS=$OBJECTS
# Detected operation system
OS=$OS
# Version of dcc (if needed)
DCC_VER=$DCC_VER
# Lex and yacc executables
LEX=$LEX
YACC=$YACC
# Pthread specific flags
PTHREAD_CFLAGS=$PTHREAD_CFLAGS
PTHREAD_LDFLAGS=$PTHREAD_LDFLAGS
# Prefix to install
PREFIX=$PREFIX
# Where local libs and includes are located
LOCALBASE=$LOCALBASE
# Install commands
INSTALL=$INSTALL
MKDIR=$MKDIR
# Executable name
EXEC=$EXEC
# User and group
RMILTER_USER=$USER
RMILTER_GROUP=$GROUP
# All target dependenses
TARGETS=$TARGETS
# Common dependenses
DEPS=$DEPS
# Path to install manual page
MANPATH=$MANPATH
END
# Write build targets to makefile
cat $MAKEFILE_IN >> $MAKEFILE
cat >> $MAKEFILE << END
${EXEC}: \$(OBJECTS)
\$(CC) \$(PTHREAD_LDFLAGS) \$(LDFLAGS) \$(OBJECTS) \$(LIBS) -o \$(EXEC)
END
for o in $OBJECTS ; do
SO=`echo $o | sed -e 's/\.o/\.c/g'`
cat >> $MAKEFILE << END
${o}: \$(DEPS) ${SO}
\$(CC) \$(OPT_FLAGS) \$(CFLAGS) \$(PTHREAD_CFLAGS) -c ${SO}
END
done
cat >> $MAKEFILE << END
${LEX_OUTPUT}: cfg_file.h ${LEX_SRC} ${YACC_OUTPUT}
\$(LEX) -o${LEX_OUTPUT} ${LEX_SRC}
${YACC_OUTPUT}: cfg_file.h ${YACC_SRC}
\$(YACC) -d -o ${YACC_OUTPUT} ${YACC_SRC}
END
}
for option
do
case "$option" in
-*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
*=*) var=`echo "$option" | cut -d'=' -f1`
value=`echo "$option" | cut -d'=' -f2`
eval "${var}=${value}" ;;
*) value="" ;;
esac
case "$option" in
--help) help=yes ;;
--prefix*) PREFIX=$value ;;
--user*) USER=$value ;;
--group*) GROUP=$value ;;
--enable-auth-strict) CFLAGS="$CFLAGS -DSTRICT_AUTH" ;;
--enable-dcc) dcc=yes ;;
--disable-spf) spf=no ;;
--enable-dkim) dkim=yes ;;
--enable-debug) CFLAGS="$CFLAGS -DWITH_DEBUG" OPT_FLAGS="" ;;
--enable-opt) OPT_FLAGS="-O3 -pipe" ;;
--enable-sendmail) SENDMAIL=yes ;;
--with-libmilter*) LIBMILTER=$value ;;
--with-libspf*) LIBSPF=$value ;;
--with-libopendkim*) LIBOPENDKIM=$value ;;
*=*) ;;
esac
done
if [ "F$help" = "Fyes" ] ; then
cat << END
--help this message
--prefix=PATH set the installation prefix
--enable-dcc enable dcc support
--enable-dkim enable dkim signing support
--enable-debug turn on extra debug messages
--enable-opt turn on extra optimization
--enable-auth-strict turn on strict check for authenticated users
--enable-sendmail build rmilter for using with sendmail MTA
--disable-spf disable spf support
--user=USER set user to use
--group=GROUP set group to use
--with-libmilter=PATH set path to libmilter
--with-libspf=PATH set path to libspf2
--with-libopendkim=PATH set path to libopendkim
END
exit 1
fi
if [ "F$SENDMAIL" = "Fyes" ] ; then
CFLAGS="$CFLAGS -DSENDMAIL"
if [ "F$USER" = "Fpostfix" ] ; then
USER="mailnull"
GROUP="mailnull"
fi
fi
CFLAGS="$CFLAGS -I$PREFIX/include"
LDFLAGS="$LDFLAGS -L$PREFIX/lib"
if [ "F$LIBMILTER" != "F" ] ; then
echo $LIBMILTER | fgrep '/lib/' > /dev/null
if [ $? -eq 0 ] ; then
LDFLAGS="$LDFLAGS -L$LIBMILTER"
else
echo $LIBMILTER | fgrep '/include/' > /dev/null
if [ $? -eq 0 ] ; then
CFLAGS="$CFLAGS -I$LIBMILTER"
else
LDFLAGS="$LDFLAGS -L$LIBMILTER/lib"
CFLAGS="$CFLAGS -I$LIBMILTER/include"
fi
fi
fi
if [ "F$LIBSPF" != "F" ] ; then
echo $LIBSPF | fgrep '/lib/' > /dev/null
if [ $? -eq 0 ] ; then
LDFLAGS="$LDFLAGS -L$LIBSPF"
else
echo $LIBSPF | fgrep '/include/' > /dev/null
if [ $? -eq 0 ] ; then
CFLAGS="$CFLAGS -I$LIBSPF"
else
LDFLAGS="$LDFLAGS -L$LIBSPF/lib"
CFLAGS="$CFLAGS -I$LIBSPF/include"
fi
fi
fi
if [ "F$LIBOPENDKIM" != "F" ] ; then
echo $LIBOPENDKIM | fgrep '/lib/' > /dev/null
if [ $? -eq 0 ] ; then
LDFLAGS="$LDFLAGS -L$LIBOPENDKIM"
else
echo $LIBOPENDKIM | fgrep '/include/' > /dev/null
if [ $? -eq 0 ] ; then
CFLAGS="$CFLAGS -I$LIBOPENDKIM"
else
LDFLAGS="$LDFLAGS -L$LIBOPENDKIM/lib"
CFLAGS="$CFLAGS -I$LIBOPENDKIM/include"
fi
fi
fi
echo "Starting configure for rmilter" >config.log
echo $0 $@ >> config.log
check_os
check_compiler
check_make
check_lex
check_yacc
check_lib "--search=/usr/lib/libmilter:${PREFIX}/lib:${PREFIX}/libmilter" "milter" "libmilter/mfapi.h"
if [ $? -eq 1 ] ; then
echo "Libmilter not found, check config.log for details"
exit 1
fi
if [ "F$spf" = "Fno" ] ; then
CFLAGS="$CFLAGS -DDISABLE_SPF"
else
SOURCES="$SOURCES spf.c"
check_lib "--search=/usr/lib/libspf2:${PREFIX}/lib:${PREFIX}/libspf2" "spf2" "netinet/in.h" "spf2/spf.h"
if [ $? -eq 1 ] ; then
echo "Libspf2 not found, check config.log for details"
exit 1
fi
fi
if [ "F$dkim" = "Fyes" ] ; then
CFLAGS="$CFLAGS -DENABLE_DKIM"
check_lib "--search=/usr/lib/libopendkim:${PREFIX}/lib:${PREFIX}/libopendkim" "opendkim" "netinet/in.h" "opendkim/dkim.h"
if [ $? -eq 1 ] ; then
echo "Libopendkim not found, check config.log for details"
exit 1
fi
fi
check_lib "m"
check_lib "pcre"
if [ $? -eq 1 ] ; then
# Try to use pcre-config
PCRE_CONFIG=`which pcre-config`
if [ F"$PCRE_CONFIG" = "F" ] ; then
echo "Libpcre is not found and pcre-config binary is not found as well. Please install libcpcre."
exit 1
fi
PCRE_CFLAGS=`$PCRE_CONFIG --cflags`
PCRE_LIBS=`$PCRE_CONFIG --libs`
CFLAGS="$CFLAGS $PCRE_CFLAGS"
LIBS="$LIBS $PCRE_LIBS"
fi
check_lib "md"
if [ $? -eq 1 ] ; then
cp $COMPAT_DIR/md5.c .
cp $COMPAT_DIR/md5.h .
SOURCES="$SOURCES md5.c"
CFLAGS="$CFLAGS -DHAVE_OWN_MD5"
DEPS="$DEPS md5.h"
fi
check_function "strlcpy" "string.h"
if [ $? -eq 1 ] ; then
cp $COMPAT_DIR/strlcpy.c .
cp $COMPAT_DIR/strlcpy.h .
SOURCES="$SOURCES strlcpy.c"
CFLAGS="$CFLAGS -DHAVE_STRLCPY_H"
DEPS="$DEPS strlcpy.h"
fi
check_function "bzero" "string.h"
check_function "srandomdev"
if [ $? -eq 0 ] ; then
CFLAGS="$CFLAGS -DHAVE_SRANDOMDEV"
fi
check_include "endian.h"
check_include "machine/endian.h"
check_include "sys/time.h"
check_include "time.h"
check_include "stdint.h"
if [ $? -eq 1 ] ; then
check_include "inttypes.h"
fi
check_include "stdbool.h"
check_include "strlcpy.h"
check_include "md5.h"
check_include "sys/queue.h"
if [ $? -eq 1 ] ; then
cp $COMPAT_DIR/queue.h .
DEPS="$DEPS queue.h"
fi
check_macro "SLIST_FOREACH_SAFE" "sys/queue.h"
if [ $? -eq 1 ] ; then
cp $COMPAT_DIR/queue.h .
CFLAGS="$CFLAGS -DOWN_QUEUE_H"
DEPS="$DEPS queue.h"
fi
check_macro "PATH_MAX" "limits.h"
if [ $? -eq 1 ] ; then
check_macro "MAXPATHLEN" "sys/param.h"
if [ $? -eq 1 ] ; then
CFLAGS="$CFLAGS -DHAVE_MAXPATHLEN -DMAXPATHLEN=4096"
else
CFLAGS="$CFLAGS -DHAVE_MAXPATHLEN"
fi
else
CFLAGS="$CFLAGS -DHAVE_PATH_MAX"
fi
if [ "F$dcc" = "Fyes" ] ; then
CFLAGS="$CFLAGS -I./dcc-dccd-${DCC_VER}/include -DHAVE_DCC"
LDFLAGS="$LDFLAGS -Ldcc-dccd-${DCC_VER}/dcclib"
LIBS="$LIBS -ldcc"
TARGETS="dcc $TARGETS"
fi
write_result