1 # Copyright (c) 2014 Samsung Electronics Co., Ltd
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)
19 option(USE_FUNCTION_FS "Use FunctionFS" NO)
20 option(BUILD_UNIT_TESTS "Build unit tests" NO)
23 ############################# cmake packages ##################################
25 INCLUDE(FindPkgConfig)
27 ############################# compiler flags ##################################
37 src/file_sync_service.c
38 src/usb_linux_client.c
40 src/socket_inaddr_any_server.c
41 src/socket_local_client.c
42 src/socket_local_server.c
43 src/socket_loopback_client.c
44 src/socket_loopback_server.c
45 src/socket_network_client.c
48 src/commandline_sdbd.c
49 src/usb_linux_client.c
50 src/usb_funcfs_client.c
51 src/default_plugin_auth.c
52 src/default_plugin_basic.c
53 src/default_plugin_main.c
54 src/default_plugin_event.c
55 src/default_plugin_appcmd.c
56 src/default_plugin_shellcmd.c
62 src/unordered_ptr_set.cpp
72 src/file_sync_service.c
73 src/usb_linux_client.c
75 src/socket_inaddr_any_server.c
76 src/socket_local_client.c
77 src/socket_local_server.c
78 src/socket_loopback_client.c
79 src/socket_loopback_server.c
80 src/socket_network_client.c
83 src/commandline_sdbd.c
84 src/usb_linux_client.c
85 src/usb_funcfs_client.c
86 src/default_plugin_auth.c
87 src/default_plugin_basic.c
88 src/default_plugin_main.c
89 src/default_plugin_event.c
90 src/default_plugin_appcmd.c
91 src/default_plugin_shellcmd.c
98 src/unordered_ptr_set.cpp
105 include(FindPkgConfig)
107 pkg_check_modules(pkgs REQUIRED
117 FOREACH(flag ${pkgs_CFLAGS})
118 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
121 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
123 INCLUDE_DIRECTORIES(src)
125 ADD_DEFINITIONS("-O2 -g -Wall -Wno-unused-parameter -fPIE")
126 ADD_DEFINITIONS("-DSDB_HOST=0")
127 ADD_DEFINITIONS("-D_XOPEN_SOURCE")
128 ADD_DEFINITIONS("-D_GNU_SOURCE")
129 ADD_DEFINITIONS("-DHAVE_FORKEXEC")
130 ADD_DEFINITIONS("-D_DROP_PRIVILEGE")
131 ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=64")
132 ADD_DEFINITIONS("-DSUPPORT_ENCRYPT")
135 ADD_DEFINITIONS("-DANDROID_GADGET=1")
138 IF(WEARABLE_PROFILE STREQUAL on)
139 ADD_DEFINITIONS("-D_WEARABLE")
143 pkg_check_modules(SYSTEMD REQUIRED libsystemd)
144 foreach(flag ${SYSTEMD_CFLAGS})
145 set(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
148 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
149 SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -w")
151 find_package(Threads REQUIRED)
153 ADD_EXECUTABLE(sdbd ${SDBD_SRCS})
154 ADD_EXECUTABLE(sdbd-user ${SDBD_SUBS})
155 ADD_EXECUTABLE(sdbd-service ${SDBD_SERVICE_SRCS})
156 TARGET_LINK_LIBRARIES(sdbd -pie -lsmack -lresolv -ldl -pthread ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS} ${SYSTEMD_LDFLAGS})
157 TARGET_LINK_LIBRARIES(sdbd-service -pie -lsmack -lresolv -ldl -pthread ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS} ${SYSTEMD_LDFLAGS})
158 TARGET_LINK_LIBRARIES(sdbd-user -pie ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS})
162 PROPERTY COMPILE_DEFINITIONS
170 APPEND PROPERTY COMPILE_DEFINITIONS
178 PROPERTY COMPILE_DEFINITIONS
186 APPEND PROPERTY COMPILE_DEFINITIONS
196 APPEND PROPERTY COMPILE_DEFINITIONS
201 install(TARGETS sdbd sdbd-user sdbd-service DESTINATION /usr/sbin)
202 install(FILES script/sdbd DESTINATION /etc/init.d)
204 # Extract descriptors and strings for systemd socket activation
205 add_executable(extract_descs_strings src/extract_descs_strings.c src/descs_strings.c)
206 add_custom_command(OUTPUT descs strs
207 COMMAND ./extract_descs_strings
208 DEPENDS extract_descs_strings)
209 add_custom_target(descs_strings ALL DEPENDS descs strs)
211 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/descs DESTINATION /etc/sdbd)
212 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/strs DESTINATION /etc/sdbd)
214 # Optionally build unit tests binary -- could be helpful during further development
217 add_subdirectory(test)