Fixed navigating using 'Backspace' key
[profile/tv/apps/web/browser.git] / CMakeLists.txt
1 project(BrowserApp)
2 cmake_minimum_required(VERSION 2.8)
3 #
4 ########## Defines ###########
5 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
6 SET(BINDIR "${PREFIX}/bin")
7 SET(RESDIR "${PREFIX}/res" CACHE STRING "The path of resources")
8 SET(WEBKITDIR "/opt/usr/data/webkit" CACHE STRING "The path of web engine")
9 SET(EDJE_DIR "${RESDIR}/edje/")
10 SET(CERTS_DIR "${RESDIR}/certs/")
11 SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
12 SET(GCC_COVERAGE_COMPILE_FLAGS "-fprofile-arcs -ftest-coverage")
13
14 if(NOT DEFINED PACKAGE_NAME)
15     SET(PACKAGE_NAME "org.tizen.browser")
16 endif(NOT DEFINED PACKAGE_NAME)
17
18 if(NOT DEFINED MANIFESTDIR)
19     SET(MANIFESTDIR "/usr/share/packages")
20 endif(NOT DEFINED MANIFESTDIR)
21
22 if(NOT DEFINED ICONDIR)
23     SET(ICONDIR "/usr/share/icons/default/small/")
24 endif(NOT DEFINED ICONDIR)
25
26 if(NOT DEFINED DEMODIR)
27     SET(DEMODIR "/usr/apps/org.tizen.browser/res/demo/")
28 endif(NOT DEFINED DEMODIR)
29
30 option(BUILD_UT "Build Unit tests" OFF)
31 option(TIZEN_BUILD "Build for Tizen. Default ON" ON)
32 option(DYN_INT_LIBS "Buils internal libs as dynamic" ON)
33 option(COVERAGE_STATS "Code coverage" OFF)
34
35 #Enable C++11 support
36 include(CheckCXXCompilerFlag)
37 CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
38 CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
39
40
41 if (COMPILER_SUPPORTS_CXX11)
42     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O0 -g -ggdb3")
43     elseif(COMPILER_SUPPORTS_CXX0X)
44     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -O0 -g -ggdb3")
45 else()
46     message(FATAL_ERROR "The Compiler ${CMAKE_CXX_COMPILER} doesn't support C++11")
47 endif()
48
49 set(BOOST_LIBS regex filesystem system date_time)
50 if(BUILD_UT)
51     set(BOOST_LIBS ${BOOST_LIBS} unit_test_framework)
52 ENDIF(BUILD_UT)
53 find_package(Boost 1.49.9 REQUIRED COMPONENTS ${BOOST_LIBS})
54
55 #RPATH settings
56 set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
57 set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/services")
58
59 #disable for merge - WebView is not ready for this
60 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-variadic-macros -Wno-long-long -Werror")
61
62 if(COVERAGE_STATS)
63     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")
64 endif(COVERAGE_STATS)
65
66 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
67
68 # TIZEN SPECIFIC
69 # set pkg-config modules
70 if(TIZEN_BUILD)
71     include(FindPkgConfig)
72
73     set(PLATFORM_TIZEN ON)
74     SET(tizen_pkgs_list
75         dlog
76         capi-appfw-application
77         libpng
78     )
79
80     pkg_check_modules(tizen_pkgs REQUIRED "${tizen_pkgs_list}")
81
82     FOREACH(flag ${tizen_pkgs_CFLAGS})
83         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
84     ENDFOREACH(flag)
85
86     message("${CMAKE_CXX_FLAGS}")
87     MACRO (TODAY RESULT)
88         EXECUTE_PROCESS(COMMAND "date" "+%d-%m-%Y" OUTPUT_VARIABLE ${RESULT})
89         STRING(REGEX REPLACE "(..)-(..)-(....).*" "\\1-\\2-\\3" ${RESULT} ${${RESULT}})
90     ENDMACRO (TODAY)
91
92     TODAY(BUILD_DATE)
93
94     ADD_DEFINITIONS(
95         -DBUILD_DATE=\"${BUILD_DATE}\"
96         -DVERSION=\"${VERSION}\"
97         -D__BUILD__
98         -DM_VCS_ID=\"${VCS_ID}\"
99         -DTIZEN_BUILD=\"${TIZEN_BUILD}\"
100         -DCERTS_DIR=\"${CERTS_DIR}\"
101         -DPROFILE=${PROFILE}
102         )
103 endif(TIZEN_BUILD)
104
105 ADD_DEFINITIONS(-DEDJE_DIR=\"${EDJE_DIR}\")
106
107 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
108 include_directories(${CMAKE_CURRENT_BINARY_DIR})
109
110 #services
111 add_subdirectory(services)
112
113 #browser core
114 add_subdirectory(core)
115
116 #compiling EDC files
117 #
118 #Temporary location of EDC files
119 #
120 # probably should be moved to Tizen section.
121 #to build unit tests add --define "build_unit_test ON" parameter to gbs build command
122 if(BUILD_UT)
123   add_subdirectory(unit_tests)
124 ENDIF(BUILD_UT)
125
126 configure_file(${CMAKE_SOURCE_DIR}/cmakeconfig.h.cmake ${CMAKE_BINARY_DIR}/cmakeconfig.h)
127
128 if(TIZEN_BUILD)
129 configure_file(${CMAKE_SOURCE_DIR}/manifest.xml.in ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}.xml)
130 install(FILES ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}.xml DESTINATION ${MANIFESTDIR})
131 # install desktop file & icon
132 install(FILES ${CMAKE_SOURCE_DIR}/org.tizen.browser.png DESTINATION ${ICONDIR})
133 install(FILES ${CMAKE_SOURCE_DIR}/apps_img_web_default_4x2.png DESTINATION ${ICONDIR})
134 # install demo files
135 install(FILES ${CMAKE_SOURCE_DIR}/demo/b.htm DESTINATION ${DEMODIR})
136 install(FILES ${CMAKE_SOURCE_DIR}/demo/Widget.htm DESTINATION ${DEMODIR})
137 install(FILES ${CMAKE_SOURCE_DIR}/demo/header.jpg DESTINATION ${DEMODIR})
138 install(FILES ${CMAKE_SOURCE_DIR}/demo/main_bg.jpg DESTINATION ${DEMODIR})
139 # install certs
140 INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/certs/ DESTINATION ${CERTS_DIR})
141 endif(TIZEN_BUILD)
142
143 message(STATUS "------------------------------------------")
144 message(STATUS "Build for Tizen          (TIZEN_BUILD)     :" ${TIZEN_BUILD})
145 message(STATUS "Interal libs are dynamic (DYN_INT_LIBS)    :" ${DYN_INT_LIBS})
146 message(STATUS "Building Unit tests      (BUILD_UT)        :" ${BUILD_UT})
147 message(STATUS "Code Coverage statistics (COVERAGE_STATS)  :" ${COVERAGE_STATS})
148 message(STATUS "Device profile           (PROFILE)         :" ${PROFILE})
149 message(STATUS "------------------------------------------")