1 # Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
16 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3...3.19.1)
18 CMAKE_POLICY(SET CMP0048 NEW)
22 SET(PACKAGE_DESCRIPTION "Library and header files for Vine Native API")
24 SET(VINE_VERSION_MAJOR "1")
25 SET(VINE_VERSION_MINOR "0")
26 SET(VINE_VERSION_PATCH "0")
27 SET(VINE_VERSION ${VINE_VERSION_MAJOR}.${VINE_VERSION_MINOR}.${VINE_VERSION_PATCH})
29 OPTION(USE_EVENT_LOOP_EPOLL "Use epoll event loop" ON)
30 OPTION(USE_EVENT_LOOP_EXTERNAL_GLIB "Use glib event loop" OFF)
31 OPTION(USE_LIBWEBSOCKETS "Use libwebsockets for data path" ON)
32 OPTION(USE_LIBWEBSOCKETS_STATIC "Use libwebsockets static library" ON)
33 OPTION(USE_LIBWEBSOCKETS_STATIC_PREBUILT "Use prebuilt static library(.a)" ON)
34 OPTION(WITH_UNITTEST "With unit tests" OFF)
35 OPTION(WITH_VINE_TEST "With vine command-line test tools" OFF)
36 OPTION(ENABLE_INSTRUMENTATION_MODE "Enable instrumentation mode" OFF)
37 OPTION(ENABLE_DATAPATH_PLUGIN_DEBUG "Enable debug mode for data path plugin" OFF)
39 INCLUDE(FindPkgConfig)
41 SET(BUILD_OS "default")
44 FIND_PROGRAM(UNAME NAMES uname)
45 EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "BUILD_ARCH")
49 STRING(CONCAT DEPS ${DEPS} "dlog capi-base-common capi-system-info")
52 IF(USE_EVENT_LOOP_EPOLL)
53 ADD_DEFINITIONS("-DUSE_VINE_EVENT_LOOP_EPOLL")
54 ENDIF(USE_EVENT_LOOP_EPOLL)
56 IF(USE_EVENT_LOOP_EXTERNAL_GLIB)
57 ADD_DEFINITIONS("-DUSE_VINE_EVENT_LOOP_EXTERNAL_GLIB")
58 STRING(CONCAT DEPS ${DEPS} " glib-2.0 gio-2.0")
59 ENDIF(USE_EVENT_LOOP_EXTERNAL_GLIB)
61 pkg_check_modules(fw_name_deps REQUIRED ${DEPS})
64 SET(VINE_DEPS_LIB pthread)
67 FOREACH(flag ${fw_name_deps_CFLAGS})
68 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
72 SET(BUILD_OS "android")
73 SET(BUILD_ARCH ${ANDROID_ABI})
74 SET(CMAKE_INSTALL_PREFIX ".")
77 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall -g")
78 SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
79 SET(CMAKE_C_FLAGS_RELEASE "-O2 -g")
81 # Don't export symbols by default
82 ADD_DEFINITIONS("-fvisibility=hidden")
84 ADD_DEFINITIONS("-DTIZEN_OS -DUSE_DLOG")
88 IF(TIZEN_OS AND USE_EVENT_LOOP_EXTERNAL_GLIB)
89 ADD_DEFINITIONS("-DBT_SUPPORT")
91 ENDIF(TIZEN_OS AND USE_EVENT_LOOP_EXTERNAL_GLIB)
93 IF(ENABLE_INSTRUMENTATION_MODE)
94 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -finstrument-functions -finstrument-functions-exclude-file-list=src/logger")
95 ADD_DEFINITIONS("-DENABLE_INSTRUMENTATION_MODE")
96 ENDIF(ENABLE_INSTRUMENTATION_MODE)
98 SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++11")
99 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIBDIR}")
101 SET(TARGET_VINE "vine")
102 SET(VINE_LOGGER "vine-logger")
103 SET(VINE_PATH ${PROJECT_SOURCE_DIR}/src)
104 SET(VINE_LOGGER_PATH ${PROJECT_SOURCE_DIR}/src/logger)
106 IF(USE_LIBWEBSOCKETS_STATIC)
107 IF(NOT USE_LIBWEBSOCKETS_STATIC_PREBUILT)
108 SET(LWS_WITH_STATIC ON CACHE BOOL "" FORCE)
109 SET(LWS_WITH_SHARED OFF CACHE BOOL "" FORCE)
110 SET(LWS_WITH_EXTERNAL_POLL ON CACHE BOOL "" FORCE)
111 SET(LWS_IPV6 ON CACHE BOOL "" FORCE)
112 SET(LWS_WITHOUT_TESTAPPS ON CACHE BOOL "" FORCE)
113 SET(LWS_WITH_FILE_OPS OFF CACHE BOOL "" FORCE)
114 SET(LWS_WITH_SYS_SMD OFF CACHE BOOL "" FORCE)
115 SET(LWS_WITH_NETLINK OFF CACHE BOOL "" FORCE)
116 SET(LWS_WITH_VINE_EXT ON CACHE BOOL "" FORCE)
117 ADD_SUBDIRECTORY(third-party/libwebsockets)
118 ENDIF(NOT USE_LIBWEBSOCKETS_STATIC_PREBUILT)
119 SET(PREBUILT_THIRD_PARTY_INCLUDE_PATH "${PROJECT_SOURCE_DIR}/third-party/prebuilt/include")
120 ENDIF(USE_LIBWEBSOCKETS_STATIC)
122 IF(USE_LIBWEBSOCKETS)
123 ADD_DEFINITIONS("-DUSE_LIBWEBSOCKETS")
124 ADD_SUBDIRECTORY(plugins/libwebsockets)
125 ENDIF(USE_LIBWEBSOCKETS)
127 ADD_SUBDIRECTORY(plugins/dns-sd)
129 ADD_SUBDIRECTORY(plugins/ble)
132 ADD_SUBDIRECTORY(include)
133 ADD_SUBDIRECTORY(src/logger)
134 ADD_SUBDIRECTORY(src)
135 ADD_SUBDIRECTORY(pkgconfig)
136 ADD_SUBDIRECTORY(tool)
139 ADD_SUBDIRECTORY(tests/unittest)
143 ADD_SUBDIRECTORY(tests/vine-test)
144 ADD_SUBDIRECTORY(tests/verifier)