mirror of
https://github.com/profanity-im/profanity.git
synced 2025-02-02 15:08:15 -05:00
Merge pull request #1641 from profanity-im/clean-configure
Clean up configure.ac
This commit is contained in:
commit
5957b757ce
10
Makefile.am
10
Makefile.am
@ -187,9 +187,6 @@ pgp_sources = \
|
||||
pgp_unittest_sources = \
|
||||
tests/unittests/pgp/stub_gpg.c
|
||||
|
||||
otr3_sources = \
|
||||
src/otr/otrlib.h src/otr/otrlibv3.c src/otr/otr.h src/otr/otr.c
|
||||
|
||||
otr4_sources = \
|
||||
src/otr/otrlib.h src/otr/otrlibv4.c src/otr/otr.h src/otr/otr.c
|
||||
|
||||
@ -229,13 +226,8 @@ endif
|
||||
|
||||
if BUILD_OTR
|
||||
unittest_sources += $(otr_unittest_sources)
|
||||
if BUILD_OTR3
|
||||
core_sources += $(otr3_sources)
|
||||
endif
|
||||
if BUILD_OTR4
|
||||
core_sources += $(otr4_sources)
|
||||
endif
|
||||
endif
|
||||
|
||||
if BUILD_OMEMO
|
||||
core_sources += $(omemo_sources)
|
||||
@ -244,7 +236,7 @@ endif
|
||||
|
||||
all_c_sources = $(core_sources) $(unittest_sources) \
|
||||
$(pgp_sources) $(pgp_unittest_sources) \
|
||||
$(otr3_sources) $(otr4_sources) $(otr_unittest_sources) \
|
||||
$(otr4_sources) $(otr_unittest_sources) \
|
||||
$(omemo_sources) $(omemo_unittest_sources) \
|
||||
$(c_sources) $(python_sources) \
|
||||
$(main_source)
|
||||
|
@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
./configure --enable-python-plugins --enable-c-plugins CFLAGS='-g -O0' CXXFLAGS='-g -O0'
|
239
configure.ac
239
configure.ac
@ -1,24 +1,21 @@
|
||||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT([profanity],[0.12.0],[jubalh@iodoru.org])
|
||||
AC_PREREQ([2.69])
|
||||
AC_INIT([profanity],[0.12.0],[jubalh@iodoru.org],[profanity],[https://profanity-im.github.io/])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_SRCDIR([src/main.c])
|
||||
AC_CONFIG_HEADERS([src/config.h])
|
||||
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
||||
|
||||
### Checks for programs.
|
||||
AC_PROG_CC
|
||||
LT_INIT
|
||||
|
||||
## Check for LFS
|
||||
AC_SYS_LARGEFILE
|
||||
|
||||
### Get canonical host
|
||||
AC_CANONICAL_HOST
|
||||
## Determine platform
|
||||
AC_CANONICAL_TARGET
|
||||
PLATFORM="unknown"
|
||||
AS_CASE([$host_os],
|
||||
AS_CASE([$target_os],
|
||||
[freebsd*], [PLATFORM="freebsd"],
|
||||
[netbsd*], [PLATFORM="netbsd"],
|
||||
[openbsd*], [PLATFORM="openbsd"],
|
||||
@ -28,7 +25,7 @@ AS_CASE([$host_os],
|
||||
|
||||
PACKAGE_STATUS="development"
|
||||
|
||||
### Get git branch and revision if in development
|
||||
## Get git branch and revision if in development
|
||||
if test "x$PACKAGE_STATUS" = xdevelopment; then
|
||||
AM_CONDITIONAL([INCLUDE_GIT_VERSION], [true])
|
||||
AC_DEFINE([HAVE_GIT_VERSION], [1], [Include git info])
|
||||
@ -43,10 +40,10 @@ AS_IF([test "x$PLATFORM" = xcygwin],
|
||||
AS_IF([test "x$PLATFORM" = xosx],
|
||||
[AC_DEFINE([PLATFORM_OSX], [1], [OSx])])
|
||||
|
||||
### Environment variables
|
||||
## Environment variables
|
||||
AC_ARG_VAR([PYTHON_FRAMEWORK], [Set base directory for Python Framework])
|
||||
|
||||
### Options
|
||||
## Options
|
||||
AC_ARG_ENABLE([notifications],
|
||||
[AS_HELP_STRING([--enable-notifications], [enable desktop notifications])])
|
||||
AC_ARG_ENABLE([python-plugins],
|
||||
@ -68,9 +65,31 @@ AC_ARG_WITH([themes],
|
||||
AC_ARG_ENABLE([icons-and-clipboard],
|
||||
[AS_HELP_STRING([--enable-icons-and-clipboard], [enable GTK tray icons and clipboard paste support])])
|
||||
|
||||
# Required dependencies
|
||||
|
||||
AC_CHECK_FUNCS([atexit memset strdup strstr])
|
||||
|
||||
PKG_CHECK_MODULES([glib], [glib-2.0 >= 2.62.0], [],
|
||||
[AC_MSG_ERROR([glib 2.62.0 or higher is required])])
|
||||
PKG_CHECK_MODULES([gio], [gio-2.0], [],
|
||||
[AC_MSG_ERROR([libgio-2.0 from glib-2.0 is required])])
|
||||
|
||||
AC_SEARCH_LIBS([fmod], [m], [],
|
||||
[AC_MSG_ERROR([math.h is required])], [])
|
||||
|
||||
PKG_CHECK_MODULES([curl], [libcurl >= 7.62.0], [],
|
||||
[AC_CHECK_LIB([curl], [main], [],
|
||||
[AC_MSG_ERROR([libcurl 7.62.0 or higher is required])])])
|
||||
|
||||
PKG_CHECK_MODULES([SQLITE], [sqlite3 >= 3.22.0], [],
|
||||
[AC_MSG_ERROR([sqlite3 3.22.0 or higher is required])])
|
||||
|
||||
ACX_PTHREAD([], [AC_MSG_ERROR([pthread is required])])
|
||||
AS_IF([test "x$PTHREAD_CC" != x], [ CC="$PTHREAD_CC" ])
|
||||
|
||||
### plugins
|
||||
|
||||
# python
|
||||
## python
|
||||
if test "x$enable_plugins" = xno; then
|
||||
AM_CONDITIONAL([BUILD_PYTHON_API], [false])
|
||||
elif test "x$enable_python_plugins" != xno; then
|
||||
@ -101,7 +120,7 @@ else
|
||||
AM_CONDITIONAL([BUILD_PYTHON_API], [false])
|
||||
fi
|
||||
|
||||
# c
|
||||
## C
|
||||
if test "x$PLATFORM" = xcygwin; then
|
||||
AM_CONDITIONAL([BUILD_C_API], [false])
|
||||
else
|
||||
@ -128,18 +147,11 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
# threading
|
||||
ACX_PTHREAD([], [AC_MSG_ERROR([pthread is required])])
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
AS_IF([test "x$PTHREAD_CC" != x], [ CC="$PTHREAD_CC" ])
|
||||
|
||||
### Check for libstrophe
|
||||
## Check for libstrophe
|
||||
PKG_CHECK_MODULES([libstrophe], [libstrophe >= 0.11.0],
|
||||
[LIBS="$libstrophe_LIBS $LIBS" CFLAGS="$CFLAGS $libstrophe_CFLAGS" XMPP_LIB="libstrophe" AC_DEFINE([HAVE_LIBSTROPHE], [1], [libstrophe])],
|
||||
[XMPP_LIB=""])
|
||||
[LIBS="$libstrophe_LIBS $LIBS" CFLAGS="$CFLAGS $libstrophe_CFLAGS"])
|
||||
|
||||
AC_MSG_CHECKING([whether ${XMPP_LIB} works])
|
||||
AC_MSG_CHECKING([whether libstrophe works])
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <strophe.h>
|
||||
|
||||
@ -149,9 +161,9 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([[
|
||||
}
|
||||
]])],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_ERROR([${XMPP_LIB} is broken, check config.log for details])])
|
||||
[AC_MSG_ERROR([libstrophe is broken, check config.log for details])])
|
||||
|
||||
### Check for curses library
|
||||
## Check for curses library
|
||||
PKG_CHECK_MODULES([ncursesw], [ncursesw],
|
||||
[NCURSES_CFLAGS="$ncursesw_CFLAGS"; NCURSES_LIBS="$ncursesw_LIBS"; CURSES="ncursesw"],
|
||||
[PKG_CHECK_MODULES([ncurses], [ncurses],
|
||||
@ -161,10 +173,10 @@ PKG_CHECK_MODULES([ncursesw], [ncursesw],
|
||||
[AC_CHECK_LIB([curses], [main],
|
||||
[LIBS="$LIBS -lcurses"; CURSES="curses"],
|
||||
[AC_MSG_ERROR([ncurses or curses is required for profanity])])])])])])
|
||||
AM_CPPFLAGS="$AM_CPPFLAGS $NCURSES_CFLAGS"
|
||||
AM_CFLAGS="$AM_CFLAGS $NCURSES_CFLAGS"
|
||||
LIBS="$NCURSES_LIBS $LIBS"
|
||||
|
||||
### Check wide characters support in curses library
|
||||
## Check wide characters support in curses library
|
||||
CFLAGS_RESTORE="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $NCURSES_CFLAGS"
|
||||
AC_CACHE_CHECK([for wget_wch support in $CURSES], ncurses_cv_wget_wch,
|
||||
@ -183,32 +195,12 @@ CFLAGS="$CFLAGS_RESTORE"
|
||||
AS_IF([test "x$ncurses_cv_wget_wch" != xyes],
|
||||
[AC_MSG_ERROR([ncurses does not support wide characters])])
|
||||
|
||||
### Check for glib libraries
|
||||
PKG_CHECK_MODULES([glib], [glib-2.0 >= 2.62.0], [],
|
||||
[AC_MSG_ERROR([glib 2.62.0 or higher is required for profanity])])
|
||||
PKG_CHECK_MODULES([gio], [gio-2.0], [],
|
||||
[AC_MSG_ERROR([libgio-2.0 from glib-2.0 is required for profanity])])
|
||||
|
||||
### Check for other profanity dependencies
|
||||
AC_SEARCH_LIBS([fmod], [m], [],
|
||||
[AC_MSG_ERROR([math.h is required])], [])
|
||||
|
||||
PKG_CHECK_MODULES([curl], [libcurl >= 7.62.0], [],
|
||||
[AC_CHECK_LIB([curl], [main], [],
|
||||
[AC_MSG_ERROR([libcurl is required for profanity])])])
|
||||
|
||||
PKG_CHECK_MODULES([SQLITE], [sqlite3 >= 3.22.0], [],
|
||||
[AC_MSG_ERROR([sqlite3 3.22.0 or higher is required for profanity])])
|
||||
|
||||
AS_IF([test "x$enable_icons_and_clipboard" != xno],
|
||||
[PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.24.0],
|
||||
[AC_DEFINE([HAVE_GTK], [1], [libgtk module])],
|
||||
[AS_IF([test "x$enable_icons_and_clipboard" = xyes],
|
||||
[PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.24.10],
|
||||
[AC_DEFINE([HAVE_GTK], [1], [libgtk module])],
|
||||
[AC_MSG_ERROR([gtk+-2.0 >= 2.24.10 or gtk+-3.0 >= 3.24.0 is required for icons and clipboard])],
|
||||
[AC_MSG_NOTICE([gtk+-3.0/gtk+2.0 not found, icons and clipboard not enabled])])])])])
|
||||
## Check for ncursesw/ncurses.h first, Arch linux uses ncurses.h for ncursesw
|
||||
AC_CHECK_HEADERS([ncursesw/ncurses.h], [], [])
|
||||
AC_CHECK_HEADERS([ncurses.h], [], [])
|
||||
AC_CHECK_HEADERS([curses.h], [], [])
|
||||
|
||||
# Check for readline
|
||||
AS_IF([test "x$PLATFORM" = xosx],
|
||||
[AC_PATH_PROG([BREW], [brew], ["failed"],
|
||||
[$PATH:/opt/homebrew/bin:/usr/local/bin])
|
||||
@ -229,17 +221,34 @@ AS_IF([test "x$PLATFORM" = xosx],
|
||||
[test "x$PLATFORM" = xopenbsd],
|
||||
[AC_CHECK_FILE([/usr/local/include/ereadline],
|
||||
[LIBS="-lereadline $LIBS"
|
||||
AM_CPPFLAGS="-I/usr/local/include/ereadline $AM_CPPFLAGS"
|
||||
AM_CFLAGS="-I/usr/local/include/ereadline $AM_CFLAGS"
|
||||
AM_LDFLAGS="-L/usr/local/lib $AM_LDFLAGS"
|
||||
AC_SUBST(AM_LDFLAGS)])],
|
||||
|
||||
[AC_CHECK_LIB([readline], [main], [],
|
||||
[AC_MSG_ERROR([libreadline is required for profanity])])])
|
||||
|
||||
### Check for desktop notification support
|
||||
### Linux/FreeBSD require libnotify
|
||||
### Windows uses native OS calls
|
||||
### OSX requires terminal-notifier
|
||||
## Check for optional dependencies depending on feature flags
|
||||
|
||||
dnl feature: icons-and-clipboard
|
||||
AS_IF([test "x$enable_icons_and_clipboard" != xno],
|
||||
[PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.24.0],
|
||||
[AC_DEFINE([HAVE_GTK], [1], [libgtk module])],
|
||||
[AS_IF([test "x$enable_icons_and_clipboard" = xyes],
|
||||
[PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.24.10],
|
||||
[AC_DEFINE([HAVE_GTK], [1], [libgtk module])],
|
||||
[AC_MSG_ERROR([gtk+-2.0 >= 2.24.10 or gtk+-3.0 >= 3.24.0 is required for icons and clipboard])],
|
||||
[AC_MSG_NOTICE([gtk+-3.0/gtk+2.0 not found, icons and clipboard not enabled])])])])])
|
||||
|
||||
ICONS_PATH='${pkgdatadir}/icons'
|
||||
AC_SUBST(ICONS_PATH)
|
||||
|
||||
dnl feature: notifications
|
||||
|
||||
## Check for desktop notification support
|
||||
## Linux/FreeBSD require libnotify
|
||||
## Windows uses native OS calls
|
||||
## OSX requires terminal-notifier
|
||||
|
||||
AS_IF([test "x$PLATFORM" = xosx],
|
||||
[AS_IF([test "x$enable_notifications" != xno],
|
||||
@ -258,19 +267,15 @@ AS_IF([test "x$PLATFORM" = xosx],
|
||||
[AC_MSG_ERROR([libnotify is required but does not exist])],
|
||||
[AC_MSG_NOTICE([libnotify support will be disabled])])])])])
|
||||
|
||||
# TODO: rewrite this
|
||||
if test "x$with_xscreensaver" = xyes; then
|
||||
AC_CHECK_LIB([Xss], [main], [],
|
||||
[AC_MSG_ERROR([libXss is required for x autoaway support])])
|
||||
AC_CHECK_LIB([X11], [main], [],
|
||||
[AC_MSG_ERROR([libX11 is required for x autoaway support])])
|
||||
elif test "x$with_xscreensaver" = x; then
|
||||
AC_CHECK_LIB([Xss], [main], [],
|
||||
[AC_MSG_NOTICE([libXss not found, falling back to profanity auto-away])])
|
||||
AC_CHECK_LIB([X11], [main], [],
|
||||
[AC_MSG_NOTICE([libX11 not found, falling back to profanity auto-away])])
|
||||
fi
|
||||
dnl feature: xscreensaver
|
||||
AS_IF([test "x$enable_xscreensaver" != xno],
|
||||
[PKG_CHECK_MODULES([xscrnsaver], [xscrnsaver],
|
||||
[AC_MSG_NOTICE([xscreensaver support is enabled])],
|
||||
[AS_IF([test "x$enable_xscreensaver" = xyes],
|
||||
[AC_MSG_ERROR([xscreensaver is required but does not exist])],
|
||||
[AC_MSG_NOTICE([xscreensaver support is disabled])])])])
|
||||
|
||||
dnl feature: pgp
|
||||
AM_CONDITIONAL([BUILD_PGP], [false])
|
||||
if test "x$enable_pgp" != xno; then
|
||||
AC_CHECK_LIB([gpgme], [main],
|
||||
@ -279,45 +284,34 @@ if test "x$enable_pgp" != xno; then
|
||||
AC_PATH_PROG([GPGME_CONFIG], [gpgme-config], ["failed"])
|
||||
AS_IF([test "x$GPGME_CONFIG" = xfailed],
|
||||
[LIBS="-lgpgme $LIBS"],
|
||||
[LIBS="`$GPGME_CONFIG --libs` $LIBS" AM_CPPFLAGS="`$GPGME_CONFIG --cflags` $AM_CPPFLAGS"])],
|
||||
[LIBS="`$GPGME_CONFIG --libs` $LIBS" AM_CFLAGS="`$GPGME_CONFIG --cflags` $AM_CFLAGS"])],
|
||||
[AS_IF([test "x$enable_pgp" = xyes],
|
||||
[AC_MSG_ERROR([libgpgme is required for pgp support])],
|
||||
[AC_MSG_NOTICE([libgpgme not found, pgp support not enabled])])])
|
||||
fi
|
||||
|
||||
dnl feature: otr
|
||||
AM_CONDITIONAL([BUILD_OTR], [false])
|
||||
AM_CONDITIONAL([BUILD_OTR3], [false])
|
||||
AM_CONDITIONAL([BUILD_OTR4], [false])
|
||||
if test "x$enable_otr" != xno; then
|
||||
AM_CONDITIONAL([BUILD_OTR], [true])
|
||||
PKG_CHECK_MODULES([libotr], [libotr >= 4.0],
|
||||
[AM_CONDITIONAL([BUILD_OTR4], [true])],
|
||||
[AC_MSG_NOTICE([libotr >= 4.0 not found, checking for libotr-3.x...])
|
||||
PKG_CHECK_MODULES([libotr], [libotr >= 3.0],
|
||||
[AM_CONDITIONAL([BUILD_OTR3], [true])],
|
||||
[AM_CONDITIONAL([BUILD_OTR], [false])])])
|
||||
|
||||
AM_COND_IF([BUILD_OTR],
|
||||
[LIBS="$libotr_LIBS $LIBS" CFLAGS="$CFLAGS $libotr_CFLAGS"
|
||||
AC_DEFINE([HAVE_LIBOTR], [1], [Have libotr])],
|
||||
[AS_IF([test "x$enable_otr" = xyes],
|
||||
[AC_MSG_ERROR([libotr is required for otr encryption support])],
|
||||
[AC_MSG_NOTICE([libotr not found, otr encryption support not enabled])])])
|
||||
PKG_CHECK_MODULES([libotr], [libotr >= 4.0],
|
||||
[LIBS="$libotr_LIBS $LIBS" CFLAGS="$libotr_CFLAGS $cflags"],
|
||||
[AM_CONDITIONAL([BUILD_OTR], [false])
|
||||
AS_IF([test "x$enable_otr" = xyes],
|
||||
[AC_MSG_ERROR([libotr >= 4.0 is required for OTR support])],
|
||||
[AC_MSG_NOTICE([libotr >= 4.0 not found, OTR support not enabled])])])
|
||||
|
||||
AM_COND_IF([BUILD_OTR], [AC_DEFINE([HAVE_LIBOTR], [1], [Have libotr])])
|
||||
fi
|
||||
|
||||
dnl feature: omemo
|
||||
AM_CONDITIONAL([BUILD_OMEMO], [false])
|
||||
if test "x$enable_omemo" != xno; then
|
||||
AM_CONDITIONAL([BUILD_OMEMO], [true])
|
||||
PKG_CHECK_MODULES([libsignal], [libsignal-protocol-c >= 2.3.2],
|
||||
[LIBS="-lsignal-protocol-c $LIBS"],
|
||||
[AC_MSG_NOTICE([libsignal >= 2.3.2 not found, checking for libsignal 2.3.x...])
|
||||
PKG_CHECK_MODULES([libsignal], [libsignal-protocol-c >= 2.3.0],
|
||||
[LIBS="-lsignal-protocol-c $LIBS"
|
||||
AC_DEFINE([HAVE_LIBSIGNAL_LT_2_3_2], [1], [Have libsignal-protocol-c < 2.3.2])],
|
||||
[AM_CONDITIONAL([BUILD_OMEMO], [false])
|
||||
AS_IF([test "x$enable_omemo" = xyes],
|
||||
[AC_MSG_ERROR([libsignal-protocol-c is required for OMEMO support])],
|
||||
[AC_MSG_NOTICE([libsignal-protocol-c not found, OMEMO support not enabled])])])])
|
||||
[AC_MSG_NOTICE([libsignal-protocol-c >= 2.3.2 not found, OMEMO support not enabled])])
|
||||
|
||||
AC_CHECK_LIB([gcrypt], [gcry_md_extract],
|
||||
[LIBS="-lgcrypt $LIBS"],
|
||||
@ -329,6 +323,7 @@ if test "x$enable_omemo" != xno; then
|
||||
AM_COND_IF([BUILD_OMEMO], [AC_DEFINE([HAVE_OMEMO], [1], [Have OMEMO])])
|
||||
fi
|
||||
|
||||
dnl feature: themes
|
||||
AS_IF([test "x$with_themes" = xno],
|
||||
[THEMES_INSTALL="false"],
|
||||
[THEMES_INSTALL="true"])
|
||||
@ -338,11 +333,10 @@ AS_IF([test "x$with_themes" = xno -o "x$with_themes" = xyes -o "x$with_themes" =
|
||||
AC_SUBST(THEMES_PATH)
|
||||
AM_CONDITIONAL([THEMES_INSTALL], "$THEMES_INSTALL")
|
||||
|
||||
ICONS_PATH='${pkgdatadir}/icons'
|
||||
AC_SUBST(ICONS_PATH)
|
||||
## Tests
|
||||
|
||||
### cmocka is required only for tests, profanity shouldn't be linked with it
|
||||
### TODO: pass cmocka_CFLAGS and cmocka_LIBS to Makefile.am
|
||||
# cmocka is required only for tests, profanity shouldn't be linked with it
|
||||
# TODO: pass cmocka_CFLAGS and cmocka_LIBS to Makefile.am
|
||||
PKG_CHECK_MODULES([cmocka], [cmocka], [],
|
||||
[AC_MSG_NOTICE([cmocka is not found, will not be able to run tests])])
|
||||
|
||||
@ -353,43 +347,42 @@ AM_CONDITIONAL([HAVE_EXPECT], [false])
|
||||
AC_CHECK_LIB([expect], [exp_expectl], [AM_CONDITIONAL([HAVE_EXPECT], [true])],
|
||||
[AC_MSG_NOTICE([libexpect not found, will not be able to run functional tests])])
|
||||
|
||||
### Check for ncursesw/ncurses.h first, Arch linux uses ncurses.h for ncursesw
|
||||
AC_CHECK_HEADERS([ncursesw/ncurses.h], [], [])
|
||||
AC_CHECK_HEADERS([ncurses.h], [], [])
|
||||
AC_CHECK_HEADERS([curses.h], [], [])
|
||||
|
||||
### Default parameters
|
||||
## Default parameters
|
||||
AM_CFLAGS="-Wall -Wno-deprecated-declarations -std=gnu99"
|
||||
AM_LDFLAGS="$AM_LDFLAGS -export-dynamic"
|
||||
|
||||
AS_IF([test "x$PACKAGE_STATUS" = xdevelopment],
|
||||
[AM_CFLAGS="$AM_CFLAGS -Wunused -Werror"])
|
||||
AS_IF([test "x$PLATFORM" = xosx],
|
||||
[AM_CFLAGS="$AM_CFLAGS -Qunused-arguments"])
|
||||
AM_LDFLAGS="$AM_LDFLAGS -export-dynamic"
|
||||
AM_CPPFLAGS="$AM_CPPFLAGS $glib_CFLAGS $gio_CFLAGS $curl_CFLAGS $libnotify_CFLAGS $PYTHON_CPPFLAGS ${GTK_CFLAGS} ${SQLITE_CFLAGS}"
|
||||
AM_CPPFLAGS="$AM_CPPFLAGS -DTHEMES_PATH=\"\\\"$THEMES_PATH\\\"\" -DICONS_PATH=\"\\\"$ICONS_PATH\\\"\" -DGLOBAL_PYTHON_PLUGINS_PATH=\"\\\"$GLOBAL_PYTHON_PLUGINS_PATH\\\"\" -DGLOBAL_C_PLUGINS_PATH=\"\\\"$GLOBAL_C_PLUGINS_PATH\\\"\""
|
||||
LIBS="$glib_LIBS $gio_LIBS $curl_LIBS $libnotify_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_LDFLAGS ${GTK_LIBS} ${SQLITE_LIBS} $LIBS"
|
||||
|
||||
AM_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS $glib_CFLAGS $gio_CFLAGS $curl_CFLAGS ${SQLITE_CFLAGS}"
|
||||
AM_CFLAGS="$AM_CFLAGS $libnotify_CFLAGS ${GTK_CFLAGS} $PYTHON_CPPFLAGS" dnl https://bugs.python.org/issue15018
|
||||
AM_CFLAGS="$AM_CFLAGS -DTHEMES_PATH=\"\\\"$THEMES_PATH\\\"\" -DICONS_PATH=\"\\\"$ICONS_PATH\\\"\" -DGLOBAL_PYTHON_PLUGINS_PATH=\"\\\"$GLOBAL_PYTHON_PLUGINS_PATH\\\"\" -DGLOBAL_C_PLUGINS_PATH=\"\\\"$GLOBAL_C_PLUGINS_PATH\\\"\""
|
||||
LIBS="$glib_LIBS $gio_LIBS $PTHREAD_LIBS $curl_LIBS $libnotify_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_LDFLAGS ${GTK_LIBS} ${SQLITE_LIBS} $LIBS"
|
||||
|
||||
AC_SUBST(AM_LDFLAGS)
|
||||
AC_SUBST(AM_CFLAGS)
|
||||
AC_SUBST(AM_CPPFLAGS)
|
||||
|
||||
### Checks for library functions.
|
||||
AC_CHECK_FUNCS([atexit memset strdup strstr])
|
||||
|
||||
## Output
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
||||
|
||||
echo ""
|
||||
echo "PLATFORM : $host_os"
|
||||
echo "PACKAGE_STATUS : $PACKAGE_STATUS"
|
||||
echo "AM_CFLAGS : $AM_CFLAGS"
|
||||
echo "AM_CPPFLAGS : $AM_CPPFLAGS"
|
||||
echo "AM_LDFLAGS : $AM_LDFLAGS"
|
||||
echo "LIBS : $LIBS"
|
||||
echo "Install themes : $THEMES_INSTALL"
|
||||
echo "Themes path : $THEMES_PATH"
|
||||
echo "Icons path : $ICONS_PATH"
|
||||
echo "Global Python plugins path : $GLOBAL_PYTHON_PLUGINS_PATH"
|
||||
echo "Global C plugins path : $GLOBAL_C_PLUGINS_PATH"
|
||||
echo ""
|
||||
echo "Now you can run \`make' to build profanity"
|
||||
AC_MSG_NOTICE([Summary of build options:
|
||||
PLATFORM : $target_os
|
||||
PACKAGE_STATUS : $PACKAGE_STATUS
|
||||
LIBS : $LIBS
|
||||
Install themes : $THEMES_INSTALL
|
||||
Themes path : $THEMES_PATH
|
||||
Icons path : $ICONS_PATH
|
||||
Global Python plugins path : $GLOBAL_PYTHON_PLUGINS_PATH
|
||||
Global C plugins path : $GLOBAL_C_PLUGINS_PATH
|
||||
CFLAGS : $AM_CFLAGS
|
||||
CPPFLAGS : $AM_CPPFLAGS
|
||||
LDFLAGS : $AM_LDFLAGS
|
||||
LIBS : $LIBS
|
||||
|
||||
Run `make' to build profanity])
|
||||
|
||||
dnl vim: expandtab:ts=4:sts=4:sw=4
|
||||
|
@ -68,15 +68,9 @@ identity_key_store_new(identity_key_store_t* identity_key_store)
|
||||
identity_key_store->public = NULL;
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBSIGNAL_LT_2_3_2
|
||||
int
|
||||
load_session(signal_buffer** record, const signal_protocol_address* address,
|
||||
void* user_data)
|
||||
#else
|
||||
int
|
||||
load_session(signal_buffer** record, signal_buffer** user_record,
|
||||
const signal_protocol_address* address, void* user_data)
|
||||
#endif
|
||||
{
|
||||
GHashTable* session_store = (GHashTable*)user_data;
|
||||
GHashTable* device_store = NULL;
|
||||
@ -124,17 +118,11 @@ get_sub_device_sessions(signal_int_list** sessions, const char* name,
|
||||
return SG_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBSIGNAL_LT_2_3_2
|
||||
int
|
||||
store_session(const signal_protocol_address* address, uint8_t* record,
|
||||
size_t record_len, void* user_data)
|
||||
#else
|
||||
int
|
||||
store_session(const signal_protocol_address* address,
|
||||
uint8_t* record, size_t record_len,
|
||||
uint8_t* user_record, size_t user_record_len,
|
||||
void* user_data)
|
||||
#endif
|
||||
{
|
||||
GHashTable* session_store = (GHashTable*)user_data;
|
||||
GHashTable* device_store = NULL;
|
||||
|
@ -68,11 +68,7 @@ void identity_key_store_new(identity_key_store_t* identity_key_store);
|
||||
* @param address the address of the remote client
|
||||
* @return 1 if the session was loaded, 0 if the session was not found, negative on failure
|
||||
*/
|
||||
#ifdef HAVE_LIBSIGNAL_LT_2_3_2
|
||||
int load_session(signal_buffer** record, const signal_protocol_address* address, void* user_data);
|
||||
#else
|
||||
int load_session(signal_buffer** record, signal_buffer** user_record, const signal_protocol_address* address, void* user_data);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Returns all known devices with active sessions for a recipient
|
||||
@ -94,11 +90,7 @@ int get_sub_device_sessions(signal_int_list** sessions, const char* name, size_t
|
||||
* @param record_len length of the serialized session record
|
||||
* @return 0 on success, negative on failure
|
||||
*/
|
||||
#ifdef HAVE_LIBSIGNAL_LT_2_3_2
|
||||
int store_session(const signal_protocol_address* address, uint8_t* record, size_t record_len, void* user_data);
|
||||
#else
|
||||
int store_session(const signal_protocol_address* address, uint8_t* record, size_t record_len, uint8_t* user_record, size_t user_record_len, void* user_data);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Determine whether there is a committed session record for a
|
||||
|
@ -1,231 +0,0 @@
|
||||
/*
|
||||
* otrlibv3.c
|
||||
* vim: expandtab:ts=4:sts=4:sw=4
|
||||
*
|
||||
* Copyright (C) 2012 - 2019 James Booth <boothj5@gmail.com>
|
||||
*
|
||||
* This file is part of Profanity.
|
||||
*
|
||||
* Profanity 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.
|
||||
*
|
||||
* Profanity 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 Profanity. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* In addition, as a special exception, the copyright holders give permission to
|
||||
* link the code of portions of this program with the OpenSSL library under
|
||||
* certain conditions as described in each individual source file, and
|
||||
* distribute linked combinations including the two.
|
||||
*
|
||||
* You must obey the GNU General Public License in all respects for all of the
|
||||
* code used other than OpenSSL. If you modify file(s) with this exception, you
|
||||
* may extend this exception to your version of the file(s), but you are not
|
||||
* obligated to do so. If you do not wish to do so, delete this exception
|
||||
* statement from your version. If you delete this exception statement from all
|
||||
* source files in the program, then also delete it here.
|
||||
*
|
||||
*/
|
||||
#include "config.h"
|
||||
|
||||
#include <libotr/proto.h>
|
||||
#include <libotr/privkey.h>
|
||||
#include <libotr/message.h>
|
||||
|
||||
#include "otr/otr.h"
|
||||
#include "otr/otrlib.h"
|
||||
#include "ui/ui.h"
|
||||
#include "ui/window_list.h"
|
||||
|
||||
OtrlPolicy
|
||||
otrlib_policy(void)
|
||||
{
|
||||
return OTRL_POLICY_ALLOW_V1 | OTRL_POLICY_ALLOW_V2;
|
||||
}
|
||||
|
||||
void
|
||||
otrlib_init_timer(void)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
otrlib_poll(void)
|
||||
{
|
||||
}
|
||||
|
||||
char*
|
||||
otrlib_start_query(void)
|
||||
{
|
||||
return "?OTR?v2? This user has requested an Off-the-Record private conversation. However, you do not have a plugin to support that. See http://otr.cypherpunks.ca/ for more information.";
|
||||
}
|
||||
|
||||
static int
|
||||
cb_display_otr_message(void* opdata, const char* accountname,
|
||||
const char* protocol, const char* username, const char* msg)
|
||||
{
|
||||
cons_show_error("%s", msg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
otrlib_init_ops(OtrlMessageAppOps* ops)
|
||||
{
|
||||
ops->display_otr_message = cb_display_otr_message;
|
||||
}
|
||||
|
||||
ConnContext*
|
||||
otrlib_context_find(OtrlUserState user_state, const char* const recipient, char* jid)
|
||||
{
|
||||
return otrl_context_find(user_state, recipient, jid, "xmpp", 0, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
otrlib_end_session(OtrlUserState user_state, const char* const recipient, char* jid, OtrlMessageAppOps* ops)
|
||||
{
|
||||
ConnContext* context = otrl_context_find(user_state, recipient, jid, "xmpp",
|
||||
0, NULL, NULL, NULL);
|
||||
|
||||
if (context) {
|
||||
otrl_message_disconnect(user_state, ops, NULL, jid, "xmpp", recipient);
|
||||
}
|
||||
}
|
||||
|
||||
gcry_error_t
|
||||
otrlib_encrypt_message(OtrlUserState user_state, OtrlMessageAppOps* ops, char* jid, const char* const to,
|
||||
const char* const message, char** newmessage)
|
||||
{
|
||||
gcry_error_t err;
|
||||
err = otrl_message_sending(
|
||||
user_state,
|
||||
ops,
|
||||
NULL,
|
||||
jid,
|
||||
"xmpp",
|
||||
to,
|
||||
message,
|
||||
0,
|
||||
newmessage,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
int
|
||||
otrlib_decrypt_message(OtrlUserState user_state, OtrlMessageAppOps* ops, char* jid, const char* const from,
|
||||
const char* const message, char** decrypted, OtrlTLV** tlvs)
|
||||
{
|
||||
return otrl_message_receiving(
|
||||
user_state,
|
||||
ops,
|
||||
NULL,
|
||||
jid,
|
||||
"xmpp",
|
||||
from,
|
||||
message,
|
||||
decrypted,
|
||||
tlvs,
|
||||
NULL,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void
|
||||
otrlib_handle_tlvs(OtrlUserState user_state, OtrlMessageAppOps* ops, ConnContext* context, OtrlTLV* tlvs, GHashTable* smp_initiators)
|
||||
{
|
||||
NextExpectedSMP nextMsg = context->smstate->nextExpected;
|
||||
OtrlTLV* tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP1);
|
||||
if (tlv) {
|
||||
if (nextMsg != OTRL_SMP_EXPECT1) {
|
||||
otrl_message_abort_smp(user_state, ops, NULL, context);
|
||||
} else {
|
||||
ProfChatWin* chatwin = wins_get_chat(context->username);
|
||||
if (chatwin) {
|
||||
chatwin_otr_smp_event(chatwin, PROF_OTR_SMP_INIT, NULL);
|
||||
}
|
||||
g_hash_table_insert(smp_initiators, strdup(context->username), strdup(context->username));
|
||||
}
|
||||
}
|
||||
tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP1Q);
|
||||
if (tlv) {
|
||||
if (nextMsg != OTRL_SMP_EXPECT1) {
|
||||
otrl_message_abort_smp(user_state, ops, NULL, context);
|
||||
} else {
|
||||
ProfChatWin* chatwin = wins_get_chat(context->username);
|
||||
if (chatwin) {
|
||||
char* question = (char*)tlv->data;
|
||||
char* eoq = memchr(question, '\0', tlv->len);
|
||||
if (eoq) {
|
||||
chatwin_otr_smp_event(chatwin, PROF_OTR_SMP_INIT_Q, question);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP2);
|
||||
if (tlv) {
|
||||
if (nextMsg != OTRL_SMP_EXPECT2) {
|
||||
otrl_message_abort_smp(user_state, ops, NULL, context);
|
||||
} else {
|
||||
context->smstate->nextExpected = OTRL_SMP_EXPECT4;
|
||||
}
|
||||
}
|
||||
tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP3);
|
||||
if (tlv) {
|
||||
if (nextMsg != OTRL_SMP_EXPECT3) {
|
||||
otrl_message_abort_smp(user_state, ops, NULL, context);
|
||||
} else {
|
||||
context->smstate->nextExpected = OTRL_SMP_EXPECT1;
|
||||
ProfChatWin* chatwin = wins_get_chat(context->username);
|
||||
if (chatwin) {
|
||||
if (context->smstate->received_question == 0) {
|
||||
if (context->active_fingerprint->trust && (context->active_fingerprint->trust[0] != '\0')) {
|
||||
chatwin_otr_smp_event(chatwin, PROF_OTR_SMP_SUCCESS, NULL);
|
||||
chatwin_otr_trust(chatwin);
|
||||
} else {
|
||||
chatwin_otr_smp_event(chatwin, PROF_OTR_SMP_SENDER_FAIL, NULL);
|
||||
chatwin_otr_untrust(chatwin);
|
||||
}
|
||||
} else {
|
||||
if (context->smstate->sm_prog_state == OTRL_SMP_PROG_SUCCEEDED) {
|
||||
chatwin_otr_smp_event(chatwin, PROF_OTR_SMP_SUCCESS_Q, NULL);
|
||||
} else {
|
||||
chatwin_otr_smp_event(chatwin, PROF_OTR_SMP_FAIL_Q, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP4);
|
||||
if (tlv) {
|
||||
if (nextMsg != OTRL_SMP_EXPECT4) {
|
||||
otrl_message_abort_smp(user_state, ops, NULL, context);
|
||||
} else {
|
||||
context->smstate->nextExpected = OTRL_SMP_EXPECT1;
|
||||
ProfChatWin* chatwin = wins_get_chat(context->username);
|
||||
if (chatwin) {
|
||||
if (context->active_fingerprint->trust && (context->active_fingerprint->trust[0] != '\0')) {
|
||||
chatwin_otr_smp_event(chatwin, PROF_OTR_SMP_SUCCESS, NULL);
|
||||
chatwin_otr_trust(chatwin);
|
||||
} else {
|
||||
chatwin_otr_smp_event(chatwin, PROF_OTR_SMP_RECEIVER_FAIL, NULL);
|
||||
chatwin_otr_untrust(chatwin);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP_ABORT);
|
||||
if (tlv) {
|
||||
context->smstate->nextExpected = OTRL_SMP_EXPECT1;
|
||||
ProfChatWin* chatwin = wins_get_chat(context->username);
|
||||
if (chatwin) {
|
||||
chatwin_otr_smp_event(chatwin, PROF_OTR_SMP_ABORT, NULL);
|
||||
chatwin_otr_untrust(chatwin);
|
||||
}
|
||||
otr_untrust(context->username);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user