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)
10 option(VERSIONING "Specify Library Verion" ON)
12 include(GNUInstallDirs)
13 include(FindPkgConfig)
14 find_package(Threads REQUIRED)
16 add_definitions(-DLOG_TAG="AITT")
17 add_definitions(-DPLATFORM=${PLATFORM})
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)
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")
40 set(ADDITION_PKG "${ADDITION_PKG} glib-2.0")
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")
48 add_definitions(-DLOG_STDOUT)
52 add_compile_options(--coverage)
53 add_link_options(--coverage -Wl,--dynamic-list-data)
56 set(AITT_COMMON ${PROJECT_NAME}-common)
57 set(AITT_TCP aitt-transport-tcp)
59 include_directories(include common)
61 aux_source_directory(src AITT_SRC)
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})
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")
74 target_compile_options(${PROJECT_NAME} PUBLIC ${AITT_NEEDS_CFLAGS_OTHER})
76 set_target_properties(${PROJECT_NAME} PROPERTIES
77 VERSION ${PROJECT_VERSION}
78 SOVERSION ${PROJECT_VERSION_MAJOR}
81 install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
83 file(GLOB HEADERS include/*.h)
84 install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
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)
91 enable_testing() # NOTE: Must comes first than unittest subdirectories
92 set(AITT_TEST_BINDIR ${CMAKE_INSTALL_BINDIR})
93 add_subdirectory(tests)
96 add_subdirectory(tools)
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)
104 add_subdirectory(modules/tcp)
107 if(PLATFORM STREQUAL "tizen")
109 add_definitions(-DWITH_WEBRTC)
110 add_subdirectory(modules/webrtc)
113 add_definitions(-DWITH_RTSP)
114 add_subdirectory(modules/rtsp)
116 endif(PLATFORM STREQUAL "tizen")
118 add_subdirectory(common)