Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- set -o verbose
- set -o xtrace
- set -o errexit
- LINKAGE=shared
- #static shared
- MARCH=corei7-avx
- #native corei7-avx corei7
- MTUNE=corei7-avx
- #corei7-avx generic
- ADDRESS_MODEL=64
- #32 64
- #for boost::
- THREADAPI=pthread
- #win32 pthread
- #required: -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB -lpthreadGC2
- export MINGWDIR=/c/mingw64
- export QTDIR=${PWD}
- PATH=/usr/bin:${MINGWDIR}/bin:/c/Windows/system32:${QTDIR}:${QTDIR}/bin
- #${MINGWDIR}/x86_64-w64-mingw32/lib32
- export QMAKESPEC=win32-g++-${ADDRESS_MODEL}-4.7.2-${MARCH}-${MTUNE} # "win32-g++*" !const!
- #export QMAKESPEC=win32-g++
- export LANG=en
- export QT_INSTALL_PREFIX=${QTDIR}/../Qt-${LINKAGE}
- QT_INSTALL_PREFIX_W=$(pwd -W)/../Qt-${LINKAGE}
- rm -vrf ${QT_INSTALL_PREFIX}/*
- BUILD_DIR=${QTDIR}/../Qt-${LINKAGE}-build
- rm -vf ${QTDIR}/qmake/*.o # https://bugreports.qt-project.org/browse/QTBUG-9694
- mkdir -vp ${BUILD_DIR}/
- rm -vrf ${BUILD_DIR}/*
- cp -vf "$0" ${BUILD_DIR}/
- #head -n 13 "$0" > ${BUILD_DIR}/redo-install-${LINKAGE}.sh
- #tail -n 4 "$0" | head -n 1 >> ${BUILD_DIR}/redo-install-${LINKAGE}.sh
- if [[ ${ADDRESS_MODEL} -eq 32 ]]
- then
- PATH=${MINGWDIR}/x86_64-w64-mingw32/lib32:${PATH}
- LFLAGS_WIN32="-Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc"
- CFLAGS_WIN32=""
- BIT_CAPACIY="-m32"
- else
- PATH=${MINGWDIR}/i686-w64-mingw32/lib64:${PATH}
- LFLAGS_WIN32=""
- CFLAGS_WIN32=""
- BIT_CAPACIY="-m64"
- fi
- #C:\mingw\x86_64-w64-mingw32\lib32;C:\mingw\i686-w64-mingw32\lib64;
- export PATH
- if [ "${THREADAPI}" = "win32" ]
- then
- THREADS="-mthreads"
- else
- THREADS="-pthread"
- fi
- GRAPHITE=
- #"-fgraphite-identity -floop-interchange -floop-block -floop-parallelize-all"
- #The flag -fomit-frame-pointer is enabled at -O1, -O2, -O3 and -Os on arches where it doesn't interfere with debugging, such as AMD64, but not x86. So if you're on x86 you should add it to your CFLAGS. Also don't use -momit-leaf-frame-pointer together with -fomit-frame-pointer. It's pointless as -fomit-frame-pointer already omits all frame pointers. In fact if you use both, -momit-leaf-frame-pointer overrides -fomit-frame-pointer creating less optimized code.
- # -mfpmath=both is experimental
- OPTFLAGS="\
- ${CFLAGS_WIN32} \
- ${GRAPHITE} \
- -fbranch-target-load-optimize2 \
- -fcx-limited-range -fforce-addr \
- -fgcse-las -fgcse-sm -fgcse-after-reload \
- -ftree-loop-im"
- #!!!!!!! http://comments.gmane.org/gmane.comp.gnu.mingw.w64.general/6317
- # my workaround: if you want to use "-mfpmath=both" (or, equivalently, "-mfpmath=sse+387") with "-std=gnu++11" option, then specify "-D__FLT_EVAL_METHOD__=2 -Wp,-w" option to g++ extra
- ARCH="${BIT_CAPACIY} -march=${MARCH} -mtune=${MTUNE}"
- #
- # echo "" | gcc -march=native -v -E - 2>&1 | grep cc1
- USE_RTTI=
- #"-frtti" # configure -rtti
- USE_LTO=
- #-flto=jobserver -fuse-linker-plugin
- COMMON="-v -pipe ${ARCH} ${USE_RTTI} \
- -mtls-dialect=gnu2 \
- -fsignaling-nans -fno-math-errno \
- ${USE_LTO}"
- STLP_CXXOTHER=
- #"-D_REENTRANT=1 -D_STLP_NEW_PLATFORM_SDK=1 -D_STLP_USE_EXCEPTIONS"
- LISTING=""
- #"-Wa,-adhlns=\"\$@.lst\""
- X=
- #"-std=gnu++11 -D__FLT_EVAL_METHOD__=2 -Wp,-w"
- CXXOTHER="${COMMON} \
- ${STLP_CXXOTHER} \
- ${X} \
- ${LISTING}"
- LOTHER="-${LINKAGE} ${COMMON} \
- ${LFLAGS_WIN32}"
- STLP_CXXDEBUG=
- #"-D_STLP_DEBUG=1 -D_DEBUG=1 -D_STLP_DEBUG_MODE_THROWS=1 -D_STLP_DEBUG_ALLOC=1 -D_STLP_DEBUG_UNINITIALIZED=1"
- CXXDEBUG="-O0 -g \
- ${STLP_CXXDEBUG}"
- LDEBUG="-Wl,-O0"
- CXXRELEASE=" \
- -O3 \
- ${OPTFLAGS}"
- LRELEASE="-Wl,-s \
- -Wl,-O3 \
- ${OPTFLAGS}"
- QMAKESPEC_DIR=${QTDIR}/mkspecs/${QMAKESPEC}
- mkdir -vp ${QMAKESPEC_DIR}/
- rm -vrf ${QMAKESPEC_DIR}/*
- cp -vrf ${QTDIR}/mkspecs/win32-g++-4.6/* ${QMAKESPEC_DIR}/
- #http://sourceware.org/bugzilla/show_bug.cgi?id=13201
- #http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50367 : WORKAROUND -flto-partition=none does not works
- #-fkeep-inline-functions -Wl,--as-needed
- cat - <<__EOF> ${QMAKESPEC_DIR}/qmake.conf
- #
- # qmake configuration for ${QMAKESPEC}
- #
- # Written for MinGW
- #
- # Cross compile example for i686-w64-mingw32-g++:
- # configure -xplatform ${QMAKESPEC} -device-option CROSS_COMPILE=i686-w64-mingw32-
- #
- MAKEFILE_GENERATOR = MINGW
- load(device_config)
- equals(QMAKE_HOST.os, Windows): EXE_SUFFIX = .exe
- TEMPLATE = app
- CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target precompile_header
- QT += core gui
- DEFINES += UNICODE QT_LARGEFILE_SUPPORT
- QMAKE_COMPILER_DEFINES += __GNUC__ WIN32
- QMAKE_EXT_OBJ = .o
- QMAKE_EXT_RES = _res.o
- QMAKE_CC = \$\${CROSS_COMPILE}gcc
- QMAKE_LEX = flex
- QMAKE_LEXFLAGS =
- QMAKE_YACC = byacc
- QMAKE_YACCFLAGS = -d
- QMAKE_CFLAGS = ${CXXOTHER}
- QMAKE_CFLAGS_DEPS = -M
- QMAKE_CFLAGS_WARN_ON = -Wall -Wextra
- QMAKE_CFLAGS_WARN_OFF = -w
- QMAKE_CFLAGS_RELEASE = ${CXXRELEASE}
- QMAKE_CFLAGS_DEBUG = ${CXXDEBUG}
- QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
- QMAKE_CXX = \$\${CROSS_COMPILE}g++
- 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_YACC = \$\$QMAKE_CFLAGS_YACC
- QMAKE_CXXFLAGS_THREAD = \$\$QMAKE_CFLAGS_THREAD
- QMAKE_CXXFLAGS_RTTI_ON = -frtti
- QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti
- QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions ${THREADS}
- QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
- QMAKE_INCDIR =
- QMAKE_INCDIR_QT = \$\$[QT_INSTALL_HEADERS]
- QMAKE_LIBDIR_QT = \$\$[QT_INSTALL_LIBS]
- QMAKE_RUN_CC = \$(CC) -c \$(CFLAGS) \$(INCPATH) -o \$obj \$src
- QMAKE_RUN_CC_IMP = \$(CC) -c \$(CFLAGS) \$(INCPATH) -o \$@ \$<
- QMAKE_RUN_CXX = \$(CXX) -c \$(CXXFLAGS) \$(INCPATH) -o \$obj \$src
- QMAKE_RUN_CXX_IMP = \$(CXX) -c \$(CXXFLAGS) \$(INCPATH) -o \$@ \$<
- QMAKE_LINK = \$\${CROSS_COMPILE}g++
- QMAKE_LINK_C = \$\${CROSS_COMPILE}gcc
- QMAKE_LFLAGS = ${LOTHER}
- QMAKE_LFLAGS_EXCEPTIONS_ON = ${THREADS}
- QMAKE_LFLAGS_EXCEPTIONS_OFF =
- QMAKE_LFLAGS_RELEASE = ${LRELEASE}
- QMAKE_LFLAGS_DEBUG = ${LDEBUG}
- QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
- QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
- QMAKE_LFLAGS_DLL = -${LINKAGE}
- QMAKE_LINK_OBJECT_MAX = 5
- QMAKE_LINK_OBJECT_SCRIPT= object_script
- QMAKE_PREFIX_STATICLIB = lib
- QMAKE_EXTENSION_STATICLIB = a
- QMAKE_LIBS =
- QMAKE_LIBS_CORE = -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32
- QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 -lole32 -luuid -luser32 -ladvapi32
- QMAKE_LIBS_NETWORK = -lws2_32
- QMAKE_LIBS_OPENGL = -lglu32 -lopengl32 -lgdi32 -luser32
- QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32
- QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
- !isEmpty(QMAKE_SH) {
- MINGW_IN_SHELL = 1
- QMAKE_DIR_SEP = /
- QMAKE_QMAKE ~= s,\\\\\\\\,/,
- QMAKE_COPY = cp
- QMAKE_COPY_DIR = cp -r
- QMAKE_MOVE = mv
- QMAKE_DEL_FILE = rm
- QMAKE_MKDIR = mkdir -p
- QMAKE_DEL_DIR = rmdir
- QMAKE_CHK_DIR_EXISTS = test -d
- } else {
- QMAKE_COPY = copy /y
- QMAKE_COPY_DIR = xcopy /s /q /y /i
- QMAKE_MOVE = move
- QMAKE_DEL_FILE = del
- QMAKE_MKDIR = mkdir
- QMAKE_DEL_DIR = rmdir
- QMAKE_CHK_DIR_EXISTS = if not exist
- }
- QMAKE_MOC = \$\$[QT_INSTALL_BINS]\$\${DIR_SEPARATOR}moc\$\${EXE_SUFFIX}
- QMAKE_UIC = \$\$[QT_INSTALL_BINS]\$\${DIR_SEPARATOR}uic\$\${EXE_SUFFIX}
- QMAKE_IDC = \$\$[QT_INSTALL_BINS]\$\${DIR_SEPARATOR}idc\$\${EXE_SUFFIX}
- QMAKE_IDL = midl
- QMAKE_LIB = \$\${CROSS_COMPILE}ar -ru
- QMAKE_RC = \$\${CROSS_COMPILE}windres
- QMAKE_ZIP = zip -r -9
- QMAKE_STRIP = \$\${CROSS_COMPILE}strip
- QMAKE_STRIPFLAGS_LIB += --strip-unneeded
- load(qt_config)
- #QMAKE_CFLAGS *= -fno-keep-inline-dllexport
- #QMAKE_CXXFLAGS *= -fno-keep-inline-dllexport
- #SIMD defines:
- CONFIG += mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 avx
- CONFIG += avx
- CONFIG -= embed_manifest_exe
- CONFIG -= embed_manifest_dll
- __EOF
- #cp -vf qmake.conf mkspecs/${QMAKESPEC}/
- mkdir -vp ${QT_INSTALL_PREFIX}/
- rm -vrf ${QT_INSTALL_PREFIX}/*
- cp -vrf ${QTDIR}/mkspecs ${QT_INSTALL_PREFIX}/
- cat - <<__EOF> ${BUILD_DIR}/configure.cache
- -opensource
- -confirm-license
- -platform
- ${QMAKESPEC}
- -arch
- windows
- -${LINKAGE}
- -stl
- -debug-and-release
- -ltcg
- -no-fast
- -nomake
- examples
- -nomake
- demos
- -rtti
- -exceptions
- -process
- -qmake
- -declarative
- -declarative-debug
- -script
- -scripttools
- -opengl
- desktop
- -no-openvg
- -no-nis
- -no-incredibuild-xge
- -no-openssl
- -iconv
- -graphicssystem
- raster
- -qt-zlib
- -qt-libpng
- -qt-libmng
- -qt-libtiff
- -qt-libjpeg
- -no-vcproj
- -no-dsp
- -plugin-sql-sqlite
- -qt-sql-sqlite
- -no-qt3support
- -no-style-plastique
- -no-style-motif
- -no-style-cleanlooks
- -no-style-cde
- -no-webkit
- -no-phonon
- -no-phonon-backend
- -no-multimedia
- -no-audio-backend
- -native-gestures
- -prefix
- ${QT_INSTALL_PREFIX_W}
- __EOF
- #-mmx
- #-sse
- #-sse2
- #echo "-prefix" >> "${QCONFIG_CACHE}"
- #echo "${QT_INSTALL_PREFIX}" >> "${QCONFIG_CACHE}"
- #-plugin-sql-mysql
- #-plugin-sql-psql
- #-plugin-sql-odbc
- #-qt-sql-mysql
- #-qt-sql-psql
- #-qt-sql-odbc
- pushd ${BUILD_DIR}
- time ${QTDIR}/configure.exe -redo
- popd
- time make --directory="${BUILD_DIR}/" install
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement