#
# qmake configuration for macx-icc
#
# Written for Intel C++ Compiler version 14.0 for OS X
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += app_bundle
QMAKE_INCREMENTAL_STYLE = sublibs
QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__

QMAKE_COMPILER          = gcc clang intel_icc   # icc pretends to be gcc and clang

QMAKE_CFLAGS_OPTIMIZE      = -O2
QMAKE_CFLAGS_OPTIMIZE_SIZE = -Os

QMAKE_CC                = icc
QMAKE_CFLAGS            =
QMAKE_CFLAGS_DEPS       = -M
QMAKE_CFLAGS_WARN_ON    = -w1 -Wcheck -wd654,1572,411,873,1125,2259,2261,3280,3373
QMAKE_CFLAGS_WARN_OFF   = -w
QMAKE_CFLAGS_RELEASE    = $$QMAKE_CFLAGS_OPTIMIZE
QMAKE_CFLAGS_DEBUG      = -g -O0
QMAKE_CFLAGS_SHLIB      = -fPIC
QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
QMAKE_CFLAGS_YACC       = -Wno-unused -Wno-parentheses
QMAKE_CFLAGS_THREAD     =
QMAKE_CFLAGS_SPLIT_SECTIONS = -ffunction-sections
QMAKE_CFLAGS_LTCG       = -ipo
QMAKE_CFLAGS_DISABLE_LTCG = -no-ipo

QMAKE_CFLAGS_SSE2      += -msse2
QMAKE_CFLAGS_SSE3      += -msse3
QMAKE_CFLAGS_SSSE3     += -mssse3
QMAKE_CFLAGS_SSE4_1    += -msse4.1
QMAKE_CFLAGS_SSE4_2    += -msse4.2
QMAKE_CFLAGS_AVX       += -mavx
QMAKE_CFLAGS_AVX2      += -march=core-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_CFLAGS_AESNI     += -maes
QMAKE_CFLAGS_F16C      += $$QMAKE_CFLAGS_AVX2
QMAKE_CFLAGS_RDRND     += -mrdrnd
QMAKE_CFLAGS_SHANI     += -msha

QMAKE_CXX               = icpc
QMAKE_CXXFLAGS          = $$QMAKE_CFLAGS
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_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_SPLIT_SECTIONS = $$QMAKE_CFLAGS_SPLIT_SECTIONS
QMAKE_CXXFLAGS_LTCG     = $$QMAKE_CFLAGS_LTCG
QMAKE_CXXFLAGS_DISABLE_LTCG = $$QMAKE_CFLAGS_DISABLE_LTCG

QMAKE_LINK              = icpc
QMAKE_LINK_SHLIB        = icpc
QMAKE_LFLAGS            =
QMAKE_LFLAGS_RELEASE    =
QMAKE_LFLAGS_DEBUG      =
QMAKE_LFLAGS_SHLIB      = -single_module -dynamiclib
QMAKE_LFLAGS_INCREMENTAL = -undefined suppress -flat_namespace
QMAKE_LFLAGS_PLUGIN     = $$QMAKE_LFLAGS_SHLIB
QMAKE_LFLAGS_SONAME     = -install_name$${LITERAL_WHITESPACE}
QMAKE_LFLAGS_HEADERPAD  = -headerpad_max_install_names
QMAKE_LFLAGS_THREAD     =
QMAKE_LFLAGS_RPATH      = -Wl,-rpath,
QMAKE_LFLAGS_LTCG       = $$QMAKE_CFLAGS_LTCG

QMAKE_LFLAGS_VERSION    = -current_version$${LITERAL_WHITESPACE}
QMAKE_LFLAGS_COMPAT_VERSION = -compatibility_version$${LITERAL_WHITESPACE}

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}

# Symbol visibility control
QMAKE_CFLAGS_HIDESYMS   += -fvisibility=hidden
QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.11

QMAKE_APPLE_DEVICE_ARCHS = x86_64

include(../common/macx.conf)

load(qt_config)
