diff options
| author | Alexander Karatarakis <alex@karatarakis.com> | 2018-08-28 18:22:49 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-28 18:22:49 -0700 |
| commit | c44392c35b72d1e6c5a4d586e9653c099cb64514 (patch) | |
| tree | 3263f03ca3a36fa3d35c7f7d491bd4d983c3b7ba | |
| parent | 62406885f6b368c342e024c47f3d164945fa64b6 (diff) | |
| parent | 1f7231fede829a2803e9e3c5aad6f121c91c2714 (diff) | |
| download | vcpkg-c44392c35b72d1e6c5a4d586e9653c099cb64514.tar.gz vcpkg-c44392c35b72d1e6c5a4d586e9653c099cb64514.zip | |
Merge pull request #4161 from atkawa7/libmodbus
libmodbus init closes #283
| -rw-r--r-- | ports/libmodbus/CMakeLists.txt | 113 | ||||
| -rw-r--r-- | ports/libmodbus/CONTROL | 3 | ||||
| -rw-r--r-- | ports/libmodbus/config.h.cmake | 49 | ||||
| -rw-r--r-- | ports/libmodbus/portfile.cmake | 26 |
4 files changed, 191 insertions, 0 deletions
diff --git a/ports/libmodbus/CMakeLists.txt b/ports/libmodbus/CMakeLists.txt new file mode 100644 index 000000000..0abb4b6a7 --- /dev/null +++ b/ports/libmodbus/CMakeLists.txt @@ -0,0 +1,113 @@ +cmake_minimum_required(VERSION 3.0)
+project(libmodbus VERSION 3.1.4)
+
+set(LIBMODBUS_VERSION ${PROJECT_VERSION})
+set(LIBMODBUS_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
+set(LIBMODBUS_VERSION_MINOR ${PROJECT_VERSION_MINOR})
+set(LIBMODBUS_VERSION_MICRO ${PROJECT_VERSION_PATCH})
+configure_file(src/modbus-version.h.in ${CMAKE_CURRENT_BINARY_DIR}/modbus-version.h)
+
+if(WIN32)
+ set(HAVE_ERRNO_H 1)
+ set(HAVE_FCNTL_H 1)
+ set(HAVE_LIMITS_H 1)
+ set(HAVE_SYS_TYPES_H 1)
+ set(HAVE_TIME_H 1)
+ set(HAVE_MALLOC 1)
+ set(HAVE_MEMSET 1)
+ set(HAVE_STRERROR 1)
+else()
+ include(CheckIncludeFile)
+ check_include_file(arpa/inet.h HAVE_ARPA_INET_H)
+ check_include_file(byteswap.h HAVE_BYTESWAP_H)
+ check_include_file(errno.h HAVE_ERRNO_H)
+ check_include_file(fcntl.h HAVE_FCNTL_H)
+ check_include_file(limits.h HAVE_LIMITS_H)
+ check_include_file(linux/serial.h HAVE_LINUX_SERIAL_H)
+ check_include_file(netdb.h HAVE_NETDB_H)
+ check_include_file(netinet/in.h HAVE_NETINET_IN_H)
+ check_include_file(netinet/tcp.h HAVE_NETINET_TCP_H)
+ check_include_file(sys/ioctl.h HAVE_SYS_IOCTL_H)
+ check_include_file(sys/params.h HAVE_SYS_PARAMS_H)
+ check_include_file(sys/socket.h HAVE_SYS_SOCKET_H)
+ check_include_file(sys/time.h HAVE_SYS_TIME_H)
+ check_include_file(sys/types.h HAVE_SYS_TYPES_H)
+ check_include_file(termios.h HAVE_TERMIOS_H)
+ check_include_file(time.h HAVE_TIME_H)
+ check_include_file(unistd.h HAVE_UNISTD_H)
+
+ include(CheckFunctionExists)
+ check_function_exists(accept4 HAVE_ACCEPT4)
+ check_function_exists(fork HAVE_FORK)
+ check_function_exists(getaddrinfo HAVE_GETADDRINFO)
+ check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
+ check_function_exists(inet_ntoa HAVE_INET_NTOA)
+ check_function_exists(malloc HAVE_MALLOC)
+ check_function_exists(memset HAVE_MEMSET)
+ check_function_exists(select HAVE_SELECT)
+ check_function_exists(socket HAVE_SOCKET)
+ check_function_exists(strerror HAVE_STRERROR)
+ check_function_exists(strlcpy HAVE_STRLCPY)
+
+ include(CheckSymbolExists)
+ check_symbol_exists(TIOCSRS485 sys/ioctl.h HAVE_TIOCRS485)
+ check_symbol_exists(TIOCM_RTS sys/ioctl.h HAVE_TIOCM_RTS)
+endif()
+
+configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
+
+
+if(BUILD_SHARED_LIBS)
+ add_compile_options(-DDLLBUILD=ON)
+endif()
+
+
+set(MODBUS_PUBLIC_HEADERS
+ src/modbus-rtu.h
+ src/modbus-tcp.h
+ src/modbus.h
+ ${CMAKE_CURRENT_BINARY_DIR}/modbus-version.h
+)
+
+add_library(modbus
+ src/modbus-data.c
+ src/modbus-rtu.c
+ src/modbus-tcp.c
+src/modbus.c)
+
+target_include_directories(modbus PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
+target_include_directories(modbus INTERFACE
+ $<INSTALL_INTERFACE:include>
+)
+set_target_properties(modbus PROPERTIES PUBLIC_HEADER "${MODBUS_PUBLIC_HEADERS}")
+
+if(CMAKE_COMPILER_IS_GNUCC)
+ target_compile_options(modbus PRIVATE -D_GNU_SOURCE)
+endif()
+
+if(WIN32)
+ target_link_libraries(modbus wsock32 ws2_32)
+endif()
+
+set(LIBMODBUS_SOVERSION_VERSION 5.1.0)
+set(LIBMODBUS_SOVERSION_SOVERSION 5)
+
+
+set_target_properties(modbus PROPERTIES
+ VERSION ${LIBMODBUS_SOVERSION_VERSION}
+SOVERSION ${LIBMODBUS_SOVERSION_SOVERSION})
+
+
+install(
+ TARGETS modbus
+ EXPORT libmodbusConfig
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+install(EXPORT libmodbusConfig DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+
+
+if(NOT DISABLE_INSTALL_HEADERS)
+ install(FILES ${MODBUS_PUBLIC_HEADERS} DESTINATION include/)
+endif()
diff --git a/ports/libmodbus/CONTROL b/ports/libmodbus/CONTROL new file mode 100644 index 000000000..1fd7d4791 --- /dev/null +++ b/ports/libmodbus/CONTROL @@ -0,0 +1,3 @@ +Source: libmodbus
+Version: 3.1.4-1
+Description: libmodbus is a free software library to send/receive data with a device which respects the Modbus protocol
diff --git a/ports/libmodbus/config.h.cmake b/ports/libmodbus/config.h.cmake new file mode 100644 index 000000000..b8f7585be --- /dev/null +++ b/ports/libmodbus/config.h.cmake @@ -0,0 +1,49 @@ +#ifndef CONFIG_H
+#define CONFIG_H
+
+#cmakedefine HAVE_ARPA_INET_H
+#cmakedefine HAVE_BYTESWAP_H
+#cmakedefine HAVE_ERRNO_H
+#cmakedefine HAVE_FCNTL_H
+#cmakedefine HAVE_LIMITS_H
+#cmakedefine HAVE_LINUX_SERIAL_H
+#cmakedefine HAVE_NETDB_H
+#cmakedefine HAVE_NETINET_IN_H
+#cmakedefine HAVE_NETINET_TCP_H
+#cmakedefine HAVE_SYS_IOCTL_H
+#cmakedefine HAVE_SYS_PARAMS_H
+#cmakedefine HAVE_SYS_SOCKET_H
+#cmakedefine HAVE_SYS_TIME_H
+#cmakedefine HAVE_SYS_TYPES_H
+#cmakedefine HAVE_TERMIOS_H
+#cmakedefine HAVE_TIME_H
+#cmakedefine HAVE_UNISTD_H
+
+#cmakedefine HAVE_ACCEPT4
+#cmakedefine HAVE_FORK
+#cmakedefine HAVE_GETADDRINFO
+#cmakedefine HAVE_GETTIMEOFDAY
+#cmakedefine HAVE_INET_NTOA
+#cmakedefine HAVE_MALLOC
+#cmakedefine HAVE_MEMSET
+#cmakedefine HAVE_SELECT
+#cmakedefine HAVE_SOCKET
+#cmakedefine HAVE_STRERROR
+#cmakedefine HAVE_STRLCPY
+
+#cmakedefine HAVE_TIOCRS485
+#cmakedefine HAVE_TIOCM_RTS
+
+#ifdef HAVE_TIOCM_RTS
+#define HAVE_DECL_TIOCM_RTS 1
+#else
+#define HAVE_DECL_TIOCM_RTS 0
+#endif
+
+#ifdef HAVE_TIOCRS485
+#define HAVE_DECL_TIOCSRS485 1
+#else
+#define HAVE_DECL_TIOCSRS485 0
+#endif
+
+#endif
\ No newline at end of file diff --git a/ports/libmodbus/portfile.cmake b/ports/libmodbus/portfile.cmake new file mode 100644 index 000000000..8d6f2c062 --- /dev/null +++ b/ports/libmodbus/portfile.cmake @@ -0,0 +1,26 @@ +include(vcpkg_common_functions)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO stephane/libmodbus
+ REF v3.1.4
+ SHA512 dc13b680a13ae2c952fe23cfe257a92a2be4823005b71b87e9520a3676df220b749d04c0825b1d1da02ac8b6995315e5cda2c8fd68e4672dd60e0b3fe739728b
+ HEAD_REF master
+)
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt ${CMAKE_CURRENT_LIST_DIR}/config.h.cmake DESTINATION ${SOURCE_PATH})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH "${SOURCE_PATH}"
+ PREFER_NINJA
+ OPTIONS_DEBUG
+ -DDISABLE_INSTALL_HEADERS=ON
+)
+
+vcpkg_install_cmake()
+vcpkg_copy_pdbs()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/cmake")
+
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/COPYING.LESSER DESTINATION ${CURRENT_PACKAGES_DIR}/share/libmodbus RENAME copyright)
|
