weechat/configure.ac
Sébastien Helleu 03f4afe65e Revert "core: add extra compiler options to check overflow of destination buffer and output truncation"
This reverts commit 4ff4a64209f63cf2a048f7941168336da58727ab.

These compiler flags are not supported on old compiler version, for example on
Debian Stretch/Jessie and Ubuntu Xenial (16.04).
2020-11-29 11:05:38 +01:00

1570 lines
57 KiB
Plaintext

#
# Copyright (C) 2003-2020 Sébastien Helleu <flashcode@flashtux.org>
# Copyright (C) 2005 Benoit Papillault <benoit.papillault@free.fr>
# Copyright (C) 2005-2006 Julien Louis <ptitlouis@sysif.net>
# Copyright (C) 2005-2009 Emmanuel Bouthenot <kolter@openics.org>
#
# This file is part of WeeChat, the extensible chat client.
#
# WeeChat is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# WeeChat is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
#
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.56)
AC_INIT(WeeChat, m4_esyscmd([./version.sh devel-full | tr -d '\n']), flashcode@flashtux.org)
AC_CONFIG_SRCDIR([configure.ac])
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE([foreign])
LICENSE="GPL3"
# Checks for programs
AC_PROG_CC
AC_PROG_CXX
AC_PROG_MAKE_SET
AC_GNU_SOURCE
AC_PROG_LN_S
AM_PROG_LIBTOOL
PKG_PROG_PKG_CONFIG
# Files to generate
AC_CONFIG_FILES([weechat.pc])
AC_CONFIG_FILES([weechat-${VERSION}-1.cygport:weechat.cygport.in])
# Add some flags for some OS
case "$host_os" in
freebsd* | openbsd*)
CFLAGS="$CFLAGS -I/usr/local/include"
CXXFLAGS="$CXXFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib"
;;
netbsd*)
CFLAGS="$CFLAGS -I/usr/pkg/include"
CXXFLAGS="$CXXFLAGS -I/usr/pkg/include"
LDFLAGS="$LDFLAGS -L/usr/pkg/lib"
;;
solaris*)
LDFLAGS="$LDFLAGS -lsocket -lxnet"
;;
darwin*)
LDFLAGS="$LDFLAGS -lresolv"
;;
esac
# Gettext
ALL_LINGUAS="cs de es fr hu it ja pl pt pt_BR ru tr"
AM_GNU_GETTEXT
AM_GNU_GETTEXT_VERSION([0.18])
# Checks for libraries
AC_CHECK_LIB(ncurses, initscr, LIBNCURSES_FOUND=1, LIBNCURSES_FOUND=0)
AC_CHECK_LIB(ncursesw, initscr, LIBNCURSESW_FOUND=1, LIBNCURSESW_FOUND=0)
# Checks for header files
AC_HEADER_STDC
AC_CHECK_HEADERS([libintl.h sys/resource.h])
# Checks for typedefs, structures, and compiler characteristics
AC_HEADER_TIME
AC_STRUCT_TM
AC_MSG_CHECKING([for socklen_t])
AC_CACHE_VAL(ac_cv_type_socklen_t,
[AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[ #include <sys/types.h>
#include <sys/socket.h> ]],
[[ socklen_t t; ]])],
[ ac_cv_type_socklen_t=yes ],
[ ac_cv_type_socklen_t=no ],
)])
if test $ac_cv_type_socklen_t = no; then
AC_DEFINE(socklen_t, int, Define to 'int' if <sys/socket.h> doesn't define.)
fi
AC_MSG_RESULT($ac_cv_type_socklen_t)
# Checks for library functions.
AC_FUNC_SELECT_ARGTYPES
AC_TYPE_SIGNAL
AC_CHECK_FUNCS([mallinfo])
# Variables in config.h
AH_VERBATIM([PREFIX], [#undef PREFIX])
AH_VERBATIM([WEECHAT_LIBDIR], [#undef WEECHAT_LIBDIR])
AH_VERBATIM([WEECHAT_SHAREDIR], [#undef WEECHAT_SHAREDIR])
AH_VERBATIM([HAVE_FLOCK], [#undef HAVE_FLOCK])
AH_VERBATIM([HAVE_EAT_NEWLINE_GLITCH], [#undef HAVE_EAT_NEWLINE_GLITCH])
AH_VERBATIM([HAVE_ASPELL_VERSION_STRING], [#undef HAVE_ASPELL_VERSION_STRING])
AH_VERBATIM([HAVE_ENCHANT_GET_VERSION], [#undef HAVE_ENCHANT_GET_VERSION])
AH_VERBATIM([HAVE_GUILE_GMP_MEMORY_FUNCTIONS], [#undef HAVE_GUILE_GMP_MEMORY_FUNCTIONS])
AH_VERBATIM([PLUGIN_ALIAS], [#undef PLUGIN_ALIAS])
AH_VERBATIM([PLUGIN_BUFLIST], [#undef PLUGIN_BUFLIST])
AH_VERBATIM([PLUGIN_CHARSET], [#undef PLUGIN_CHARSET])
AH_VERBATIM([PLUGIN_EXEC], [#undef PLUGIN_EXEC])
AH_VERBATIM([PLUGIN_FIFO], [#undef PLUGIN_FIFO])
AH_VERBATIM([PLUGIN_FSET], [#undef PLUGIN_FSET])
AH_VERBATIM([PLUGIN_IRC], [#undef PLUGIN_IRC])
AH_VERBATIM([PLUGIN_LOGGER], [#undef PLUGIN_LOGGER])
AH_VERBATIM([PLUGIN_RELAY], [#undef PLUGIN_RELAY])
AH_VERBATIM([PLUGIN_SCRIPT], [#undef PLUGIN_SCRIPT])
AH_VERBATIM([PLUGIN_PERL], [#undef PLUGIN_PERL])
AH_VERBATIM([PLUGIN_PYTHON], [#undef PLUGIN_PYTHON])
AH_VERBATIM([PLUGIN_RUBY], [#undef PLUGIN_RUBY])
AH_VERBATIM([PLUGIN_LUA], [#undef PLUGIN_LUA])
AH_VERBATIM([PLUGIN_PHP], [#undef PLUGIN_PHP])
AH_VERBATIM([PLUGIN_TCL], [#undef PLUGIN_TCL])
AH_VERBATIM([PLUGIN_GUILE], [#undef PLUGIN_GUILE])
AH_VERBATIM([PLUGIN_JAVASCRIPT], [#undef PLUGIN_JAVASCRIPT])
AH_VERBATIM([PLUGIN_SPELL], [#undef PLUGIN_SPELL])
AH_VERBATIM([PLUGIN_TRIGGER], [#undef PLUGIN_TRIGGER])
AH_VERBATIM([PLUGIN_XFER], [#undef PLUGIN_XFER])
AH_VERBATIM([TESTS], [#undef TESTS])
AH_VERBATIM([MAN], [#undef MAN])
AH_VERBATIM([DOC], [#undef DOC])
AH_VERBATIM([WEECHAT_HOME], [#define WEECHAT_HOME "~/.weechat"])
AH_VERBATIM([CA_FILE], [#define CA_FILE "/etc/ssl/certs/ca-certificates.crt"])
# Arguments for ./configure
AC_ARG_ENABLE(ncurses, [ --disable-ncurses turn off ncurses interface (default=compiled if found)],enable_ncurses=$enableval,enable_ncurses=yes)
AC_ARG_ENABLE(headless, [ --disable-headless turn off headless binary (default=compiled), this is required for tests],enable_headless=$enableval,enable_headless=yes)
AC_ARG_ENABLE(largefile, [ --disable-largefile turn off Large File Support (default=on)],enable_largefile=$enableval,enable_largefile=yes)
AC_ARG_ENABLE(alias, [ --disable-alias turn off Alias plugin (default=compiled)],enable_alias=$enableval,enable_alias=yes)
AC_ARG_ENABLE(buflist, [ --disable-buflist turn off Buflist plugin (default=compiled)],enable_buflist=$enableval,enable_buflist=yes)
AC_ARG_ENABLE(charset, [ --disable-charset turn off Charset plugin (default=compiled)],enable_charset=$enableval,enable_charset=yes)
AC_ARG_ENABLE(exec, [ --disable-exec turn off Exec plugin (default=compiled)],enable_exec=$enableval,enable_exec=yes)
AC_ARG_ENABLE(fifo, [ --disable-fifo turn off Fifo plugin (default=compiled)],enable_fifo=$enableval,enable_fifo=yes)
AC_ARG_ENABLE(fset, [ --disable-fset turn off Fast Set plugin (default=compiled)],enable_fset=$enableval,enable_fset=yes)
AC_ARG_ENABLE(irc, [ --disable-irc turn off IRC plugin (default=compiled)],enable_irc=$enableval,enable_irc=yes)
AC_ARG_ENABLE(logger, [ --disable-logger turn off Logger plugin (default=compiled)],enable_logger=$enableval,enable_logger=yes)
AC_ARG_ENABLE(relay, [ --disable-relay turn off Relay plugin (default=compiled)],enable_relay=$enableval,enable_relay=yes)
AC_ARG_ENABLE(script, [ --disable-script turn off Script plugin (default=compiled)],enable_script=$enableval,enable_script=yes)
AC_ARG_ENABLE(scripts, [ --disable-scripts turn off script plugins (perl, python, ...) (default=compiled if found)],enable_scripts=$enableval,enable_scripts=yes)
AC_ARG_ENABLE(perl, [ --disable-perl turn off Perl script plugin (default=compiled if found)],enable_perl=$enableval,enable_perl=yes)
AC_ARG_ENABLE(python, [ --disable-python turn off Python script plugin (default=compiled if found)],enable_python=$enableval,enable_python=yes)
AC_ARG_ENABLE(python2, [ --enable-python2 use Python 2 instead of Python 3 (default=off)],enable_python2=$enableval,enable_python2=no)
AC_ARG_ENABLE(ruby, [ --disable-ruby turn off Ruby script plugin (default=compiled if found)],enable_ruby=$enableval,enable_ruby=yes)
AC_ARG_ENABLE(lua, [ --disable-lua turn off Lua script plugin (default=compiled if found)],enable_lua=$enableval,enable_lua=yes)
AC_ARG_ENABLE(tcl, [ --disable-tcl turn off Tcl script plugin (default=compiled if found)],enable_tcl=$enableval,enable_tcl=yes)
AC_ARG_ENABLE(guile, [ --disable-guile turn off Guile (scheme) script plugin (default=compiled if found)],enable_guile=$enableval,enable_guile=yes)
AC_ARG_ENABLE(javascript, [ --enable-javascript turn on JavaScript script plugin (default=off)],enable_javascript=$enableval,enable_javascript=no)
AC_ARG_ENABLE(php, [ --disable-php turn off PHP script plugin (default=compiled if found)],enable_php=$enableval,enable_php=yes)
AC_ARG_ENABLE(spell, [ --disable-spell turn off Spell checker plugin (default=compiled)],enable_spell=$enableval,enable_spell=yes)
AC_ARG_ENABLE(enchant, [ --enable-enchant turn on Enchant lib for Spell checker plugin (default=off)],enable_enchant=$enableval,enable_enchant=no)
AC_ARG_ENABLE(trigger, [ --disable-trigger turn off Trigger plugin (default=compiled)],enable_trigger=$enableval,enable_trigger=yes)
AC_ARG_ENABLE(xfer, [ --disable-xfer turn off Xfer (file transfer) plugin (default=compiled)],enable_xfer=$enableval,enable_xfer=yes)
AC_ARG_WITH(tclconfig, [ --with-tclconfig=DIR directory containing tcl configuration (tclConfig.sh)],tclconfig=$withval,tclconfig='')
AC_ARG_WITH(debug, [ --with-debug debugging: 0=no debug, 1=debug compilation (default=0)],debug=$withval,debug=0)
AC_ARG_ENABLE(tests, [ --enable-tests turn on build of tests (default=not built)],enable_tests=$enableval,enable_tests=no)
AC_ARG_ENABLE(man, [ --enable-man turn on build of man page (default=not built)],enable_man=$enableval,enable_man=no)
AC_ARG_ENABLE(doc, [ --enable-doc turn on build of documentation (default=not built)],enable_doc=$enableval,enable_doc=no)
AC_ARG_VAR(WEECHAT_HOME, [WeeChat home directory for config, logs, scripts.. (default is "~/.weechat")])
AC_ARG_VAR(CA_FILE, [File containing the certificate authorities (default is "/etc/ssl/certs/ca-certificates.crt"). This is the default value of option "weechat.network.gnutls_ca_file".])
if test "x$WEECHAT_HOME" = "x" ; then
WEECHAT_HOME="~/.weechat"
fi
AC_DEFINE_UNQUOTED(WEECHAT_HOME, "$WEECHAT_HOME")
if test "x$CA_FILE" = "x" ; then
CA_FILE="/etc/ssl/certs/ca-certificates.crt"
fi
AC_DEFINE_UNQUOTED(CA_FILE, "$CA_FILE")
not_asked=""
not_found=""
if test "x$enable_headless" != "xyes" && test "x$enable_tests" = "xyes"; then
AC_MSG_ERROR([*** Headless mode is required for tests.])
fi
# ------------------------------------------------------------------------------
# pkg-config
# ------------------------------------------------------------------------------
PKGCONFIG=""
AC_CHECK_PROGS(PKGCONFIG, pkg-config)
if test "x$PKGCONFIG" = "x"; then
AC_MSG_ERROR([
*** "pkg-config" couldn't be found on your system.
*** Try to install it with your software package manager.])
fi
# ------------------------------------------------------------------------------
# dynamic loader
# ------------------------------------------------------------------------------
PLUGINS_LFLAGS=
AC_CHECK_FUNCS(dlopen, LIBDL_FOUND=yes, LIBDL_FOUND=no)
if test "$LIBDL_FOUND" != "yes"; then
AC_CHECK_LIB(dl, dlopen, [LIBDL_FOUND=yes; PLUGINS_LFLAGS=-ldl], LIBDL_FOUND=no)
fi
if test "$LIBDL_FOUND" != "yes"; then
AC_MSG_ERROR([
*** "dl" library (dynamic library loader) couldn't be found on your system.
*** Try to install it with your software package manager.])
fi
AC_SUBST(PLUGINS_LFLAGS)
# ------------------------------------------------------------------------------
# gui
# ------------------------------------------------------------------------------
if test "x$enable_ncurses" = "xyes" ; then
if test "$LIBNCURSESW_FOUND" = "0" ; then
if test "$LIBNCURSES_FOUND" = "0" ; then
AC_MSG_WARN([
*** ncurses library not found!
*** WeeChat will be built without ncurses support.])
enable_ncurses="no"
not_found="$not_found ncurses"
else
AC_MSG_WARN([
*** ncursesw library not found! Falling back to "ncurses"
*** Be careful, UTF-8 display may not work properly if your locale is UTF-8.])
NCURSES_LFLAGS="-lncurses"
fi
else
NCURSES_LFLAGS="-lncursesw"
fi
AC_CHECK_HEADERS([ncurses.h ncursesw/curses.h])
AC_SUBST(NCURSES_LFLAGS)
else
not_asked="$not_asked ncurses"
fi
# ------------------------------------------------------------------------------
# headless
# ------------------------------------------------------------------------------
if test "x$enable_headless" != "xyes" ; then
not_asked="$not_asked headless"
fi
# ------------------------------------------------------------------------------
# iconv
# ------------------------------------------------------------------------------
ICONV_LFLAGS=""
iconv_found="no"
AC_CHECK_HEADER(iconv.h,ac_found_iconv_header="yes",ac_found_iconv_header="no")
if test "x$ac_found_iconv_header" = "xyes" ; then
AC_CHECK_LIB(iconv,iconv_open,ac_found_iconv_lib="yes",ac_found_iconv_lib="no")
if test "x$ac_found_iconv_lib" = "xno" ; then
AC_CHECK_LIB(iconv,libiconv_open,ac_found_iconv_lib="yes",ac_found_iconv_lib="no")
fi
if test "x$ac_found_iconv_lib" = "xyes" ; then
ICONV_LFLAGS="-liconv"
LIBS="$LIBS $ICONV_LFLAGS"
fi
AC_MSG_CHECKING(for iconv usability in programs)
AC_TRY_RUN([
#include <iconv.h>
int main(int argc, char **argv) {
iconv_t conv = iconv_open("ISO8859-1", "UTF-8");
if (conv != (iconv_t) -1) {
return 0;
}
return 1;
}],iconv_found="yes", iconv_found="no", iconv_found="assume-yes")
if test "x$iconv_found" = "xno" ; then
AC_MSG_RESULT(no)
else
AC_MSG_RESULT(yes)
fi
fi
if test "x$iconv_found" = "xno" ; then
AC_MSG_ERROR([
*** Iconv headers and/or libraries couldn't be found on your system.
*** Try to install them with your software package manager.
*** WeeChat can't be built without Iconv support.])
fi
# ------------------------------------------------------------------------------
# plugins
# ------------------------------------------------------------------------------
if test "x$enable_scripts" = "xno" ; then
enable_perl="no"
enable_python="no"
enable_ruby="no"
enable_lua="no"
enable_tcl="no"
enable_guile="no"
enable_javascript="no"
enable_php="no"
fi
# ---------------------------------- alias -------------------------------------
if test "x$enable_alias" = "xyes" ; then
ALIAS_CFLAGS=""
ALIAS_LFLAGS=""
AC_SUBST(ALIAS_CFLAGS)
AC_SUBST(ALIAS_LFLAGS)
AC_DEFINE(PLUGIN_ALIAS)
else
not_asked="$not_asked alias"
fi
# --------------------------------- buflist ------------------------------------
if test "x$enable_buflist" = "xyes" ; then
AC_DEFINE(PLUGIN_BUFLIST)
else
not_asked="$not_asked buflist"
fi
# --------------------------------- charset ------------------------------------
if test "x$enable_charset" = "xyes" ; then
CHARSET_CFLAGS=""
CHARSET_LFLAGS="$ICONV_LFLAGS"
AC_SUBST(CHARSET_CFLAGS)
AC_SUBST(CHARSET_LFLAGS)
AC_DEFINE(PLUGIN_CHARSET)
else
not_asked="$not_asked charset"
fi
# ---------------------------------- exec --------------------------------------
if test "x$enable_exec" = "xyes" ; then
EXEC_CFLAGS=""
EXEC_LFLAGS=""
AC_SUBST(EXEC_CFLAGS)
AC_SUBST(EXEC_LFLAGS)
AC_DEFINE(PLUGIN_EXEC)
else
not_asked="$not_asked exec"
fi
# ---------------------------------- fifo --------------------------------------
if test "x$enable_fifo" = "xyes" ; then
FIFO_CFLAGS=""
FIFO_LFLAGS=""
AC_SUBST(FIFO_CFLAGS)
AC_SUBST(FIFO_LFLAGS)
AC_DEFINE(PLUGIN_FIFO)
else
not_asked="$not_asked fifo"
fi
# --------------------------------- fset ---------------------------------------
if test "x$enable_fset" = "xyes" ; then
AC_DEFINE(PLUGIN_FSET)
else
not_asked="$not_asked fset"
fi
# ----------------------------------- irc --------------------------------------
if test "x$enable_irc" = "xyes" ; then
AC_DEFINE(PLUGIN_IRC)
else
not_asked="$not_asked irc"
fi
# --------------------------------- logger -------------------------------------
if test "x$enable_logger" = "xyes" ; then
LOGGER_CFLAGS=""
LOGGER_LFLAGS=""
AC_SUBST(LOGGER_CFLAGS)
AC_SUBST(LOGGER_LFLAGS)
AC_DEFINE(PLUGIN_LOGGER)
else
not_asked="$not_asked logger"
fi
# --------------------------------- relay --------------------------------------
if test "x$enable_relay" = "xyes" ; then
RELAY_CFLAGS=""
RELAY_LFLAGS=""
AC_SUBST(RELAY_CFLAGS)
AC_SUBST(RELAY_LFLAGS)
AC_DEFINE(PLUGIN_RELAY)
else
not_asked="$not_asked relay"
fi
# --------------------------------- script -------------------------------------
if test "x$enable_script" = "xyes" ; then
AC_DEFINE(PLUGIN_SCRIPT)
else
not_asked="$not_asked script"
fi
# ---------------------------------- perl --------------------------------------
PERL_VERSION=
if test "x$enable_perl" = "xyes" ; then
AC_PATH_PROGS(PERL, perl perl5)
if test -z $PERL ; then
AC_MSG_WARN([
*** Perl must be installed on your system but perl interpreter couldn't be found in path.
*** Please check that perl is in path, or install it with your software package manager.
*** WeeChat will be built without Perl support.])
enable_perl="no"
not_found="$not_found perl"
else
PERL_VERSION=`perl -V:version | sed "s/version='\(.*\)';/\1/"`
AC_MSG_CHECKING(for Perl headers files)
PERL_HEADER_TEST=`PT=perltest.c ; echo "#include <EXTERN.h>" > $PT; echo "#include <perl.h>" >> $PT; echo "#include <XSUB.h>" >> $PT ; echo "int main() { return 0; }" >> $PT ; $CC -Wall $PT -o $PT.out $($PERL -MExtUtils::Embed -e ccopts -e ldopts) 1>/dev/null 2>&1; echo $?; rm -f $PT $PT.out 1>/dev/null 2>&1`
if test "x$PERL_HEADER_TEST" = "x0" ; then
PERL_CFLAGS=`$PERL -MExtUtils::Embed -e ccopts`
AC_MSG_RESULT(found)
AC_MSG_CHECKING(for Perl library)
PERL_LIB_TEST=`PT=perltest.c ; echo "int main() { return 0; }" > $PT ; $CC -Wall $PT -o $PT.out $($PERL -MExtUtils::Embed -e ldopts) 1>/dev/null 2>&1; echo $?; rm -f $PT $PT.out 1>/dev/null 2>&1`
if test "x$PERL_LIB_TEST" = "x0" ; then
PERL_LFLAGS=`$PERL -MExtUtils::Embed -e ldopts`
AC_MSG_RESULT(found)
else
AC_MSG_WARN([
*** Perl library couldn't be found on your system.
*** Try to install it with your software package manager.
*** WeeChat will be built without Perl support.])
enable_perl="no"
not_found="$not_found perl"
fi
else
AC_MSG_WARN([
*** Perl headers couldn't be found on your system.
*** Try to install it with your software package manager.
*** WeeChat will be built without Perl support.])
enable_perl="no"
not_found="$not_found perl"
fi
fi
else
not_asked="$not_asked perl"
fi
if test "x$enable_perl" = "xyes" ; then
AC_SUBST(PERL_CFLAGS)
AC_SUBST(PERL_LFLAGS)
AC_DEFINE(PLUGIN_PERL)
fi
# --------------------------------- python -------------------------------------
PYTHON_VERSION=
if test "x$enable_python" = "xyes" ; then
if test "x$enable_python2" = "xyes" ; then
PKG_CHECK_MODULES(PYTHON, [python2], [PYTHON_FOUND=yes; PYTHON_VERSION=`$PKGCONFIG --modversion python2`], [PYTHON_FOUND=no])
else
PKG_CHECK_MODULES(PYTHON, [python3-embed], [PYTHON_FOUND=yes; PYTHON_VERSION=`$PKGCONFIG --modversion python3-embed`], [PYTHON_FOUND=no])
if test "x$PYTHON_FOUND" != "xyes"; then
PKG_CHECK_MODULES(PYTHON, [python3], [PYTHON_FOUND=yes; PYTHON_VERSION=`$PKGCONFIG --modversion python3`], [PYTHON_FOUND=no])
fi
fi
if test "x$PYTHON_FOUND" != "xyes" ; then
AC_MSG_WARN([
*** Python must be installed on your system but python interpreter couldn't be found in path.
*** Please check that python is in path, or install it with your software package manager.
*** WeeChat will be built without Python support.])
enable_python="no"
not_found="$not_found python"
fi
else
not_asked="$not_asked python"
fi
if test "x$enable_python" = "xyes" ; then
AC_SUBST(PYTHON_CFLAGS)
AC_SUBST(PYTHON_LIBS)
AC_SUBST(PYTHON_VERSION)
AC_DEFINE(PLUGIN_PYTHON)
fi
# ---------------------------------- ruby --------------------------------------
RUBY_VERSION=
if test "x$enable_ruby" = "xyes" ; then
RUBY_CFLAGS=""
RUBY_LFLAGS=""
for v in "2.7" "2.6" "2.5" "2.4" "2.3" "2.2" "2.1" "2.0" "1.9" "1.8" ; do
pkgconfig_ruby_found=`$PKGCONFIG --exists ruby-$v 2>/dev/null`
if test "x$?" = "x0" ; then
RUBY_VERSION=`$PKGCONFIG --modversion ruby-$v`
RUBY_CFLAGS=`$PKGCONFIG --cflags ruby-$v`
RUBY_LFLAGS=`$PKGCONFIG --libs ruby-$v`
break
fi
done
# detect old Ruby versions
if test "x$RUBY_CFLAGS" = "x" -o "x$RUBY_LFLAGS" = "x" ; then
AC_PATH_PROGS(RUBY, ruby1.9.3 ruby1.9.2 ruby1.9.1 ruby1.9 ruby)
if test -z $RUBY ; then
AC_MSG_WARN([
*** Ruby must be installed on your system but ruby interpreter couldn't be found in path.
*** Please check that ruby is in path, or install it with your software package manager.
*** WeeChat will be built without Ruby support.])
enable_ruby="no"
not_found="$not_found ruby"
else
RUBY_VERSION=`$RUBY -rrbconfig -e "puts RbConfig::CONFIG[['MAJOR']] + '.' + RbConfig::CONFIG[['MINOR']] + '.' + RbConfig::CONFIG[['TEENY']]"`
RUBY_INCLUDE=`$RUBY -rrbconfig -e "puts RbConfig::CONFIG[['rubyhdrdir']] || RbConfig::CONFIG[['archdir']]"`
RUBY_ARCH=`$RUBY -rrbconfig -e 'print RbConfig::CONFIG[["arch"]]'`
AC_MSG_CHECKING(for Ruby header files)
if test -d "$RUBY_INCLUDE/"; then
RUBY_CFLAGS="-I$RUBY_INCLUDE/ -I$RUBY_INCLUDE/$RUBY_ARCH"
else
AC_MSG_WARN([
*** Ruby header files couldn't be found on your system.
*** Try to install them with your software package manager.
*** WeeChat will be built without Ruby support.])
enable_ruby="no"
not_found="$not_found ruby"
fi
AC_MSG_RESULT(found)
RUBY_LFLAGS=`$RUBY -rrbconfig -e "puts RbConfig::CONFIG[['LIBRUBYARG_SHARED']]"`
fi
fi
else
not_asked="$not_asked ruby"
fi
if test "x$enable_ruby" = "xyes" ; then
AC_SUBST(RUBY_CFLAGS)
AC_SUBST(RUBY_LFLAGS)
AC_DEFINE(PLUGIN_RUBY)
fi
# ---------------------------------- lua --------------------------------------
LUA_VERSION=
if test "x$enable_lua" = "xyes" ; then
ac_save_CXXFLAGS="$CXXFLAGS"
ac_save_CFLAGS="$CFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
LUA_CFLAGS=""
LUA_LFLAGS=""
if test -n "$lua_inc"; then
CFLAGS="$CFLAGS -I$lua_inc"
CXXFLAGS="$CXXFLAGS -I$lua_inc"
fi
if test -n "$lua_lib"; then
LDFLAGS="$LDFLAGS -L$lua_lib"
fi
if test "x$LUA_CFLAGS" = "x" -o "x$LUA_LFLAGS" = "x" ; then
AC_MSG_CHECKING(for Lua headers and libraries with pkg-config)
echo
for l in "53" "5.3" "52" "5.2" "51" "5.1" "50" "5.0" "$lua_suffix" "" ; do
pkgconfig_lua_found=`$PKGCONFIG --exists lua$l 2>/dev/null`
if test "x$?" = "x0" ; then
LUA_VERSION=`$PKGCONFIG --modversion lua$l`
LUA_CFLAGS="$LUA_CFLAGS "`$PKGCONFIG --cflags lua$l`
LUA_LFLAGS="$LUA_LFLAGS "`$PKGCONFIG --libs lua$l`
pkgconfig_lualib_found=`$PKGCONFIG --exists lualib$l 2>/dev/null`
if test "x$?" = "x0"; then
LUA_CFLAGS="$LUA_CFLAGS "`$PKGCONFIG --cflags lualib$l`
LUA_LFLAGS="$LUA_LFLAGS "`$PKGCONFIG --libs lualib$l`
fi
break
fi
done
fi
if test "x$LUA_CFLAGS" = "x" -o "x$LUA_LFLAGS" = "x" ; then
LUACONFIG=""
AC_CHECK_PROGS(LUACONFIG, lua-config53 lua-config5.3 lua-config52 lua-config5.2 lua-config51 lua-config5.1 lua-config50 lua-config5.0 lua-config)
if test "x$LUACONFIG" != "x" ; then
AC_MSG_CHECKING(for Lua headers and libraries with lua-config)
echo
LUA_CFLAGS=`$LUACONFIG --include`
LUA_LFLAGS=`$LUACONFIG --libs`
LUA_VERSION="5.0.x"
fi
fi
if test "x$LUA_CFLAGS" = "x" -o "x$LUA_LFLAGS" = "x" ; then
AC_MSG_CHECKING(for Lua headers and libraries)
echo
AC_CHECK_HEADER(lua.h,ac_found_lua_header="yes",ac_found_lua_header="no")
AC_CHECK_HEADER(lualib.h,ac_found_liblua_header="yes",ac_found_liblua_header="no")
if test "x$ac_found_lua_header" = "xyes" -a "x$ac_found_liblua_header" = "xyes"; then
LUA_CFLAGS="$CFLAGS"
fi
for l in "53" "5.3" "52" "5.2" "51" "5.1" "50" "5.0" "$lua_suffix" "" ; do
AC_CHECK_LIB(lua$l,lua_call,ac_found_lua_lib="yes",ac_found_lua_lib="no")
if test "x$ac_found_lua_lib" = "xyes" ; then
LUA_VERSION=">=5.1.0"
LUA_LFLAGS="$LDFLAGS -llua$l -lm"
ac2_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -llua$l -lm"
if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then
LDFLAGS="$LDFLAGS -ldl"
fi
AC_CHECK_LIB(lualib$l,luaL_openlib,ac_found_liblua_lib="yes",ac_found_liblua_lib="no")
if test "x$ac_found_liblua_lib" = "xyes" ; then
LUA_VERSION="5.0.x"
LUA_LFLAGS="$LUA_LFLAGS -llualib$l"
if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then
LUA_LFLAGS="$LUA_LFLAGS -ldl"
fi
fi
LDFLAGS="$ac2_save_LDFLAGS"
break
fi
done
fi
AC_MSG_CHECKING(for Lua compiling and linking)
LUA_TEST=`LT=luatest.c ; echo "#include <lua.h>" > $LT; echo "#include <lualib.h>" >> $LT; echo "int main() { luaopen_base((lua_State *)lua_open()); return 0; }" >> $LT ; $CC -Wall $LT -o $LT.out $LUA_CFLAGS $LUA_LFLAGS $CFLAGS $LDFLAGS 1>/dev/null 2>&1 ; echo $?; rm -f $LT $LT.out 1>/dev/null 2>&1`
if test "x$LUA_TEST" != "x0" ; then
LUA52_TEST=`LT=luatest.c ; echo "#include <lua.h>" > $LT; echo "#include <lualib.h>" >> $LT; echo "int main() { luaopen_base((lua_State *)luaL_newstate()); return 0; }" >> $LT ; $CC -Wall $LT -o $LT.out $LUA_CFLAGS $LUA_LFLAGS $CFLAGS $LDFLAGS 1>/dev/null 2>&1 ; echo $?; rm -f $LT $LT.out 1>/dev/null 2>&1`
if test "x$LUA52_TEST" != "x0" ; then
AC_MSG_RESULT(no)
AC_MSG_WARN([
*** Lua (>=5.0) headers and/or libraries couldn't be found on your system.
*** Try to install liblua, liblualib and liblua-dev with your software package manager.
*** WeeChat will be built without Lua support.])
enable_lua="no"
not_found="$not_found lua"
else
AC_MSG_RESULT(yes)
fi
else
AC_MSG_RESULT(yes)
fi
CFLAGS="$ac_save_CFLAGS"
CXXFLAGS="$ac_save_CXXFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
else
not_asked="$not_asked lua"
fi
if test "x$enable_lua" = "xyes" ; then
AC_SUBST(LUA_CFLAGS)
AC_SUBST(LUA_LFLAGS)
AC_DEFINE(PLUGIN_LUA)
fi
# --------------------------------- tcl -------------------------------------
TCL_VERSION=
if test "x$enable_tcl" = "xyes" ; then
enable_plugins="yes"
AC_MSG_CHECKING(for tclConfig.sh)
tcl_found="no"
tcl_dirs="/usr/lib/tcl8.6 /usr/lib64/tcl8.6 /usr/lib/tcl8.5 /usr/lib64/tcl8.5 /lib /lib64 /usr/lib /usr/lib64 /usr/tcl/lib /usr/tcl/lib64 /usr/local/tcl-8.6/lib /usr/local/tcl-8.6/lib64 /usr/local/tcl-8.5/lib /usr/local/tcl-8.5/lib64 /usr/local/lib /usr/local/lib64 /usr/local/tcl/lib /usr/local/tcl/lib64 /opt/lib /opt/lib64"
if test "x$tclconfig" != "x" ; then
tcl_dirs="${tclconfig} ${tcl_dirs}"
fi
for tcl_dir in $tcl_dirs ; do
if test -f ${tcl_dir}/tclConfig.sh ; then
. ${tcl_dir}/tclConfig.sh
TCL_CFLAGS="-I${TCL_PREFIX}/include $TCL_INCLUDE_SPEC"
TCL_LFLAGS="$TCL_LIB_SPEC $TCL_LIBS"
tcl_found="yes"
AC_MSG_RESULT(${tcl_dir}/tclConfig.sh)
break
fi
done
if test "x$tcl_found" = "xno" ; then
AC_MSG_WARN([
*** Script tclConfig.sh couldn't be found on your system.
*** WeeChat will be built without Tcl support.])
enable_tcl="no"
not_found="$not_found tcl"
fi
else
not_asked="$not_asked tcl"
fi
if test "x$enable_tcl" = "xyes" ; then
AC_SUBST(TCL_CFLAGS)
AC_SUBST(TCL_LFLAGS)
AC_DEFINE(PLUGIN_TCL)
fi
# --------------------------------- guile -------------------------------------
GUILE_VERSION=
if test "x$enable_guile" = "xyes" ; then
enable_plugins="yes"
guile_found="no"
AC_MSG_CHECKING(for Guile headers and libraries)
echo
for v in "3.0" "2.2" "2.0" ; do
pkgconfig_guile_found=`$PKGCONFIG --exists guile-$v 2>/dev/null`
if test "x$?" = "x0" ; then
GUILE_VERSION=`$PKGCONFIG --modversion guile-$v`
GUILE_CFLAGS=`$PKGCONFIG --cflags guile-$v`
GUILE_LFLAGS=`$PKGCONFIG --libs guile-$v`
guile_found="yes"
break
fi
done
if test "x$guile_found" = "xyes" ; then
# check if variable "scm_install_gmp_memory_functions" exists
ac_save_CFLAGS="$CFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
CFLAGS="$CFLAGS $GUILE_CFLAGS"
LDFLAGS="$LDFLAGS $GUILE_LFLAGS"
AC_CACHE_CHECK([for variable scm_install_gmp_memory_functions], ac_cv_have_guile_gmp_memory_functions, [
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[ #include <libguile.h>]],
[[ scm_install_gmp_memory_functions = 0; ]])],
[ ac_have_guile_gmp_memory_functions="yes" ],
[ ac_have_guile_gmp_memory_functions="no" ])])
CFLAGS="$ac_save_CFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
if test "x$ac_have_guile_gmp_memory_functions" = "xyes"; then
AC_DEFINE(HAVE_GUILE_GMP_MEMORY_FUNCTIONS)
fi
else
AC_MSG_WARN([
*** Guile >= 2.0 couldn't be found on your system.
*** WeeChat will be built without Guile (scheme) support.])
enable_guile="no"
not_found="$not_found guile"
fi
else
not_asked="$not_asked guile"
fi
if test "x$enable_guile" = "xyes" ; then
AC_SUBST(GUILE_CFLAGS)
AC_SUBST(GUILE_LFLAGS)
AC_DEFINE(PLUGIN_GUILE)
fi
# ------------------------------ javascript -----------------------------------
AC_LANG_PUSH([C++])
if test "x$enable_javascript" = "xyes" ; then
enable_plugins="yes"
v8_found="no"
AC_CHECK_HEADER(v8.h,ac_found_v8_header="yes",ac_found_v8_header="no")
if test "x$ac_found_v8_header" = "xyes" ; then
#AC_CHECK_LIB(v8,v8,ac_found_v8_lib="yes",ac_found_v8_lib="no")
ac_save_LIBS="$LIBS"
LIBS="$LIBS -lv8 -lpthread"
AC_MSG_CHECKING(for v8 usability in programs)
AC_TRY_RUN([
#include <v8.h>
using namespace v8;
int main(int argc, char **argv) {
const char *version = V8::GetVersion();
return 0;
}],ac_found_v8_lib="yes", ac_found_v8_lib="no", ac_found_v8_lib="assume-yes")
LIBS="$ac_save_LIBS"
if test "x$ac_found_v8_lib" = "xyes" ; then
AC_MSG_RESULT(yes)
v8_found="yes"
V8_CFLAGS=""
V8_LFLAGS="-lv8 -lpthread"
else
AC_MSG_RESULT(no)
AC_MSG_WARN([
*** V8 library couldn't be found on your system.
*** WeeChat will be built without JavaScript support.])
enable_javascript="no"
not_found="$not_found javascript/v8"
fi
else
AC_MSG_WARN([
*** V8 header files couldn't be found on your system.
*** WeeChat will be built without JavaScript support.])
enable_javascript="no"
not_found="$not_found javascript/v8"
fi
else
not_asked="$not_asked javascript"
fi
if test "x$enable_javascript" = "xyes" ; then
AC_SUBST(V8_CFLAGS)
AC_SUBST(V8_LFLAGS)
AC_DEFINE(PLUGIN_JAVASCRIPT)
fi
AC_LANG_POP
# ---------------------------------- php --------------------------------------
PHP_VERSION=
if test "x$enable_php" = "xyes" ; then
ac_save_CXXFLAGS="$CXXFLAGS"
ac_save_CFLAGS="$CFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
PHP_CFLAGS=""
PHP_LFLAGS=""
if test -n "$php_inc"; then
CFLAGS="$CFLAGS -I$php_inc"
CXXFLAGS="$CXXFLAGS -I$php_inc"
fi
if test -n "$php_lib"; then
LDFLAGS="$LDFLAGS -L$php_lib"
fi
if test "x$PHP_CFLAGS" = "x" -o "x$PHP_LFLAGS" = "x" ; then
AC_MSG_CHECKING(for PHP headers and libraries with pkg-config)
echo
for l in "7.4" "74" "7.3" "73" "7.2" "72" "7.1" "71" "7.0" "70" "7" "$php_suffix" "" ; do
pkgconfig_php_found=`$PKGCONFIG --exists php$l 2>/dev/null`
if test "x$?" = "x0" ; then
pkgconfig_php_found=`$PKGCONFIG --atleast-version=7 php$l 2>/dev/null`
if test "x$?" = "x0" ; then
PHP_VERSION=`$PKGCONFIG --modversion php$l`
PHP_CFLAGS="$PHP_CFLAGS "`$PKGCONFIG --cflags php$l`
PHP_LFLAGS="$PHP_LFLAGS "`$PKGCONFIG --libs php$l`
break
fi
fi
done
fi
if test "x$PHP_CFLAGS" = "x" -o "x$PHP_LFLAGS" = "x" ; then
PHPCONFIG=""
AC_MSG_CHECKING(for PHP headers and libraries with php-config)
for l in "7.4" "74" "7.3" "73" "7.2" "72" "7.1" "71" "7.0" "70" "7" "$php_suffix" "" ; do
AC_CHECK_PROG(PHPCONFIG, "php-config$l", "php-config$l")
if test "x$PHPCONFIG" != "x" ; then
php_config_version=`$PHPCONFIG --version`
if test "x${php_config_version#7}" != "x${php_config_version}" ; then
PHP_VERSION=$php_config_version
PHP_CFLAGS=`$PHPCONFIG --includes`
PHP_LFLAGS="-L$($PHPCONFIG --prefix)/lib/ $($PHPCONFIG --libs) -lphp$l"
break
fi
fi
done
fi
if test "x$PHP_CFLAGS" = "x" -o "x$PHP_LFLAGS" = "x" ; then
AC_MSG_CHECKING(for PHP headers and libraries)
echo
AC_CHECK_HEADER(php.h,ac_found_php_header="yes",ac_found_php_header="no")
if test "x$ac_found_php_header" = "xyes" ; then
PHP_CFLAGS="$CFLAGS"
fi
for l in "7.4" "74" "7.3" "73" "7.2" "72" "7.1" "71" "7.0" "70" "7" "$php_suffix" "" ; do
AC_CHECK_LIB(php$l,php_execute_script,ac_found_php_lib="yes",ac_found_php_lib="no")
if test "x$ac_found_php_lib" = "xyes" ; then
PHP_VERSION=">=7.0.0"
PHP_LFLAGS="$LDFLAGS -lphp7 -lm"
ac2_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -lphp7 -lm"
if echo "$host_os" | grep "^linux" 1>/dev/null 2>&1 ; then
LDFLAGS="$LDFLAGS -ldl"
fi
LDFLAGS="$ac2_save_LDFLAGS"
break
fi
done
fi
AC_MSG_CHECKING(for PHP compiling and linking)
PHP_TEST=`LT=phptest.c ; echo "#include <sapi/embed/php_embed.h>" > $LT; echo "int main() { php_embed_init(0, NULL); php_embed_shutdown(); return 0; }" >> $LT ; $CC -Wall $LT -o $LT.out $PHP_CFLAGS $PHP_LFLAGS $CFLAGS $LDFLAGS 1>/dev/null 2>&1 ; echo $?; rm -f $LT $LT.out 1>/dev/null 2>&1`
if test "x$PHP_TEST" != "x0" ; then
AC_MSG_RESULT(no)
AC_MSG_WARN([
*** PHP (>=7.0) headers and/or libraries couldn't be found on your system.
*** Try to install libphp-embed with your software package manager.
*** WeeChat will be built without PHP support.])
enable_php="no"
not_found="$not_found php"
else
AC_MSG_RESULT(yes)
fi
CFLAGS="$ac_save_CFLAGS"
CXXFLAGS="$ac_save_CXXFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
else
not_asked="$not_asked php"
fi
if test "x$enable_php" = "xyes" ; then
AC_SUBST(PHP_CFLAGS)
AC_SUBST(PHP_LFLAGS)
AC_DEFINE(PLUGIN_PHP)
fi
# ----------------------------------- spell ------------------------------------
if test "x$enable_spell" = "xyes" ; then
ac_found_enchant_lib="no"
if test "x$enable_enchant" = "xyes" ; then
PKG_CHECK_MODULES(ENCHANT, [enchant], ac_found_enchant_lib="yes", ac_found_enchant_lib="no")
fi
if test "x$ac_found_enchant_lib" = "xyes" ; then
CFLAGS="$CFLAGS -DUSE_ENCHANT"
SPELL_LIB_USED="enchant"
# check if function enchant_get_version() exists
ac_save_CFLAGS="$CFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
CFLAGS="$CFLAGS $ENCHANT_CFLAGS"
LDFLAGS="$LDFLAGS $ENCHANT_LIBS"
AC_CACHE_CHECK([for enchant_get_version() support], ac_cv_have_enchant_get_version, [
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[ #include <enchant.h>]],
[[ const char *version = enchant_get_version(); ]])],
[ ac_have_enchant_get_version="yes" ],
[ ac_have_enchant_get_version="no" ])])
CFLAGS="$ac_save_CFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
if test "x$ac_have_enchant_get_version" = "xyes"; then
AC_DEFINE(HAVE_ENCHANT_GET_VERSION)
fi
else
ASPELL_CFLAGS=""
ASPELL_LFLAGS=""
AC_CHECK_HEADER(aspell.h,ac_found_aspell_header="yes",ac_found_aspell_header="no")
AC_CHECK_LIB(aspell,new_aspell_speller,ac_found_aspell_lib="yes",ac_found_aspell_lib="no")
AC_MSG_CHECKING(for aspell headers and libraries)
if test "x$ac_found_aspell_header" = "xno" -o "x$ac_found_aspell_lib" = "xno" ; then
AC_MSG_RESULT(no)
AC_MSG_WARN([
*** Aspell headers and/or libraries couldn't be found on your system.
*** Try to install them with your software package manager.
*** WeeChat will be built without Aspell support.])
enable_spell="no"
not_found="$not_found spell"
else
AC_MSG_RESULT(yes)
ASPELL_LFLAGS="$ASPELL_LFLAGS -laspell"
SPELL_LIB_USED="aspell"
# check if function aspell_version_string() exists
ac_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $ASPELL_LFLAGS"
AC_CACHE_CHECK([for aspell_version_string() support], ac_cv_have_aspell_version_string, [
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[ #include <aspell.h>]],
[[ const char *version = aspell_version_string(); ]])],
[ ac_have_aspell_version_string="yes" ],
[ ac_have_aspell_version_string="no" ])])
LDFLAGS="$ac_save_LDFLAGS"
if test "x$ac_have_aspell_version_string" = "xyes"; then
AC_DEFINE(HAVE_ASPELL_VERSION_STRING)
fi
fi
fi
else
not_asked="$not_asked spell"
fi
if test "x$enable_spell" = "xyes" ; then
AC_SUBST(ASPELL_CFLAGS)
AC_SUBST(ASPELL_LFLAGS)
AC_DEFINE(PLUGIN_SPELL)
fi
# --------------------------------- trigger ------------------------------------
if test "x$enable_trigger" = "xyes" ; then
TRIGGER_CFLAGS=""
TRIGGER_LFLAGS=""
AC_SUBST(TRIGGER_CFLAGS)
AC_SUBST(TRIGGER_LFLAGS)
AC_DEFINE(PLUGIN_TRIGGER)
else
not_asked="$not_asked trigger"
fi
# ---------------------------------- xfer --------------------------------------
if test "x$enable_xfer" = "xyes" ; then
XFER_CFLAGS=""
XFER_LFLAGS=""
AC_SUBST(XFER_CFLAGS)
AC_SUBST(XFER_LFLAGS)
AC_DEFINE(PLUGIN_XFER)
else
not_asked="$not_asked xfer"
fi
# ------------------------------------------------------------------------------
# gcrypt
# ------------------------------------------------------------------------------
AC_CHECK_HEADER(gcrypt.h,ac_found_gcrypt_header="yes",ac_found_gcrypt_header="no")
AC_CHECK_LIB(gcrypt,gcry_check_version,ac_found_gcrypt_lib="yes",ac_found_gcrypt_lib="no")
AC_MSG_CHECKING(for gcrypt headers and libraries)
if test "x$ac_found_gcrypt_header" = "xno" -o "x$ac_found_gcrypt_lib" = "xno" ; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([
*** libgcrypt was not found. You may want to get it from https://www.gnupg.org/ftp/gcrypt/libgcrypt/
*** or try to install it with your software package manager.])
else
AC_MSG_RESULT(yes)
GCRYPT_CFLAGS=`libgcrypt-config --cflags`
GCRYPT_LFLAGS=`libgcrypt-config --libs`
AC_SUBST(GCRYPT_CFLAGS)
AC_SUBST(GCRYPT_LFLAGS)
fi
# ------------------------------------------------------------------------------
# gnutls
# ------------------------------------------------------------------------------
AC_CHECK_HEADER(gnutls/gnutls.h,ac_found_gnutls_header="yes",ac_found_gnutls_header="no")
AC_CHECK_LIB(gnutls,gnutls_global_init,ac_found_gnutls_lib="yes",ac_found_gnutls_lib="no")
AC_MSG_CHECKING(for gnutls headers and libraries)
if test "x$ac_found_gnutls_header" = "xno" -o "x$ac_found_gnutls_lib" = "xno" ; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([
*** libgnutls was not found. You may want to get it from https://www.gnupg.org/ftp/gcrypt/gnutls/
*** or try to install it with your software package manager.])
else
AC_MSG_RESULT(yes)
GNUTLS_CFLAGS=`pkg-config gnutls --cflags`
GNUTLS_LFLAGS=`pkg-config gnutls --libs`
AC_SUBST(GNUTLS_CFLAGS)
AC_SUBST(GNUTLS_LFLAGS)
fi
# ------------------------------------------------------------------------------
# flock
# ------------------------------------------------------------------------------
enable_flock="no"
AC_CACHE_CHECK([for flock() support], ac_cv_have_flock, [
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[ #include <sys/file.h>]],
[[ flock(0, LOCK_SH); ]])],
[ ac_cv_have_flock="yes" ],
[ ac_cv_have_flock="no" ])])
if test "x$ac_cv_have_flock" = "xyes"; then
enable_flock="yes"
AC_DEFINE(HAVE_FLOCK)
else
not_found="$not_found flock"
fi
# ------------------------------------------------------------------------------
# large file support
# ------------------------------------------------------------------------------
if test "x$enable_largefile" = "xyes" ; then
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_LARGE_FILES"
CXXFLAGS="$CXXFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_LARGE_FILES"
else
not_asked="$not_asked largefile"
fi
# ------------------------------------------------------------------------------
# backtrace
# ------------------------------------------------------------------------------
enable_backtrace="no"
if test "x$debug" != "x0" ; then
AC_CACHE_CHECK([for execinfo.h and backtrace], ac_cv_have_backtrace, [
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[ #include <execinfo.h> ]],
[[ void *trace[128]; int n = backtrace(trace, 128); ]])],
[ ac_cv_have_backtrace="yes" ],
[ ac_cv_have_backtrace="no" ])])
if test "x$ac_cv_have_backtrace" = "xyes"; then
enable_backtrace="yes"
AC_DEFINE(HAVE_BACKTRACE,1,[glibc backtrace function])
else
not_found="$not_found backtrace"
fi
fi
# ------------------------------------------------------------------------------
# eat_newline_glitch
# ------------------------------------------------------------------------------
enable_eatnewlineglitch="no"
AC_CACHE_CHECK([for eat_newline_glitch support], ac_cv_have_eatnewlineglitch, [
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[ #include <term.h> ]],
[[ eat_newline_glitch = 0; ]])],
[ ac_cv_have_eatnewlineglitch="yes" ],
[ ac_cv_have_eatnewlineglitch="no" ])])
if test "x$ac_cv_have_eatnewlineglitch" = "xyes"; then
enable_eatnewlineglitch="yes"
AC_DEFINE(HAVE_EAT_NEWLINE_GLITCH)
else
not_found="$not_found eat_newline_glitch"
fi
# ------------------------------------------------------------------------------
# zlib
# ------------------------------------------------------------------------------
AC_CHECK_HEADER(zlib.h,ac_found_zlib_header="yes",ac_found_zlib_header="no")
AC_CHECK_LIB(z,compress2,ac_found_zlib_lib="yes",ac_found_zlib_lib="no")
AC_MSG_CHECKING(for zlib headers and libraries)
if test "x$ac_found_zlib_header" = "xno" -o "x$ac_found_zlib_lib" = "xno" ; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([
*** zlib was not found. You may want to get it from https://zlib.net/
*** or try to install it with your software package manager.])
else
AC_MSG_RESULT(yes)
ZLIB_CFLAGS=`pkg-config zlib --cflags`
ZLIB_LFLAGS=`pkg-config zlib --libs`
AC_SUBST(ZLIB_CFLAGS)
AC_SUBST(ZLIB_LFLAGS)
fi
# ------------------------------------------------------------------------------
# curl
# ------------------------------------------------------------------------------
AC_PATH_PROG(CURL_CONFIG, curl-config)
if test "x$CURL_CONFIG" = "x" ; then
AC_MSG_ERROR([
*** "curl-config" couldn't be found on your system.
*** Try to install libcurl-dev with your software package manager.])
fi
CURL_CFLAGS=`$CURL_CONFIG --cflags`
CURL_LFLAGS=`$CURL_CONFIG --libs`
AC_SUBST(CURL_CFLAGS)
AC_SUBST(CURL_LFLAGS)
# ------------------------------------------------------------------------------
# tests
# ------------------------------------------------------------------------------
if test "x$enable_tests" = "xyes" ; then
cpputest_found="no"
AC_MSG_CHECKING(for CppUTest headers and libraries)
echo
pkgconfig_cpputest_found=`$PKGCONFIG --exists cpputest 2>/dev/null`
if test "x$?" = "x0" ; then
CPPUTEST_VERSION=`$PKGCONFIG --modversion cpputest`
CPPUTEST_CFLAGS=`$PKGCONFIG --cflags cpputest`
CPPUTEST_LFLAGS=`$PKGCONFIG --libs cpputest`
else
AC_MSG_WARN([
*** CppUTest couldn't be found on your system.
*** WeeChat will be built without tests.])
enable_tests="no"
not_found="$not_found tests"
fi
else
not_asked="$not_asked tests"
fi
if test "x$enable_tests" = "xyes" ; then
AC_SUBST(CPPUTEST_CFLAGS)
AC_SUBST(CPPUTEST_LFLAGS)
AC_DEFINE(TESTS)
fi
# ------------------------------------------------------------------------------
# man page / documentation
# ------------------------------------------------------------------------------
msg_man=""
msg_doc=""
if test "x$enable_man" = "xno"; then
not_asked="$not_asked man"
fi
if test "x$enable_doc" = "xno"; then
not_asked="$not_asked doc"
fi
if test "x$enable_man" = "xyes" -o "x$enable_doc" = "xyes"; then
AC_CHECK_PROGS(ASCIIDOCTOR, [asciidoctor])
if test -n "$ASCIIDOCTOR"; then
AC_MSG_CHECKING([for asciidoctor version])
asciidoctor_version=`$ASCIIDOCTOR --version 2>/dev/null | head -n 1 | cut -d" " -f2`
case "${asciidoctor_version}" in
Asciidoctor' '0.*|Asciidoctor' '1.5.[0-3]*)
AC_MSG_RESULT([${asciidoctor_version} (too old)])
not_found="$not_found asciidoctor"
enable_man="no"
enable_doc="no"
;;
*)
AC_MSG_RESULT([${asciidoctor_version}])
if test "x$enable_man" = "xyes"; then
msg_man="asciidoctor(${asciidoctor_version}) $msg_man"
AC_DEFINE(MAN)
fi
if test "x$enable_doc" = "xyes"; then
msg_doc="asciidoctor(${asciidoctor_version}) $msg_doc"
AC_DEFINE(DOC)
fi
;;
esac
else
not_found="$not_found asciidoctor"
enable_man="no"
enable_doc="no"
fi
ASCIIDOCTOR_ARGS="-a experimental -a 'prewrap!' -a icons=font -a sectanchors -a source-highlighter=prettify"
AC_SUBST(ASCIIDOCTOR)
AC_SUBST(ASCIIDOCTOR_ARGS)
fi
# ------------------------------------------------------------------------------
# general vars
# ------------------------------------------------------------------------------
if test "x$prefix" = "xNONE" ; then
prefix="$ac_default_prefix"
fi
if test "x$exec_prefix" = "xNONE" ; then
exec_prefix="$prefix"
fi
AC_DEFINE_UNQUOTED(PREFIX, "${prefix}")
WEECHAT_LIBDIR=`eval eval echo ${libdir}/weechat`
AC_DEFINE_UNQUOTED(WEECHAT_LIBDIR, "$WEECHAT_LIBDIR")
WEECHAT_SHAREDIR=`eval eval echo ${datadir}/weechat`
AC_DEFINE_UNQUOTED(WEECHAT_SHAREDIR, "$WEECHAT_SHAREDIR")
weechat_libdir=${libdir}/weechat
AC_SUBST(weechat_libdir)
COMMON_CFLAGS="-fsigned-char -Wall -Wextra -Werror-implicit-function-declaration"
COMMON_CXXFLAGS="-fsigned-char -Wall -Wextra"
AC_MSG_CHECKING([whether we have GNU assembler])
GAS=`as --version < /dev/null 2>/dev/null | grep GNU`
if test "$GAS"; then
COMMON_CFLAGS="${COMMON_CFLAGS} -pipe"
COMMON_CXXFLAGS="${COMMON_CXXFLAGS} -pipe"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
CFLAGS=`echo $CFLAGS | sed 's/ -g / /g'`
CFLAGS=`echo $CFLAGS | sed 's/^-g //g'`
CFLAGS=`echo $CFLAGS | sed 's/ -g$//g'`
CFLAGS=`echo $CFLAGS | sed 's/^-g$//g'`
CXXFLAGS=`echo $CXXFLAGS | sed 's/ -g / /g'`
CXXFLAGS=`echo $CXXFLAGS | sed 's/^-g //g'`
CXXFLAGS=`echo $CXXFLAGS | sed 's/ -g$//g'`
CXXFLAGS=`echo $CXXFLAGS | sed 's/^-g$//g'`
if test "x$debug" = "x0" ; then
CFLAGS="$COMMON_CFLAGS $CFLAGS"
CXXFLAGS="$COMMON_CXXFLAGS $CXXFLAGS"
else
CFLAGS="$COMMON_CFLAGS $CFLAGS -g -O0"
CXXFLAGS="$COMMON_CXXFLAGS $CXXFLAGS -g -O0"
fi
LIBS="$LIBS $INTLLIBS"
case "$host_os" in
freebsd*)
if test "x$enable_perl" = "xyes" -o "x$enable_python" = "xyes" ; then
CFLAGS="$CFLAGS -pthread"
fi
CFLAGS="$CFLAGS $CXXFLAGS"
;;
openbsd*)
if test "x$enable_python" = "xyes" ; then
CFLAGS="$CFLAGS -pthread"
fi
;;
netbsd*)
if test "x$enable_perl" = "xyes" -o "x$enable_python" = "xyes" ; then
CFLAGS="$CFLAGS -pthread"
fi
CFLAGS="$CFLAGS $CXXFLAGS"
;;
gnu*)
LDFLAGS="$LDFLAGS -lpthread"
;;
haiku*)
LDFLAGS="$LDFLAGS -lnetwork"
;;
*)
;;
esac
CFLAGS="$CFLAGS -DWEECHAT_VERSION=\\\"$VERSION\\\" -DWEECHAT_LICENSE=\\\"$LICENSE\\\""
CXXFLAGS="$CXXFLAGS -DWEECHAT_VERSION=\\\"$VERSION\\\" -DWEECHAT_LICENSE=\\\"$LICENSE\\\""
# ------------------------------------------------------------------------------
# output Makefiles
# ------------------------------------------------------------------------------
AM_CONDITIONAL(HAVE_FLOCK, test "$enable_flock" = "yes")
AM_CONDITIONAL(HAVE_EAT_NEWLINE_GLITCH, test "$enable_eatnewlineglitch" = "yes")
AM_CONDITIONAL(GUI_NCURSES, test "$enable_ncurses" = "yes")
AM_CONDITIONAL(HEADLESS, test "$enable_headless" = "yes")
AM_CONDITIONAL(PLUGIN_ALIAS, test "$enable_alias" = "yes")
AM_CONDITIONAL(PLUGIN_BUFLIST, test "$enable_buflist" = "yes")
AM_CONDITIONAL(PLUGIN_CHARSET, test "$enable_charset" = "yes")
AM_CONDITIONAL(PLUGIN_EXEC, test "$enable_exec" = "yes")
AM_CONDITIONAL(PLUGIN_FIFO, test "$enable_fifo" = "yes")
AM_CONDITIONAL(PLUGIN_FSET, test "$enable_fset" = "yes")
AM_CONDITIONAL(PLUGIN_IRC, test "$enable_irc" = "yes")
AM_CONDITIONAL(PLUGIN_LOGGER, test "$enable_logger" = "yes")
AM_CONDITIONAL(PLUGIN_RELAY, test "$enable_relay" = "yes")
AM_CONDITIONAL(PLUGIN_SCRIPT, test "$enable_script" = "yes")
AM_CONDITIONAL(PLUGIN_PERL, test "$enable_perl" = "yes")
AM_CONDITIONAL(PLUGIN_PYTHON, test "$enable_python" = "yes")
AM_CONDITIONAL(PLUGIN_RUBY, test "$enable_ruby" = "yes")
AM_CONDITIONAL(PLUGIN_LUA, test "$enable_lua" = "yes")
AM_CONDITIONAL(PLUGIN_TCL, test "$enable_tcl" = "yes")
AM_CONDITIONAL(PLUGIN_GUILE, test "$enable_guile" = "yes")
AM_CONDITIONAL(PLUGIN_JAVASCRIPT, test "$enable_javascript" = "yes")
AM_CONDITIONAL(PLUGIN_PHP, test "$enable_php" = "yes")
AM_CONDITIONAL(PLUGIN_SPELL, test "$enable_spell" = "yes")
AM_CONDITIONAL(PLUGIN_TRIGGER, test "$enable_trigger" = "yes")
AM_CONDITIONAL(PLUGIN_XFER, test "$enable_xfer" = "yes")
AM_CONDITIONAL(TESTS, test "$enable_tests" = "yes")
AM_CONDITIONAL(MAN, test "$enable_man" = "yes")
AM_CONDITIONAL(DOC, test "$enable_doc" = "yes")
AC_OUTPUT([Makefile
icons/Makefile
doc/Makefile
doc/en/Makefile
doc/fr/Makefile
doc/it/Makefile
doc/de/Makefile
doc/pl/Makefile
doc/es/Makefile
doc/ru/Makefile
doc/ja/Makefile
doc/cs/Makefile
src/Makefile
src/core/Makefile
src/plugins/Makefile
src/plugins/alias/Makefile
src/plugins/buflist/Makefile
src/plugins/charset/Makefile
src/plugins/exec/Makefile
src/plugins/fifo/Makefile
src/plugins/fset/Makefile
src/plugins/irc/Makefile
src/plugins/logger/Makefile
src/plugins/relay/Makefile
src/plugins/script/Makefile
src/plugins/perl/Makefile
src/plugins/python/Makefile
src/plugins/ruby/Makefile
src/plugins/lua/Makefile
src/plugins/tcl/Makefile
src/plugins/guile/Makefile
src/plugins/javascript/Makefile
src/plugins/php/Makefile
src/plugins/spell/Makefile
src/plugins/trigger/Makefile
src/plugins/xfer/Makefile
src/gui/Makefile
src/gui/curses/Makefile
src/gui/curses/normal/Makefile
src/gui/curses/headless/Makefile
tests/Makefile
intl/Makefile
po/Makefile.in])
# ------------------------------------------------------------------------------
# end message
# ------------------------------------------------------------------------------
listgui=""
if test "x$enable_ncurses" = "xyes" ; then
listgui="$listgui ncurses"
fi
if test "x$enable_headless" = "xyes" ; then
listgui="$listgui headless"
fi
if test "x$listgui" = "x" ; then
AC_MSG_ERROR([
*** No interface specified...
*** Please enable at least ncurses or headless.])
fi
listplugins=""
if test "x$enable_alias" = "xyes"; then
listplugins="$listplugins alias"
fi
if test "x$enable_buflist" = "xyes"; then
listplugins="$listplugins buflist"
fi
if test "x$enable_charset" = "xyes"; then
listplugins="$listplugins charset"
fi
if test "x$enable_exec" = "xyes"; then
listplugins="$listplugins exec"
fi
if test "x$enable_fifo" = "xyes"; then
listplugins="$listplugins fifo"
fi
if test "x$enable_fset" = "xyes"; then
listplugins="$listplugins fset"
fi
if test "x$enable_irc" = "xyes" ; then
listplugins="$listplugins irc"
fi
if test "x$enable_logger" = "xyes"; then
listplugins="$listplugins logger"
fi
if test "x$enable_relay" = "xyes"; then
listplugins="$listplugins relay"
fi
if test "x$enable_script" = "xyes"; then
listplugins="$listplugins script"
fi
if test "x$enable_perl" = "xyes"; then
listplugins="$listplugins perl($PERL_VERSION)"
fi
if test "x$enable_python" = "xyes"; then
listplugins="$listplugins python($PYTHON_VERSION)"
fi
if test "x$enable_ruby" = "xyes"; then
listplugins="$listplugins ruby($RUBY_VERSION)"
fi
if test "x$enable_lua" = "xyes"; then
listplugins="$listplugins lua($LUA_VERSION)"
fi
if test "x$enable_tcl" = "xyes"; then
listplugins="$listplugins tcl($TCL_VERSION)"
fi
if test "x$enable_guile" = "xyes"; then
listplugins="$listplugins guile($GUILE_VERSION)"
fi
if test "x$enable_javascript" = "xyes"; then
listplugins="$listplugins javascript/v8"
fi
if test "x$enable_php" = "xyes"; then
listplugins="$listplugins php($PHP_VERSION)"
fi
if test "x$enable_spell" = "xyes"; then
listplugins="$listplugins spell($SPELL_LIB_USED)"
fi
if test "x$enable_trigger" = "xyes"; then
listplugins="$listplugins trigger"
fi
if test "x$enable_xfer" = "xyes"; then
listplugins="$listplugins xfer"
fi
listoptional=""
if test "x$enable_flock" = "xyes"; then
listoptional="$listoptional flock"
fi
if test "x$enable_largefile" = "xyes"; then
listoptional="$listoptional largefile"
fi
if test "x$enable_backtrace" = "xyes"; then
listoptional="$listoptional backtrace"
fi
msg_debug="no"
if test "x$debug" != "x0"; then
msg_debug="yes"
fi
msg_tests="no"
if test "x$enable_tests" = "xyes"; then
msg_tests="yes"
fi
if test "x$msg_man" = "x"; then
msg_man="no"
else
msg_man="yes: $msg_man"
fi
if test "x$msg_doc" = "x"; then
msg_doc="no"
else
msg_doc="yes: $msg_doc"
fi
echo ""
echo "Enabled features:"
echo " Interfaces............. :$listgui"
echo " Plugins................ :$listplugins"
echo " Optional features...... :$listoptional"
echo " Compile with debug..... : $msg_debug"
echo " Compile tests.......... : $msg_tests"
echo " Man page............... : $msg_man"
echo " Documentation.......... : $msg_doc"
echo " Certificate authorities : ${CA_FILE}"
if test "x$not_asked" != "x" || test "x$not_found" != "x"; then
echo ""
echo "Disabled features:"
if test "x$not_asked" != "x"; then
echo " - not asked:$not_asked"
fi
if test "x$not_found" != "x"; then
echo " - not found:$not_found"
fi
fi
echo ""
echo "WeeChat home directory is ${WEECHAT_HOME}"
echo ""
eval echo "WeeChat will be installed in $bindir"
echo ""
echo "configure complete, now type 'make' to build WeeChat $VERSION"
echo ""