mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-20 16:15:59 +01:00
0d852474be
Use the program specified in option: --with-rebar=/path/to/bin When none is specified, use the system mix When Elixir not found, use the system rebar3 When Rebar3 not found, use the rebar3 binary included with ejabberd
327 lines
11 KiB
Plaintext
327 lines
11 KiB
Plaintext
# -*- Autoconf -*-
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ(2.59)
|
|
AC_INIT(ejabberd, m4_esyscmd([echo `git describe --tags 2>/dev/null || echo 23.10` | sed 's/-g.*//;s/-/./' | tr -d '\012']), [ejabberd@process-one.net], [ejabberd])
|
|
REQUIRE_ERLANG_MIN="9.0.5 (Erlang/OTP 20.0)"
|
|
REQUIRE_ERLANG_MAX="100.0.0 (No Max)"
|
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
# 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,
|
|
AS_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_ARG_WITH(rebar,
|
|
AS_HELP_STRING([--with-rebar=bin],[use as build tool the rebar/rebar3/mix binary specified]),
|
|
[if test "$withval" = "yes" -o "$withval" = "no" -o "X$with_rebar" = "X"; then
|
|
rebar="rebar3"
|
|
else
|
|
rebar="$with_rebar"
|
|
fi
|
|
], [rebar="unconfigured"])
|
|
|
|
AC_PATH_TOOL(ERL, erl, , [${extra_erl_path}$PATH])
|
|
AC_PATH_TOOL(ERLC, erlc, , [${extra_erl_path}$PATH])
|
|
AC_PATH_TOOL(EPMD, epmd, , [${extra_erl_path}$PATH])
|
|
|
|
AC_PATH_TOOL(REBAR3, rebar3, , [${extra_erl_path}$PATH])
|
|
AC_PATH_TOOL(ELIXIR, elixir, , [${extra_erl_path}$PATH])
|
|
AC_PATH_TOOL(IEX, iex, , [${extra_erl_path}$PATH])
|
|
AC_PATH_TOOL(MIX, mix, , [${extra_erl_path}$PATH])
|
|
|
|
if test "$rebar" = unconfigured; then
|
|
if test "x$ELIXIR" = "x" -o "x$IEX" = "x" -o "x$MIX" = "x"; then
|
|
if test "x$REBAR3" = "x"; then
|
|
rebar="rebar3"
|
|
else
|
|
rebar=$REBAR3
|
|
fi
|
|
else
|
|
rebar=$MIX
|
|
fi
|
|
fi
|
|
|
|
AC_ERLANG_NEED_ERL
|
|
AC_ERLANG_NEED_ERLC
|
|
|
|
# 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(/usr/local)
|
|
|
|
AC_CONFIG_FILES([Makefile
|
|
vars.config])
|
|
|
|
AC_ARG_ENABLE(all,
|
|
[AS_HELP_STRING([--enable-all],[same as --enable-odbc --enable-mssql --enable-mysql --enable-pgsql --enable-sqlite --enable-pam --enable-zlib --enable-redis --enable-elixir --enable-stun --enable-sip --enable-debug --enable-lua --enable-tools (useful for Dialyzer checks, default: no)])],
|
|
[case "${enableval}" in
|
|
yes) odbc=true mssql=true mysql=true pgsql=true sqlite=true pam=true zlib=true redis=true elixir=true stun=true sip=true debug=true lua=true tools=true ;;
|
|
no) odbc=false mssql=false mysql=false pgsql=false sqlite=false pam=false zlib=false redis=false elixir=false stun=false sip=false debug=false lua=false tools=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-all) ;;
|
|
esac],[])
|
|
|
|
AC_ARG_ENABLE(debug,
|
|
[AS_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(elixir,
|
|
[AS_HELP_STRING([--enable-elixir],[enable Elixir support in Rebar3 (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) elixir=true ;;
|
|
no) elixir=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-elixir) ;;
|
|
esac],[if test "x$elixir" = "x"; then elixir=false; fi])
|
|
|
|
AC_ARG_ENABLE(erlang-version-check,
|
|
[AS_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
|
|
|
|
AC_ARG_ENABLE(full_xml,
|
|
[AS_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])
|
|
|
|
ENABLEGROUP=""
|
|
AC_ARG_ENABLE(group,
|
|
[AS_HELP_STRING([--enable-group[[=GROUP]]], [specify the group of the account defined in --enable-user (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) ENABLEGROUP=`groups |head -n 1` ;;
|
|
no) ENABLEGROUP="" ;;
|
|
*) ENABLEGROUP=$enableval
|
|
esac],
|
|
[])
|
|
if test "$ENABLEGROUP" != ""; then
|
|
echo "allow this system group to start ejabberd: $ENABLEGROUP"
|
|
AC_SUBST([INSTALLGROUP], [$ENABLEGROUP])
|
|
fi
|
|
|
|
AC_ARG_ENABLE(latest_deps,
|
|
[AS_HELP_STRING([--enable-latest-deps],[makes rebar use latest commits for dependencies instead of tagged versions (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) latest_deps=true ;;
|
|
no) latest_deps=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-latest-deps) ;;
|
|
esac],[if test "x$latest_deps" = "x"; then latest_deps=false; fi])
|
|
|
|
AC_ARG_ENABLE(lua,
|
|
[AS_HELP_STRING([--enable-lua],[enable Lua support, to import from Prosody (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) lua=true ;;
|
|
no) lua=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-lua) ;;
|
|
esac],[if test "x$lua" = "x"; then lua=false; fi])
|
|
|
|
AC_ARG_ENABLE(mssql,
|
|
[AS_HELP_STRING([--enable-mssql],[use Microsoft SQL Server database (default: no, requires --enable-odbc)])],
|
|
[case "${enableval}" in
|
|
yes) mssql=true ;;
|
|
no) mssql=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mssql) ;;
|
|
esac],[if test "x$mssql" = "x"; then mssql=false; fi])
|
|
|
|
AC_ARG_ENABLE(mysql,
|
|
[AS_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(new_sql_schema,
|
|
[AS_HELP_STRING([--enable-new-sql-schema],[use new SQL schema by default (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) new_sql_schema=true ;;
|
|
no) new_sql_schema=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-new-sql-schema) ;;
|
|
esac],[new_sql_schema=false])
|
|
|
|
AC_ARG_ENABLE(odbc,
|
|
[AS_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(pam,
|
|
[AS_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(pgsql,
|
|
[AS_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(redis,
|
|
[AS_HELP_STRING([--enable-redis],[enable Redis support (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) redis=true ;;
|
|
no) redis=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-redis) ;;
|
|
esac],[if test "x$redis" = "x"; then redis=false; fi])
|
|
|
|
AC_ARG_ENABLE(roster_gateway_workaround,
|
|
[AS_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(sip,
|
|
[AS_HELP_STRING([--enable-sip],[enable SIP support (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) sip=true ;;
|
|
no) sip=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-sip) ;;
|
|
esac],[if test "x$sip" = "x"; then sip=false; fi])
|
|
|
|
AC_ARG_ENABLE(sqlite,
|
|
[AS_HELP_STRING([--enable-sqlite],[enable SQLite support (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) sqlite=true ;;
|
|
no) sqlite=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-sqlite) ;;
|
|
esac],[if test "x$sqlite" = "x"; then sqlite=false; fi])
|
|
|
|
AC_ARG_ENABLE(stun,
|
|
[AS_HELP_STRING([--enable-stun],[enable STUN/TURN support (default: yes)])],
|
|
[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=true; fi])
|
|
|
|
AC_ARG_ENABLE(system_deps,
|
|
[AS_HELP_STRING([--enable-system-deps],[makes rebar use locally installed dependencies instead of downloading them (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) system_deps=true ;;
|
|
no) system_deps=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-system-deps) ;;
|
|
esac],[if test "x$system_deps" = "x"; then system_deps=false; fi])
|
|
|
|
AC_ARG_ENABLE(tools,
|
|
[AS_HELP_STRING([--enable-tools],[build development tools (default: no)])],
|
|
[case "${enableval}" in
|
|
yes) tools=true ;;
|
|
no) tools=false ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-tools) ;;
|
|
esac],[if test "x$tools" = "x"; then tools=false; fi])
|
|
|
|
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_ARG_ENABLE(zlib,
|
|
[AS_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])
|
|
|
|
case "`uname`" in
|
|
"Darwin")
|
|
# Darwin (macos) erlang-sqlite is built using amalgamated lib, so no external dependency
|
|
;;
|
|
*)
|
|
if test "$sqlite" = "true"; then
|
|
AX_LIB_SQLITE3([3.6.19])
|
|
if test "x$SQLITE3_VERSION" = "x"; then
|
|
AC_MSG_ERROR(SQLite3 library >= 3.6.19 was not found)
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
AC_MSG_RESULT([build tool to use (change using --with-rebar): $rebar])
|
|
|
|
AC_SUBST(roster_gateway_workaround)
|
|
AC_SUBST(new_sql_schema)
|
|
AC_SUBST(full_xml)
|
|
AC_SUBST(odbc)
|
|
AC_SUBST(mssql)
|
|
AC_SUBST(mysql)
|
|
AC_SUBST(pgsql)
|
|
AC_SUBST(sqlite)
|
|
AC_SUBST(pam)
|
|
AC_SUBST(zlib)
|
|
AC_SUBST(rebar)
|
|
AC_SUBST(redis)
|
|
AC_SUBST(elixir)
|
|
AC_SUBST(stun)
|
|
AC_SUBST(sip)
|
|
AC_SUBST(debug)
|
|
AC_SUBST(lua)
|
|
AC_SUBST(tools)
|
|
AC_SUBST(latest_deps)
|
|
AC_SUBST(system_deps)
|
|
AC_SUBST(CFLAGS)
|
|
AC_SUBST(CPPFLAGS)
|
|
AC_SUBST(LDFLAGS)
|
|
|
|
AC_OUTPUT
|