summaryrefslogtreecommitdiffstats
path: root/cmake/QtSetup.cmake
blob: 11ccc129b406cc4f4e37cf9238104bf54a7e0bfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
## Force C++ standard, do not fall back, do not use compiler extensions
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

## Position independent code:
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

# Do not relink dependent libraries when no header has changed:
set(CMAKE_LINK_DEPENDS_NO_SHARED ON)

# Default to hidden visibility for symbols:
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)

## Enable testing:
include(CTest)
enable_testing()

## Define some constants to check for certain platforms, etc:
include(QtPlatformSupport)

## add_qt_module and co.:
include(QtBuild)

## Qt Feature support:
include(QtFeature)

## Compiler optimization flags:
include(QtCompilerOptimization)

## Find host tools (if non native):
set(HOST_QT_TOOLS_DIRECTORY "" CACHE PATH "Directory with Qt host tools.")

if (CMAKE_CROSSCOMPILING AND "x${HOST_QT_TOOLS_DIRECTORY}" STREQUAL "x")
    message(FATAL_ERROR "You need to set HOST_QT_TOOLS_DIRECTORY for a cross-complile.")
endif()

## Find syncqt in HOST TOOLS or locally:
if("x${HOST_QT_TOOLS_DIRECTORY}" STREQUAL "x")
    set(QT_SYNCQT "${PROJECT_SOURCE_DIR}/bin/syncqt.pl")
    install(PROGRAMS "${QT_SYNCQT}" DESTINATION "${INSTALL_BINDIR}")
endif()

## Enable support for sanitizers:
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/extra-cmake-modules/modules/ECMEnableSanitizers.cmake)