185 lines
6.1 KiB
CMake
185 lines
6.1 KiB
CMake
|
############################################################################
|
||
|
# QSkinny - Copyright (C) 2016 Uwe Rathmann
|
||
|
# This file may be used under the terms of the QSkinny License, Version 1.0
|
||
|
############################################################################
|
||
|
|
||
|
set(QSK_VER_MAJ 0)
|
||
|
set(QSK_VER_MIN 0)
|
||
|
set(QSK_VER_PAT 0)
|
||
|
set(QSK_VERSION ${QSK_VER_MAJ}.${QSK_VER_MIN}.${QSK_VER_PAT})
|
||
|
|
||
|
# trying the PREFIX environment variable first
|
||
|
set(QSK_INSTALL_PREFIX = $ENV{PREFIX}) # TODO still required?
|
||
|
|
||
|
if("${QSK_INSTALL_PREFIX}" STREQUAL "")
|
||
|
set(QSK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") # TODO where does QT_INSTALL_PREFIX come from?
|
||
|
|
||
|
if (UNIX)
|
||
|
set(QSK_INSTALL_PREFIX /usr/local/qskinny-${QSK_VERSION})
|
||
|
endif()
|
||
|
|
||
|
if (MSVC)
|
||
|
set(QSK_INSTALL_PREFIX C:/Qskinny-${QSK_VERSION})
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
set(QSK_INSTALL_DOCS doc)
|
||
|
set(QSK_INSTALL_HEADERS include)
|
||
|
set(QSK_INSTALL_LIBS lib)
|
||
|
set(QSK_INSTALL_BINS bin)
|
||
|
set(QSK_INSTALL_PLUGINS plugins)
|
||
|
set(QSK_INSTALL_EXAMPLES examples)
|
||
|
|
||
|
# TODO find compiler flag equivalent
|
||
|
list(APPEND CONFIG no_private_qt_headers_warning)
|
||
|
list(APPEND CONFIG warn_on)
|
||
|
list(APPEND CONFIG no_keywords)
|
||
|
list(APPEND CONFIG silent)
|
||
|
#list(APPEND CONFIG -= depend_includepath) # TODO was -=
|
||
|
list(APPEND CONFIG strict_c++)
|
||
|
list(APPEND CONFIG c++11)
|
||
|
list(APPEND CONFIG pedantic)
|
||
|
list(APPEND CONFIG hide_symbols)
|
||
|
#list(APPEND CONFIG += debug)
|
||
|
#list(APPEND CONFIG += sanitize)
|
||
|
|
||
|
# TODO
|
||
|
# use_no_rpath {
|
||
|
# CONFIG -= use_local_rpath use_install_rpath
|
||
|
# } else {
|
||
|
# cross_compile {
|
||
|
# CONFIG *= use_install_rpath
|
||
|
# QMAKE_RPATHLINKDIR *= $${QSK_PLUGIN_DIR}/skins
|
||
|
# } else {
|
||
|
# !use_install_rpath: CONFIG *= use_local_rpath
|
||
|
# }
|
||
|
# }
|
||
|
|
||
|
set(MOC_DIR moc)
|
||
|
set(OBJECTS_DIR obj)
|
||
|
set(RCC_DIR rcc)
|
||
|
|
||
|
list(APPEND QSK_CONFIG QskDll)
|
||
|
|
||
|
option(QskDll "build qskinny as shared library" ON)
|
||
|
|
||
|
if(UNIX AND NOT APPLE)
|
||
|
set(LINUX TRUE)
|
||
|
endif()
|
||
|
|
||
|
if(LINUX)
|
||
|
|
||
|
if ("pedantic" IN_LIST CONFIG)
|
||
|
|
||
|
add_compile_definitions(QT_STRICT_ITERATORS)
|
||
|
|
||
|
# Qt headers do not stand pedantic checks, so it's better
|
||
|
# to exclude them by declaring them as system includes
|
||
|
|
||
|
list(APPEND CONFIG qtassysteminclude)
|
||
|
endif()
|
||
|
|
||
|
if ("qtassysteminclude" IN_LIST CONFIG)
|
||
|
|
||
|
# As most distros set QT_INSTALL_HEADERS to /usr/include we
|
||
|
# would run into gcc compiler errors and better drop it
|
||
|
# from the list below. Should be no problem as we don't
|
||
|
# add the Qt module to our includes and therefore don't
|
||
|
# need this path.
|
||
|
|
||
|
# TODO
|
||
|
# QMAKE_CXXFLAGS += \
|
||
|
# -isystem $$[QT_INSTALL_HEADERS]/QtCore \
|
||
|
# -isystem $$[QT_INSTALL_HEADERS]/QtCore/$$[QT_VERSION]/QtCore \
|
||
|
# -isystem $$[QT_INSTALL_HEADERS]/QtGui \
|
||
|
# -isystem $$[QT_INSTALL_HEADERS]/QtGui/$$[QT_VERSION]/QtGui \
|
||
|
# -isystem $$[QT_INSTALL_HEADERS]/QtQuick \
|
||
|
# -isystem $$[QT_INSTALL_HEADERS]/QtQuick/$$[QT_VERSION]/QtQuick \
|
||
|
# -isystem $$[QT_INSTALL_HEADERS]/QtQml \
|
||
|
# -isystem $$[QT_INSTALL_HEADERS]/QtQml/$$[QT_VERSION]/QtQml \
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64")
|
||
|
# --- optional optimzations
|
||
|
if (CMAKE_BUILD_TYPE EQUAL "Debug")
|
||
|
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O0) # TODO check if still required
|
||
|
else()
|
||
|
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O3 -ffast-math) # TODO check if still required
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if ("pedantic" IN_LIST CONFIG)
|
||
|
if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64")
|
||
|
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -pedantic-errors)
|
||
|
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wextra)
|
||
|
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Werror=format-security)
|
||
|
#QMAKE_CXXFLAGS *= -Wlogical-op
|
||
|
|
||
|
# QMAKE_CXXFLAGS *= -Wconversion
|
||
|
# QMAKE_CXXFLAGS *= -Wfloat-equal
|
||
|
# QMAKE_CXXFLAGS *= -Wshadow
|
||
|
|
||
|
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wsuggest-override)
|
||
|
# QMAKE_CXXFLAGS *= -Wsuggest-final-types
|
||
|
# QMAKE_CXXFLAGS *= -Wsuggest-final-methods
|
||
|
|
||
|
# QMAKE_CXXFLAGS *= -fanalyzer
|
||
|
endif()
|
||
|
|
||
|
if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-clang")
|
||
|
|
||
|
#QMAKE_CXXFLAGS *= -pedantic-errors
|
||
|
|
||
|
#QMAKE_CXXFLAGS *= -Weverything
|
||
|
#QMAKE_CXXFLAGS *= -Wno-c++98-compat-pedantic
|
||
|
#QMAKE_CXXFLAGS *= -Wno-global-constructors
|
||
|
#QMAKE_CXXFLAGS *= -Wno-exit-time-destructors
|
||
|
#QMAKE_CXXFLAGS *= -Wno-padded
|
||
|
#QMAKE_CXXFLAGS *= -Wno-float-equal
|
||
|
#QMAKE_CXXFLAGS *= -Wno-undefined-reinterpret-cast
|
||
|
#QMAKE_CXXFLAGS *= -Wno-deprecated
|
||
|
#QMAKE_CXXFLAGS *= -Wno-switch-enum
|
||
|
#QMAKE_CXXFLAGS *= -Wno-keyword-macro
|
||
|
#QMAKE_CXXFLAGS *= -Wno-old-style-cast
|
||
|
#QMAKE_CXXFLAGS *= -Wno-used-but-marked-unused
|
||
|
#QMAKE_CXXFLAGS *= -Wno-weak-vtables
|
||
|
#QMAKE_CXXFLAGS *= -Wno-shadow
|
||
|
#QMAKE_CXXFLAGS *= -Wno-double-promotion
|
||
|
#QMAKE_CXXFLAGS *= -Wno-conversion
|
||
|
#QMAKE_CXXFLAGS *= -Wno-documentation-unknown-command
|
||
|
#QMAKE_CXXFLAGS *= -Wno-unused-macros
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if ("sanitize" IN_LIST CONFIG)
|
||
|
|
||
|
list(APPEND CONFIG sanitizer)
|
||
|
list(APPEND CONFIG sanitize_address)
|
||
|
# CONFIG *= sanitize_undefined
|
||
|
|
||
|
if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64")
|
||
|
#QMAKE_CXXFLAGS *= -fsanitize-address-use-after-scope
|
||
|
#QMAKE_LFLAGS *= -fsanitize-address-use-after-scope
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if (CMAKE_BUILD_TYPE EQUAL "Debug")
|
||
|
add_compile_definitions(ITEM_STATISTICS=1)
|
||
|
endif()
|
||
|
|
||
|
# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000
|
||
|
|
||
|
set(LOCAL_PRI $ENV{QSK_LOCAL_PRI})
|
||
|
|
||
|
if (${LOCAL_PRI}) # TODO not empty check
|
||
|
|
||
|
if(EXISTS ${LOCAL_PRI})
|
||
|
|
||
|
# When not working with the Qt/Creator it is often more convenient
|
||
|
# to include the specific options of your local build, than passing
|
||
|
# them all on the command line
|
||
|
|
||
|
include(${LOCAL_PRI})
|
||
|
endif()
|
||
|
endif()
|