Merge branch 'tizen_2.4_merge' into tizen
[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/properties.c
47         src/sdktools.c
48         src/strutils.c
49         src/init.c
50         src/fileutils.c
51         src/commandline_sdbd.c
52         src/usb_linux_client.c
53         src/usb_funcfs_client.c
54 )
55
56 include(FindPkgConfig)
57
58 pkg_check_modules(pkgs REQUIRED
59     libtzplatform-config
60     capi-system-info
61     vconf
62     glib-2.0
63     dbus-1
64     dbus-glib-1
65  )
66  
67 FOREACH(flag ${pkgs_CFLAGS})
68         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
69 ENDFOREACH(flag)
70
71 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
72
73 INCLUDE_DIRECTORIES(src)
74
75 ADD_DEFINITIONS("-O2 -g -Wall -Wno-unused-parameter -fPIE")
76 ADD_DEFINITIONS("-DSDB_HOST=0")
77 ADD_DEFINITIONS("-D_XOPEN_SOURCE")
78 ADD_DEFINITIONS("-D_GNU_SOURCE")
79 ADD_DEFINITIONS("-DHAVE_FORKEXEC")
80 ADD_DEFINITIONS("-D_DROP_PRIVILEGE")
81 ADD_DEFINITIONS("-D_FILE_OFFSET_BITS=64")
82
83 IF (_ARM_TARGET)
84     ADD_DEFINITIONS("-DANDROID_GADGET=1")
85 ENDIF (_ARM_TARGET)
86
87 IF(TARGET_ARCH STREQUAL x86)
88     ADD_DEFINITIONS("-DTARGET_ARCH_X86")
89 ELSE()
90     ADD_DEFINITIONS("-DTARGET_ARCH_ARM")
91 ENDIF()
92
93 IF(WEARABLE_PROFILE STREQUAL on)
94     ADD_DEFINITIONS("-D_WEARABLE")
95 ENDIF()
96
97 find_package(Threads REQUIRED)
98
99 ADD_EXECUTABLE(sdbd ${SDBD_SRCS})
100 TARGET_LINK_LIBRARIES(sdbd -pie -lsmack -lresolv -ldl ${CMAKE_THREAD_LIBS_INIT} ${pkgs_LDFLAGS})
101
102 set_property(
103         TARGET sdbd
104         PROPERTY COMPILE_DEFINITIONS
105         SDB_HOST=0
106         _DROP_PRIVILEGE
107         _FILE_OFFSET_BITS=64
108 )
109
110 set_property(
111         TARGET sdbd
112         APPEND PROPERTY COMPILE_DEFINITIONS
113         _XOPEN_SOURCE
114         _GNU_SOURCE
115         HAVE_FORKEXEC
116 )
117
118 if(USE_FUNCTION_FS)
119         set_property(
120                 TARGET sdbd
121                 APPEND PROPERTY COMPILE_DEFINITIONS
122                 USB_FUNCFS
123         )
124 endif()
125
126 install(TARGETS sdbd DESTINATION /usr/sbin)
127 install(FILES script/sdbd DESTINATION /etc/init.d)
128
129
130 # Optionally build unit tests binary -- could be helpful during further development
131 if(BUILD_UNIT_TESTS)
132         enable_testing()
133         add_subdirectory(test)
134 endif()