CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(wmeshd C) MESSAGE(===================================================================) MESSAGE(Building...meshd) MESSAGE(===================================================================) MESSAGE(" - Checking...packages dependency") INCLUDE(FindPkgConfig) SET(PKG_MODULES gio-2.0 gio-unix-2.0 dlog libnl-3.0 libnl-genl-3.0 dbus-1 libcrypto libtzplatform-config capi-network-wifi-manager) pkg_check_modules(daemon_pkgs REQUIRED ${PKG_MODULES}) MESSAGE(" - Adding external C flags") FOREACH(flag ${daemon_pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) 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") ##Address-Space Layout Randomization MESSAGE(" - Address-Space Layout Randomizations") SET(CMAKE_C_FLAGS_DEBUG "-fPIE") SET(CMAKE_C_FLAGS_RELEASE "-fPIE") ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") ADD_DEFINITIONS("-DUSE_DLOG") ADD_DEFINITIONS("-DTIZEN_DEBUG_ENABLE") IF(TIZEN_FEATURE_MESH_ON_DEMAND) ADD_DEFINITIONS(-DTIZEN_FEATURE_MESH_ON_DEMAND) ENDIF(TIZEN_FEATURE_MESH_ON_DEMAND) MESSAGE(" - Generating... dbus interface") SET(INTROSPECTION_PATH ${CMAKE_CURRENT_SOURCE_DIR}/introspection) ADD_CUSTOM_COMMAND( OUTPUT dbus COMMAND gdbus-codegen --interface-prefix net.wmesh. --generate-c-code wmesh-generated-code #--c-namespace mesh --c-generate-object-manager --generate-docbook generated-docs ${INTROSPECTION_PATH}/wmesh.xml ${INTROSPECTION_PATH}/wmanager.xml COMMENT "Generating mesh GDBus .c/.h" ) ADD_CUSTOM_TARGET(GENERATED_DBUS_CODE DEPENDS dbus) MESSAGE(" - Adding include dir... include") INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) MESSAGE(" - Compiling...") FILE(GLOB DAEMON_SRCS *.c ${CMAKE_SOURCE_DIR}/src/*.c) SET(DAEMON_SRCS ${DAEMON_SRCS} ${CMAKE_SOURCE_DIR}/wmesh-generated-code.c) SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/wmesh-generated-code.c PROPERTIES GENERATED TRUE) INCLUDE_DIRECTORIES(${daemon_pkgs_INCLUDE_DIRS}) LINK_DIRECTORIES(${daemon_pkgs_LIBRARY_DIRS}) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE") SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--hash-style=both -pie") ADD_EXECUTABLE(${PROJECT_NAME} ${DAEMON_SRCS}) ADD_DEPENDENCIES(${PROJECT_NAME} GENERATED_DBUS_CODE) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${daemon_pkgs_LIBRARIES}) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin) MESSAGE(" - Copying...meshd") CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/files/wmesh.sh.in ${CMAKE_SOURCE_DIR}/files/wmesh.sh @ONLY) INSTALL(FILES ${CMAKE_SOURCE_DIR}/files/wmesh.sh DESTINATION ${SBIN_DIR})