dnl autoconf.in for Services. dnl dnl Anope (c) 2003-2012 Anope team dnl Contact us at team@anope.org dnl This program is free but copyrighted software; see the file COPYING for dnl details. dnl Based heavily on the Unreal configure.in script, and extra thanks to dnl codemastr from UnrealIRCD. AC_INIT # If no bindir, we tell him to run ./Config. if test "${with_bindir+set}" != set || test "${with_datadir+set}" != set; then echo "You might want to run ./Config or provide some parameters to this script." echo "./configure --help for information about this script" exit 0 fi AC_CONFIG_SRCDIR([src/actions.c]) AC_CONFIG_HEADER(include/sysconf.h) AC_PROG_CC if test "$ac_cv_c_compiler_gnu" = "yes"; then # CFLAGS="$CFLAGS -funsigned-char" AC_CACHE_CHECK(if gcc has a working -pipe, ac_cv_pipe, [ save_cflags="$CFLAGS" CFLAGS="$CFLAGS -pipe" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ac_cv_pipe="yes"],[ac_cv_pipe="no"]) CFLAGS="$save_cflags" ]) if test "$ac_cv_pipe" = "yes"; then CFLAGS="-pipe $CFLAGS" fi fi dnl CFLAGS="$CFLAGS -W -Wall" AC_PATH_PROG(RM,rm) AC_PATH_PROG(CP,cp) AC_PATH_PROG(TOUCH,touch) AC_PATH_PROG(INSTALL,install) AC_CHECK_LIB(nsl,inet_ntoa,ANOPELIBS="$ANOPELIBS-lnsl ") AC_CHECK_LIB(socket, socket,ANOPELIBS="$ANOPELIBS-lsocket ") AC_CHECK_LIB(resolv, res_query,ANOPELIBS="$ANOPELIBS-lresolv ") AC_CHECK_LIB(bsd, revoke,ANOPELIBS="$ANOPELIBS-lbsd ") dnl Does this platform require array notation to assign to a va_list? dnl If cross-compiling, we assume va_list is "normal". If this breaks dnl you, set ac_cv_valistisarray=true and maybe define HAVE_VA_LIST_AS_ARRAY dnl also just to be sure. dnl NOTE: this autoconf test is taken from mozilla: www.mozilla.org. AC_MSG_CHECKING(whether va_list assignments need array notation) AC_CACHE_VAL(ac_cv_valistisarray, [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include #include void foo(int i, ...) { va_list ap1, ap2; va_start(ap1, i); ap2 = ap1; if (va_arg(ap2, int) != 123 || va_arg(ap1, int) != 123) { exit(1); } va_end(ap1); va_end(ap2); } int main() { foo(0, 123); return(0); }]])],[ac_cv_valistisarray=false],[ac_cv_valistisarray=true],[ac_cv_valistisarray=false])]) if test "$ac_cv_valistisarray" = true ; then AC_DEFINE(HAVE_VA_LIST_AS_ARRAY,[1],[va_list as array]) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi DIS_MYSQL=" MySQL: No" AC_ARG_WITH(mysql, [ --without-mysql Do not use MySQL or attempt to find it],,[ AC_ARG_WITH(mysqlconfig-path, [ --with-mysqlconfig-path=PATH Complete path to the mysql_config executable], mysql_config_path="$withval", mysql_config_path="") MYSQLCONF="" if test "$mysql_config_path" != ""; then if test -x "$mysql_config_path"; then MYSQLCONF="$mysql_config_path" echo "checking for mysql_config... $MYSQLCONF" >&6 fi fi if test "$MYSQLCONF" = ""; then AC_PATH_PROG(MYSQLCONF,mysql_config, "") fi if test "$MYSQLCONF" != ""; then hold_cflags="$CFLAGS" hold_ldflags="$LDFLAGS" if test "$MYSQL_CFLAGS" = ""; then MYSQL_CFLAGS="`$MYSQLCONF --cflags`" fi if test "$MYSQL_LDFLAGS" = ""; then MYSQL_LDFLAGS="`$MYSQLCONF --libs`" fi CFLAGS="$CFLAGS $MYSQL_CFLAGS" LDFLAGS="$LDFLAGS $MYSQL_LDFLAGS" LIBS="$MYSQL_LDFLAGS" echo $ECHO_N "checking if mysql_config produces valid values... $ECHO_C" >&6 AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include int main() { MYSQL *mysql = mysql_init(0); return 0; } ]])],[ac_cv_mysql_valid=yes],[ac_cv_mysql_valid=no],[]) echo $ac_cv_mysql_valid >&6 if test "$ac_cv_mysql_valid" = "yes"; then AC_DEFINE_UNQUOTED(USE_MYSQL,1,"Use Mysql") AC_DEFINE_UNQUOTED(USE_RDB,1,"Use RDB") MYSQL=" mysql.c " RDB=" rdb.c " AC_SUBST(MYSQL) AC_SUBST(RDB) DIS_MYSQL=" MySQL: Yes" else CFLAGS="$hold_cflags" LDFLAGS="$hold_ldflags" LIBS="" fi fi ]) AC_MSG_CHECKING(whether this is a bit or little endian system) AC_RUN_IFELSE([AC_LANG_SOURCE([[ int main() { short s = 1; short* ptr = &s; unsigned char c = *((char*)ptr); return c; } ]])],[AC_DEFINE(BIG_ENDIAN) AC_MSG_RESULT(big) ],[AC_DEFINE(LITTLE_ENDIAN) AC_MSG_RESULT(little) ],[]) AC_SUBST(ANOPELIBS) AC_SUBST(LDFLAGS) AC_CHECK_HEADER(sys/types.h,AC_DEFINE(HAS_SYS_TYPES_H,1,"Has sys/types.h")) DIS_MODULES="Modules: Yes" dnl module checking based on Unreal's module checking code AC_DEFUN(AC_ENABLE_DYN, [ AC_CHECK_FUNC(dlopen,, AC_CHECK_LIB(dl,dlopen,[ ANOPELIBS="$ANOPELIBS -ldl" AC_DEFINE(USE_MODULES,1,"Modules are available") USE_MODULES="yes" DIS_MODULES="Modules: Yes" ], [ AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found) AC_DEFINE(STATIC_LINKING,"NO_MODULES","modules not available") DIS_MODULES="Modules: No" ])) hold_cflags=$CFLAGS CFLAGS="$CFLAGS -export-dynamic" AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])],[ac_cv_export_dynamic=yes],[ac_cv_export_dynamic=no])]) if test "$ac_cv_export_dynamic" = "no"; then CFLAGS=$hold_cflags fi AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[ if test "$ac_cv_c_compiler_gnu" = "yes"; then ac_cv_pic="-fPIC -DPIC -shared" case `uname -s` in Darwin*[)] ac_cv_pic="-bundle -flat_namespace -undefined suppress" ;; HP-UX*[)] ac_cv_pic="-fPIC" ;; esac else case `uname -s` in SunOS*[)] ac_cv_pic="-KPIC -DPIC -G" ;; esac fi ]) if test "$ac_cv_c_compiler_gnu" = "yes"; then case `uname -s` in Darwin*[)] SHARED="-bundle -flat_namespace -undefined suppress" AC_SUBST(SHARED) ;; *[)] SHARED="-shared" AC_SUBST(SHARED) ;; esac fi AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[ cat >uscore.c << __EOF__ int main() { return 0; } __EOF__ $CC -o uscore $CFLAGS uscore.c 1>&5 if test -z "`strings -a uscore |grep '^_main$'`"; then ac_cv_underscore=no else ac_cv_underscore=yes fi rm -f uscore uscore.c ]) if test "$ac_cv_underscore" = "yes"; then AC_DEFINE(DL_PREFIX,"_","Underscore needed for dlopen") else AC_DEFINE(DL_PREFIX,"","No prefix needed for dlopen") fi MODULEFLAGS=$ac_cv_pic AC_SUBST(MODULEFLAGS) AC_DEFINE(USE_MODULES,1,"Modules available") ]) AC_ENABLE_DYN anope_CHECK_TYPE_SIZES AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H,1,"")) AC_CHECK_HEADER(sys/select.h,AC_DEFINE(HAVE_SYS_SELECT_H,1,"")) AC_CHECK_FUNCS(backtrace,AC_DEFINE(HAVE_BACKTRACE,1)) AC_CHECK_FUNCS(strerror,AC_DEFINE(HAVE_STRERROR,1)) AC_CHECK_FUNCS(sys_errlist,AC_DEFINE(HAVE_SYS_ERRLIST,1)) AC_CHECK_FUNCS(snprintf,AC_DEFINE(HAVE_SNPRINTF,1)) AC_CHECK_FUNCS(stricmp,AC_DEFINE(HAVE_STRICMP,1)) AC_CHECK_FUNCS(strcasecmp,AC_DEFINE(HAVE_STRCASECMP,1)) AC_CHECK_FUNCS(strdup,AC_DEFINE(HAVE_STRDUP,1)) AC_CHECK_FUNCS(strspn,AC_DEFINE(HAVE_STRSPN,1)) AC_CHECK_FUNCS(strsignal,AC_DEFINE(HAVE_STRSIGNAL,1)) AC_CHECK_FUNCS(gettimeofday,AC_DEFINE(HAVE_GETTIMEOFDAY,1)) AC_CHECK_FUNCS(setgrent,AC_DEFINE(HAVE_SETGRENT,1)) AC_CHECK_FUNCS(umask,AC_DEFINE(HAVE_UMASK,1)) AC_CHECK_FUNCS(fork,AC_DEFINE(HAVE_FORK,1)) AC_CHECK_FUNCS(gethostbyname,AC_DEFINE(HAVE_GETHOSTBYNAME,1)) AC_CHECK_FUNCS(gethostbyname_r,AC_DEFINE(HAVE_GETHOSTBYNAME_R,1)) AC_CHECK_FUNCS(strlcpy,AC_DEFINE(HAVE_STRLCPY,1)) AC_CHECK_FUNCS(strlcat,AC_DEFINE(HAVE_STRLCAT,1)) AC_ARG_WITH(rungroup, [ --with-rungroup=group Specify the rungroup for anope], [ AC_DEFINE_UNQUOTED(RUNGROUP,"$withval","Run group") RUNGROUP=$withval ]) AC_SUBST(RUNGROUP) dnl AC_DEFINE_UNQUOTED(MYOSNAME,"`uname -a`","uname") AC_ARG_WITH(permissions, [ --with-permissions=permissions Specify the default permissions for anope], AC_DEFINE_UNQUOTED(DEFUMASK,$withval,"Default umask permissions"), AC_DEFINE(DEFUMASK, 007,"Default umask Permissions")) AC_ARG_WITH(bindir, [ --with-bindir=bindir Specify the default binary dir for anope], [ AC_DEFINE_UNQUOTED(SERVICES_BIN,"${withval}/services","Binary Dir") BINDEST=$withval DATDEST=$withval MODULE_PATH=${withval}/modules/ ]) AC_SUBST(BINDEST) AC_ARG_WITH(datadir, [ --with-datadir=datadir Specify the location of the services data folder], [ AC_DEFINE_UNQUOTED(SERVICES_DIR,"$withval","services bin dir") AC_DEFINE_UNQUOTED(MODULE_PATH,"${withval}/modules/","Module dir") DATDEST=$withval MODULE_PATH=${withval}/modules/ ]) AC_SUBST(DATDEST) AC_SUBST(MODULE_PATH) AC_CONFIG_FILES( \ Makefile \ src/bin/anoperc \ ) AC_OUTPUT cat <