Releases: daixtrose/libmodbus-cpp
Releases · daixtrose/libmodbus-cpp
Release list
v1.7.1
chore: bump version to 1.7.1 for container fix rebuild The cross-build container image was fixed to properly extract sysroot dev packages and remove host glibc 2.39 headers that shadowed the sysroot. This rebuild ensures aarch64 binaries require max GLIBC_2.34.
v1.7.0
feat: Bookworm sysroot support for aarch64 cross-compilation (v1.7.0) - Pass CMAKE_SYSROOT to autotools ExternalProject via CFLAGS/LDFLAGS so libmodbus links against the target libc (glibc 2.36) instead of the host's (glibc 2.39) - Toolchain: auto-detect /opt/bookworm-arm64-sysroot if present - CI: switch aarch64 jobs to ghcr.io/daixtrose/cross-build-bookworm-arm64 container (Bookworm sysroot + GCC 14 + CMake 4.2.3)
v1.6.0
v1.5.0
Fix Windows EINVAL on connect: override FD_SETSIZE for libmodbus libmodbus checks 'if (socket >= FD_SETSIZE)' and returns EINVAL. On Linux FD_SETSIZE=1024 and fd numbers are small, so this works. On Windows FD_SETSIZE=64 and SOCKET handles are opaque kernel values that are typically >> 64, causing every connection attempt to fail with 'Invalid argument'. Fix: pass CPPFLAGS=-DFD_SETSIZE=4096 when building libmodbus on Windows so the check no longer rejects valid socket handles.
v1.4.0
fix: Windows MSYS2 build — pre-run autoreconf in CI step, bump to v1.4.0 Root cause: ExternalProject_Add runs commands via cmake -P / execute_process(), which creates processes in the Windows/MinGW context, not the MSYS2 context. This breaks aclocal's MSYS2 path resolution (progtest.m4 not found at the doubled MSYS2 root path /a/_temp/msys64/usr/share/aclocal/). Fix: Run autoreconf in a CI workflow step (proper MSYS2 shell context) between configure and build. ExternalProject only runs ./configure, make, make install. The autotools invocation (autoreconf/aclocal/automake) is cleanly separated from the CMake/ExternalProject build.
v1.3.0
v1.2.0
Release v1.2.0 - Standard DEB/RPM naming with architecture triplet - DEB/RPM packages in releases