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)
10 OPTION(VERSIONING "Specify Library Verion" ON)
12 INCLUDE(GNUInstallDirs)
13 INCLUDE(FindPkgConfig)
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")
36 FIND_PACKAGE(Threads REQUIRED)
39 ADD_DEFINITIONS(-DLOG_STDOUT)
42 ADD_DEFINITIONS(-DLOG_TAG="AITT")
45 ADD_COMPILE_OPTIONS(--coverage)
46 ADD_LINK_OPTIONS(--coverage -Wl,--dynamic-list-data)
49 SET(AITT_COMMON ${PROJECT_NAME}-common)
51 INCLUDE_DIRECTORIES(include common)
53 AUX_SOURCE_DIRECTORY(src AITT_SRC)
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})
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})
63 TARGET_COMPILE_OPTIONS(${PROJECT_NAME} PUBLIC ${AITT_NEEDS_CFLAGS_OTHER})
65 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
66 VERSION ${PROJECT_VERSION}
67 SOVERSION ${PROJECT_VERSION_MAJOR}
70 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
72 FILE(GLOB HEADERS include/*.h)
73 INSTALL(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
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)
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)
86 OPTION(WITH_TCP "Build TCP module?" ON)
88 ADD_SUBDIRECTORY(modules/tcp)
90 IF(PLATFORM STREQUAL "tizen")
91 OPTION(WITH_WEBRTC "Build WebRtc module?" ON)
93 ADD_DEFINITIONS(-DWITH_WEBRTC)
94 ADD_SUBDIRECTORY(modules/webrtc)
96 ENDIF(PLATFORM STREQUAL "tizen")
98 ADD_SUBDIRECTORY(common)