Refactor datamodel plugin code from daemon

This commit is contained in:
Amin Ben Romdhane 2023-12-12 03:47:33 +00:00 committed by Vivek Kumar Dutta
parent 08fe43769c
commit c732e063d9
6 changed files with 93 additions and 46 deletions

View file

@ -2,47 +2,6 @@ cmake_minimum_required(VERSION 3.0)
PROJECT(icwmp C)
ADD_DEFINITIONS(-Wall -Werror -Wformat -g)
ADD_DEFINITIONS(-D_GNU_SOURCE)
add_subdirectory(bbf_plugin)
add_subdirectory(src)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${PROJECT_SOURCE_DIR}")
OPTION(WITH_WOLFSSL "build with lib wolfssl" OFF)
OPTION(WITH_OPENSSL "build with lib openssl" OFF)
OPTION(WITH_MBEDTLS "build with lib mbedtls" OFF)
IF(NOT WITH_WOLFSSL AND NOT WITH_OPENSSL AND NOT WITH_MBEDTLS)
MESSAGE(FATAL_ERROR "You must enable one of the SSL libraries: {'WOLFSSL','OPENSSL','MBEDTLS'}")
ENDIF()
FILE(GLOB ICWMP_SOURCES ${PROJECT_SOURCE_DIR}/src/*.c)
IF(WITH_WOLFSSL)
SET(SSL_LIBS wolfssl)
SET(SSL_LIBS crypto)
add_compile_definitions(LWOLFSSL)
ENDIF(WITH_WOLFSSL)
IF(WITH_OPENSSL)
SET(SSL_LIBS ssl)
SET(SSL_LIBS crypto)
add_compile_definitions(LOPENSSL)
ENDIF(WITH_OPENSSL)
IF(WITH_MBEDTLS)
SET(SSL_LIBS mbedtls)
SET(SSL_LIBS mbedcrypto)
add_compile_definitions(LMBEDTLS)
ENDIF(WITH_MBEDTLS)
#[[Compile and install icwmpd]]
ADD_EXECUTABLE(icwmpd ${ICWMP_SOURCES})
TARGET_LINK_LIBRARIES(icwmpd pthread z m json-c uci ubox ubus blobmsg_json curl mxml uuid ${SSL_LIBS} ${CRYPTO_LIBS})
INSTALL(FILES icwmpd PERMISSIONS OWNER_EXECUTE DESTINATION usr/sbin)
INSTALL(DIRECTORY DESTINATION etc/icwmpd)
INSTALL(DIRECTORY DESTINATION var/run/icwmpd)
#[[Compile and install libcwmpdm.so]]
ADD_LIBRARY(cwmpdm SHARED ${PROJECT_SOURCE_DIR}/src/cwmp_dm/datamodel.c)
INSTALL(DIRECTORY DESTINATION etc/bbfdm/plugins)
INSTALL(TARGETS cwmpdm LIBRARY DESTINATION etc/bbfdm/plugins)

29
bbf_plugin/CMakeLists.txt Normal file
View file

@ -0,0 +1,29 @@
cmake_minimum_required(VERSION 3.0)
PROJECT(libcwmpdm.so)
ADD_DEFINITIONS(-Wall -Werror -Wformat -g)
ADD_DEFINITIONS(-D_GNU_SOURCE)
# Compile and install libcwmpdm.so
ADD_LIBRARY(cwmpdm SHARED datamodel.c)
INSTALL(DIRECTORY DESTINATION etc/bbfdm/plugins)
INSTALL(TARGETS cwmpdm LIBRARY DESTINATION etc/bbfdm/plugins)
# Copy libcwmpdm.so to the main repo
add_custom_command(
TARGET cwmpdm
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
libcwmpdm.so
${CMAKE_SOURCE_DIR}
COMMENT "Copying libcwmpdm.so to main repo"
)
# Add a custom target to trigger the custom command
add_custom_target(copy_lib_target
DEPENDS cwmpdm
)
# Make sure the copy_lib_target is built after the library is built
add_dependencies(copy_lib_target cwmpdm)

View file

@ -115,11 +115,11 @@ function build_icwmp()
exec_cmd make
echo "installing icwmpd binary and libcwmpdm.so library"
exec_cmd cp icwmpd ../
exec_cmd cp libcwmpdm.so ../
exec_cmd cp src/icwmpd ../src/
exec_cmd cp bbf_plugin/libcwmpdm.so ../bbf_plugin/
exec_cmd make install
[ -f "/usr/sbin/icwmpd" ] && rm /usr/sbin/icwmpd
exec_cmd ln -s ${BINP}/icwmpd /usr/sbin/icwmpd
exec_cmd ln -s ${BINP}/src/icwmpd /usr/sbin/icwmpd
cd ..
}

59
src/CMakeLists.txt Normal file
View file

@ -0,0 +1,59 @@
cmake_minimum_required(VERSION 3.0)
PROJECT(icwmpd)
ADD_DEFINITIONS(-Wall -Werror -Wformat -g)
ADD_DEFINITIONS(-D_GNU_SOURCE)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${PROJECT_SOURCE_DIR}")
OPTION(WITH_WOLFSSL "build with lib wolfssl" OFF)
OPTION(WITH_OPENSSL "build with lib openssl" OFF)
OPTION(WITH_MBEDTLS "build with lib mbedtls" OFF)
IF(NOT WITH_WOLFSSL AND NOT WITH_OPENSSL AND NOT WITH_MBEDTLS)
MESSAGE(FATAL_ERROR "You must enable one of the SSL libraries: {'WOLFSSL','OPENSSL','MBEDTLS'}")
ENDIF()
FILE(GLOB ICWMP_SOURCES *.c)
IF(WITH_WOLFSSL)
SET(SSL_LIBS wolfssl)
SET(SSL_LIBS crypto)
add_compile_definitions(LWOLFSSL)
ENDIF(WITH_WOLFSSL)
IF(WITH_OPENSSL)
SET(SSL_LIBS ssl)
SET(SSL_LIBS crypto)
add_compile_definitions(LOPENSSL)
ENDIF(WITH_OPENSSL)
IF(WITH_MBEDTLS)
SET(SSL_LIBS mbedtls)
SET(SSL_LIBS mbedcrypto)
add_compile_definitions(LMBEDTLS)
ENDIF(WITH_MBEDTLS)
# Compile and install icwmpd
ADD_EXECUTABLE(icwmpd ${ICWMP_SOURCES})
TARGET_LINK_LIBRARIES(icwmpd pthread z m json-c uci ubox ubus blobmsg_json curl mxml uuid ${SSL_LIBS} ${CRYPTO_LIBS})
INSTALL(FILES icwmpd PERMISSIONS OWNER_EXECUTE DESTINATION usr/sbin)
INSTALL(DIRECTORY DESTINATION etc/icwmpd)
INSTALL(DIRECTORY DESTINATION var/run/icwmpd)
# Copy icwmpd to the main repo
add_custom_command(
TARGET icwmpd POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
icwmpd
${CMAKE_SOURCE_DIR}
)
# Add a custom target to trigger the custom command
add_custom_target(copy_daemon_target
DEPENDS icwmpd
)
# Make sure the copy_daemon_target is built after the library is built
add_dependencies(copy_daemon_target icwmpd)