From adc68bd4b1037302ad745feb58983ae5ad11637a Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Thu, 17 Feb 2022 15:47:38 +0100 Subject: [PATCH 01/12] build: add vim modeline --- configure.ac | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 4a6a8ba2..58655534 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,3 @@ -# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_INIT([profanity],[0.12.0],[jubalh@iodoru.org]) @@ -393,3 +392,5 @@ 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" + +dnl vim: expandtab:ts=4:sts=4:sw=4 From 201ef7394a81bbdb6c2936170ca8d625e7d573d6 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Thu, 17 Feb 2022 16:46:14 +0100 Subject: [PATCH 02/12] build: use AC_MSG_NOTICE instead of echo --- configure.ac | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/configure.ac b/configure.ac index 58655534..1ce4d647 100644 --- a/configure.ac +++ b/configure.ac @@ -378,19 +378,20 @@ AC_CHECK_FUNCS([atexit memset strdup strstr]) 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 : $host_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 + +Now you can run \`make' to build profanity]) dnl vim: expandtab:ts=4:sts=4:sw=4 From c79ba8f80ebeb68e1b864331958cac2c24fc1a13 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Thu, 17 Feb 2022 18:59:41 +0100 Subject: [PATCH 03/12] build: define min autotools version and set url --- configure.ac | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 1ce4d647..b9b4aca1 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,7 @@ # 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]) @@ -128,7 +129,7 @@ else fi # threading -ACX_PTHREAD([], [AC_MSG_ERROR([pthread is required])]) +AX_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" ]) From 9cb6fc0d237370f73815d07953414a85f2c1842f Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Thu, 17 Feb 2022 19:59:04 +0100 Subject: [PATCH 04/12] build: change comments --- configure.ac | 58 +++++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/configure.ac b/configure.ac index b9b4aca1..5834fcd8 100644 --- a/configure.ac +++ b/configure.ac @@ -8,14 +8,11 @@ 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 +## Determine platform AC_CANONICAL_HOST PLATFORM="unknown" AS_CASE([$host_os], @@ -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], @@ -70,7 +67,7 @@ AC_ARG_ENABLE([icons-and-clipboard], ### 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 +98,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,13 +125,15 @@ else fi fi -# threading +### Check for dependencies + +## Threading AX_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=""]) @@ -151,7 +150,7 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([[ [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([${XMPP_LIB} 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], @@ -164,7 +163,7 @@ PKG_CHECK_MODULES([ncursesw], [ncursesw], AM_CPPFLAGS="$AM_CPPFLAGS $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,22 +182,22 @@ 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 +## 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])]) + [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 for profanity])]) + [AC_MSG_ERROR([libgio-2.0 from glib-2.0 is required])]) -### Check for other profanity dependencies +## 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])])]) + [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 for profanity])]) + [AC_MSG_ERROR([sqlite3 3.22.0 or higher is required])]) AS_IF([test "x$enable_icons_and_clipboard" != xno], [PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.24.0], @@ -209,6 +208,7 @@ AS_IF([test "x$enable_icons_and_clipboard" != xno], [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 readline AS_IF([test "x$PLATFORM" = xosx], [AC_PATH_PROG([BREW], [brew], ["failed"], [$PATH:/opt/homebrew/bin:/usr/local/bin]) @@ -236,10 +236,12 @@ AS_IF([test "x$PLATFORM" = xosx], [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 + +## 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], @@ -341,8 +343,8 @@ AM_CONDITIONAL([THEMES_INSTALL], "$THEMES_INSTALL") ICONS_PATH='${pkgdatadir}/icons' AC_SUBST(ICONS_PATH) -### 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,12 +355,12 @@ 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 +## 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" AS_IF([test "x$PACKAGE_STATUS" = xdevelopment], [AM_CFLAGS="$AM_CFLAGS -Wunused -Werror"]) @@ -373,7 +375,7 @@ AC_SUBST(AM_LDFLAGS) AC_SUBST(AM_CFLAGS) AC_SUBST(AM_CPPFLAGS) -### Checks for library functions. +## Checks for library functions. AC_CHECK_FUNCS([atexit memset strdup strstr]) AC_CONFIG_FILES([Makefile]) From 7a6a37e71764b7e166692163a6f17c3da9489159 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Thu, 17 Feb 2022 20:26:23 +0100 Subject: [PATCH 05/12] build: group related parts better together --- configure.ac | 107 ++++++++++++++++++++++++++++----------------------- 1 file changed, 58 insertions(+), 49 deletions(-) diff --git a/configure.ac b/configure.ac index 5834fcd8..b4b107dd 100644 --- a/configure.ac +++ b/configure.ac @@ -65,6 +65,28 @@ 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 @@ -125,14 +147,6 @@ else fi fi -### Check for dependencies - -## Threading -AX_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 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])], @@ -182,31 +196,10 @@ 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])]) -PKG_CHECK_MODULES([gio], [gio-2.0], [], - [AC_MSG_ERROR([libgio-2.0 from glib-2.0 is required])]) - -## 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 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])]) - -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], @@ -236,7 +229,22 @@ AS_IF([test "x$PLATFORM" = xosx], [AC_CHECK_LIB([readline], [main], [], [AC_MSG_ERROR([libreadline is required for profanity])])]) -## Check for optional dependencies +## 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 @@ -260,6 +268,8 @@ AS_IF([test "x$PLATFORM" = xosx], [AC_MSG_ERROR([libnotify is required but does not exist])], [AC_MSG_NOTICE([libnotify support will be disabled])])])])]) +dnl feature: xscreensaver + # TODO: rewrite this if test "x$with_xscreensaver" = xyes; then AC_CHECK_LIB([Xss], [main], [], @@ -273,6 +283,7 @@ elif test "x$with_xscreensaver" = x; then [AC_MSG_NOTICE([libX11 not found, falling back to profanity auto-away])]) fi +dnl feature: pgp AM_CONDITIONAL([BUILD_PGP], [false]) if test "x$enable_pgp" != xno; then AC_CHECK_LIB([gpgme], [main], @@ -287,6 +298,7 @@ if test "x$enable_pgp" != xno; then [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]) @@ -307,6 +319,7 @@ if test "x$enable_otr" != xno; then [AC_MSG_NOTICE([libotr not found, otr encryption support not enabled])])]) fi +dnl feature: omemo AM_CONDITIONAL([BUILD_OMEMO], [false]) if test "x$enable_omemo" != xno; then AM_CONDITIONAL([BUILD_OMEMO], [true]) @@ -331,6 +344,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"]) @@ -340,11 +354,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])]) @@ -355,29 +368,25 @@ 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 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_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS" 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" +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 @@ -395,6 +404,6 @@ CPPFLAGS : $AM_CPPFLAGS LDFLAGS : $AM_LDFLAGS LIBS : $LIBS -Now you can run \`make' to build profanity]) +Run `make' to build profanity]) dnl vim: expandtab:ts=4:sts=4:sw=4 From 1856c1e7fcb40aaa8a8ee19dbcac7818941c4b11 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Thu, 17 Feb 2022 20:44:47 +0100 Subject: [PATCH 06/12] build: remove xmpp_lib variable Since cad934b9a069bb2c3c417d4efc64dc25fb9814b7 we only support libstrophe. libmesode is deprecated. --- configure.ac | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index b4b107dd..2246adbf 100644 --- a/configure.ac +++ b/configure.ac @@ -149,10 +149,9 @@ fi ## 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 @@ -162,7 +161,7 @@ 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 PKG_CHECK_MODULES([ncursesw], [ncursesw], From 3f8720d70f6b4497ef2369a1e7e9b8fbebb4f5bd Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Thu, 17 Feb 2022 20:57:52 +0100 Subject: [PATCH 07/12] build: remove support for old libsignal Remove support for libsignal-protocol-c < 2.3.2. Debian 10 uses 2.3.2, Debian 11 and 12 use 2.3.3. openSUSE from 15.2 onward uses 2.3.3. Fedora since 28 uses 2.3.2. We should be good. --- configure.ac | 9 +-------- src/omemo/store.c | 12 ------------ src/omemo/store.h | 8 -------- 3 files changed, 1 insertion(+), 28 deletions(-) diff --git a/configure.ac b/configure.ac index 2246adbf..f625c9c2 100644 --- a/configure.ac +++ b/configure.ac @@ -324,14 +324,7 @@ 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"], 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 From 33106ecf9c6ebc50878476f734c9d4dddf103929 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 18 Feb 2022 10:09:29 +0100 Subject: [PATCH 08/12] build: remove otr3 support All the distributions I checked have libotr 4.1.1 now. --- Makefile.am | 10 +- configure.ac | 22 ++--- src/otr/otrlibv3.c | 231 --------------------------------------------- 3 files changed, 9 insertions(+), 254 deletions(-) delete mode 100644 src/otr/otrlibv3.c 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.ac b/configure.ac index f625c9c2..27715996 100644 --- a/configure.ac +++ b/configure.ac @@ -299,23 +299,17 @@ 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 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 - * - * 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 . - * - * 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 -#include -#include - -#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); - } -} From 38ff3699b4077af0abc50a8039c704eac9f04bbe Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 18 Feb 2022 11:00:01 +0100 Subject: [PATCH 09/12] build: use CFLAGS instead of CPPFLAGS where possible OSX seems to need CPPFLAGS for readline. --- configure.ac | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index 27715996..40c93c9f 100644 --- a/configure.ac +++ b/configure.ac @@ -173,7 +173,7 @@ 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 @@ -221,7 +221,7 @@ 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)])], @@ -291,7 +291,7 @@ 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])])]) @@ -363,9 +363,9 @@ AS_IF([test "x$PACKAGE_STATUS" = xdevelopment], AS_IF([test "x$PLATFORM" = xosx], [AM_CFLAGS="$AM_CFLAGS -Qunused-arguments"]) -AM_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS" -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\\\"\"" +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) From 28a9605a1fd4b1391d93612fa43a79b2d6542e3f Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 18 Feb 2022 17:35:30 +0100 Subject: [PATCH 10/12] build: use PKG_CHECK_MODULES to check for xscreensaver --- configure.ac | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/configure.ac b/configure.ac index 40c93c9f..b299106a 100644 --- a/configure.ac +++ b/configure.ac @@ -268,19 +268,12 @@ AS_IF([test "x$PLATFORM" = xosx], [AC_MSG_NOTICE([libnotify support will be disabled])])])])]) dnl feature: xscreensaver - -# 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 +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]) From fc13a69f43508e4586167d282827bc813ceea605 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 18 Feb 2022 17:36:03 +0100 Subject: [PATCH 11/12] build: use target instead of host If I understand https://www.gnu.org/software/autoconf/manual/autoconf-2.68/html_node/Canonicalizing.html correctly then we should use target and not host. Will only matter in case of crosscompiling. --- configure.ac | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index b299106a..d260ce50 100644 --- a/configure.ac +++ b/configure.ac @@ -13,9 +13,9 @@ LT_INIT AC_SYS_LARGEFILE ## Determine platform -AC_CANONICAL_HOST +AC_CANONICAL_TARGET PLATFORM="unknown" -AS_CASE([$host_os], +AS_CASE([$target_os], [freebsd*], [PLATFORM="freebsd"], [netbsd*], [PLATFORM="netbsd"], [openbsd*], [PLATFORM="openbsd"], @@ -370,7 +370,7 @@ AC_CONFIG_FILES([Makefile]) AC_OUTPUT AC_MSG_NOTICE([Summary of build options: -PLATFORM : $host_os +PLATFORM : $target_os PACKAGE_STATUS : $PACKAGE_STATUS LIBS : $LIBS Install themes : $THEMES_INSTALL From 9a8e220770eab402f5940fd6b7a4e80a6bfab919 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 18 Feb 2022 17:57:08 +0100 Subject: [PATCH 12/12] Remove configure-plugins helper script We don't really need this. --- configure-plugins | 3 --- 1 file changed, 3 deletions(-) delete mode 100755 configure-plugins 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'