1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-12 14:14:48 +02:00

289 Commits

Author SHA1 Message Date
Emil Velikov 7d88e53182 Bump required zstd to v1.4.0
Bump the requirement to v1.4.0, which means we can remove all the ifdef
guards.

It was released over 6 years ago, with latest release being 1.5.7.

The oldest distributions we target Ubuntu 20.04 and Debian Bullseye,
have 1.4.4 and 1.4.8 respectively.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-03-29 18:39:02 +02:00
LuK1337 b6ef936cca cmake: enable position independent code (PIE)
Fixes the following build error when compiling Fedora 45 RPM:

/usr/bin/ld.bfd: tests/unit/CMakeFiles/tests.dir/tests.cpp.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld.bfd: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status

See: https://cmake.org/cmake/help/latest/prop_tgt/POSITION_INDEPENDENT_CODE.html
     https://cmake.org/cmake/help/latest/policy/CMP0083.html
2026-03-29 18:28:48 +02:00
Sébastien Helleu 106fe6ca7c core: update copyright dates 2026-03-08 10:37:15 +01:00
Emil Velikov 440907e1cd cmake: simplify tests handling
Move the requirement checking and the dummy test where they are used.
Use REQUIRED instead of the manual FOUND check and error handling.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-02-04 22:21:26 +01:00
Emil Velikov 71ef7e286c cmake: remove implicitly enabled cmake policy handling
Whenever cmake_minimum_required() is used, all the policies available in
the specified version are toggled to NEW. Thus we no longer need to
manually change them.

The highest policy - CMP0017 - has been around circa cmake 2.8.4, while
we require 3.x.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-02-04 22:21:26 +01:00
Emil Velikov 2a234b3bfe cmake: reuse CMAKE_DL_LIBS
The token has been available since cmake 3.0 (at least), so might as
well use it instead of our ad-hoc check.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-02-04 22:21:26 +01:00
Emil Velikov 6442b938eb cmake: move zstd/cjson include handling
Move the respective include_directories() stansas to the top-level
cmakefile. While this technically adds them to targets where they are
not needed, there is no harm is having them.

