1 CMAKE_MINIMUM_REQUIRED(VERSION 3.4.1)
2 SET(CMAKE_SKIP_BUILD_RPATH true)
3 PROJECT(aitt VERSION 0.0.1 LANGUAGES CXX)
4 SET_PROPERTY(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 0)
5 SET(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
6 SET(CMAKE_CXX_STANDARD 17)
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 INCLUDE(${PROJECT_ROOT_DIR}/cmake/aitt_android_flatbuffers.cmake)
19 INCLUDE(${PROJECT_ROOT_DIR}/cmake/aitt_android_glib.cmake)
20 INCLUDE(${PROJECT_ROOT_DIR}/cmake/aitt_android_mosquitto.cmake)
21 SET(AITT_NEEDS_LIBRARIES ${GLIB_LIBRARIES} ${MOSQUITTO_LIBRARY} ${FLATBUFFERS_LIBRARY})
22 ELSE(PLATFORM STREQUAL "android")
23 IF(PLATFORM STREQUAL "tizen")
24 ADD_DEFINITIONS(-DTIZEN)
25 ADD_DEFINITIONS(-DPLATFORM=${PLATFORM})
26 SET(ADDITIONAL_OPT "-DTIZEN")
28 ENDIF(PLATFORM STREQUAL "tizen")
29 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wno-psabi -fdiagnostics-color -fvisibility=hidden")
30 PKG_CHECK_MODULES(AITT_NEEDS REQUIRED ${PKGS} libmosquitto flatbuffers glib-2.0)
31 INCLUDE_DIRECTORIES(${AITT_NEEDS_INCLUDE_DIRS})
32 LINK_DIRECTORIES(${AITT_NEEDS_LIBRARY_DIRS})
33 ENDIF(PLATFORM STREQUAL "android")
35 FIND_PACKAGE(Threads REQUIRED)
38 ADD_DEFINITIONS(-DLOG_STDOUT)
41 ADD_DEFINITIONS(-DLOG_TAG="AITT")
44 ADD_COMPILE_OPTIONS(--coverage)
45 ADD_LINK_OPTIONS(--coverage -Wl,--dynamic-list-data)
48 SET(AITT_COMMON ${PROJECT_NAME}-common)
50 INCLUDE_DIRECTORIES(include common)
52 AUX_SOURCE_DIRECTORY(src AITT_SRC)
54 ADD_LIBRARY(${PROJECT_NAME} SHARED ${AITT_SRC})
55 TARGET_LINK_LIBRARIES(${PROJECT_NAME} Threads::Threads ${CMAKE_DL_LIBS} ${AITT_COMMON})
56 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${AITT_NEEDS_LIBRARIES})
58 TARGET_COMPILE_OPTIONS(${PROJECT_NAME} PUBLIC ${AITT_NEEDS_CFLAGS_OTHER})
60 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
61 VERSION ${PROJECT_VERSION}
62 SOVERSION ${PROJECT_VERSION_MAJOR}
65 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
67 FILE(GLOB HEADERS include/*.h)
68 INSTALL(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
70 CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY)
71 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
72 SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_CMAKE_CLEAN_FILES ${PROJECT_NAME}.pc)
75 ENABLE_TESTING() # NOTE: Must comes first than unittest subdirectories
76 SET(AITT_TEST_BINDIR ${CMAKE_INSTALL_BINDIR})
77 ADD_SUBDIRECTORY(tests)
78 ADD_SUBDIRECTORY(tools)
81 OPTION(WITH_TCP "Build TCP module?" ON)
83 ADD_SUBDIRECTORY(modules/tcp)
85 IF(PLATFORM STREQUAL "tizen")
86 OPTION(WITH_WEBRTC "Build WebRtc module?" ON)
88 ADD_DEFINITIONS(-DWITH_WEBRTC)
89 ADD_SUBDIRECTORY(modules/webrtc)
91 ENDIF(PLATFORM STREQUAL "tizen")
93 ADD_SUBDIRECTORY(common)