refactoring of Module Loader
[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(M_LOADER_OBJ OBJECT src/ModuleLoader.cc src/NullTransport.cc)
55 LIST(REMOVE_ITEM AITT_SRC src/ModuleLoader.cc src/NullTransport.cc)
56
57 ADD_LIBRARY(${PROJECT_NAME} SHARED ${AITT_SRC} $<TARGET_OBJECTS:M_LOADER_OBJ>)
58 TARGET_LINK_LIBRARIES(${PROJECT_NAME} Threads::Threads ${CMAKE_DL_LIBS} ${AITT_COMMON})
59 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${AITT_NEEDS_LIBRARIES})
60
61 TARGET_COMPILE_OPTIONS(${PROJECT_NAME} PUBLIC ${AITT_NEEDS_CFLAGS_OTHER})
62 IF(VERSIONING)
63         SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
64                 VERSION ${PROJECT_VERSION}
65                 SOVERSION ${PROJECT_VERSION_MAJOR}
66                 )
67 ENDIF(VERSIONING)
68 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
69
70 FILE(GLOB HEADERS include/*.h)
71 INSTALL(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
72
73 CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY)
74 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
75 SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_CMAKE_CLEAN_FILES ${PROJECT_NAME}.pc)
76
77 IF(BUILD_TESTING)
78         ENABLE_TESTING() # NOTE: Must comes first than unittest subdirectories
79         SET(AITT_TEST_BINDIR ${CMAKE_INSTALL_BINDIR})
80         ADD_SUBDIRECTORY(tests)
81         ADD_SUBDIRECTORY(tools)
82 ENDIF(BUILD_TESTING)
83
84 OPTION(WITH_TCP "Build TCP module?" ON)
85 IF(WITH_TCP)
86         ADD_SUBDIRECTORY(modules/tcp)
87 ENDIF()
88 IF(PLATFORM STREQUAL "tizen")
89         OPTION(WITH_WEBRTC "Build WebRtc module?" ON)
90         IF(WITH_WEBRTC)
91                 ADD_DEFINITIONS(-DWITH_WEBRTC)
92                 ADD_SUBDIRECTORY(modules/webrtc)
93         ENDIF()
94 ENDIF(PLATFORM STREQUAL "tizen")
95
96 ADD_SUBDIRECTORY(common)