Files
qwt/qwtbuild.pri
2023-10-31 09:22:42 +01:00

200 lines
5.7 KiB
Plaintext

################################################################
# Qwt Widget Library
# Copyright (C) 1997 Josef Wilgen
# Copyright (C) 2002 Uwe Rathmann
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the Qwt License, Version 1.0
################################################################
######################################################################
# qmake internal options
######################################################################
CONFIG += qt
CONFIG += warn_on
CONFIG += no_keywords
CONFIG += silent
CONFIG -= depend_includepath
# CONFIG += sanitize
# CONFIG += pedantic
# older Qt headers result in tons of warnings with modern compilers and flags
unix:lessThan(QT_MAJOR_VERSION, 5) CONFIG += qtsystemincludes
# CONFIG += c++11
c++11 {
CONFIG += strict_c++
}
sanitize {
CONFIG += sanitizer
CONFIG += sanitize_address
#CONFIG *= sanitize_memory
CONFIG *= sanitize_undefined
}
# Include the generated moc files in the corresponding cpp file
# what increases the compile time significantly
DEFINES += QWT_MOC_INCLUDE=1
# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
######################################################################
# release/debug mode
######################################################################
win32 {
# On Windows you can't mix release and debug libraries.
# The designer is built in release mode. If you like to use it
# you need a release version. For your own application development you
# might need a debug version.
# Enable debug_and_release + build_all if you want to build both.
CONFIG += debug_and_release
CONFIG += build_all
}
else {
CONFIG += release
VER_MAJ = $${QWT_VER_MAJ}
VER_MIN = $${QWT_VER_MIN}
VER_PAT = $${QWT_VER_PAT}
VERSION = $${QWT_VERSION}
}
linux {
pedantic {
DEFINES += QT_STRICT_ITERATORS
# DEFINES += __STRICT_ANSI__
# Qt headers do not stand pedantic checks, so it's better
# to exclude them by declaring them as system includes
QMAKE_CXXFLAGS += \
-isystem $$[QT_INSTALL_HEADERS] \
-isystem $$[QT_INSTALL_HEADERS]/QtCore \
-isystem $$[QT_INSTALL_HEADERS]/QtGui \
-isystem $$[QT_INSTALL_HEADERS]/QtWidgets
}
linux-g++ | linux-g++-64 {
# CONFIG += separate_debug_info
sanitize_undefined {
GCC_VERSION = $$system("$$QMAKE_CXX -dumpversion")
equals(GCC_VERSION,4) || contains(GCC_VERSION, 4.* ) {
CONFIG -= sanitize_undefined
}
}
c++11 {
QMAKE_CXXFLAGS *= -Wsuggest-override
}
pedantic {
CONFIG -= warn_on
QMAKE_CXXFLAGS *= -Wall
QMAKE_CXXFLAGS *= -Wextra
QMAKE_CXXFLAGS *= -Wpedantic
QMAKE_CXXFLAGS *= -Wcast-qual
QMAKE_CXXFLAGS *= -Wcast-align
QMAKE_CXXFLAGS *= -Wlogical-op
QMAKE_CXXFLAGS *= -Wredundant-decls
QMAKE_CXXFLAGS *= -Wformat
QMAKE_CXXFLAGS *= -Wshadow
QMAKE_CXXFLAGS *= -Woverloaded-virtual
# checks qwt code does not pass, but should be able to
# QMAKE_CXXFLAGS *= -Wconversion
# checks qwt code does not pass
# QMAKE_CXXFLAGS *= -Wuseless-cast
# QMAKE_CXXFLAGS *= -Wmissing-declarations
# QMAKE_CXXFLAGS *= -Winline
# QMAKE_CXXFLAGS *= -Wdouble-promotion
# QMAKE_CXXFLAGS *= -Wfloat-equal
# QMAKE_CXXFLAGS *= -Wpadded
# QMAKE_CXXFLAGS *= -Waggregate-return
# QMAKE_CXXFLAGS *= -Wzero-as-null-pointer-constant
}
# --- optional optimzations
# qwt code doesn't check errno after calling math functions
# so it is perfectly safe to disable it in favor of better performance
QMAKE_CXXFLAGS *= -fno-math-errno
# qwt code doesn't rely ( at least intends not to do )
# on an exact implementation of IEEE or ISO rules/specifications
QMAKE_CXXFLAGS *= -funsafe-math-optimizations
# also enables -fno-math-errno and -funsafe-math-optimizations
# QMAKE_CXXFLAGS *= -ffast-math
# QMAKE_CXXFLAGS_DEBUG *= -Og # since gcc 4.8
# QMAKE_CXXFLAGS_RELEASE *= -O3
# QMAKE_CXXFLAGS_RELEASE *= -Ofast
# QMAKE_CXXFLAGS_RELEASE *= -Os
# when using the gold linker ( Qt < 4.8 ) - might be
# necessary on non linux systems too
#QMAKE_LFLAGS += -lrt
sanitize {
# QMAKE_CXXFLAGS *= -fsanitize-address-use-after-scope
# QMAKE_LFLAGS *= -fsanitize-address-use-after-scope
}
}
linux-clang {
# workaround for a clang 3.8 bug
# DEFINES += __STRICT_ANSI__
# QMAKE_CXXFLAGS_RELEASE *= -O3
}
# QMAKE_CXXFLAGS *= -Werror
}
qtsystemincludes {
# mark Qt directories as a system directories - usually to get rid
# of compiler warnings in Qt headers of old Qt versions
# when being built with modern compilers
QMAKE_CXXFLAGS += \
-isystem $$[QT_INSTALL_HEADERS]/QtCore \
-isystem $$[QT_INSTALL_HEADERS]/QtGui
}
######################################################################
# paths for building qwt
######################################################################
MOC_DIR = moc
RCC_DIR = resources
!debug_and_release {
# in case of debug_and_release object files
# are built in the release and debug subdirectories
OBJECTS_DIR = obj
}