1 cmake_minimum_required(VERSION 3.13) 2 3 PROJECT(ubus C) 4 5 ADD_COMPILE_OPTIONS(-Wall -Werror) 6 IF(CMAKE_C_COMPILER_VERSION VERSION_GREATER 6) 7 ADD_COMPILE_OPTIONS(-Wextra -Wformat -Werror=format-security -Werror=format-nonliteral) 8 ADD_COMPILE_OPTIONS($<$<COMPILE_LANGUAGE:C>:-Werror=implicit-function-declaration>) 9 ENDIF() 10 ADD_COMPILE_OPTIONS(-Os -g3 -Wmissing-declarations -Wno-unused-parameter) 11 ADD_COMPILE_OPTIONS($<$<COMPILE_LANGUAGE:C>:-std=gnu99>) 12 13 OPTION(BUILD_LUA "build Lua plugin" ON) 14 OPTION(BUILD_EXAMPLES "build examples" ON) 15 16 SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") 17 SET(UBUS_UNIX_SOCKET "/var/run/ubus/ubus.sock") 18 SET(UBUS_MAX_MSGLEN 1048576) 19 20 ADD_DEFINITIONS( -DUBUS_UNIX_SOCKET="${UBUS_UNIX_SOCKET}") 21 ADD_DEFINITIONS( -DUBUS_MAX_MSGLEN=${UBUS_MAX_MSGLEN}) 22 23 IF(BUILD_STATIC) 24 FIND_LIBRARY(ubox_library NAMES libubox.a) 25 FIND_LIBRARY(blob_library NAMES libblobmsg_json.a) 26 ELSE(BUILD_STATIC) 27 FIND_LIBRARY(ubox_library NAMES ubox) 28 FIND_LIBRARY(blob_library NAMES blobmsg_json) 29 ENDIF(BUILD_STATIC) 30 31 FIND_PATH(ubox_include_dir libubox/usock.h) 32 INCLUDE_DIRECTORIES(${ubox_include_dir}) 33 34 SET(LIB_SOURCES libubus.c libubus-io.c libubus-obj.c libubus-sub.c libubus-req.c libubus-acl.c) 35 36 IF(BUILD_STATIC) 37 ADD_LIBRARY(ubus STATIC ${LIB_SOURCES}) 38 ELSE(BUILD_STATIC) 39 ADD_LIBRARY(ubus SHARED ${LIB_SOURCES}) 40 ENDIF(BUILD_STATIC) 41 TARGET_LINK_LIBRARIES(ubus ${ubox_library}) 42 43 find_library(json NAMES json-c json) 44 45 MACRO(ADD_UNIT_TEST_SAN name output_name) 46 ADD_EXECUTABLE(${name}-san ${name}.c) 47 TARGET_COMPILE_OPTIONS(${name}-san PRIVATE -g -fno-omit-frame-pointer -fsanitize=undefined,address,leak -fno-sanitize-recover=all) 48 TARGET_LINK_OPTIONS(${name}-san PRIVATE -fsanitize=undefined,address,leak) 49 TARGET_LINK_LIBRARIES(${name}-san ubus ubusd_library ${ubox_library} ${blob_library} ${json}) 50 TARGET_INCLUDE_DIRECTORIES(${name}-san PRIVATE ${PROJECT_SOURCE_DIR}) 51 SET_TARGET_PROPERTIES(${name}-san PROPERTIES OUTPUT_NAME ${output_name}) 52 ENDMACRO(ADD_UNIT_TEST_SAN) 53 54 ADD_LIBRARY(ubusd_library STATIC ubusd.c ubusd_proto.c ubusd_id.c ubusd_obj.c ubusd_event.c ubusd_acl.c ubusd_monitor.c) 55 ADD_EXECUTABLE(ubusd ubusd_main.c) 56 TARGET_LINK_LIBRARIES(ubusd ubusd_library ${ubox_library} ${blob_library} ${json}) 57 58 ADD_EXECUTABLE(cli cli.c) 59 SET_TARGET_PROPERTIES(cli PROPERTIES OUTPUT_NAME ubus) 60 TARGET_LINK_LIBRARIES(cli ubus ${ubox_library} ${blob_library} ${json}) 61 62 ADD_SUBDIRECTORY(lua) 63 ADD_SUBDIRECTORY(examples) 64 65 IF(UNIT_TESTING) 66 ENABLE_TESTING() 67 ADD_SUBDIRECTORY(tests) 68 ADD_UNIT_TEST_SAN(cli ubus-san) 69 ADD_UNIT_TEST_SAN(ubusd_main ubusd-san) 70 ENDIF() 71 72 IF(ABIVERSION) 73 SET_TARGET_PROPERTIES(ubus PROPERTIES VERSION ${ABIVERSION}) 74 ENDIF() 75 76 INSTALL(TARGETS ubus cli 77 ARCHIVE DESTINATION lib 78 LIBRARY DESTINATION lib 79 RUNTIME DESTINATION bin 80 ) 81 INSTALL(TARGETS ubusd 82 RUNTIME DESTINATION sbin 83 ) 84 85 INSTALL(FILES ubusmsg.h ubus_common.h libubus.h DESTINATION include)
This page was automatically generated by LXR 0.3.1. • OpenWrt