1 cmake_minimum_required(VERSION 3.13) 2 3 PROJECT(netifd C) 4 5 include(CheckCCompilerFlag) 6 check_c_compiler_flag(-Wimplicit-fallthrough HAS_IMPLICIT_FALLTHROUGH) 7 8 ADD_DEFINITIONS(-Wall -Werror) 9 IF(CMAKE_C_COMPILER_VERSION VERSION_GREATER 6) 10 add_definitions(-Wextra -Werror=implicit-function-declaration) 11 add_definitions(-Wformat -Werror=format-security -Werror=format-nonliteral) 12 ENDIF() 13 ADD_DEFINITIONS(-Os --std=gnu99 -Wmissing-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter) 14 15 IF(HAS_IMPLICIT_FALLTHROUGH) 16 ADD_DEFINITIONS(-Wimplicit-fallthrough) 17 ENDIF() 18 19 SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") 20 21 SET(SOURCES 22 main.c utils.c system.c tunnel.c handler.c 23 interface.c interface-ip.c interface-event.c 24 iprule.c proto.c proto-static.c proto-shell.c proto-ext.c proto-ucode.c 25 config.c device.c bridge.c veth.c vlan.c alias.c 26 macvlan.c ubus.c vlandev.c extdev.c bonding.c 27 vrf.c ucode.c) 28 29 FIND_LIBRARY(uci NAMES uci) 30 FIND_LIBRARY(ubox NAMES ubox) 31 FIND_LIBRARY(ubus NAMES ubus) 32 FIND_LIBRARY(ucode NAMES ucode) 33 FIND_LIBRARY(json NAMES json-c json) 34 FIND_LIBRARY(udebug NAMES udebug) 35 FIND_LIBRARY(blobmsg_json NAMES blobmsg_json) 36 37 SET(LIBS ${ubox} ${ubus} ${uci} ${json} ${blobmsg_json} ${udebug} ${ucode}) 38 39 FIND_PATH(ubox_include_dir libubox/usock.h) 40 FIND_PATH(ucode_include_dir ucode/vm.h) 41 FIND_PATH(udebug_include_dir udebug.h) 42 INCLUDE_DIRECTORIES(${ubox_include_dir} ${ucode_include_dir}) 43 44 IF (NOT DEFINED LIBNL_LIBS) 45 include(FindPkgConfig) 46 pkg_search_module(PC_LIBNL libnl-tiny libnl-3.0 libnl-3 libnl nl-3 nl) 47 IF (PC_LIBNL_FOUND) 48 include_directories(${PC_LIBNL_INCLUDE_DIRS}) 49 SET(LIBNL_LIBS ${PC_LIBNL_LIBRARIES}) 50 ENDIF() 51 ENDIF() 52 53 ADD_CUSTOM_COMMAND( 54 OUTPUT ethtool-modes.h 55 COMMAND ./make_ethtool_modes_h.sh ${CMAKE_C_COMPILER} > ./ethtool-modes.h 56 DEPENDS ./make_ethtool_modes_h.sh 57 ) 58 ADD_CUSTOM_TARGET(ethtool-modes-h DEPENDS ethtool-modes.h) 59 60 IF("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" AND NOT DUMMY_MODE) 61 SET(SOURCES ${SOURCES} system-linux.c) 62 SET(LIBS ${LIBS} ${LIBNL_LIBS}) 63 include(CheckCSourceCompiles) 64 check_c_source_compiles(" 65 #include <linux/ethtool_netlink.h> 66 int main(void) { return ETHTOOL_A_PSE_PRIO; } 67 " HAVE_ETHTOOL_A_PSE_PRIO) 68 IF(HAVE_ETHTOOL_A_PSE_PRIO) 69 ADD_DEFINITIONS(-DHAVE_ETHTOOL_A_PSE_PRIO) 70 ENDIF() 71 ELSE() 72 ADD_DEFINITIONS(-DDUMMY_MODE=1) 73 SET(SOURCES ${SOURCES} system-dummy.c) 74 ENDIF() 75 76 IF(DEBUG) 77 ADD_DEFINITIONS(-DDEBUG -g3) 78 IF(NO_OPTIMIZE) 79 ADD_DEFINITIONS(-O0) 80 ENDIF() 81 ENDIF() 82 83 84 ADD_EXECUTABLE(netifd ${SOURCES}) 85 86 TARGET_LINK_LIBRARIES(netifd ${LIBS}) 87 88 INSTALL(TARGETS netifd 89 RUNTIME DESTINATION sbin 90 ) 91 ADD_DEPENDENCIES(netifd ethtool-modes-h)
This page was automatically generated by LXR 0.3.1. • OpenWrt