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=static
- #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/mingw
- export QTDIR=${PWD}
- PATH=/usr/bin:${MINGWDIR}/bin:/c/Windows/system32:${QTDIR}:${QTDIR}/bin
- #${MINGWDIR}/x86_64-w64-mingw32/lib32
- export QMAKESPEC=win32-g++-x${ADDRESS_MODEL}-$(g++ -dumpversion)-${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=${QT_INSTALL_PREFIX}-build
- rm -vf ${QTDIR}/qmake/*.o # https://bugreports.qt-project.org/browse/QTBUG-9694
- rm -vrf ${BUILD_DIR}/
- mkdir -vp ${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
- if [[ "${LINKAGE}" -eq "static" ]]
- then
- CXXLINKAGE=""
- else
- CXXLINKAGE="-DBOOST_ALL_DYN_LINK=1"
- fi
- #C:\mingw\x86_64-w64-mingw32\lib32;C:\mingw\i686-w64-mingw32\lib64;
- export PATH
- if [[ "${THREADAPI}" = "win32" ]]
- then
- THREADS="-mthreads -DBOOST_THREAD_WIN32 -DBOOST_THREAD_USE_LIB"
- else
- THREADS="-pthread -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB"
- 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 thats not use it
- 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_CXX="-flto"
- USE_LTO_LINK=
- #"-flto"
- #"-flto -fuse-linker-plugin"
- COMMON="-v -pipe ${ARCH} ${USE_RTTI} \
- -mtls-dialect=gnu2 \
- -fsignaling-nans -fno-math-errno"
- STLP_CXXOTHER=
- #"-D_REENTRANT=1 -D_STLP_NEW_PLATFORM_SDK=1 -D_STLP_USE_EXCEPTIONS"
- LISTING=""
- #"-Wa,-adhlns=\"\[email protected]\""
- X=
- #"-std=gnu++1y -D__FLT_EVAL_METHOD__=2 -Wp,-w"
- CXXOTHER="${COMMON} \
- ${CXXLINKAGE} \
- ${STLP_CXXOTHER} \
- ${X} \
- ${LISTING} \
- ${USE_LTO_CXX}"
- LOTHER="-${LINKAGE} ${COMMON} \
- ${LFLAGS_WIN32} \
- ${USE_LTO_LINK}"
- 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="-Og -g -ggdb \
- ${STLP_CXXDEBUG}"
- LDEBUG="-Wl,-Og"
- CXXRELEASE=" \
- -O3 \
- ${OPTFLAGS}"
- LRELEASE="-Wl,-s \
- -Wl,-O3 \
- ${OPTFLAGS}"
- QMAKE_LIBDIR="\"C:/libs/boost/lib\""
- QMAKE_INCDIR="\"C:/libs/boost/include\""
- QMAKE_LIBS=
- QMAKESPEC_DIR="${QTDIR}/mkspecs/${QMAKESPEC}"
- rm -vrf "${QMAKESPEC_DIR}/"
- mkdir -vp "${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 += ${LINKAGE} exceptions rtti qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target
- 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 = -x c++ \$\$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}
- QMAKE_LIBDIR = ${QMAKE_LIBDIR}
- QMAKE_LIBS = ${QMAKE_LIBS}
- 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 = 10
- 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)
- #SIMD defines:
- CONFIG *= mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 avx
- CONFIG -= embed_manifest_exe
- CONFIG -= embed_manifest_dll
- __EOF
- #cp -vf qmake.conf mkspecs/${QMAKESPEC}/
- rm -vrf "${QT_INSTALL_PREFIX}/"
- mkdir -vp "${QT_INSTALL_PREFIX}/"
- cp -vrf "${QTDIR}/mkspecs" "${QT_INSTALL_PREFIX}/"
- CONF_CACHE="${BUILD_DIR}/configure.cache"
- cat - <<__EOF> "${CONF_CACHE}"
- -opensource
- -confirm-license
- -platform
- ${QMAKESPEC}
- -arch
- windows
- -${LINKAGE}
- -stl
- -debug-and-release
- -no-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
- -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
- #SQL plugins
- #@cmd /K @echo %~s1
- MYSQL_PATH="C:/PROGRA~1/MySQL/MYSQLS~1.6"
- if [ -d ${MYSQL_PATH} ]
- then
- gendef - "${MYSQL_PATH}/lib/libmysql.dll" > "${MYSQL_PATH}/lib/libmysql.def"
- dlltool -k --input-def "${MYSQL_PATH}/lib/libmysql.def" --dllname "${MYSQL_PATH}/lib/libmysql.dll" --output-lib "${MYSQL_PATH}/lib/libmysql.a"
- echo "-plugin-sql-mysql -qt-sql-mysql -I ${MYSQL_PATH}/include -L ${MYSQL_PATH}/lib -l mysql" >> "${CONF_CACHE}"
- MYSQL_DIR_SRC="${QTDIR}/src/plugins/sqldrivers/mysql"
- fi
- PSQL_PATH="C:/PROGRA~1/POSTGR~1/9.2"
- if [ -d ${PSQL_PATH} ]
- then
- gendef - "${PSQL_PATH}/bin/libpq.dll" > "${PSQL_PATH}/bin/libpq.def"
- dlltool -k --input-def "${PSQL_PATH}/bin/libpq.def" --dllname "${PSQL_PATH}/bin/libpq.dll" --output-lib "${PSQL_PATH}/lib/libpq.a"
- echo "-plugin-sql-psql -qt-sql-psql -I ${PSQL_PATH}/include -L ${PSQL_PATH}/lib -l pq" >> "${CONF_CACHE}"
- PSQL_DIR_SRC="${QTDIR}/src/plugins/sqldrivers/psql"
- fi
- echo "-plugin-sql-odbc -qt-sql-odbc" >> "${CONF_CACHE}"
- ODBC_DIR_SRC="${QTDIR}/src/plugins/sqldrivers/odbc"
- pushd "${BUILD_DIR}"
- time "${QTDIR}/configure.exe" -redo
- popd
- cat - <<__EOF> "${BUILD_DIR}/install.sh"
- #!/usr/bin/env bash
- set -o verbose
- set -o xtrace
- set -o errexit
- PATH=${PATH}
- time make --directory="${BUILD_DIR}/" install
- if [ -d ${MYSQL_PATH} ]
- then
- qmake -spec "${QMAKESPEC}" "INCLUDEPATH+=${MYSQL_PATH}/include" "LIBS+=${MYSQL_PATH}/lib/libmysql.a" "${MYSQL_DIR_SRC}/mysql.pro"
- time make --directory="${MYSQL_DIR_SRC}/" debug-install release-install
- fi
- if [ -d ${PSQL_PATH} ]
- then
- qmake -spec "${QMAKESPEC}" "INCLUDEPATH+=${PSQL_PATH}/include" "LIBS+=${PSQL_PATH}/lib/libpq.a" "${PSQL_DIR_SRC}/psql.pro"
- time make --directory="${PSQL_DIR_SRC}/" debug-install release-install
- fi
- qmake -spec "${QMAKESPEC}" "${ODBC_DIR_SRC}/odbc.pro"
- time make --directory="${ODBC_DIR_SRC}/" debug-install release-install
- __EOF
- #bash "${BUILD_DIR}/install.sh" &
Advertisement
Add Comment
Please, Sign In to add comment