fix build error
[platform/core/ml/aitt.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.7.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 find_package(Threads REQUIRED)
15
16 add_definitions(-DLOG_TAG="AITT")
17 add_definitions(-DPLATFORM=${PLATFORM})
18
19 if(PLATFORM STREQUAL "android")
20         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fdiagnostics-color")
21         add_definitions(-DANDROID)
22         include(${PROJECT_ROOT_DIR}/cmake/aitt_android_flatbuffers.cmake)
23         include(${PROJECT_ROOT_DIR}/cmake/aitt_android_mosquitto.cmake)
24         set(AITT_NEEDS_LIBRARIES ${MOSQUITTO_LIBRARY} ${FLATBUFFERS_LIBRARY} ${LOG_LIBRARIES})
25 else(PLATFORM STREQUAL "android")
26         if(PLATFORM STREQUAL "tizen")
27                 add_definitions(-DTIZEN)
28                 set(ADDITIONAL_OPT "-DTIZEN")
29                 set(ADDITION_PKG dlog)
30         endif(PLATFORM STREQUAL "tizen")
31         if(PLATFORM STREQUAL "tizenRT")
32                 add_definitions(-DTIZEN_RT)
33                 set(USE_GLIB OFF)
34                 set(WITH_MBEDTLS ON)
35                 set(BUILD_TESTING OFF)
36         endif(PLATFORM STREQUAL "tizenRT")
37         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wno-psabi -fdiagnostics-color -fvisibility=hidden")
38         set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
39         if(USE_GLIB)
40                 set(ADDITION_PKG "${ADDITION_PKG} glib-2.0")
41         endif(USE_GLIB)
42         pkg_check_modules(AITT_NEEDS REQUIRED ${ADDITION_PKG} libmosquitto flatbuffers)
43         include_directories(${AITT_NEEDS_INCLUDE_DIRS})
44         link_directories(${AITT_NEEDS_LIBRARY_DIRS})
45 endif(PLATFORM STREQUAL "android")
46
47 if(LOG_STDOUT)
48         add_definitions(-DLOG_STDOUT)
49 endif(LOG_STDOUT)
50
51 if(COVERAGE_TEST)
52         add_compile_options(--coverage)
53         add_link_options(--coverage -Wl,--dynamic-list-data)
54 endif(COVERAGE_TEST)
55
56 set(AITT_COMMON ${PROJECT_NAME}-common)
57 set(AITT_TCP aitt-transport-tcp)
58
59 include_directories(include common)
60
61 aux_source_directory(src AITT_SRC)
62
63 set(AITT_INTERNAL_SRC src/ModuleManager.cc src/NullTransport.cc src/MosquittoMQ.cc)
64 add_library(INTERNAL_OBJ OBJECT ${AITT_INTERNAL_SRC})
65 list(REMOVE_ITEM AITT_SRC ${AITT_INTERNAL_SRC})
66
67 add_library(${PROJECT_NAME} SHARED ${AITT_SRC} $<TARGET_OBJECTS:INTERNAL_OBJ>)
68 target_link_libraries(${PROJECT_NAME} Threads::Threads ${CMAKE_DL_LIBS} ${AITT_COMMON})
69 target_link_libraries(${PROJECT_NAME} ${AITT_NEEDS_LIBRARIES})
70 if(PLATFORM STREQUAL "tizenRT")
71         target_link_libraries(${PROJECT_NAME} ${AITT_TCP})
72 endif(PLATFORM STREQUAL "tizenRT")
73
74 target_compile_options(${PROJECT_NAME} PUBLIC ${AITT_NEEDS_CFLAGS_OTHER})
75 if(VERSIONING)
76         set_target_properties(${PROJECT_NAME} PROPERTIES
77                 VERSION ${PROJECT_VERSION}
78                 SOVERSION ${PROJECT_VERSION_MAJOR}
79                 )
80 endif(VERSIONING)
81 install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
82
83 file(GLOB HEADERS include/*.h)
84 install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
85
86 configure_file(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY)
87 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
88 set_directory_properties(PROPERTIES ADDITIONAL_CMAKE_CLEAN_FILES ${PROJECT_NAME}.pc)
89
90 if(BUILD_TESTING)
91         enable_testing() # NOTE: Must comes first than unittest subdirectories
92         set(AITT_TEST_BINDIR ${CMAKE_INSTALL_BINDIR})
93         add_subdirectory(tests)
94 endif(BUILD_TESTING)
95
96 add_subdirectory(tools)
97
98 option(WITH_TCP "Build TCP module?" ON)
99 option(WITH_MBEDTLS "Use Mbed TLS, not OpenSSL" OFF)
100 option(WITH_WEBRTC "Build WebRtc module?" OFF)
101 option(WITH_RTSP "Build RTSP module?" OFF)
102
103 if(WITH_TCP)
104         add_subdirectory(modules/tcp)
105 endif()
106
107 if(PLATFORM STREQUAL "tizen")
108         if(WITH_WEBRTC)
109                 add_definitions(-DWITH_WEBRTC)
110                 add_subdirectory(modules/webrtc)
111         endif()
112         if(WITH_RTSP)
113                 add_definitions(-DWITH_RTSP)
114                 add_subdirectory(modules/rtsp)
115         endif()
116 endif(PLATFORM STREQUAL "tizen")
117
118 add_subdirectory(common)