phase 2 serial
This commit is contained in:
51
cmake/libmodbus/CMakeLists.txt
Normal file
51
cmake/libmodbus/CMakeLists.txt
Normal file
@@ -0,0 +1,51 @@
|
||||
# Vendored libmodbus v3.1.10 static library for softbus_edge
|
||||
|
||||
set(_src_dir "${CMAKE_SOURCE_DIR}/third_party/libmodbus")
|
||||
if(NOT EXISTS "${_src_dir}/src/modbus.c")
|
||||
message(WARNING "Vendor libmodbus not found at ${_src_dir}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(_gen_dir "${CMAKE_BINARY_DIR}/libmodbus_vendor")
|
||||
file(MAKE_DIRECTORY "${_gen_dir}")
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_SOURCE_DIR}/cmake/libmodbus/config.h.linux"
|
||||
"${_gen_dir}/config.h"
|
||||
COPYONLY
|
||||
)
|
||||
configure_file(
|
||||
"${CMAKE_SOURCE_DIR}/cmake/libmodbus/modbus-version.h"
|
||||
"${_gen_dir}/modbus-version.h"
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
add_library(modbus_vendor STATIC
|
||||
"${_src_dir}/src/modbus.c"
|
||||
"${_src_dir}/src/modbus-data.c"
|
||||
"${_src_dir}/src/modbus-rtu.c"
|
||||
"${_src_dir}/src/modbus-tcp.c"
|
||||
)
|
||||
set_target_properties(modbus_vendor PROPERTIES
|
||||
C_STANDARD 99
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
)
|
||||
target_include_directories(modbus_vendor
|
||||
PUBLIC
|
||||
"${_src_dir}/src"
|
||||
"${_gen_dir}"
|
||||
)
|
||||
if(UNIX)
|
||||
target_link_libraries(modbus_vendor PUBLIC pthread)
|
||||
endif()
|
||||
|
||||
add_library(libmodbus_iface INTERFACE)
|
||||
target_link_libraries(libmodbus_iface INTERFACE modbus_vendor)
|
||||
target_include_directories(libmodbus_iface INTERFACE
|
||||
"${_src_dir}/src"
|
||||
"${_gen_dir}"
|
||||
)
|
||||
|
||||
set(SOFTBUS_HAS_LIBMODBUS ON PARENT_SCOPE)
|
||||
set(SOFTBUS_LIBMODBUS_VENDOR ON PARENT_SCOPE)
|
||||
message(STATUS "libmodbus: using vendored build from third_party/libmodbus")
|
||||
Reference in New Issue
Block a user