~ci-train-bot/unity8/unity8-ubuntu-zesty-2167

« back to all changes in this revision

Viewing changes to CMakeLists.txt

  • Committer: Michał Sawicz
  • Date: 2013-06-05 22:03:08 UTC
  • Revision ID: michal.sawicz@canonical.com-20130605220308-yny8fv3futtr04fg
Inital unity8 commit.

Previous history can be found at https://code.launchpad.net/~unity-team/unity/phablet

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
cmake_minimum_required(VERSION 2.8.9)
 
2
 
 
3
# Default install location. Must be set here, before setting the project.
 
4
if (NOT DEFINED CMAKE_INSTALL_PREFIX)
 
5
    set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "" FORCE)
 
6
endif()
 
7
 
 
8
project(unity8 C CXX)
 
9
 
 
10
if(${PROJECT_BINARY_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
 
11
   message(FATAL_ERROR "In-tree build attempt detected, aborting. Set your build dir outside your source dir, delete CMakeCache.txt from source root and try again.")
 
12
endif()
 
13
 
 
14
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
 
15
 
 
16
# Instruct CMake to run moc automatically when needed.
 
17
set(CMAKE_AUTOMOC ON)
 
18
 
 
19
# enable QML debugging
 
20
string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_lower) # Build types should always be lowercase but sometimes they are not.
 
21
if(cmake_build_type_lower MATCHES "debug")
 
22
    add_definitions(-DQT_QML_DEBUG)
 
23
endif()
 
24
 
 
25
include(EnableCoverageReport)
 
26
#####################################################################
 
27
# Enable code coverage calculation with gcov/gcovr/lcov
 
28
# Usage:
 
29
#  * Switch build type to coverage (use ccmake or cmake-gui)
 
30
#  * Invoke make, make test, make coverage (or ninja if you use that backend)
 
31
#  * Find html report in subdir coveragereport
 
32
#  * Find xml report feasible for jenkins in coverage.xml
 
33
#####################################################################
 
34
if(cmake_build_type_lower MATCHES coverage)
 
35
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage" )
 
36
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage" )
 
37
  set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} --coverage" )
 
38
  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage" )
 
39
  ENABLE_COVERAGE_REPORT(TARGETS ${SHELL_APP} FILTER /usr/include ${CMAKE_SOURCE_DIR}/tests/* ${CMAKE_BINARY_DIR}/*)
 
40
endif()
 
41
 
 
42
# Make sure we have all the needed symbols
 
43
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,defs")
 
44
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,defs")
 
45
 
 
46
# Static C++ checks
 
47
add_custom_target(cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2
 
48
                                       ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
 
49
 
 
50
include(FindPkgConfig)
 
51
find_package(Qt5Qml)
 
52
find_package(Qt5Quick)
 
53
find_package(Qt5Gui)
 
54
find_package(Qt5DBus)
 
55
 
 
56
# Standard install paths
 
57
include(GNUInstallDirs)
 
58
 
 
59
set(SHELL_APP_DIR ${CMAKE_INSTALL_DATADIR}/unity8)
 
60
 
 
61
configure_file(paths.h.in ${CMAKE_CURRENT_BINARY_DIR}/paths.h @ONLY)
 
62
 
 
63
include_directories(
 
64
    ${CMAKE_CURRENT_BINARY_DIR}
 
65
    ${CMAKE_CURRENT_SOURCE_DIR}
 
66
    ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
 
67
    )
 
68
 
 
69
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
 
70
 
 
71
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra")
 
72
 
 
73
if ("${CMAKE_BUILD_TYPE}" STREQUAL "release" OR "${CMAKE_BUILD_TYPE}" STREQUAL "relwithdebinfo")
 
74
    option(Werror "Treat warnings as errors" ON)
 
75
else()
 
76
    option(Werror "Treat warnings as errors" OFF)
 
77
endif()
 
78
 
 
79
if (Werror)
 
80
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
 
81
endif()
 
82
 
 
83
# gtk and unity-core (actually sigc++) do not like Qt defining macros named
 
84
# "signals" and "slots"
 
85
add_definitions(-DQT_NO_KEYWORDS)
 
86
 
 
87
# Tests
 
88
include(CTest)
 
89
enable_testing()
 
90
 
 
91
# Autopilot tests
 
92
include(autopilot)
 
93
declare_autopilot_test(unity8 ${CMAKE_SOURCE_DIR}/tests/autopilot/)
 
94
 
 
95
add_subdirectory(tests)
 
96
 
 
97
set(SHELL_APP unity8)
 
98
 
 
99
set(shell_app_HDRS
 
100
    )
 
101
 
 
102
add_executable(${SHELL_APP}
 
103
    ${shellapplication_MOC_SRCS}
 
104
    main.cpp
 
105
    MouseTouchAdaptor.cpp
 
106
    )
 
107
 
 
108
qt5_use_modules(${SHELL_APP} Qml Quick Test)
 
109
pkg_check_modules(XCB REQUIRED xcb)
 
110
 
 
111
if (NOT "${XCB_INCLUDE_DIRS}" STREQUAL "")
 
112
    set_target_properties(${SHELL_APP} PROPERTIES INCLUDE_DIRECTORIES ${XCB_INCLUDE_DIRS})
 
113
endif()
 
114
 
 
115
target_link_libraries(${SHELL_APP}
 
116
    ${Qt5Qml_LIBRARIES}
 
117
    ${Qt5Quick_LIBRARIES}
 
118
    ${XCB_LDFLAGS}
 
119
    )
 
120
 
 
121
# install binaries
 
122
install(TARGETS ${SHELL_APP}
 
123
     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
 
124
     )
 
125
 
 
126
# install top level qml and js files
 
127
file(GLOB QML_JS_FILES *.qml *.js)
 
128
 
 
129
install(FILES ${QML_JS_FILES}
 
130
    DESTINATION ${SHELL_APP_DIR}
 
131
    )
 
132
 
 
133
# add subdirectories to build
 
134
add_subdirectory(plugins)
 
135
 
 
136
# install subdirectories
 
137
set(QML_DIRS
 
138
    Applications
 
139
    Bottombar
 
140
    Components
 
141
    Dash
 
142
    graphics
 
143
    Greeter
 
144
    Hud
 
145
    Panel
 
146
    Launcher
 
147
    SideStage
 
148
    Notifications
 
149
    )
 
150
 
 
151
install(DIRECTORY ${QML_DIRS}
 
152
    DESTINATION ${SHELL_APP_DIR}
 
153
    )
 
154
 
 
155
# generate desktop file
 
156
configure_file(${SHELL_APP}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${SHELL_APP}.desktop @ONLY)
 
157
 
 
158
# install desktop file
 
159
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SHELL_APP}.desktop
 
160
    DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
 
161
    )
 
162
 
 
163
#
 
164
# Translation
 
165
#
 
166
add_subdirectory(po)