diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libmodbus | |
Diffstat (limited to 'vcpkg/ports/libmodbus')
| -rw-r--r-- | vcpkg/ports/libmodbus/cflags.diff | 20 | ||||
| -rw-r--r-- | vcpkg/ports/libmodbus/libmodbusConfig.cmake | 27 | ||||
| -rw-r--r-- | vcpkg/ports/libmodbus/library-linkage.diff | 32 | ||||
| -rw-r--r-- | vcpkg/ports/libmodbus/pkgconfig.diff | 23 | ||||
| -rw-r--r-- | vcpkg/ports/libmodbus/portfile.cmake | 38 | ||||
| -rw-r--r-- | vcpkg/ports/libmodbus/ssize_t.diff | 14 | ||||
| -rw-r--r-- | vcpkg/ports/libmodbus/vcpkg.json | 14 |
7 files changed, 168 insertions, 0 deletions
diff --git a/vcpkg/ports/libmodbus/cflags.diff b/vcpkg/ports/libmodbus/cflags.diff new file mode 100644 index 0000000..854aca2 --- /dev/null +++ b/vcpkg/ports/libmodbus/cflags.diff @@ -0,0 +1,20 @@ +diff --git a/configure.ac b/configure.ac +index 920612f..06d5dfa 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -147,6 +147,7 @@ AC_CHECK_DECLS([TIOCSRS485], [], [], [[#include <sys/ioctl.h>]]) + # Check for RTS flags + AC_CHECK_DECLS([TIOCM_RTS], [], [], [[#include <sys/ioctl.h>]]) + ++test -n "$WARNING_CFLAGS" || \ + WARNING_CFLAGS="-Wall \ + -Wmissing-declarations -Wmissing-prototypes \ + -Wnested-externs -Wpointer-arith \ +@@ -178,6 +179,7 @@ AC_ARG_ENABLE([debug], + [enable_debug=$enableval], + [enable_debug=no]) + ++test -n "$CFLAGS" || \ + AS_IF([test "x$enable_debug" = "xyes"], [ + CFLAGS="-g -O0" + CXXFLAGS="-g -O0" diff --git a/vcpkg/ports/libmodbus/libmodbusConfig.cmake b/vcpkg/ports/libmodbus/libmodbusConfig.cmake new file mode 100644 index 0000000..83aebe4 --- /dev/null +++ b/vcpkg/ports/libmodbus/libmodbusConfig.cmake @@ -0,0 +1,27 @@ +message(WARNING "find_package(modbus) is unofficial. libmodbus provides a pkg-config module: libmodbus") + +if(NOT TARGET modbus) + get_filename_component(VCPKG_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../.." ABSOLUTE) + find_library(Z_VCPKG_MODBUS_RELEASE NAMES modbus PATHS "${VCPKG_IMPORT_PREFIX}/lib" REQUIRED) + find_library(Z_VCPKG_MODBUS_DEBUG NAMES modbus PATHS "${VCPKG_IMPORT_PREFIX}/debug/lib") + mark_as_advanced(Z_VCPKG_MODBUS_RELEASE Z_VCPKG_MODBUS_DEBUG) + add_library(modbus UNKNOWN IMPORTED) + set_target_properties(modbus PROPERTIES + IMPORTED_CONFIGURATIONS "Release" + INTERFACE_INCLUDE_DIRECTORIES "${VCPKG_IMPORT_PREFIX}/include/modbus" + IMPORTED_LOCATION_RELEASE "${Z_VCPKG_MODBUS_RELEASE}" + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" + ) + if(Z_VCPKG_MODBUS_DEBUG) + set_property(TARGET modbus APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug) + set_target_properties(modbus PROPERTIES + IMPORTED_LOCATION_DEBUG "${Z_VCPKG_MODBUS_DEBUG}" + IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C" + ) + endif() + if(WIN32) + set_target_properties(modbus PROPERTIES + INTERFACE_LINK_LIBRARIES "ws2_32" + ) + endif() +endif() diff --git a/vcpkg/ports/libmodbus/library-linkage.diff b/vcpkg/ports/libmodbus/library-linkage.diff new file mode 100644 index 0000000..402363d --- /dev/null +++ b/vcpkg/ports/libmodbus/library-linkage.diff @@ -0,0 +1,32 @@ +diff --git a/configure.ac b/configure.ac +index 9f30d29..29737da 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -120,6 +120,14 @@ AC_C_INLINE + # libtool + AC_PROG_CXX + ++if "$os_win32" = "true"; then ++ if test "$enable_shared" = "yes"; then ++ AC_DEFINE(DLLBUILD, [], [Building a DLL]) ++ else ++ AC_DEFINE(STATIC_LIBMODBUS, [], [Building a static library]) ++ fi ++fi ++ + # Various types + AC_TYPE_INT64_T + AC_TYPE_SIZE_T +diff --git a/src/modbus.h b/src/modbus.h +index fa7ec4a..ae204ce 100644 +--- a/src/modbus.h ++++ b/src/modbus.h +@@ -25,6 +25,8 @@ + # if defined(DLLBUILD) + /* define DLLBUILD when building the DLL */ + # define MODBUS_API __declspec(dllexport) ++# elif defined(STATIC_LIBMODBUS) ++# define MODBUS_API + # else + # define MODBUS_API __declspec(dllimport) + # endif diff --git a/vcpkg/ports/libmodbus/pkgconfig.diff b/vcpkg/ports/libmodbus/pkgconfig.diff new file mode 100644 index 0000000..015d84c --- /dev/null +++ b/vcpkg/ports/libmodbus/pkgconfig.diff @@ -0,0 +1,23 @@ +diff --git a/configure.ac b/configure.ac +index 06d5dfa..f3122ac 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -133,6 +133,8 @@ if test "$os_cygwin" = "false"; then + AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes) + if test "x$HAVE_WINSOCK2_H" = "xyes"; then + LIBS="$LIBS -lws2_32" ++ PC_LIBS_PRIVATE="$PC_LIBS_PRIVATE -lws2_32" ++ AC_SUBST(PC_LIBS_PRIVATE) + AC_SUBST(LIBS) + fi + fi +diff --git a/libmodbus.pc.in b/libmodbus.pc.in +index f1a9cbf..f7b4d08 100644 +--- a/libmodbus.pc.in ++++ b/libmodbus.pc.in +@@ -7,4 +7,5 @@ Name: modbus + Description: Modbus library + Version: @VERSION@ + Libs: -L${libdir} -lmodbus ++Libs.private: @PC_LIBS_PRIVATE@ + Cflags: -I${includedir}/modbus diff --git a/vcpkg/ports/libmodbus/portfile.cmake b/vcpkg/ports/libmodbus/portfile.cmake new file mode 100644 index 0000000..117f366 --- /dev/null +++ b/vcpkg/ports/libmodbus/portfile.cmake @@ -0,0 +1,38 @@ +vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO stephane/libmodbus
+ REF "v${VERSION}"
+ SHA512 cb506d5b72b629591002450221ea512a067209ee60c588dc88c45494ea983af2c05c47b2d0ba7db02e46d7a30110547ec96f9f98d643756f9528a99291683f70
+ HEAD_REF master
+ PATCHES
+ cflags.diff
+ library-linkage.diff
+ pkgconfig.diff
+ ssize_t.diff
+)
+
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ set(ENV{WARNING_CFLAGS} "-D_CRT_SECURE_NO_DEPRECATE=1 -D_CRT_NONSTDC_NO_DEPRECATE=1")
+endif()
+
+vcpkg_make_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ AUTORECONF
+ OPTIONS
+ --enable-tests=no
+)
+vcpkg_make_install()
+vcpkg_copy_pdbs()
+vcpkg_fixup_pkgconfig()
+file(COPY "${CURRENT_PORT_DIR}/libmodbusConfig.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/libmodbus")
+
+if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/modbus/modbus.h" "defined(STATIC_LIBMODBUS)" "1")
+endif()
+
+ file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+)
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING.LESSER")
diff --git a/vcpkg/ports/libmodbus/ssize_t.diff b/vcpkg/ports/libmodbus/ssize_t.diff new file mode 100644 index 0000000..e2ba0c3 --- /dev/null +++ b/vcpkg/ports/libmodbus/ssize_t.diff @@ -0,0 +1,14 @@ +diff --git a/src/modbus-private.h b/src/modbus-private.h +index ea83187..db5a3dc 100644 +--- a/src/modbus-private.h ++++ b/src/modbus-private.h +@@ -14,7 +14,9 @@ + #else + # include "stdint.h" + # include <time.h> ++# ifndef ssize_t + typedef int ssize_t; ++# endif + #endif + // clang-format on + #include <config.h> diff --git a/vcpkg/ports/libmodbus/vcpkg.json b/vcpkg/ports/libmodbus/vcpkg.json new file mode 100644 index 0000000..2dbc876 --- /dev/null +++ b/vcpkg/ports/libmodbus/vcpkg.json @@ -0,0 +1,14 @@ +{ + "name": "libmodbus", + "version": "3.1.11", + "description": "libmodbus is a free software library to send/receive data with a device which respects the Modbus protocol", + "homepage": "https://github.com/stephane/libmodbus", + "license": "LGPL-2.1-or-later", + "supports": "!uwp & !xbox", + "dependencies": [ + { + "name": "vcpkg-make", + "host": true + } + ] +} |