Remove duplicate dependency with implicit dependencies at "Type=dbus"
[platform/core/connectivity/wifi-mesh-manager.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 PROJECT(wmeshd C)
3
4 MESSAGE(===================================================================)
5 MESSAGE(Building...meshd)
6 MESSAGE(===================================================================)
7
8 MESSAGE(" - Checking...packages dependency")
9 INCLUDE(FindPkgConfig)
10 SET(PKG_MODULES
11                 gio-2.0
12                 gio-unix-2.0
13                 dlog
14                 libnl-3.0
15                 libnl-genl-3.0
16                 dbus-1
17                 libcrypto1.1
18                 libtzplatform-config
19                 capi-network-wifi-manager
20                 key-manager)
21 pkg_check_modules(daemon_pkgs REQUIRED ${PKG_MODULES})
22
23 MESSAGE(" - Adding external C flags")
24 FOREACH(flag ${daemon_pkgs_CFLAGS})
25         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
26 ENDFOREACH(flag)
27
28 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic -Wall -Werror-implicit-function-declaration -Werror -Wextra -Wdeclaration-after-statement -Wmissing-declarations -Wredundant-decls -Wcast-align -Wno-array-bounds -Wno-empty-body -Wno-ignored-qualifiers -Wshadow -Wwrite-strings -Wswitch-default -Wno-unused-but-set-parameter -Wno-unused-but-set-variable")
29 IF (BUILD_GTESTS)
30         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fvisibility=default")
31 ELSE (BUILD_GTESTS)
32         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
33 ENDIF (BUILD_GTESTS)
34
35 ##Address-Space Layout Randomization
36 MESSAGE(" - Address-Space Layout Randomizations")
37 SET(CMAKE_C_FLAGS_DEBUG "-fPIE")
38 SET(CMAKE_C_FLAGS_RELEASE "-fPIE")
39
40 ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
41 ADD_DEFINITIONS("-DUSE_DLOG")
42 ADD_DEFINITIONS("-DTIZEN_DEBUG_ENABLE")
43 IF(TIZEN_FEATURE_MESH_ON_DEMAND)
44         ADD_DEFINITIONS(-DTIZEN_FEATURE_MESH_ON_DEMAND)
45 ENDIF(TIZEN_FEATURE_MESH_ON_DEMAND)
46
47 IF(BUILD_GCOV)
48         ADD_DEFINITIONS(-DBUILD_GCOV)
49 ENDIF(BUILD_GCOV)
50
51 MESSAGE(" - Generating... dbus interface")
52 SET(INTROSPECTION_PATH ${CMAKE_CURRENT_SOURCE_DIR}/introspection)
53 ADD_CUSTOM_COMMAND(
54         OUTPUT dbus
55     COMMAND gdbus-codegen
56             --interface-prefix net.wmesh.
57             --generate-c-code wmesh-generated-code
58                 #--c-namespace mesh
59             --c-generate-object-manager
60             --generate-docbook generated-docs
61             ${INTROSPECTION_PATH}/wmesh.xml
62             ${INTROSPECTION_PATH}/wmanager.xml
63     COMMENT "Generating mesh GDBus .c/.h"
64 )
65 ADD_CUSTOM_TARGET(GENERATED_DBUS_CODE DEPENDS dbus)
66
67 MESSAGE(" - Adding include dir... include")
68 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
69 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
70
71 MESSAGE(" - Compiling...")
72 FILE(GLOB DAEMON_SRCS *.c ${CMAKE_SOURCE_DIR}/src/*.c)
73 SET(DAEMON_SRCS ${DAEMON_SRCS} ${CMAKE_SOURCE_DIR}/wmesh-generated-code.c)
74 SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/wmesh-generated-code.c PROPERTIES GENERATED TRUE)
75
76 INCLUDE_DIRECTORIES(${daemon_pkgs_INCLUDE_DIRS})
77 LINK_DIRECTORIES(${daemon_pkgs_LIBRARY_DIRS})
78
79 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE")
80 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--hash-style=both -pie")
81
82 ADD_EXECUTABLE(${PROJECT_NAME} ${DAEMON_SRCS})
83 ADD_DEPENDENCIES(${PROJECT_NAME} GENERATED_DBUS_CODE)
84
85 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${daemon_pkgs_LIBRARIES})
86
87 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin)
88
89 MESSAGE(" - Copying...meshd")
90 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/files/wmesh.sh.in ${CMAKE_SOURCE_DIR}/files/wmesh.sh @ONLY)
91 INSTALL(FILES ${CMAKE_SOURCE_DIR}/files/wmesh.sh DESTINATION ${SBIN_DIR})
92
93 IF(BUILD_GTESTS)
94         ADD_SUBDIRECTORY(unittest)
95 ENDIF(BUILD_GTESTS)
96 ADD_SUBDIRECTORY(haltest)