Implement methods
[platform/core/connectivity/wifi-mesh-manager.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2 PROJECT(meshd C)
3
4 MESSAGE(===================================================================)
5 MESSAGE(Building...meshd)
6 MESSAGE(===================================================================)
7
8 MESSAGE(" - Checking...packages dependency")
9 INCLUDE(FindPkgConfig)
10 SET(PKG_MODULES gio-2.0 gio-unix-2.0 dlog libnl-3.0 libnl-genl-3.0 dbus-1 capi-network-connection)
11 pkg_check_modules(daemon_pkgs REQUIRED ${PKG_MODULES})
12
13 MESSAGE(" - Adding external C flags")
14 FOREACH(flag ${daemon_pkgs_CFLAGS})
15         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
16 ENDFOREACH(flag)
17 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Werror -Wextra -Wall -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")
18
19 ##Address-Space Layout Randomization
20 MESSAGE(" - Address-Space Layout Randomizations")
21 SET(CMAKE_C_FLAGS_DEBUG "O0 -g -fPIE")
22 SET(CMAKE_C_FLAGS_RELEASE "O2 -fPIE")
23
24 MESSAGE(" - Set architecture type : " ${ARCHITECTURE})
25 SET(ARCH "${ARCHITECTURE}")
26
27 ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
28 ADD_DEFINITIONS("-DUSE_DLOG")
29
30 IF(TIZEN_ARCH_64)
31         ADD_DEFINITIONS(-DTIZEN_ARCH_64)
32 ENDIF(TIZEN_ARCH_64)
33
34 IF(TIZEN_FEATURE_MESH_ON_DEMAND)
35         ADD_DEFINITIONS(-DTIZEN_FEATURE_MESH_ON_DEMAND)
36 ENDIF(TIZEN_FEATURE_MESH_ON_DEMAND)
37
38 MESSAGE(" - Generating... dbus interface")
39 SET(INTROSPECTION_PATH ${CMAKE_CURRENT_SOURCE_DIR}/introspection)
40 ADD_CUSTOM_COMMAND(
41         OUTPUT dbus
42     COMMAND gdbus-codegen
43             --interface-prefix net.mesh.
44             --generate-c-code mesh-generated-code
45                 #--c-namespace mesh
46             --c-generate-object-manager
47             --generate-docbook generated-docs
48             ${INTROSPECTION_PATH}/mesh.xml
49     COMMENT "Generating mesh GDBus .c/.h"
50 )
51 ADD_CUSTOM_TARGET(GENERATED_DBUS_CODE DEPENDS dbus)
52
53 MESSAGE(" - Adding include dir... include")
54 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
55 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
56
57 MESSAGE(" - Compiling...")
58 FILE(GLOB DAEMON_SRCS *.c ${CMAKE_SOURCE_DIR}/src/*.c)
59 SET(DAEMON_SRCS ${DAEMON_SRCS} ${CMAKE_SOURCE_DIR}/mesh-generated-code.c)
60 SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/mesh-generated-code.c PROPERTIES GENERATED TRUE)
61
62 INCLUDE_DIRECTORIES(${daemon_pkgs_INCLUDE_DIRS})
63 LINK_DIRECTORIES(${daemon_pkgs_LIBRARY_DIRS})
64 MESSAGE("KSR " ${daemon_pkgs_LIBRARY_DIRS})
65
66 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE")
67 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--hash-style=both -pie")
68
69 ADD_EXECUTABLE(${PROJECT_NAME} ${DAEMON_SRCS})
70 ADD_DEPENDENCIES(${PROJECT_NAME} GENERATED_DBUS_CODE)
71
72 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${daemon_pkgs_LIBRARIES})
73
74 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin)
75
76 MESSAGE(" - Copying...meshd")
77 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/files/mesh.sh.in ${CMAKE_SOURCE_DIR}/files/mesh.sh @ONLY)
78 INSTALL(FILES ${CMAKE_SOURCE_DIR}/files/mesh.sh DESTINATION ${SBIN_DIR})