cmake_minimum_required(VERSION 3.0) PROJECT(bbf C) ADD_DEFINITIONS(-Wall -Werror) ADD_DEFINITIONS(-D_GNU_SOURCE) ADD_DEFINITIONS(-DBBF_VENDOR_PREFIX="${BBF_VENDOR_PREFIX}") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I. -I./dmtree -I./dmtree/tr181 -I./dmtree/tr104 -I./dmtree/tr143") OPTION(BBF_TR181 "build with tr181 datamodel" ON) OPTION(BBF_TR104 "build with tr104 datamodel" ON) OPTION(BBF_TR143 "build with tr143 datamodel" ON) OPTION(BBF_DOTSO_PLUGIN "build with dotso plugin" ON) OPTION(BBF_JSON_PLUGIN "build with json plugin" ON) OPTION(BBF_VENDOR_EXTENSION "build with vendor extension enabled" ON) 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 BBF_API_SOURCES ${PROJECT_SOURCE_DIR}/libbbf_api/*.c) SET(BBF_DM_SOURCES dmentry.c dmdiagnostics.c dmbbfcommon.c) IF(BBF_TR181) FILE(GLOB BBF_TR181_SOURCES ${PROJECT_SOURCE_DIR}/dmtree/tr181/*.c) add_compile_definitions(BBF_TR181) ENDIF(BBF_TR181) IF(BBF_TR104) FILE(GLOB BBF_TR104_SOURCES ${PROJECT_SOURCE_DIR}/dmtree/tr104/*.c) add_compile_definitions(BBF_TR104) ENDIF(BBF_TR104) IF(BBF_TR143) FILE(GLOB BBF_TR143_SOURCES ${PROJECT_SOURCE_DIR}/dmtree/tr143/*.c) add_compile_definitions(BBF_TR143) ENDIF(BBF_TR143) IF(BBF_DOTSO_PLUGIN) SET(BBF_DOTSO_PLUGIN_SOURCES dmdynamiclibrary.c) add_compile_definitions(BBFDM_ENABLE_DOTSO_PLUGIN) ENDIF(BBF_DOTSO_PLUGIN) IF(BBF_JSON_PLUGIN) SET(BBF_JSON_PLUGIN_SOURCES dmdynamicjson.c) add_compile_definitions(BBFDM_ENABLE_JSON_PLUGIN) endif(BBF_JSON_PLUGIN) IF(WITH_WOLFSSL) SET(SSL_LIBS wolfssl) add_compile_definitions(LWOLFSSL) ENDIF(WITH_WOLFSSL) IF(WITH_OPENSSL) SET(SSL_LIBS ssl) add_compile_definitions(LOPENSSL) ENDIF(WITH_OPENSSL) IF(WITH_MBEDTLS) SET(SSL_LIBS mbedtls) add_compile_definitions(LMBEDTLS) ENDIF(WITH_MBEDTLS) IF(BBF_VENDOR_EXTENSION) SET(BBF_VENDOR_EXTENSION_SOURCES dmdynamicvendor.c dmtree/vendor/vendor.c) ADD_DEFINITIONS(-DBBF_VENDOR_LIST="${BBF_VENDOR_LIST}") add_compile_definitions(BBF_VENDOR_EXTENSION) SET(BBF_VENDOR_LIST "iopsys" CACHE STRING "vendor list to be used") STRING(REPLACE "," ";" VENDOR_LIST ${BBF_VENDOR_LIST}) foreach(VENDOR IN LISTS VENDOR_LIST) FILE(GLOB_RECURSE BBF_VENDOR_SOURCES ${PROJECT_SOURCE_DIR}/dmtree/vendor/${VENDOR}/*.c) LIST(APPEND BBF_VENDOR_EXTENSION_SOURCES ${BBF_VENDOR_SOURCES}) STRING(TOUPPER ${VENDOR} VENDOR) add_compile_definitions(BBF_VENDOR_${VENDOR}) endforeach() ENDIF(BBF_VENDOR_EXTENSION) ADD_LIBRARY(bbfdm SHARED ${BBF_API_SOURCES} ${BBF_DM_SOURCES} ${BBF_TR181_SOURCES} ${BBF_TR104_SOURCES} ${BBF_TR143_SOURCES} ${BBF_DOTSO_PLUGIN_SOURCES} ${BBF_JSON_PLUGIN_SOURCES} ${BBF_VENDOR_EXTENSION_SOURCES}) TARGET_LINK_LIBRARIES(bbfdm uci ubus ubox json-c blobmsg_json trace dl curl ${SSL_LIBS}) INSTALL(TARGETS bbfdm LIBRARY DESTINATION "/usr/lib") INSTALL(DIRECTORY DESTINATION "/etc/bbfdm") INSTALL(DIRECTORY DESTINATION "/etc/bbfdm/dmmap") INSTALL(DIRECTORY DESTINATION "/etc/bbfdm/json") INSTALL(DIRECTORY DESTINATION "/usr/share/bbfdm") INSTALL(DIRECTORY DESTINATION "/usr/lib/bbfdm") FILE(GLOB headers include/*.h) INSTALL(FILES ${headers} DESTINATION include ) FILE(GLOB libbbf_api_headers libbbf_api/*.h) INSTALL(FILES ${libbbf_api_headers} DESTINATION include/libbbf_api ) FILE(GLOB libbbfdm_headers *.h) INSTALL(FILES ${libbbfdm_headers} DESTINATION include/libbbfdm ) FILE(GLOB scripts scripts/*) INSTALL(FILES ${scripts} DESTINATION "/usr/share/bbfdm" )