[*KONA_ID]RQ210407-00753 [Tizen 6.5] Full 64bit platform preparation from 9218520
[sdk/target/sdbd.git] / CMakeLists.txt
1 # Copyright (c) 2014 Samsung Electronics Co., Ltd
2 #
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
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
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.
14
15
16 cmake_minimum_required (VERSION 2.8.3)
17 project (sdbd)
18
19 option(USE_FUNCTION_FS "Use FunctionFS" NO)
20 option(BUILD_UNIT_TESTS "Build unit tests" NO)
21
22
23 ############################# cmake packages ##################################
24
25 INCLUDE(FindPkgConfig)
26
27 ############################# compiler flags ##################################
28
29 SET(SDBD_SRCS
30         src/sdb.c
31         src/fdevent.c
32         src/transport.c
33         src/transport_local.c
34         src/transport_usb.c
35         src/sockets.c
36         src/services.c
37         src/file_sync_service.c
38         src/usb_linux_client.c
39         src/utils.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
46         src/sdktools.c
47         src/strutils.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
57         src/hashtable.c
58         src/plugin.c
59         src/plugin_encrypt.c
60         src/descs_strings.c
61         src/sdbd.c
62 )
63
64 SET(SDBD_SERVICE_SRCS
65         src/sdb.c
66         src/fdevent.c
67         src/transport.c
68         src/transport_local.c
69         src/transport_usb.c
70         src/sockets.c
71         src/file_sync_service.c
72         src/usb_linux_client.c
73         src/utils.c
74         src/socket_inaddr_any_server.c
75         src/socket_local_client.c
76         src/socket_local_server.c
77         src/socket_loopback_client.c
78         src/socket_loopback_server.c
79         src/socket_network_client.c
80         src/sdktools.c
81         src/strutils.c
82         src/commandline_sdbd.c
83         src/usb_linux_client.c
84         src/usb_funcfs_client.c
85         src/default_plugin_auth.c
86         src/default_plugin_basic.c
87         src/default_plugin_main.c
88         src/default_plugin_event.c
89         src/default_plugin_appcmd.c
90         src/default_plugin_shellcmd.c
91         src/hashtable.c
92         src/plugin.c
93         src/plugin_encrypt.c
94         src/descs_strings.c
95         src/services.c
96         src/sdbd_service.c
97 )
98
99 SET(SDBD_SUBS
100         src/subprocess.c
101 )
102
103 include(FindPkgConfig)
104
105 pkg_check_modules(pkgs REQUIRED
106         libtzplatform-config
107         capi-system-info
108         capi-system-device
109         vconf
110         glib-2.0
111         gio-2.0
112         dlog
113 )
114
115 FOREACH(flag ${pkgs_CFLAGS})
116         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
117 ENDFOREACH(flag)
118
119 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
120
121 INCLUDE_DIRECTORIES(src)
122
123 ADD_DEFINITIONS("-O2 -g -Wall -Wno-unused-parameter -fPIE")
124 ADD_DEFINITIONS("-DSDB_HOST=0")
125 ADD_DEFINITIONS("-D_XOPEN_SOURCE")
126 ADD_DEFINITIONS("-D_GNU_SOURCE")
127 ADD_DEFINITIONS("-DHAVE_FORKEXEC")
128 ADD_DEFINITIONS("-D_DROP_PRIVILEGE")
129 ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=64")
130 ADD_DEFINITIONS("-DSUPPORT_ENCRYPT")
131
132 IF (_ARM_TARGET)
133         ADD_DEFINITIONS("-DANDROID_GADGET=1")
134 ENDIF (_ARM_TARGET)
135
136 IF(WEARABLE_PROFILE STREQUAL on)
137         ADD_DEFINITIONS("-D_WEARABLE")
138 ENDIF()
139
140 # Get systemd
141 pkg_check_modules(SYSTEMD REQUIRED libsystemd)
142 foreach(flag ${SYSTEMD_CFLAGS})
143         set(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
144 endforeach(flag)
145
146 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
147
148 find_package(Threads REQUIRED)
149
150 ADD_EXECUTABLE(sdbd ${SDBD_SRCS})
151 ADD_EXECUTABLE(sdbd-user ${SDBD_SUBS})
152 ADD_EXECUTABLE(sdbd-service ${SDBD_SERVICE_SRCS})
153 TARGET_LINK_LIBRARIES(sdbd -pie -lsmack -lresolv -ldl ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS} ${SYSTEMD_LDFLAGS})
154 TARGET_LINK_LIBRARIES(sdbd-service -pie -lsmack -lresolv -ldl ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS} ${SYSTEMD_LDFLAGS})
155 TARGET_LINK_LIBRARIES(sdbd-user -pie ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS})
156
157 set_property(
158         TARGET sdbd
159         PROPERTY COMPILE_DEFINITIONS
160         SDB_HOST=0
161         _DROP_PRIVILEGE
162         _FILE_OFFSET_BITS=64
163 )
164
165 set_property(
166         TARGET sdbd
167         APPEND PROPERTY COMPILE_DEFINITIONS
168         _XOPEN_SOURCE
169         _GNU_SOURCE
170         HAVE_FORKEXEC
171 )
172
173 set_property(
174         TARGET sdbd-service
175         PROPERTY COMPILE_DEFINITIONS
176         SDB_HOST=0
177         _DROP_PRIVILEGE
178         _FILE_OFFSET_BITS=64
179 )
180
181 set_property(
182         TARGET sdbd-service
183         APPEND PROPERTY COMPILE_DEFINITIONS
184         _XOPEN_SOURCE
185         _GNU_SOURCE
186         HAVE_FORKEXEC
187 )
188
189
190 if(USE_FUNCTION_FS)
191         set_property(
192                 TARGET sdbd
193                 APPEND PROPERTY COMPILE_DEFINITIONS
194                 USB_FUNCFS
195         )
196 endif()
197
198 CONFIGURE_FILE(packaging/sdbd.pc.in packaging/sdbd.pc @ONLY)
199 install(TARGETS sdbd sdbd-user sdbd-service DESTINATION /usr/sbin)
200 install(FILES script/sdbd DESTINATION /etc/init.d)
201
202 # Extract descriptors and strings for systemd socket activation
203 add_executable(extract_descs_strings src/extract_descs_strings.c src/descs_strings.c)
204 add_custom_command(OUTPUT descs strs
205                 COMMAND ./extract_descs_strings
206                 DEPENDS extract_descs_strings)
207 add_custom_target(descs_strings ALL DEPENDS descs strs)
208
209 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/descs DESTINATION /etc/sdbd)
210 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/strs DESTINATION /etc/sdbd)
211
212 # Optionally build unit tests binary -- could be helpful during further development
213 if(BUILD_UNIT_TESTS)
214         enable_testing()
215         add_subdirectory(test)
216 endif()