mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
138 lines
4.2 KiB
CMake
138 lines
4.2 KiB
CMake
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}")
|
|
|
|
IF(${BBF_MAX_OBJECT_INSTANCES})
|
|
ADD_DEFINITIONS(-DBBF_MAX_OBJECT_INSTANCES=${BBF_MAX_OBJECT_INSTANCES})
|
|
ENDIF()
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${PROJECT_SOURCE_DIR} -I${PROJECT_SOURCE_DIR}/dmtree")
|
|
|
|
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)
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${PROJECT_SOURCE_DIR}/dmtree/tr181")
|
|
FILE(GLOB BBF_TR181_SOURCES ${PROJECT_SOURCE_DIR}/dmtree/tr181/*.c)
|
|
add_compile_definitions(BBF_TR181)
|
|
ENDIF(BBF_TR181)
|
|
|
|
IF(BBF_TR104)
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${PROJECT_SOURCE_DIR}/dmtree/tr104")
|
|
FILE(GLOB BBF_TR104_SOURCES ${PROJECT_SOURCE_DIR}/dmtree/tr104/*.c)
|
|
add_compile_definitions(BBF_TR104)
|
|
ENDIF(BBF_TR104)
|
|
|
|
IF(BBF_TR143)
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${PROJECT_SOURCE_DIR}/dmtree/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 usr/include
|
|
)
|
|
|
|
FILE(GLOB libbbf_api_headers libbbf_api/*.h)
|
|
INSTALL(FILES ${libbbf_api_headers}
|
|
DESTINATION usr/include/libbbf_api
|
|
)
|
|
|
|
FILE(GLOB libbbfdm_headers *.h)
|
|
INSTALL(FILES ${libbbfdm_headers}
|
|
DESTINATION usr/include/libbbfdm
|
|
)
|
|
|
|
FILE(GLOB scripts scripts/*)
|
|
INSTALL(FILES ${scripts}
|
|
DESTINATION usr/share/bbfdm
|
|
)
|
|
|
|
# add CPack to project
|
|
SET(CPACK_PACKAGE_NAME "libbbf")
|
|
SET(CPACK_PACKAGE_VENDOR "iopsys.io")
|
|
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "libbbf - Datamodel library")
|
|
SET(CPACK_PACKAGE_VERSION "1.0.0")
|
|
SET(CPACK_GENERATOR STGZ)
|
|
|
|
include(CPack)
|