1 # Copyright (c) 2011 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 # @file CMakeLists.txt
17 # @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
18 # @author Pawel Sikorski (p.sikorski@samsung.com)
23 # Check minimum CMake version
24 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
29 INCLUDE(FindPkgConfig)
31 STRING(REGEX MATCH "([^.]*)" PROJECT_API_VERSION "${PROJECT_VERSION}")
32 ADD_DEFINITIONS("-DPROJECT_API_VERSION=\"$(PROJECT_API_VERSION)\"")
33 MESSAGE(STATUS "Version from changelog: ${PROJECT_VERSION}")
34 ADD_DEFINITIONS("-DWRT_ENGINE_VERSION=\"${PROJECT_VERSION}\"") # WRT_ENGINE_VERSION is used by UA
35 #ADD_DEFINITIONS("-DWRT_SMACK_ENABLED")
37 #############################
39 IF(NOT CMAKE_BUILD_TYPE)
40 SET(CMAKE_BUILD_TYPE "Release")
41 ENDIF(NOT CMAKE_BUILD_TYPE)
43 OPTION(DPL_LOG "DPL logs status" ON)
44 OPTION(WITH_TESTS "Build tests" OFF)
45 OPTION(CSP_SUPPORT "Support for csp policy" ON)
46 OPTION(ALLOW_NAVIGATION_SUPPORT "Support for allow-navigation" ON)
47 OPTION(APP_SCHEME_SUPPORT "Support for app:// scheme" OFF)
48 OPTION(CORS_WHITELISTING_SUPPORT "CORS white listing for access positions" OFF)
49 OPTION(MULTIPROCESS_SERVICE_SUPPORT "Process per service" OFF)
50 OPTION(MULTIPROCESS_SERVICE_SUPPORT_INLINE "Process per service - inline mode support" OFF)
51 OPTION(DECRYPT_SUPPORT "Enable appmanager capabilities" ON)
52 OPTION(MULTI_USER_SUPPORT "Enable multi-user support" OFF)
54 IF(MULTI_USER_SUPPORT)
55 ADD_DEFINITIONS("-DMULTI_USER_SUPPORT")
57 ADD_DEFINITIONS("-DDAC_ACTIVATE")
58 ENDIF(MULTI_USER_SUPPORT)
61 ADD_DEFINITIONS("-DDECRYPT")
62 ENDIF(DECRYPT_SUPPORT)
63 OPTION(X11_SUPPORT "Enable X11" ON)
65 ADD_DEFINITIONS("-DX11")
68 ADD_DEFINITIONS("-DCSP_ENABLED")
70 IF(ALLOW_NAVIGATION_SUPPORT)
71 ADD_DEFINITIONS("-DALLOW_NAVIGATION_ENABLED")
72 ENDIF(ALLOW_NAVIGATION_SUPPORT)
73 IF(APP_SCHEME_SUPPORT)
74 ADD_DEFINITIONS("-DAPP_SCHEME_ENABLED")
75 ENDIF(APP_SCHEME_SUPPORT)
76 IF(CORS_WHITELISTING_SUPPORT)
77 ADD_DEFINITIONS("-DCORS_WHITELISTING_ENABLED")
78 ENDIF(CORS_WHITELISTING_SUPPORT)
79 IF(MULTIPROCESS_SERVICE_SUPPORT)
80 ADD_DEFINITIONS("-DMULTIPROCESS_SERVICE_SUPPORT")
81 IF (MULTIPROCESS_SERVICE_SUPPORT_INLINE)
82 ADD_DEFINITIONS("-DMULTIPROCESS_SERVICE_SUPPORT_INLINE")
83 ENDIF(MULTIPROCESS_SERVICE_SUPPORT_INLINE)
84 ENDIF(MULTIPROCESS_SERVICE_SUPPORT)
85 # logs can be only enabled in debug mode
86 IF(CMAKE_BUILD_TYPE MATCHES "Profiling" AND DPL_LOG)
87 MESSAGE(STATUS "Logging disabled for DPL")
88 ELSE(CMAKE_BUILD_TYPE MATCHES "Profiling" AND DPL_LOG)
89 ADD_DEFINITIONS("-DDPL_LOGS_ENABLED")
90 MESSAGE(STATUS "Logging enabled for DPL")
91 ENDIF(CMAKE_BUILD_TYPE MATCHES "Profiling" AND DPL_LOG)
93 MESSAGE(STATUS "WITH_TESTS: " ${WITH_TESTS})
94 MESSAGE(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
95 OPTION(PROFILING "Profiling status" OFF)
96 IF(CMAKE_BUILD_TYPE MATCHES "Profiling")
97 MESSAGE(STATUS "PROFILING: ENABLED")
98 ADD_DEFINITIONS("-DPROFILING_ENABLED")
100 ELSE(CMAKE_BUILD_TYPE MATCHES "Profiling")
101 MESSAGE(STATUS "PROFILING: DISABLED")
102 ENDIF(CMAKE_BUILD_TYPE MATCHES "Profiling")
105 SET(CMAKE_C_FLAGS_PROFILING "-O2")
106 SET(CMAKE_CXX_FLAGS_PROFILING "-O2 -std=c++0x")
107 SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
108 SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -std=c++0x -g")
109 SET(CMAKE_C_FLAGS_RELEASE "-O2 -g")
110 SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -std=c++0x -g")
111 SET(CMAKE_CXX_FLAGS_CCOV "-O0 -std=c++0x -g --coverage")
113 ADD_DEFINITIONS("-fPIC") # If supported for the target machine, emit position-independent code, suitable for dynamic linking and avoiding any limit on the size of the global offset table. This option makes a difference on the m68k, PowerPC and SPARC. (BJ: our ARM too?)
114 #ADD_DEFINITIONS("-fvisibility=hidden") # Set the default ELF image symbol visibility to hidden - all symbols will be marked with this unless overridden within the code.
116 # We should be building with position independent code, but something
117 # about the mismatch of various flags ends up breaking the build on
118 # x64_64 architectues. This issues is being tracked with TZIVI-1185
119 #ADD_DEFINITIONS("-fPIE")
121 ADD_DEFINITIONS("-DLIBDIR_PREFIX=\"${LIB_INSTALL_DIR}\"")
123 # Set compiler warning flags
124 #ADD_DEFINITIONS("-Werror") # Make all warnings into errors.
125 ADD_DEFINITIONS("-Wall") # Generate all warnings
126 ADD_DEFINITIONS("-Wextra") # Generate even more extra warnings
127 ADD_DEFINITIONS("-Wno-variadic-macros") # Inhibit variadic macros warnings (needed for ORM)
128 #ADD_DEFINITIONS("-ansi") # Accept only ANSI code
129 #ADD_DEFINITIONS("-pedantic") # Accept only pedantic code
130 #ADD_DEFINITIONS("-Weffc++") # Accept only effective C++ code
131 #ADD_DEFINITIONS("-Wwrite-strings") # Do not accept writing to contant string memory
132 #ADD_DEFINITIONS("-Winit-self") # Do not accept initializing variable with itself
133 #ADD_DEFINITIONS("-Wcast-align") # Do not accept misaligning with casting
134 #ADD_DEFINITIONS("-Wcast-qual") # Do not accept removing qualifiers with casting
135 #ADD_DEFINITIONS("-Wold-style-cast") # Do not accept old style casting
136 #ADD_DEFINITIONS("-Wpointer-arith") # Warn about void pointer arthimetic
137 #ADD_DEFINITIONS("-Wstrict-aliasing") # Ensure strict aliasing
138 #ADD_DEFINITIONS("-Wuninitialized") # Do not accept uninitialized variables
139 #ADD_DEFINITIONS("-Wmissing-declarations") # Warn about global and non-accesible functions
140 #ADD_DEFINITIONS("-Woverloaded-virtual") # Warn about incidental overiding non-virtual base methods
141 #ADD_DEFINITIONS("-Wnon-virtual-dtor") # Warn about non-virtual destructor
142 #ADD_DEFINITIONS("-Wctor-dtor-privacy") # Warn about useless and non-constructible classes
143 #ADD_DEFINITIONS("-Wlong-long") # Do not allow using long long
144 #ADD_DEFINITIONS("-Wunreachable-code") # Warn about unreachable code
145 #ADD_DEFINITIONS("-Wfloat-equal") # Do not accept comparing floating points with equal operator
146 #ADD_DEFINITIONS("-Wabi") # Warn about possible ABI problems
147 #ADD_DEFINITIONS("-Wswitch-enum") # Check switch enumeration
148 #ADD_DEFINITIONS("-Wformat=2") # Check printf formatting
149 #ADD_DEFINITIONS("-Wundef") # Warn if an undefined identifier is evaluated in an @if directive.
150 #ADD_DEFINITIONS("-Wshadow") # Warn whenever a local variable shadows another local variable, parameter or global variable or whenever a built-in function is shadowed
151 #ADD_DEFINITIONS("-Wconversion") # Warn for implicit conversions that may alter a value
152 #ADD_DEFINITIONS("-Wlogical-op") # Warn about suspicious uses of logical operators in expressions
153 #ADD_DEFINITIONS("-Waggregate-return") # Warn if any functions that return structures or unions are defined or called.
154 #ADD_DEFINITIONS("-Wmissing-field-initializers") # Warn if a structure's initializer has some fields missing.
155 #ADD_DEFINITIONS("-Wredundant-decls") # Warn if anything is declared more than once in the same scope, even in cases where multiple declaration is valid and changes nothing.
156 #ADD_DEFINITIONS("-Wmissing-include-dirs") # Warn if a user-supplied include directory does not exist.
157 #ADD_DEFINITIONS("-Wswitch-default") # Warn whenever a switch statement does not have a default case.
158 #ADD_DEFINITIONS("-Wsync-nand") # Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used. These functions changed semantics in GCC 4.4.
159 #ADD_DEFINITIONS("-Wunused") # All the above -Wunused options combined.
160 #ADD_DEFINITIONS("-Wstrict-overflow=5") # Also warn about cases where the compiler reduces the magnitude of a constant involved in a comparison.
161 #ADD_DEFINITIONS("-Wunsafe-loop-optimizations") # Warn if the loop cannot be optimized because the compiler could not assume anything on the bounds of the loop indices. With -funsafe-loop-optimizations warn if the compiler made such assumptions.
162 #ADD_DEFINITIONS("-Wmissing-format-attribute") # Warn about function pointers which might be candidates for format attributes.
163 #ADD_DEFINITIONS("-Wpadded") # Warn if padding is included in a structure, either to align an element of the structure or to align the whole structure.
164 #ADD_DEFINITIONS("-Winline") # Warn if a function can not be inlined and it was declared as inline.
165 #ADD_DEFINITIONS("-Wdisabled-optimization") # Warn if a requested optimization pass is disabled.
166 ADD_DEFINITIONS("-Wno-deprecated") # No warnings about deprecated features
168 #############################
170 SET(TARGET_WRT_ENGINE_STATIC "wrt-engine-static")
171 SET(TARGET_TESTS_COMMON_LIB "wrt-engine-tests-lib") #tests only
172 SET(TARGET_PROFILING_LIB "wrt-profiling")
173 SET(TARGET_PLUGIN_MODULE_LIB "wrt-plugin-module")
174 SET(TARGET_VIEW_MODULE_LIB "wrt-view-module")
175 SET(TARGET_CORE_MODULE_LIB "wrt-core-module")
176 SET(TARGET_INJECTED_BUNDLE_LIB "wrt-injected-bundle")
180 SET(PROF_LIB ${TARGET_PROFILING_LIB})
184 ${PROJECT_SOURCE_DIR}/wrt_reset_db.sh
185 ${PROJECT_SOURCE_DIR}/wrt_reset_all.sh
186 DESTINATION /usr/bin/
188 INSTALL(FILES ${CMAKE_SOURCE_DIR}/warp_security_error.msg
189 DESTINATION /usr/etc/wrt/
190 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE
192 INSTALL(FILES ${CMAKE_SOURCE_DIR}/parental.png
193 DESTINATION /usr/etc/wrt/
194 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE
196 INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/default_icon_tizen.png
197 DESTINATION share/wrt-engine/
199 INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/default_icon_wac.png
200 DESTINATION share/wrt-engine/
202 INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/userAgentProfile.xml
203 DESTINATION share/wrt-engine/
205 INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/WAC2.0TestRootCA.cert
206 DESTINATION share/wrt-engine/
209 OUTPUT ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
210 COMMAND edje_cc -id ${PROJECT_SOURCE_DIR}/data/images
211 ARGS ${PROJECT_SOURCE_DIR}/data/wrt_theme.edc
212 ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
213 DEPENDS ${PROJECT_SOURCE_DIR}/data/wrt_theme.edc
216 OUTPUT ${PROJECT_SOURCE_DIR}/data/Daemon.edj
218 ARGS ${PROJECT_SOURCE_DIR}/data/Daemon.edc
219 ${PROJECT_SOURCE_DIR}/data/Daemon.edj
220 DEPENDS ${PROJECT_SOURCE_DIR}/data/Daemon.edc
223 OUTPUT ${PROJECT_SOURCE_DIR}/data/Platform.edj
225 ARGS ${PROJECT_SOURCE_DIR}/data/Platform.edc
226 ${PROJECT_SOURCE_DIR}/data/Platform.edj
227 DEPENDS ${PROJECT_SOURCE_DIR}/data/Platform.edc
229 ADD_CUSTOM_TARGET( WRT_THEME_EDJES ALL DEPENDS
230 ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
232 ADD_CUSTOM_TARGET( WRT_EDJES ALL DEPENDS
233 ${PROJECT_SOURCE_DIR}/data/Daemon.edj
235 ADD_CUSTOM_TARGET( WRT_PLATFORM_LAYOUT_EDJES ALL DEPENDS
236 ${PROJECT_SOURCE_DIR}/data/Platform.edj
239 OUTPUT ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
241 ARGS ${PROJECT_SOURCE_DIR}/data/generic_popup.edc
242 ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
243 DEPENDS ${PROJECT_SOURCE_DIR}/data/generic_popup.edc
245 ADD_CUSTOM_TARGET(generic_popup ALL DEPENDS
246 ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
248 INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
249 DESTINATION share/edje/ace/
251 INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
252 DESTINATION share/edje/wrt/
254 INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/Daemon.edj
255 DESTINATION share/edje/wrt/
257 INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/Platform.edj
258 DESTINATION share/edje/wrt/
261 OUTPUT ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edj
263 ARGS ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edc
264 ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edj
265 DEPENDS ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edc
267 ADD_CUSTOM_TARGET(generic_popup_horizontal ALL DEPENDS
268 ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edj
270 INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edj
271 DESTINATION share/edje/ace/
273 INSTALL(FILES ${CMAKE_SOURCE_DIR}/wrt_env.sh
274 DESTINATION /etc/profile.d/
276 INSTALL(FILES ${CMAKE_SOURCE_DIR}/wrt_launchpad_daemon.rule
277 DESTINATION /etc/smack/accesses2.d/
279 # temp for smack branch
280 INSTALL(FILES ${CMAKE_SOURCE_DIR}/accesses.d/wrt_launchpad_daemon.rule
281 DESTINATION /opt/etc/smack/accesses.d/
284 ADD_SUBDIRECTORY(src)
287 SET(WRT_API_NEW_INCLUDES
288 "${PROJECT_SOURCE_DIR}/src/api_new/"
289 "${PROJECT_SOURCE_DIR}/src/domain/"
290 "${PROJECT_SOURCE_DIR}/src/view/")
292 SET(PKGCONFIG_DIR ${PROJECT_SOURCE_DIR}/pkgconfig)
294 CONFIGURE_FILE(${PKGCONFIG_DIR}/wrt-core.pc.in
295 ${PKGCONFIG_DIR}/wrt-core.pc @ONLY)
296 INSTALL(FILES ${PKGCONFIG_DIR}/wrt-core.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
299 add_subdirectory(tests)