This maskes the find_dependency/use_includes/use_libs more consistent
across the board and helps it stand out where it's forgotten. Fixes for
which will be coming at a later date.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-02-04 22:21:26 +01:00
Emil Velikov 3918efd8e9 cmake: remove CMAKE_REQUIRED_* instances
The tcl ones has not been required for over a decade since commit
ffdba5b24 ("Remove check of Tcl_CreateNamespace in cmake build (not used
any more) (bug #27119)").

While the top-level one, with the EXTRA_LIBS reshuffle/consolidation a
few commits ago.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-02-04 22:21:26 +01:00
Emil Velikov 323ab8810e cmake: consolidate non-linux library handling
Move the handling to the top-level, adding it _once_ to EXTRA_LIBS.
Thus avoiding some duplication across the board.

Note that final handling varies a bit, namely:
 - OpenBSD/intl should be handled via the existing cmake/FindGettext.cmake
 - Darwin/resolv should not be needed since commit e98a32373 ("core: check
   if res_init requires linking with libresolv")
 - the backtrace/execinfo handling has been consolidated and moved

In the unlikely case of unwanted over-linking, the platforms can add
`-Wl,--as-needed` to their linker flags. Something which is strongly
encouraged and has been the default across multiple (linux) distros for
years.

Alternatively, if move quirks are needed they should be handled in a
single place.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-02-04 22:21:26 +01:00
Emil Velikov fc6003c74e cmake: consolidate libm library handling
Move the handling to the top-level, adding it _once_ to EXTRA_LIBS.
Thus avoiding some duplication across the board.

This change technically adds an extra link for the unit tests, which
seemingly was omitted by mistake. Alternatively, the extra over-linking
won't be an issue in practise.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-02-04 22:21:26 +01:00
Emil Velikov ae54c3ef65 cmake: consolidate iconv/gettext library handling
Move the handling to the top-level, adding it _once_ to EXTRA_LIBS.
Thus avoiding some duplication across the board.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-02-04 22:21:25 +01:00
Emil Velikov b38c00bb0d cmake: consolidate zlib/zstd library handling
Move the handling to the top-level, adding it _once_ to EXTRA_LIBS.
Thus avoiding some duplication across the board.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2026-02-04 22:21:25 +01:00
Emil Velikov f48e6ee81d Bump required (lib)gcrypt to v1.8.0
Bump the requirement to v1.8.0, which means we can remove ~70% of the
ifdef guard.

It was released over 8 years ago, with 3 new feature releases since
then and dozen of bugfix releases in the 1.8 branch.

The oldest distributions we target Ubuntu 20.04 and Debian Bullseye,
have 1.8.5 and 1.8.7 respectively.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2025-08-31 10:36:20 +02:00
Emil Velikov 87eb6cc7e1 Bump required gnutls to v3.6.3
Bump the requirement to v3.6.3, which means we can remove the final
ifdef guard and all the builds have TLS 1.3 support.

It was released over 7 years ago, with 2 new feature releases since
then and dozen of bugfix releases in the 3.6 branch.

The oldest distributions we target Ubuntu 20.04 and Debian Bullseye,
have 3.6.13 and 3.7.1 respectively.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2025-08-31 10:36:20 +02:00
Emil Velikov 8c372c0c01 Bump required (lib)curl to v7.68.0
Bump the requirement to v7.68.0, which means we can remove ~70% of the
ifdef guards. It was released over 5 years ago, with 30+ new curl
releases since then and dozens of CVEs fixed.

The oldest distributions we target Ubuntu 20.04 and Debian Bullseye,
have 7.68.0 and 7.74.0 respectively.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2025-08-31 10:36:20 +02:00
Sébastien Helleu 75c01e8c8d core: fix build on FreeBSD (issue #2251)
Check if the resolv library is found before checking if it has res_init.
2025-05-25 09:44:06 +02:00
Albert Lee 7fb3ca6686 core: always define _XPG4_2 and __EXTENSIONS__ on Solaris/illumos 2025-05-25 09:06:51 +02:00
Albert Lee e98a32373e core: check if res_init requires linking with libresolv 2025-05-25 09:05:42 +02:00
Albert Lee 69d3787b5e core: improve support for non-macro htonll and htobe64 2025-05-25 09:03:48 +02:00
Sébastien Helleu 1efa9d6b08 core: reactivate CMake tests in root build directory (issue #1462)
This fixes the command `ctest` executed in the root build directory.
It was removed by accident in commit 68d87f2b80.
2025-05-11 10:15:08 +02:00
Sébastien Helleu 85f565f6c1 core: add appropriate compiler/linker options for code coverage with clang 2025-05-07 13:20:44 +02:00
Sébastien Helleu 68d87f2b80 tests: add fuzz testing on core functions (issue #1462)
This commit introduces fuzz testing, for now on core functions, with 4 new
targets that are built on demand with CMake option `ENABLE_FUZZ` (build of
these tests is disabled by default):

- weechat_core_calc_fuzzer
- weechat_core_crypto_fuzzer
- weechat_core_string_fuzzer
- weechat_core_utf8_fuzzer
2025-05-05 19:12:00 +02:00
Sébastien Helleu 3a6ac9ee76 all: add SPDX license tag 2025-03-31 07:49:26 +02:00
Sébastien Helleu d8987a1678 all: replace Copyright lines by SPDX copyright tag 2025-03-30 14:47:12 +02:00
Joe Hermaszewski 6b19987e7f spell: allow overriding dictionaries locations
Works for aspell and myspell (hunspell) when using enchant.
2025-03-16 15:58:23 +01:00
Sébastien Helleu 547e2b934e core: update copyright dates 2025-02-01 23:13:18 +01:00
Sébastien Helleu c26ff6c51b core: fix detection of dl library (closes #2218)
This fixes the linking to curl and ncurses on macOS.
2024-12-21 18:06:59 +01:00
Sébastien Helleu 6dccc3181a build: remove our own Ruby detection and rely on CMake detection, require CMake 3.18 (issue #1156)
This fixes the detection of Ruby on macOS 14.
2024-10-19 11:35:30 +02:00
Sébastien Helleu 0f8fede68a core: add include directories for gettext libintl
This fixes the macOS build in CI, failing on missing header `libintl.h`.
2024-10-13 17:06:34 +02:00
Emil Velikov de4231c842 Bump required gnutls to v3.3.0
Bump the requirement to v3.3.0 as available in Ubuntu 16.04 (3.4.10) and
Debian 10 (3.6.7). It was released around 10 years ago and any remotely
supported distribution has newer version.

As result, we can remove hundred+ lines of #ifdef spaghetti code.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-13 13:55:16 +02:00
Emil Velikov 19cb459685 cmake: use pkg_check_modules() for GnuTLS
Remove the local cmake file and associated hacks used to manage GnuTLS.
This gives us less build-system glue code and makes it easier to enforce
a minimum version for GnuTLS.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-13 13:55:12 +02:00
Emil Velikov 51dfb1fb78 Bump required (lib)curl to v7.47.0
Bump the requirement to v7.47.0 as available in Ubuntu 16.04 (7.47.0)
and Debian 10 (7.64.0). It was released around 9 years ago and any
remotely supported distribution has newer version.

As result we can adjust the tools/check_curl_symbols.py script to omit
the ~70% of the guards and simplify the code base.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-13 13:33:47 +02:00
Emil Velikov fec71ae30c cmake: use pkg_check_modules() for cURL
The cURL project has provided a pkg-config file for well over a decade
now. Just use that instead of the cmake one, since the latter also
checks for misc curl components, unusual library names (libcurl_imp)
which is not something we need.

In addition, this will make enforcing minimum version much easier.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-10-13 13:33:47 +02:00
Emil Velikov 66f9b1762a cmake: remove unused HAVE_GCRYPT
Seemingly unused for ~12 years, since commit a99d13601 ("core: add new
plugin "script" (scripts manager, replacing scripts weeget.py and
script.pl)")

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-09-29 19:10:52 +02:00
Emil Velikov d42d837924 build: remove CMake variable "STATIC_LIBS"
With the circular dependency resolved, we no longer need this variable.
Add the respective objects directly, in the same order as seen in the
tests.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-09-29 10:01:10 +02:00
Emil Velikov fc7b00562c build: require CMake 3.12, resolve circular dependency
In order to resolve the circular dependency, we need to annotate the
respective static libraries as "object" libraries.

This requires cmake 3.12, where Debian 10 (old old stable) and Ubuntu
20.04 have 3.13 and 3.16 respectively.

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2024-09-29 10:00:50 +02:00
Sébastien Helleu 071f8f87e7 core: add command line option --build-info / -i to display information about build options (closes #449) 2024-08-12 21:36:17 +02:00
Sébastien Helleu bf4e47b9f2 core: fix detection of libgcrypt ≥ 1.11 (debian #1071960)
Use pkg-config to detect libgcrypt, since command `libgcrypt-config` is not
available any more.

Remove patches for Debian/Raspbian Buster and Ubuntu Bionic: detection of
libgcrypt don't work any more with version 1.8.4 on Debian Buster and 1.8.1 on
Ubuntu Bionic (both versions don't provide the file `libgcrypt.pc`).
2024-05-27 08:15:59 +02:00
Sébastien Helleu a86c329b4c core: rename and convert AUTHORS.adoc to AUTHORS.md 2024-05-26 10:27:30 +02:00
Sébastien Helleu d0d1d2e4b9 core: rename and convert README.adoc to README.md 2024-05-26 10:27:30 +02:00
Sébastien Helleu 5d0784bd52 core: rename and convert Contributing.adoc to CONTRIBUTING.md 2024-05-26 10:27:30 +02:00
Sébastien Helleu 3653f4b7a2 core: rename and convert ReleaseNotes.adoc to UPGRADING.md 2024-05-26 10:27:25 +02:00
Sébastien Helleu 8260421767 core: rename and convert ChangeLog.adoc to CHANGELOG.md 2024-05-26 10:26:23 +02:00
Sébastien Helleu cb6ecb6818 core: check if malloc.h is present, independently of function malloc_trim 2024-03-06 23:09:00 +01:00
Sébastien Helleu 68598de958 core: check that function malloc_trim is available, display an error if not available 2024-03-06 22:36:37 +01:00
Sébastien Helleu 8971fc069a relay: add "api" protocol (HTTP REST API) (issue #2066) 2024-02-01 21:38:49 +01:00
Sébastien Helleu eecb2a997e core: update copyright dates 2024-01-01 22:29:58 +01:00
Sébastien Helleu 1d6e1fd752 core: make libintl.h required if CMake option ENABLE_NLS is enabled (issue #2031) 2023-10-15 14:58:26 +02:00
Sébastien Helleu feb5ee8886 core: fix build error if CMake option ENABLE_NLS is turned to off or if required dependencies are not found (closes #2026) 2023-10-05 19:05:02 +02:00
Sébastien Helleu 6bd0c63192 core: make zstd dependency optional (closes #2024) 2023-10-01 16:36:32 +02:00