51dafeda8c
The problem isn't the compiler, but the linker, so we ought to turn this flag on for all ELF-based systems where we compile Qt with -Bsymbolic, but so far only the Intel compiler has been affected. We can turn it on as needed for other systems. The cause of the problem is the way that ICC materializes the pointer- to-member-function: it stores the full 2*sizeof(void*) data in an anonymous variable, so that it can load it in one go, such as one 16- byte SSE aligned load on 64-bit systems. That relocation in a data variable gets turned into a fixed-position copy relocation by the linker, which breaks the signal-identification mechanism. GCC and Clang are likely to be affected if anyone did: static const auto destroyed = &QObject::destroyed; QObject::connect(obj, destroyed, [](){}); Task-number: QTBUG-52439 Change-Id: I0d69eaf61af149db9574fffd149d0cfb08459c33 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
127 lines
4.3 KiB
Plaintext
127 lines
4.3 KiB
Plaintext
#
|
|
# qmake configuration for linux-icc
|
|
#
|
|
|
|
MAKEFILE_GENERATOR = UNIX
|
|
|
|
QMAKE_COMPILER = gcc intel_icc # icc pretends to be gcc
|
|
|
|
QMAKE_CC = icc
|
|
QMAKE_LEX = flex
|
|
QMAKE_LEXFLAGS =
|
|
QMAKE_YACC = yacc
|
|
QMAKE_YACCFLAGS = -d
|
|
QMAKE_CFLAGS =
|
|
QMAKE_CFLAGS_APP = -fPIC
|
|
QMAKE_CFLAGS_DEPS = -M
|
|
QMAKE_CFLAGS_WARN_ON = -w1 -Wall -Wcheck -wd1572,873,2259,2261,3373
|
|
QMAKE_CFLAGS_WARN_OFF = -w
|
|
QMAKE_CFLAGS_RELEASE = -O2 -falign-functions=16 -ansi-alias -fstrict-aliasing
|
|
QMAKE_CFLAGS_DEBUG = -O0 -g
|
|
QMAKE_CFLAGS_SHLIB = -fPIC
|
|
QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
|
|
QMAKE_CFLAGS_YACC =
|
|
QMAKE_CFLAGS_ISYSTEM = -isystem
|
|
QMAKE_CFLAGS_THREAD = -D_REENTRANT
|
|
QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections
|
|
QMAKE_CFLAGS_LTCG = -ipo -fno-fat-lto-objects
|
|
QMAKE_CFLAGS_LTCG_FATOBJECTS = -ffat-lto-objects
|
|
QMAKE_CFLAGS_DISABLE_LTCG = -no-ipo
|
|
|
|
QMAKE_CFLAGS_SSE2 += -xSSE2
|
|
QMAKE_CFLAGS_SSE3 += -xSSE3
|
|
QMAKE_CFLAGS_SSSE3 += -xSSSE3
|
|
QMAKE_CFLAGS_SSE4_1 += -xSSE4.1
|
|
QMAKE_CFLAGS_SSE4_2 += -xSSE4.2
|
|
QMAKE_CFLAGS_AVX += -xAVX
|
|
QMAKE_CFLAGS_AVX2 += -xCORE-AVX2
|
|
QMAKE_CFLAGS_AVX512F += -xCOMMON-AVX512
|
|
QMAKE_CFLAGS_AVX512CD += -xCOMMON-AVX512
|
|
QMAKE_CFLAGS_AVX512ER += -xMIC-AVX512
|
|
QMAKE_CFLAGS_AVX512PF += -xMIC-AVX512
|
|
QMAKE_CFLAGS_AVX512DQ += -xCORE-AVX512
|
|
QMAKE_CFLAGS_AVX512BW += -xCORE-AVX512
|
|
QMAKE_CFLAGS_AVX512VL += -xCORE-AVX512
|
|
|
|
QMAKE_CXX = icpc
|
|
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
|
|
QMAKE_CXXFLAGS_APP = $$QMAKE_CFLAGS_APP
|
|
QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
|
|
QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
|
|
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
|
|
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
|
|
QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
|
|
QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
|
|
QMAKE_CXXFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_STATIC_LIB
|
|
QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
|
|
QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
|
|
QMAKE_CXXFLAGS_SPLIT_SECTIONS = $$QMAKE_CFLAGS_SPLIT_SECTIONS
|
|
# Disabling exceptions disabled - workaround for QTBUG-36577
|
|
#QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
|
|
QMAKE_CXXFLAGS_CXX11 = -std=c++11
|
|
QMAKE_CXXFLAGS_CXX14 = -std=c++1y
|
|
QMAKE_CXXFLAGS_CXX1Z = -std=c++1z
|
|
QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++11
|
|
QMAKE_CXXFLAGS_GNUCXX14 = -std=gnu++1y
|
|
QMAKE_CXXFLAGS_GNUCXX1Z = -std=gnu++1z
|
|
QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
|
QMAKE_CXXFLAGS_LTCG_FATOBJECTS = $$QMAKE_CFLAGS_LTCG_FATOBJECTS
|
|
QMAKE_CXXFLAGS_DISABLE_LTCG = $$QMAKE_CFLAGS_DISABLE_LTCG
|
|
|
|
QMAKE_INCDIR =
|
|
QMAKE_LIBDIR =
|
|
QMAKE_INCDIR_X11 =
|
|
QMAKE_LIBDIR_X11 =
|
|
QMAKE_INCDIR_OPENGL =
|
|
QMAKE_LIBDIR_OPENGL =
|
|
|
|
QMAKE_LINK = icpc
|
|
QMAKE_LINK_SHLIB = icpc
|
|
QMAKE_LFLAGS =
|
|
QMAKE_LFLAGS_RELEASE =
|
|
QMAKE_LFLAGS_APP = -pie
|
|
QMAKE_LFLAGS_DEBUG =
|
|
QMAKE_LFLAGS_SHLIB = -shared -shared-intel
|
|
QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
|
|
QMAKE_LFLAGS_SONAME = -Wl,-soname,
|
|
QMAKE_LFLAGS_THREAD =
|
|
QMAKE_LFLAGS_NOUNDEF = -Wl,-z,defs
|
|
QMAKE_LFLAGS_RPATH = -Wl,-rpath,
|
|
QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link,
|
|
QMAKE_LFLAGS_CXX11 =
|
|
QMAKE_LFLAGS_CXX14 =
|
|
QMAKE_LFLAGS_CXX1Z =
|
|
QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
|
|
|
|
QMAKE_LIBS =
|
|
QMAKE_LIBS_DYNLOAD = -ldl
|
|
QMAKE_LIBS_X11 = -lXext -lX11 -lm
|
|
QMAKE_LIBS_NIS = -lnsl
|
|
QMAKE_LIBS_OPENGL = -lGL
|
|
QMAKE_LIBS_THREAD = -lpthread
|
|
|
|
QMAKE_AR = xiar cqs
|
|
QMAKE_OBJCOPY = objcopy
|
|
QMAKE_NM = nm -P
|
|
QMAKE_RANLIB =
|
|
|
|
QMAKE_CLEAN = -r $(OBJECTS_DIR)/ti_files
|
|
|
|
# pch support
|
|
CONFIG += icc_pch_style
|
|
QMAKE_PCH_OUTPUT_EXT = .pchi
|
|
QMAKE_CXXFLAGS_USE_PRECOMPILE = -pch-use ${QMAKE_PCH_OUTPUT} -include ${QMAKE_PCH_INPUT}
|
|
QMAKE_CXXFLAGS_PRECOMPILE = -c -pch-create ${QMAKE_PCH_OUTPUT} -include ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_TEMP_OBJECT} ${QMAKE_PCH_TEMP_SOURCE}
|
|
|
|
# -Bsymbolic-functions (ld) support
|
|
QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
|
|
QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
|
|
QMAKE_LFLAGS_VERSION_SCRIPT = -Wl,--version-script,
|
|
|
|
# Symbol visibility control
|
|
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
|
|
QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
|
|
|
|
include(../common/linux.conf)
|
|
load(qt_config)
|