Add build config support for X11
[platform/framework/web/wrt.git] / CMakeLists.txt
1 # Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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 # @file        CMakeLists.txt
17 # @author      Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
18 # @author      Pawel Sikorski (p.sikorski@samsung.com)
19 # @version     1.0
20 # @brief
21 #
22
23 # Check minimum CMake version
24 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
25
26 # Project name
27 PROJECT(wrt)
28
29 INCLUDE(FindPkgConfig)
30
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")
36
37 #############################
38 # Build type
39 IF(NOT CMAKE_BUILD_TYPE)
40     SET(CMAKE_BUILD_TYPE "Release")
41 ENDIF(NOT CMAKE_BUILD_TYPE)
42
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 IF(DECRYPT_SUPPORT)
53     ADD_DEFINITIONS("-DDECRYPT")
54 ENDIF(DECRYPT_SUPPORT)
55 OPTION(X11_SUPPORT "Enable X11" ON)
56 IF(X11_SUPPORT)
57     ADD_DEFINITIONS("-DX11")
58 ENDIF(X11_SUPPORT)
59 IF(CSP_SUPPORT)
60     ADD_DEFINITIONS("-DCSP_ENABLED")
61 ENDIF(CSP_SUPPORT)
62 IF(ALLOW_NAVIGATION_SUPPORT)
63     ADD_DEFINITIONS("-DALLOW_NAVIGATION_ENABLED")
64 ENDIF(ALLOW_NAVIGATION_SUPPORT)
65 IF(APP_SCHEME_SUPPORT)
66     ADD_DEFINITIONS("-DAPP_SCHEME_ENABLED")
67 ENDIF(APP_SCHEME_SUPPORT)
68 IF(CORS_WHITELISTING_SUPPORT)
69     ADD_DEFINITIONS("-DCORS_WHITELISTING_ENABLED")
70 ENDIF(CORS_WHITELISTING_SUPPORT)
71 IF(MULTIPROCESS_SERVICE_SUPPORT)
72     ADD_DEFINITIONS("-DMULTIPROCESS_SERVICE_SUPPORT")
73     IF (MULTIPROCESS_SERVICE_SUPPORT_INLINE)
74         ADD_DEFINITIONS("-DMULTIPROCESS_SERVICE_SUPPORT_INLINE")
75     ENDIF(MULTIPROCESS_SERVICE_SUPPORT_INLINE)
76 ENDIF(MULTIPROCESS_SERVICE_SUPPORT)
77 # logs can be only enabled in debug mode
78 IF(CMAKE_BUILD_TYPE MATCHES "Profiling" AND DPL_LOG)
79     MESSAGE(STATUS "Logging disabled for DPL")
80 ELSE(CMAKE_BUILD_TYPE MATCHES "Profiling" AND DPL_LOG)
81     ADD_DEFINITIONS("-DDPL_LOGS_ENABLED")
82     MESSAGE(STATUS "Logging enabled for DPL")
83 ENDIF(CMAKE_BUILD_TYPE MATCHES "Profiling" AND DPL_LOG)
84
85 MESSAGE(STATUS "WITH_TESTS: " ${WITH_TESTS})
86 MESSAGE(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
87 OPTION(PROFILING "Profiling status" OFF)
88 IF(CMAKE_BUILD_TYPE MATCHES "Profiling")
89     MESSAGE(STATUS "PROFILING: ENABLED")
90     ADD_DEFINITIONS("-DPROFILING_ENABLED")
91     SET(PROFILING ON)
92 ELSE(CMAKE_BUILD_TYPE MATCHES "Profiling")
93     MESSAGE(STATUS "PROFILING: DISABLED")
94 ENDIF(CMAKE_BUILD_TYPE MATCHES "Profiling")
95
96 # Compiler flags
97 SET(CMAKE_C_FLAGS_PROFILING    "-O2")
98 SET(CMAKE_CXX_FLAGS_PROFILING  "-O2 -std=c++0x")
99 SET(CMAKE_C_FLAGS_DEBUG        "-O0 -g")
100 SET(CMAKE_CXX_FLAGS_DEBUG      "-O0 -std=c++0x -g")
101 SET(CMAKE_C_FLAGS_RELEASE      "-O2 -g")
102 SET(CMAKE_CXX_FLAGS_RELEASE    "-O2 -std=c++0x -g")
103 SET(CMAKE_CXX_FLAGS_CCOV       "-O0 -std=c++0x -g --coverage")
104
105 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?)
106 #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.
107 ADD_DEFINITIONS("-fPIE")
108
109 ADD_DEFINITIONS("-DLIBDIR_PREFIX=\"${LIB_INSTALL_DIR}\"")
110
111 # Set compiler warning flags
112 #ADD_DEFINITIONS("-Werror")                      # Make all warnings into errors.
113 ADD_DEFINITIONS("-Wall")                        # Generate all warnings
114 ADD_DEFINITIONS("-Wextra")                      # Generate even more extra warnings
115 ADD_DEFINITIONS("-Wno-variadic-macros")         # Inhibit variadic macros warnings (needed for ORM)
116 #ADD_DEFINITIONS("-ansi")                        # Accept only ANSI code
117 #ADD_DEFINITIONS("-pedantic")                    # Accept only pedantic code
118 #ADD_DEFINITIONS("-Weffc++")                     # Accept only effective C++ code
119 #ADD_DEFINITIONS("-Wwrite-strings")              # Do not accept writing to contant string memory
120 #ADD_DEFINITIONS("-Winit-self")                  # Do not accept initializing variable with itself
121 #ADD_DEFINITIONS("-Wcast-align")                 # Do not accept misaligning with casting
122 #ADD_DEFINITIONS("-Wcast-qual")                  # Do not accept removing qualifiers with casting
123 #ADD_DEFINITIONS("-Wold-style-cast")             # Do not accept old style casting
124 #ADD_DEFINITIONS("-Wpointer-arith")              # Warn about void pointer arthimetic
125 #ADD_DEFINITIONS("-Wstrict-aliasing")            # Ensure strict aliasing
126 #ADD_DEFINITIONS("-Wuninitialized")              # Do not accept uninitialized variables
127 #ADD_DEFINITIONS("-Wmissing-declarations")       # Warn about global and non-accesible functions
128 #ADD_DEFINITIONS("-Woverloaded-virtual")         # Warn about incidental overiding non-virtual base methods
129 #ADD_DEFINITIONS("-Wnon-virtual-dtor")           # Warn about non-virtual destructor
130 #ADD_DEFINITIONS("-Wctor-dtor-privacy")          # Warn about useless and non-constructible classes
131 #ADD_DEFINITIONS("-Wlong-long")                  # Do not allow using long long
132 #ADD_DEFINITIONS("-Wunreachable-code")           # Warn about unreachable code
133 #ADD_DEFINITIONS("-Wfloat-equal")                # Do not accept comparing floating points with equal operator
134 #ADD_DEFINITIONS("-Wabi")                        # Warn about possible ABI problems
135 #ADD_DEFINITIONS("-Wswitch-enum")                # Check switch enumeration
136 #ADD_DEFINITIONS("-Wformat=2")                   # Check printf formatting
137 #ADD_DEFINITIONS("-Wundef")                      # Warn if an undefined identifier is evaluated in an @if directive.
138 #ADD_DEFINITIONS("-Wshadow")                     # Warn whenever a local variable shadows another local variable, parameter or global variable or whenever a built-in function is shadowed
139 #ADD_DEFINITIONS("-Wconversion")                 # Warn for implicit conversions that may alter a value
140 #ADD_DEFINITIONS("-Wlogical-op")                 # Warn about suspicious uses of logical operators in expressions
141 #ADD_DEFINITIONS("-Waggregate-return")           # Warn if any functions that return structures or unions are defined or called.
142 #ADD_DEFINITIONS("-Wmissing-field-initializers") # Warn if a structure's initializer has some fields missing.
143 #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.
144 #ADD_DEFINITIONS("-Wmissing-include-dirs")       # Warn if a user-supplied include directory does not exist.
145 #ADD_DEFINITIONS("-Wswitch-default")             # Warn whenever a switch statement does not have a default case.
146 #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.
147 #ADD_DEFINITIONS("-Wunused")                     # All the above -Wunused options combined.
148 #ADD_DEFINITIONS("-Wstrict-overflow=5")          # Also warn about cases where the compiler reduces the magnitude of a constant involved in a comparison.
149 #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.
150 #ADD_DEFINITIONS("-Wmissing-format-attribute")   # Warn about function pointers which might be candidates for format attributes.
151 #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.
152 #ADD_DEFINITIONS("-Winline")                     # Warn if a function can not be inlined and it was declared as inline.
153 #ADD_DEFINITIONS("-Wdisabled-optimization")      # Warn if a requested optimization pass is disabled.
154 ADD_DEFINITIONS("-Wno-deprecated")               # No warnings about deprecated features
155
156 #############################
157 # Targets names
158 SET(TARGET_WRT_ENGINE_STATIC  "wrt-engine-static")
159 SET(TARGET_TESTS_COMMON_LIB "wrt-engine-tests-lib") #tests only
160 SET(TARGET_PROFILING_LIB "wrt-profiling")
161 SET(TARGET_PLUGIN_MODULE_LIB "wrt-plugin-module")
162 SET(TARGET_VIEW_MODULE_LIB "wrt-view-module")
163 SET(TARGET_CORE_MODULE_LIB "wrt-core-module")
164 SET(TARGET_INJECTED_BUNDLE_LIB "wrt-injected-bundle")
165
166 SET(PROF_LIB "")
167 IF(PROFILING)
168     SET(PROF_LIB ${TARGET_PROFILING_LIB})
169 ENDIF(PROFILING)
170
171 INSTALL(FILES
172     ${PROJECT_SOURCE_DIR}/wrt_reset_db.sh
173     ${PROJECT_SOURCE_DIR}/wrt_reset_all.sh
174     DESTINATION /usr/bin/
175     )
176 INSTALL(FILES ${CMAKE_SOURCE_DIR}/warp_security_error.msg
177     DESTINATION /usr/etc/wrt/
178     PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE
179     )
180 INSTALL(FILES ${CMAKE_SOURCE_DIR}/parental.png
181     DESTINATION /usr/etc/wrt/
182     PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE
183     )
184 INSTALL(FILES   ${CMAKE_SOURCE_DIR}/data/default_icon_tizen.png
185     DESTINATION share/wrt-engine/
186     )
187 INSTALL(FILES   ${CMAKE_SOURCE_DIR}/data/default_icon_wac.png
188     DESTINATION share/wrt-engine/
189     )
190 INSTALL(FILES   ${CMAKE_SOURCE_DIR}/data/userAgentProfile.xml
191     DESTINATION share/wrt-engine/
192     )
193 INSTALL(FILES   ${CMAKE_SOURCE_DIR}/data/WAC2.0TestRootCA.cert
194     DESTINATION share/wrt-engine/
195     )
196 ADD_CUSTOM_COMMAND(
197     OUTPUT ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
198     COMMAND edje_cc -id ${PROJECT_SOURCE_DIR}/data/images
199     ARGS  ${PROJECT_SOURCE_DIR}/data/wrt_theme.edc
200           ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
201     DEPENDS ${PROJECT_SOURCE_DIR}/data/wrt_theme.edc
202     )
203 ADD_CUSTOM_COMMAND(
204     OUTPUT ${PROJECT_SOURCE_DIR}/data/Daemon.edj
205     COMMAND edje_cc
206     ARGS  ${PROJECT_SOURCE_DIR}/data/Daemon.edc
207           ${PROJECT_SOURCE_DIR}/data/Daemon.edj
208     DEPENDS ${PROJECT_SOURCE_DIR}/data/Daemon.edc
209     )
210 ADD_CUSTOM_COMMAND(
211     OUTPUT ${PROJECT_SOURCE_DIR}/data/Platform.edj
212     COMMAND edje_cc
213     ARGS  ${PROJECT_SOURCE_DIR}/data/Platform.edc
214           ${PROJECT_SOURCE_DIR}/data/Platform.edj
215     DEPENDS ${PROJECT_SOURCE_DIR}/data/Platform.edc
216     )
217 ADD_CUSTOM_TARGET( WRT_THEME_EDJES ALL DEPENDS
218     ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
219     )
220 ADD_CUSTOM_TARGET( WRT_EDJES ALL DEPENDS
221     ${PROJECT_SOURCE_DIR}/data/Daemon.edj
222     )
223 ADD_CUSTOM_TARGET( WRT_PLATFORM_LAYOUT_EDJES ALL DEPENDS
224     ${PROJECT_SOURCE_DIR}/data/Platform.edj
225     )
226 ADD_CUSTOM_COMMAND(
227     OUTPUT ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
228     COMMAND edje_cc
229     ARGS  ${PROJECT_SOURCE_DIR}/data/generic_popup.edc
230           ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
231     DEPENDS ${PROJECT_SOURCE_DIR}/data/generic_popup.edc
232     )
233 ADD_CUSTOM_TARGET(generic_popup ALL DEPENDS
234     ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
235     )
236 INSTALL(FILES   ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
237     DESTINATION share/edje/ace/
238     )
239 INSTALL(FILES   ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
240     DESTINATION share/edje/wrt/
241     )
242 INSTALL(FILES   ${PROJECT_SOURCE_DIR}/data/Daemon.edj
243     DESTINATION share/edje/wrt/
244     )
245 INSTALL(FILES   ${PROJECT_SOURCE_DIR}/data/Platform.edj
246     DESTINATION share/edje/wrt/
247     )
248 ADD_CUSTOM_COMMAND(
249     OUTPUT ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edj
250     COMMAND edje_cc
251     ARGS  ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edc
252           ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edj
253     DEPENDS ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edc
254     )
255 ADD_CUSTOM_TARGET(generic_popup_horizontal ALL DEPENDS
256     ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edj
257     )
258 INSTALL(FILES   ${PROJECT_SOURCE_DIR}/data/generic_popup_horizontal.edj
259     DESTINATION share/edje/ace/
260     )
261 INSTALL(FILES   ${CMAKE_SOURCE_DIR}/wrt_env.sh
262     DESTINATION /etc/profile.d/
263     )
264 INSTALL(FILES   ${CMAKE_SOURCE_DIR}/wrt_launchpad_daemon.rule
265     DESTINATION /etc/smack/accesses2.d/
266     )
267 # temp for smack branch
268 INSTALL(FILES   ${CMAKE_SOURCE_DIR}/accesses.d/wrt_launchpad_daemon.rule
269     DESTINATION /opt/etc/smack/accesses.d/
270     )
271
272 ADD_SUBDIRECTORY(src)
273 ADD_SUBDIRECTORY(po)
274
275 SET(WRT_API_NEW_INCLUDES
276     "${PROJECT_SOURCE_DIR}/src/api_new/"
277     "${PROJECT_SOURCE_DIR}/src/domain/"
278     "${PROJECT_SOURCE_DIR}/src/view/")
279
280 SET(PKGCONFIG_DIR ${PROJECT_SOURCE_DIR}/pkgconfig)
281
282 CONFIGURE_FILE(${PKGCONFIG_DIR}/wrt-core.pc.in
283     ${PKGCONFIG_DIR}/wrt-core.pc @ONLY)
284 INSTALL(FILES ${PKGCONFIG_DIR}/wrt-core.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
285
286 IF(WITH_TESTS)
287     add_subdirectory(tests)
288 ENDIF(WITH_TESTS)
289
290