aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2013-04-08 11:12:54 +0200
committerChristophe Romain <christophe.romain@process-one.net>2013-06-13 11:11:02 +0200
commit4d8f7706240a1603468968f47fc7b150b788d62f (patch)
tree92d55d789cc7ac979b3c9e161ffb7f908eba043a /configure.ac
parentFix Guide: ejabberd_service expects a shaper_rule, not a shaper (diff)
Switch to rebar build tool
Use dynamic Rebar configuration Make iconv dependency optional Disable transient_supervisors compile option Add hipe compilation support Only compile ibrowse and lhttpc when needed Make it possible to generate an OTP application release Add --enable-debug compile option Add --enable-all compiler option Add --enable-tools configure option Add --with-erlang configure option. Add --enable-erlang-version-check configure option. Add lager support Improve the test suite
Diffstat (limited to '')
-rw-r--r--configure.ac283
1 files changed, 283 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 000000000..d3efb8069
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,283 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ(2.53)
+AC_PACKAGE_VERSION(3.0.0)
+AC_INIT(ejabberd, 3.0.0, [ejabberd@process-one.net], [ejabberd])
+REQUIRE_ERLANG_MIN="5.9.1 (Erlang/OTP R15B01)"
+REQUIRE_ERLANG_MAX="9.0.0 (No Max)"
+
+# Checks for programs.
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+AC_PROG_SED
+
+if test "x$GCC" = "xyes"; then
+ CFLAGS="$CFLAGS -Wall"
+fi
+
+# Checks Erlang runtime and compiler
+AC_ARG_WITH(erlang,
+ AC_HELP_STRING([--with-erlang=dir],
+ [search for erlang in dir]),
+[if test "$withval" = "yes" -o "$withval" = "no" -o "X$with_erlang" = "X"; then
+ extra_erl_path=""
+else
+ extra_erl_path="$with_erlang:$with_erlang/bin:"
+fi
+])
+
+AC_PATH_TOOL(ERL, erl, , [${extra_erl_path}$PATH])
+AC_PATH_TOOL(ERLC, erlc, , [${extra_erl_path}$PATH])
+
+AC_ERLANG_NEED_ERL
+AC_ERLANG_NEED_ERLC
+
+AC_ARG_ENABLE(erlang-version-check,
+[AC_HELP_STRING([--enable-erlang-version-check],
+ [Check Erlang/OTP version @<:@default=yes@:>@])])
+ case "$enable_erlang_version_check" in
+ yes|'')
+ ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX])
+ ;;
+ no)
+ ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX],[warn])
+ ;;
+esac
+
+# Checks and sets ERLANG_ROOT_DIR and ERLANG_LIB_DIR variable
+AC_ERLANG_SUBST_ROOT_DIR
+# AC_ERLANG_SUBST_LIB_DIR
+
+#locating escript
+AC_PATH_PROG([ESCRIPT], [escript], [], [$ERLANG_ROOT_DIR/bin])
+
+#locating make
+AC_CHECK_PROG([MAKE], [make], [make], [])
+
+if test "x$ESCRIPT" = "x"; then
+ AC_MSG_ERROR(['escript' was not found])
+fi
+
+if test "x$MAKE" = "x"; then
+ AC_MSG_ERROR(['make' was not found])
+fi
+
+# Change default prefix
+AC_PREFIX_DEFAULT(/)
+
+AC_ARG_ENABLE(hipe,
+[AC_HELP_STRING([--enable-hipe], [compile natively with HiPE, not recommended (default: no)])],
+[case "${enableval}" in
+ yes) hipe=true ;;
+ no) hipe=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-hipe) ;;
+esac],[hipe=false])
+
+AC_ARG_ENABLE(roster_gateway_workaround,
+[AC_HELP_STRING([--enable-roster-gateway-workaround], [turn on workaround for processing gateway subscriptions (default: no)])],
+[case "${enableval}" in
+ yes) roster_gateway_workaround=true ;;
+ no) roster_gateway_workaround=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-roster-gateway-workaround) ;;
+esac],[roster_gateway_workaround=false])
+
+AC_ARG_ENABLE(transient_supervisors,
+[AC_HELP_STRING([--enable-transient_supervisors], [use Erlang supervision for transient process (default: no)])],
+[case "${enableval}" in
+ yes) transient_supervisors=true ;;
+ no) transient_supervisors=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-transient_supervisors) ;;
+esac],[transient_supervisors=false])
+
+AC_ARG_ENABLE(full_xml,
+[AC_HELP_STRING([--enable-full-xml], [use XML features in XMPP stream (ex: CDATA) (default: no, requires XML compliant clients)])],
+[case "${enableval}" in
+ yes) full_xml=true ;;
+ no) full_xml=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-full-xml) ;;
+esac],[full_xml=false])
+
+AC_ARG_ENABLE(mssql,
+[AC_HELP_STRING([--enable-mssql], [use Microsoft SQL Server database (default: no, requires --enable-odbc)])],
+[case "${enableval}" in
+ yes) db_type=mssql ;;
+ no) db_type=generic ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-mssql) ;;
+esac],[db_type=generic])
+
+AC_ARG_ENABLE(tools,
+[AC_HELP_STRING([--enable-tools], [build development tools (currently the ejabberd profiler only, default: no)])],
+[case "${enableval}" in
+ yes) tools=true ;;
+ no) tools=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-tools) ;;
+esac],[tools=false])
+
+AC_ARG_ENABLE(all,
+[AC_HELP_STRING([--enable-all], [same as --enable-nif --enable-odbc --enable-mysql --enable-pgsql --enable-pam --enable-zlib --enable-stun --enable-json --enable-iconv --enable-debug --enable-http (useful for Dialyzer checks, default: no)])],
+[case "${enableval}" in
+ yes) nif=true odbc=true mysql=true pgsql=true pam=true zlib=true stun=true json=true iconv=true debug=true http=true ;;
+ no) nif=false odbc=false mysql=false pgsql=false pam=false zlib=false stun=false json=false iconv=false debug=false http=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-all) ;;
+esac],[])
+
+AC_ARG_ENABLE(nif,
+[AC_HELP_STRING([--enable-nif], [replace some functions with C equivalents. Requires Erlang R13B04 or higher (default: no)])],
+[case "${enableval}" in
+ yes) nif=true ;;
+ no) nif=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-nif) ;;
+esac],[if test "x$nif" = "x"; then nif=false; fi])
+
+AC_ARG_ENABLE(odbc,
+[AC_HELP_STRING([--enable-odbc], [enable pure ODBC support (default: no)])],
+[case "${enableval}" in
+ yes) odbc=true ;;
+ no) odbc=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-odbc) ;;
+esac],[if test "x$odbc" = "x"; then odbc=false; fi])
+
+AC_ARG_ENABLE(mysql,
+[AC_HELP_STRING([--enable-mysql], [enable MySQL support (default: no)])],
+[case "${enableval}" in
+ yes) mysql=true ;;
+ no) mysql=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-mysql) ;;
+esac],[if test "x$mysql" = "x"; then mysql=false; fi])
+
+AC_ARG_ENABLE(pgsql,
+[AC_HELP_STRING([--enable-pgsql], [enable PostgreSQL support (default: no)])],
+[case "${enableval}" in
+ yes) pgsql=true ;;
+ no) pgsql=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-pgsql) ;;
+esac],[if test "x$pgsql" = "x"; then pgsql=false; fi])
+
+AC_ARG_ENABLE(pam,
+[AC_HELP_STRING([--enable-pam], [enable PAM support (default: no)])],
+[case "${enableval}" in
+ yes) pam=true ;;
+ no) pam=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-pam) ;;
+esac],[if test "x$pam" = "x"; then pam=false; fi])
+
+AC_ARG_ENABLE(zlib,
+[AC_HELP_STRING([--enable-zlib], [enable Stream Compression (XEP-0138) using zlib (default: yes)])],
+[case "${enableval}" in
+ yes) zlib=true ;;
+ no) zlib=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-zlib) ;;
+esac],[if test "x$zlib" = "x"; then zlib=true; fi])
+
+AC_ARG_ENABLE(stun,
+[AC_HELP_STRING([--enable-stun], [enable STUN support (default: no)])],
+[case "${enableval}" in
+ yes) stun=true ;;
+ no) stun=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-stun) ;;
+esac],[if test "x$stun" = "x"; then stun=false; fi])
+
+AC_ARG_ENABLE(json,
+[AC_HELP_STRING([--enable-json], [enable JSON support for mod_bosh (default: no)])],
+[case "${enableval}" in
+ yes) json=true ;;
+ no) json=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-json) ;;
+esac],[if test "x$json" = "x"; then json=false; fi])
+
+AC_ARG_ENABLE(iconv,
+[AC_HELP_STRING([--enable-iconv], [enable iconv support (default: yes)])],
+[case "${enableval}" in
+ yes) iconv=true ;;
+ no) iconv=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-iconv) ;;
+esac],[if test "x$iconv" = "x"; then iconv=true; fi])
+
+AC_ARG_ENABLE(debug,
+[AC_HELP_STRING([--enable-debug], [enable debug information (default: yes)])],
+[case "${enableval}" in
+ yes) debug=true ;;
+ no) debug=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
+esac],[if test "x$debug" = "x"; then debug=true; fi])
+
+AC_ARG_ENABLE(http,
+[AC_HELP_STRING([--enable-http], [build external HTTP libraries ('ibrowse' and 'lhttpc', default: no)])],
+[case "${enableval}" in
+ yes) http=true ;;
+ no) http=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-http) ;;
+esac],[if test "x$http" = "x"; then http=false; fi])
+
+AC_ARG_ENABLE(lager,
+[AC_HELP_STRING([--enable-lager], [enable lager support (default: yes)])],
+[case "${enableval}" in
+ yes) lager=true ;;
+ no) lager=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-lager) ;;
+esac],[if test "x$lager" = "x"; then lager=true; fi])
+
+AC_CONFIG_FILES([Makefile
+ vars.config
+ src/ejabberd.app.src])
+
+ENABLEUSER=""
+AC_ARG_ENABLE(user,
+ [AS_HELP_STRING([--enable-user[[[[=USER]]]]], [allow this system user to start ejabberd (default: no)])],
+ [case "${enableval}" in
+ yes) ENABLEUSER=`whoami` ;;
+ no) ENABLEUSER="" ;;
+ *) ENABLEUSER=$enableval
+ esac],
+ [])
+if test "$ENABLEUSER" != ""; then
+ echo "allow this system user to start ejabberd: $ENABLEUSER"
+ AC_SUBST([INSTALLUSER], [$ENABLEUSER])
+fi
+
+AC_ERLANG_CHECK_LIB([sasl], [],
+ [AC_MSG_ERROR([Erlang application 'sasl' was not found])])
+AC_ERLANG_CHECK_LIB([crypto], [],
+ [AC_MSG_ERROR([Erlang application 'crypto' was not found])])
+AC_ERLANG_CHECK_LIB([public_key], [],
+ [AC_MSG_ERROR([Erlang application 'public_key' was not found])])
+AC_ERLANG_CHECK_LIB([ssl], [],
+ [AC_MSG_ERROR([Erlang application 'ssl' was not found])])
+AC_ERLANG_CHECK_LIB([mnesia], [],
+ [AC_MSG_ERROR([Erlang application 'mnesia' was not found])])
+AC_ERLANG_CHECK_LIB([inets], [],
+ [AC_MSG_ERROR([Erlang application 'inets' was not found])])
+AC_ERLANG_CHECK_LIB([compiler], [],
+ [AC_MSG_ERROR([Erlang application 'compiler' was not found])])
+if test "x$odbc" = "xtrue"; then
+ AC_ERLANG_CHECK_LIB([odbc], [],
+ [AC_MSG_ERROR([Erlang application 'odbc' was not found])])
+fi
+if test "x$tools" = "xtrue"; then
+ AC_ERLANG_CHECK_LIB([tools], [],
+ [AC_MSG_ERROR([Erlang application 'tools' was not found])])
+ AC_ERLANG_CHECK_LIB([runtime_tools], [],
+ [AC_MSG_ERROR([Erlang application 'runtime_tools' was not found])])
+fi
+
+AC_SUBST(hipe)
+AC_SUBST(roster_gateway_workaround)
+AC_SUBST(transient_supervisors)
+AC_SUBST(full_xml)
+AC_SUBST(nif)
+AC_SUBST(db_type)
+AC_SUBST(odbc)
+AC_SUBST(mysql)
+AC_SUBST(pgsql)
+AC_SUBST(pam)
+AC_SUBST(zlib)
+AC_SUBST(stun)
+AC_SUBST(json)
+AC_SUBST(iconv)
+AC_SUBST(debug)
+AC_SUBST(http)
+AC_SUBST(lager)
+AC_SUBST(tools)
+
+AC_OUTPUT