tizen 2.4 release
[framework/web/wrt-plugins-common.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 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
16
17 SET(CMAKE_PROJECT_NAME wrt-plugins-common)
18 SET(PACKAGE_NAME ${CMAKE_PROJECT_NAME})
19 PROJECT(${CMAKE_PROJECT_NAME})
20 STRING(REGEX MATCH "([^.]*)" CMAKE_PROJECT_API_VERSION "${CMAKE_PROJECT_VERSION}")
21
22 ################################################################################
23 # Required platform modules
24
25 INCLUDE(FindPkgConfig)
26
27 PKG_SEARCH_MODULE(dpl REQUIRED dpl-efl>=0.2.21)
28
29 INCLUDE_DIRECTORIES(
30   ${dpl_INCLUDE_DIRS}
31   ${CMAKE_CURRENT_SOURCE_DIR}/src/
32   ${CMAKE_CURRENT_SOURCE_DIR}/src/modules/API
33   ${CMAKE_CURRENT_SOURCE_DIR}/src/Commons
34   ${CMAKE_CURRENT_SOURCE_DIR}/src/CommonsJavaScript
35   ${CMAKE_CURRENT_SOURCE_DIR}/src/plugin-loading
36   ${CMAKE_CURRENT_SOURCE_DIR}/src/js-overlay
37   ${CMAKE_CURRENT_SOURCE_DIR}/src/plugins_ipc_message
38   ${CMAKE_CURRENT_SOURCE_DIR}/src/dispatch-event)
39
40 ##############################################################################
41 # Build type
42 IF(NOT CMAKE_BUILD_TYPE)
43     SET(CMAKE_BUILD_TYPE "Release")
44 ENDIF(NOT CMAKE_BUILD_TYPE)
45
46 # Compiler flags
47 SET(CMAKE_C_FLAGS_PROFILING    "-O2")
48 SET(CMAKE_CXX_FLAGS_PROFILING  "-O2 -std=c++0x")
49 SET(CMAKE_C_FLAGS_DEBUG        "-O0 -g")
50 SET(CMAKE_CXX_FLAGS_DEBUG      "-O0 -std=c++0x -g")
51 SET(CMAKE_C_FLAGS_RELEASE      "-O2 -g")
52 SET(CMAKE_CXX_FLAGS_RELEASE    "-O2 -std=c++0x -g -fvisibility-inlines-hidden")
53 SET(CMAKE_CXX_FLAGS_CCOV       "-O0 -std=c++0x -g --coverage")
54 ####
55
56 OPTION(DPL_LOG "DPL logs status" ON)
57 SET(LOG_TAG "WRT_PLUGINS_COMMON")
58 OPTION(WITH_TESTS "Build tests" OFF)
59
60 IF(DPL_LOG AND NOT CMAKE_BUILD_TYPE MATCHES "profiling")
61     MESSAGE(STATUS "Logging enabled for DPL")
62     ADD_DEFINITIONS("-DDPL_LOGS_ENABLED")
63 ELSE(DPL_LOG AND NOT CMAKE_BUILD_TYPE MATCHES "profiling")
64     MESSAGE(STATUS "Logging disabled for DPL")
65 ENDIF(DPL_LOG AND NOT CMAKE_BUILD_TYPE MATCHES "profiling")
66
67 MESSAGE(STATUS "WITH_TESTS: " ${WITH_TESTS})
68
69 ADD_DEFINITIONS("-fPIC")
70 ADD_DEFINITIONS("-fvisibility=default")         # mark all exported symbols as visible
71 ADD_DEFINITIONS("-fPIC")                        # If supported for the target machine, emit position-independent code, suitable for dynamic linking and avoiding
72 ADD_DEFINITIONS("-DEXPORT_API=")
73 ADD_DEFINITIONS("-Wall")
74 #ADD_DEFINITIONS("-Werror")
75 ADD_DEFINITIONS("-Wextra")
76 ADD_DEFINITIONS("-Wno-deprecated")
77 #ADD_DEFINITIONS("-DDEVPKG")
78 # GCC 4.7 changes the scheme of name lookup. Guide: http://gcc.gnu.org/gcc-4.7/porting_to.html
79 ADD_DEFINITIONS("-fpermissive")
80
81 ##############################################################################
82 # CMake flags
83 IF (DEVPKG)
84     SET(DEVPKG "ON")
85 ENDIF(DEVPKG)
86
87 ################################################################################
88 # Miscellaneous variables
89
90 SET(CONFIG_FILE_NAME "config.cmake")
91 SET(LIBS_COMMONS ${dpl_LDFLAGS} )
92
93 SET(DESTINATION_LIB_PREFIX lib)
94 SET(DESTINATION_HEADER_PREFIX include/${PROJECT_NAME})
95
96 SET(DESTINATION_HEADERS_NON_JS ${DESTINATION_HEADER_PREFIX}/Commons)
97 SET(DESTINATION_HEADERS_JS ${DESTINATION_HEADER_PREFIX}/CommonsJavaScript)
98 SET(DESTINATION_HEADERS_JS_OVERLAY ${DESTINATION_HEADER_PREFIX}/js-overlay)
99 SET(DESTINATION_HEADERS_WRT_POPUP_RUNNER ${DESTINATION_HEADER_PREFIX}/popup-runner)
100
101 ################################################################################
102 # Target platform
103
104 IF (NOT DEFINED PLATFORM)
105   SET(PLATFORM "tizen")
106 ENDIF ()
107
108 ################################################################################
109 # Schema of plugin's configuration file
110
111 SET(COMMON_CONFIG_DTD ${CMAKE_CURRENT_SOURCE_DIR}/config.dtd)
112 SET(COMMON_CONFIG_DTD_DST /usr/etc/wrt-plugins)
113 INSTALL(FILES ${COMMON_CONFIG_DTD} DESTINATION ${COMMON_CONFIG_DTD_DST})
114
115 ################################################################################
116 # Macros used for including plugins from AL.
117
118
119 FUNCTION(add_subdir NAME)
120   MESSAGE(STATUS "Building: ${CMAKE_CURRENT_SOURCE_DIR}/${NAME}")
121   ADD_SUBDIRECTORY(${NAME})
122 ENDFUNCTION()
123
124 ################################################################################
125 # Subdirectories
126
127 ADD_SUBDIRECTORY(src)
128
129 IF(WITH_TESTS)
130   ADD_SUBDIRECTORY(tests)
131 ENDIF(WITH_TESTS)
132
133 ################################################################################
134 # PKGCONFIG
135
136 SET(PKGCONFIG_DIR ${PROJECT_SOURCE_DIR}/pkgconfigs)
137
138 MACRO(configure_and_install_pkg PKG_FILE)
139     CONFIGURE_FILE(${PKGCONFIG_DIR}/${PKG_FILE}.in
140                ${PKGCONFIG_DIR}/${PKG_FILE} @ONLY)
141     INSTALL(FILES ${PKGCONFIG_DIR}/${PKG_FILE} DESTINATION lib/pkgconfig)
142 ENDMACRO(configure_and_install_pkg)
143
144 CONFIGURE_AND_INSTALL_PKG(wrt-plugins-commons-javascript.pc)
145 CONFIGURE_AND_INSTALL_PKG(wrt-plugins-commons.pc)
146 CONFIGURE_AND_INSTALL_PKG(wrt-plugins-widget-interface.pc)
147 CONFIGURE_AND_INSTALL_PKG(wrt-plugins-widgetdb.pc)
148 CONFIGURE_AND_INSTALL_PKG(wrt-plugins-plugin-manager.pc)
149 CONFIGURE_AND_INSTALL_PKG(wrt-plugin-loading.pc)
150 CONFIGURE_AND_INSTALL_PKG(wrt-plugin-js-overlay.pc)
151 CONFIGURE_AND_INSTALL_PKG(wrt-popup-runner.pc)
152 CONFIGURE_AND_INSTALL_PKG(wrt-popup-wrt-runner.pc)
153 CONFIGURE_AND_INSTALL_PKG(wrt-plugins-api-support.pc)
154 CONFIGURE_AND_INSTALL_PKG(wrt-plugins-ipc-message.pc)
155 CONFIGURE_AND_INSTALL_PKG(wrt-dispatch-event.pc)
156
157 CONFIGURE_AND_INSTALL_PKG(wrt-plugins-localstorage.pc)
158 CONFIGURE_AND_INSTALL_PKG(wrt-plugins-widget.pc)
159
160 ################################################################################
161 # Cache
162
163 SET(PLATFORM "${PLATFORM}" CACHE STRING "Target platform" FORCE)
164 SET(CMAKE_CONFIG_FILE_NAME "${CMAKE_CONFIG_FILE_NAME}" CACHE
165     STRING "CMake configuration file name." FORCE)
166
167 ################################################################################
168 # SMACK rule
169
170 INSTALL(FILES ${CMAKE_SOURCE_DIR}/wrt-popup-wrt-runtime.efl DESTINATION /etc/smack/accesses.d)
171
172 ################################################################################
173 # Summary
174
175 MESSAGE(STATUS "PLATFORM = ${PLATFORM}")