[refactoring] revise architecture of TCP module
[platform/core/ml/aitt.git] / CMakeLists.txt
1 CMAKE_MINIMUM_REQUIRED(VERSION 3.4.1)
2 SET(CMAKE_SKIP_BUILD_RPATH true)
3 PROJECT(aitt VERSION 0.0.1 LANGUAGES CXX C)
4 SET_PROPERTY(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 0)
5 SET(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
6 SET(CMAKE_CXX_STANDARD 11)
7 SET(CMAKE_CXX_STANDARD_REQUIRED ON)
8 SET(CMAKE_CXX_EXTENSIONS OFF)
9
10 OPTION(VERSIONING "Specify Library Verion" ON)
11
12 INCLUDE(GNUInstallDirs)
13 INCLUDE(FindPkgConfig)
14
15 IF(PLATFORM STREQUAL "android")
16         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fdiagnostics-color")
17         ADD_DEFINITIONS(-DANDROID)
18         ADD_DEFINITIONS(-DPLATFORM=${PLATFORM})
19         INCLUDE(${PROJECT_ROOT_DIR}/cmake/aitt_android_flatbuffers.cmake)
20         INCLUDE(${PROJECT_ROOT_DIR}/cmake/aitt_android_glib.cmake)
21         INCLUDE(${PROJECT_ROOT_DIR}/cmake/aitt_android_mosquitto.cmake)
22         SET(AITT_NEEDS_LIBRARIES ${GLIB_LIBRARIES} ${MOSQUITTO_LIBRARY} ${FLATBUFFERS_LIBRARY} ${LOG_LIBRARIES})
23 ELSE(PLATFORM STREQUAL "android")
24         IF(PLATFORM STREQUAL "tizen")
25                 ADD_DEFINITIONS(-DTIZEN)
26                 ADD_DEFINITIONS(-DPLATFORM=${PLATFORM})
27                 SET(ADDITIONAL_OPT "-DTIZEN")
28                 SET(TIZEN_LOG_PKG dlog)
29         ENDIF(PLATFORM STREQUAL "tizen")
30         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wno-psabi -fdiagnostics-color -fvisibility=hidden")
31         PKG_CHECK_MODULES(AITT_NEEDS REQUIRED ${TIZEN_LOG_PKG} libmosquitto flatbuffers glib-2.0)
32         INCLUDE_DIRECTORIES(${AITT_NEEDS_INCLUDE_DIRS})
33         LINK_DIRECTORIES(${AITT_NEEDS_LIBRARY_DIRS})
34 ENDIF(PLATFORM STREQUAL "android")
35
36 FIND_PACKAGE(Threads REQUIRED)
37
38 IF(LOG_STDOUT)
39         ADD_DEFINITIONS(-DLOG_STDOUT)
40 ENDIF(LOG_STDOUT)
41
42 ADD_DEFINITIONS(-DLOG_TAG="AITT")
43
44 IF(COVERAGE_TEST)
45         ADD_COMPILE_OPTIONS(--coverage)
46         ADD_LINK_OPTIONS(--coverage -Wl,--dynamic-list-data)
47 ENDIF(COVERAGE_TEST)
48
49 SET(AITT_COMMON ${PROJECT_NAME}-common)
50
51 INCLUDE_DIRECTORIES(include common)
52
53 AUX_SOURCE_DIRECTORY(src AITT_SRC)
54
55 SET(MODULE_MAN_SRC src/ModuleManager.cc src/NullTransport.cc)
56 ADD_LIBRARY(MODULE_MANAGER OBJECT ${MODULE_MAN_SRC})
57 list(REMOVE_ITEM AITT_SRC ${MODULE_MAN_SRC})
58
59 ADD_LIBRARY(${PROJECT_NAME} SHARED ${AITT_SRC} $<TARGET_OBJECTS:MODULE_MANAGER>)
60 TARGET_LINK_LIBRARIES(${PROJECT_NAME} Threads::Threads ${CMAKE_DL_LIBS} ${AITT_COMMON})
61 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${AITT_NEEDS_LIBRARIES})
62
63 TARGET_COMPILE_OPTIONS(${PROJECT_NAME} PUBLIC ${AITT_NEEDS_CFLAGS_OTHER})
64 IF(VERSIONING)
65         SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
66                 VERSION ${PROJECT_VERSION}
67                 SOVERSION ${PROJECT_VERSION_MAJOR}
68                 )
69 ENDIF(VERSIONING)
70 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
71
72 FILE(GLOB HEADERS include/*.h)
73 INSTALL(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
74
75 CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY)
76 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
77 SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_CMAKE_CLEAN_FILES ${PROJECT_NAME}.pc)
78
79 IF(BUILD_TESTING)
80         ENABLE_TESTING() # NOTE: Must comes first than unittest subdirectories
81         SET(AITT_TEST_BINDIR ${CMAKE_INSTALL_BINDIR})
82         ADD_SUBDIRECTORY(tests)
83         ADD_SUBDIRECTORY(tools)
84 ENDIF(BUILD_TESTING)
85
86 OPTION(WITH_TCP "Build TCP module?" ON)
87 IF(WITH_TCP)
88         ADD_SUBDIRECTORY(modules/tcp)
89 ENDIF()
90 IF(PLATFORM STREQUAL "tizen")
91         OPTION(WITH_WEBRTC "Build WebRtc module?" ON)
92         IF(WITH_WEBRTC)
93                 ADD_DEFINITIONS(-DWITH_WEBRTC)
94                 ADD_SUBDIRECTORY(modules/webrtc)
95         ENDIF()
96 ENDIF(PLATFORM STREQUAL "tizen")
97
98 ADD_SUBDIRECTORY(common)