From c732e063d95187628f924f44061817930614208e Mon Sep 17 00:00:00 2001 From: Amin Ben Romdhane Date: Tue, 12 Dec 2023 03:47:33 +0000 Subject: [PATCH] Refactor datamodel plugin code from daemon --- CMakeLists.txt | 45 +------------------ bbf_plugin/CMakeLists.txt | 29 ++++++++++++ {src/cwmp_dm => bbf_plugin}/datamodel.c | 0 {src/cwmp_dm => bbf_plugin}/datamodel.h | 0 gitlab-ci/shared.sh | 6 +-- src/CMakeLists.txt | 59 +++++++++++++++++++++++++ 6 files changed, 93 insertions(+), 46 deletions(-) create mode 100644 bbf_plugin/CMakeLists.txt rename {src/cwmp_dm => bbf_plugin}/datamodel.c (100%) rename {src/cwmp_dm => bbf_plugin}/datamodel.h (100%) create mode 100644 src/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 01f917d..6d84740 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/bbf_plugin/CMakeLists.txt b/bbf_plugin/CMakeLists.txt new file mode 100644 index 0000000..3122dd4 --- /dev/null +++ b/bbf_plugin/CMakeLists.txt @@ -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) diff --git a/src/cwmp_dm/datamodel.c b/bbf_plugin/datamodel.c similarity index 100% rename from src/cwmp_dm/datamodel.c rename to bbf_plugin/datamodel.c diff --git a/src/cwmp_dm/datamodel.h b/bbf_plugin/datamodel.h similarity index 100% rename from src/cwmp_dm/datamodel.h rename to bbf_plugin/datamodel.h diff --git a/gitlab-ci/shared.sh b/gitlab-ci/shared.sh index 9e6d0bd..176863b 100644 --- a/gitlab-ci/shared.sh +++ b/gitlab-ci/shared.sh @@ -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 .. } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..86938e4 --- /dev/null +++ b/src/CMakeLists.txt @@ -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)