revise name and location
[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)
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)
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         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")
27                 SET(PKGS dlog)
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")
34
35 FIND_PACKAGE(Threads REQUIRED)
36
37 IF(LOG_STDOUT)
38         ADD_DEFINITIONS(-DLOG_STDOUT)
39 ENDIF(LOG_STDOUT)
40
41 ADD_DEFINITIONS(-DLOG_TAG="AITT")
42
43 IF(COVERAGE_TEST)
44         ADD_COMPILE_OPTIONS(--coverage)
45         ADD_LINK_OPTIONS(--coverage -Wl,--dynamic-list-data)
46 ENDIF(COVERAGE_TEST)
47
48 SET(AITT_COMMON ${PROJECT_NAME}-common)
49
50 INCLUDE_DIRECTORIES(include common)
51
52 AUX_SOURCE_DIRECTORY(src AITT_SRC)
53
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})
57
58 TARGET_COMPILE_OPTIONS(${PROJECT_NAME} PUBLIC ${AITT_NEEDS_CFLAGS_OTHER})
59 IF(VERSIONING)
60         SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
61                 VERSION ${PROJECT_VERSION}
62                 SOVERSION ${PROJECT_VERSION_MAJOR}
63                 )
64 ENDIF(VERSIONING)
65 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
66
67 FILE(GLOB HEADERS include/*.h)
68 INSTALL(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
69
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)
73
74 IF(BUILD_TESTING)
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)
79 ENDIF(BUILD_TESTING)
80
81 OPTION(WITH_TCP "Build TCP module?" ON)
82 IF(WITH_TCP)
83         ADD_SUBDIRECTORY(modules/tcp)
84 ENDIF()
85 IF(PLATFORM STREQUAL "tizen")
86         OPTION(WITH_WEBRTC "Build WebRtc module?" ON)
87         IF(WITH_WEBRTC)
88                 ADD_DEFINITIONS(-DWITH_WEBRTC)
89                 ADD_SUBDIRECTORY(modules/webrtc)
90         ENDIF()
91 ENDIF(PLATFORM STREQUAL "tizen")
92
93 ADD_SUBDIRECTORY(common)