From bdf56f0ca7adf53c0f0699914d4dec041b716eea Mon Sep 17 00:00:00 2001 From: atkawa7 Date: Sat, 25 Aug 2018 20:21:46 +0200 Subject: libmodbus init closes #283 --- ports/libmodbus/CMakeLists.txt | 103 +++++++++++++++++++++++++++++++++++++++++ ports/libmodbus/CONTROL | 3 ++ ports/libmodbus/config.h.cmake | 49 ++++++++++++++++++++ ports/libmodbus/portfile.cmake | 27 +++++++++++ 4 files changed, 182 insertions(+) create mode 100644 ports/libmodbus/CMakeLists.txt create mode 100644 ports/libmodbus/CONTROL create mode 100644 ports/libmodbus/config.h.cmake create mode 100644 ports/libmodbus/portfile.cmake diff --git a/ports/libmodbus/CMakeLists.txt b/ports/libmodbus/CMakeLists.txt new file mode 100644 index 000000000..cab9c897d --- /dev/null +++ b/ports/libmodbus/CMakeLists.txt @@ -0,0 +1,103 @@ +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) + +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) + +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 + $ + $ +) +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/modbus) +endif() diff --git a/ports/libmodbus/CONTROL b/ports/libmodbus/CONTROL new file mode 100644 index 000000000..faee22d8c --- /dev/null +++ b/ports/libmodbus/CONTROL @@ -0,0 +1,3 @@ +Source: libmodbus +Version: 3.1.4 +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..3d1e1abe4 --- /dev/null +++ b/ports/libmodbus/portfile.cmake @@ -0,0 +1,27 @@ +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) -- cgit v1.2.3