about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am10
-rwxr-xr-xconfigure-plugins3
-rw-r--r--configure.ac239
-rw-r--r--src/omemo/store.c12
-rw-r--r--src/omemo/store.h8
-rw-r--r--src/otr/otrlibv3.c231
6 files changed, 117 insertions, 386 deletions
diff --git a/Makefile.am b/Makefile.am
index d32ae9e9..997607e0 100644
--- a/Makefile.am
+++ b/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)
diff --git a/configure-plugins b/configure-plugins
deleted file mode 100755
index d0d9f98a..00000000
--- a/configure-plugins
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-./configure --enable-python-plugins --enable-c-plugins CFLAGS='-g -O0' CXXFLAGS='-g -O0'
diff --git a/configure.ac b/configure.ac
index 4a6a8ba2..d260ce50 100644
--- a/configure.ac
+++ b/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])])])
+        [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
diff --git a/src/omemo/store.c b/src/omemo/store.c
index d34ebf30..e0fc41ed 100644
--- a/src/omemo/store.c
+++ b/src/omemo/store.c
@@ -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;
diff --git a/src/omemo/store.h b/src/omemo/store.h
index f84db5ed..bafe2576 100644
--- a/src/omemo/store.h
+++ b/src/omemo/store.h
@@ -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
diff --git a/src/otr/otrlibv3.c b/src/otr/otrlibv3.c
deleted file mode 100644
index c6e7c275..00000000
--- a/src/otr/otrlibv3.c
+++ /dev/null
@@ -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);
-    }
-}