aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libmodbus
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/libmodbus')
-rw-r--r--vcpkg/ports/libmodbus/cflags.diff20
-rw-r--r--vcpkg/ports/libmodbus/libmodbusConfig.cmake27
-rw-r--r--vcpkg/ports/libmodbus/library-linkage.diff32
-rw-r--r--vcpkg/ports/libmodbus/pkgconfig.diff23
-rw-r--r--vcpkg/ports/libmodbus/portfile.cmake38
-rw-r--r--vcpkg/ports/libmodbus/ssize_t.diff14
-rw-r--r--vcpkg/ports/libmodbus/vcpkg.json14
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
+ }
+ ]
+}