SHOW:
|
|
- or go back to the newest paste.
| 1 | #!/usr/bin/env bash | |
| 2 | ||
| 3 | set -o verbose | |
| 4 | set -o xtrace | |
| 5 | set -o errexit | |
| 6 | ||
| 7 | - | LINKAGE=static |
| 7 | + | LINKAGE=shared |
| 8 | #static shared | |
| 9 | MARCH=corei7-avx | |
| 10 | #native corei7-avx corei7 | |
| 11 | MTUNE=corei7-avx | |
| 12 | #corei7-avx generic | |
| 13 | ADDRESS_MODEL=64 | |
| 14 | #32 64 | |
| 15 | #for boost:: | |
| 16 | THREADAPI=pthread | |
| 17 | #win32 pthread | |
| 18 | #required: -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB -lpthreadGC2 | |
| 19 | ||
| 20 | - | export MINGWDIR=/c/mingw |
| 20 | + | export MINGWDIR=/c/mingw64 |
| 21 | export QTDIR=${PWD}
| |
| 22 | PATH=/usr/bin:${MINGWDIR}/bin:/c/Windows/system32:${QTDIR}:${QTDIR}/bin
| |
| 23 | #${MINGWDIR}/x86_64-w64-mingw32/lib32
| |
| 24 | - | export QMAKESPEC=win32-g++-x${ADDRESS_MODEL}-$(g++ -dumpversion)-${MARCH}-${MTUNE} # "win32-g++*" !const!
|
| 24 | + | export QMAKESPEC=win32-g++-${ADDRESS_MODEL}-4.7.2-${MARCH}-${MTUNE} # "win32-g++*" !const!
|
| 25 | #export QMAKESPEC=win32-g++ | |
| 26 | export LANG=en | |
| 27 | ||
| 28 | export QT_INSTALL_PREFIX=${QTDIR}/../Qt-${LINKAGE}
| |
| 29 | QT_INSTALL_PREFIX_W=$(pwd -W)/../Qt-${LINKAGE}
| |
| 30 | rm -vrf ${QT_INSTALL_PREFIX}/*
| |
| 31 | - | BUILD_DIR=${QT_INSTALL_PREFIX}-build
|
| 31 | + | BUILD_DIR=${QTDIR}/../Qt-${LINKAGE}-build
|
| 32 | rm -vf ${QTDIR}/qmake/*.o # https://bugreports.qt-project.org/browse/QTBUG-9694
| |
| 33 | - | rm -vrf ${BUILD_DIR}/
|
| 33 | + | |
| 34 | rm -vrf ${BUILD_DIR}/*
| |
| 35 | cp -vf "$0" ${BUILD_DIR}/
| |
| 36 | #head -n 13 "$0" > ${BUILD_DIR}/redo-install-${LINKAGE}.sh
| |
| 37 | #tail -n 4 "$0" | head -n 1 >> ${BUILD_DIR}/redo-install-${LINKAGE}.sh
| |
| 38 | ||
| 39 | if [[ ${ADDRESS_MODEL} -eq 32 ]]
| |
| 40 | then | |
| 41 | PATH=${MINGWDIR}/x86_64-w64-mingw32/lib32:${PATH}
| |
| 42 | LFLAGS_WIN32="-Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc" | |
| 43 | CFLAGS_WIN32="" | |
| 44 | BIT_CAPACIY="-m32" | |
| 45 | else | |
| 46 | PATH=${MINGWDIR}/i686-w64-mingw32/lib64:${PATH}
| |
| 47 | LFLAGS_WIN32="" | |
| 48 | CFLAGS_WIN32="" | |
| 49 | BIT_CAPACIY="-m64" | |
| 50 | fi | |
| 51 | ||
| 52 | - | if [[ "${LINKAGE}" -eq "static" ]]
|
| 52 | + | |
| 53 | export PATH | |
| 54 | - | CXXLINKAGE="" |
| 54 | + | |
| 55 | if [ "${THREADAPI}" = "win32" ]
| |
| 56 | - | CXXLINKAGE="-DBOOST_ALL_DYN_LINK=1" |
| 56 | + | |
| 57 | THREADS="-mthreads" | |
| 58 | else | |
| 59 | THREADS="-pthread" | |
| 60 | fi | |
| 61 | ||
| 62 | - | if [[ "${THREADAPI}" = "win32" ]]
|
| 62 | + | |
| 63 | #"-fgraphite-identity -floop-interchange -floop-block -floop-parallelize-all" | |
| 64 | - | THREADS="-mthreads -DBOOST_THREAD_WIN32 -DBOOST_THREAD_USE_LIB" |
| 64 | + | |
| 65 | # -mfpmath=both is experimental | |
| 66 | - | THREADS="-pthread -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB" |
| 66 | + | |
| 67 | ${CFLAGS_WIN32} \
| |
| 68 | ${GRAPHITE} \
| |
| 69 | -fbranch-target-load-optimize2 \ | |
| 70 | -fcx-limited-range -fforce-addr \ | |
| 71 | -fgcse-las -fgcse-sm -fgcse-after-reload \ | |
| 72 | - | # -mfpmath=both is experimental thats not use it |
| 72 | + | |
| 73 | ||
| 74 | #!!!!!!! http://comments.gmane.org/gmane.comp.gnu.mingw.w64.general/6317 | |
| 75 | # 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 | |
| 76 | ARCH="${BIT_CAPACIY} -march=${MARCH} -mtune=${MTUNE}"
| |
| 77 | # | |
| 78 | # echo "" | gcc -march=native -v -E - 2>&1 | grep cc1 | |
| 79 | ||
| 80 | USE_RTTI= | |
| 81 | - | #!http://comments.gmane.org/gmane.comp.gnu.mingw.w64.general/6317 |
| 81 | + | |
| 82 | ||
| 83 | USE_LTO= | |
| 84 | #-flto=jobserver -fuse-linker-plugin | |
| 85 | ||
| 86 | COMMON="-v -pipe ${ARCH} ${USE_RTTI} \
| |
| 87 | -mtls-dialect=gnu2 \ | |
| 88 | -fsignaling-nans -fno-math-errno \ | |
| 89 | ${USE_LTO}"
| |
| 90 | - | USE_LTO_CXX="-flto" |
| 90 | + | |
| 91 | - | USE_LTO_LINK= |
| 91 | + | |
| 92 | - | #"-flto" |
| 92 | + | |
| 93 | - | #"-flto -fuse-linker-plugin" |
| 93 | + | |
| 94 | X= | |
| 95 | #"-std=gnu++11 -D__FLT_EVAL_METHOD__=2 -Wp,-w" | |
| 96 | CXXOTHER="${COMMON} \
| |
| 97 | - | -fsignaling-nans -fno-math-errno" |
| 97 | + | |
| 98 | ${X} \
| |
| 99 | ${LISTING}"
| |
| 100 | LOTHER="-${LINKAGE} ${COMMON} \
| |
| 101 | ${LFLAGS_WIN32}"
| |
| 102 | ||
| 103 | - | #"-std=gnu++1y -D__FLT_EVAL_METHOD__=2 -Wp,-w" |
| 103 | + | |
| 104 | #"-D_STLP_DEBUG=1 -D_DEBUG=1 -D_STLP_DEBUG_MODE_THROWS=1 -D_STLP_DEBUG_ALLOC=1 -D_STLP_DEBUG_UNINITIALIZED=1" | |
| 105 | - | ${CXXLINKAGE} \
|
| 105 | + | CXXDEBUG="-O0 -g \ |
| 106 | ${STLP_CXXDEBUG}"
| |
| 107 | LDEBUG="-Wl,-O0" | |
| 108 | - | ${LISTING} \
|
| 108 | + | |
| 109 | - | ${USE_LTO_CXX}"
|
| 109 | + | |
| 110 | ${OPTFLAGS}"
| |
| 111 | - | ${LFLAGS_WIN32} \
|
| 111 | + | |
| 112 | - | ${USE_LTO_LINK}"
|
| 112 | + | |
| 113 | ${OPTFLAGS}"
| |
| 114 | ||
| 115 | QMAKESPEC_DIR=${QTDIR}/mkspecs/${QMAKESPEC}
| |
| 116 | - | CXXDEBUG="-Og -g -ggdb \ |
| 116 | + | mkdir -vp ${QMAKESPEC_DIR}/
|
| 117 | rm -vrf ${QMAKESPEC_DIR}/*
| |
| 118 | - | LDEBUG="-Wl,-Og" |
| 118 | + | cp -vrf ${QTDIR}/mkspecs/win32-g++-4.6/* ${QMAKESPEC_DIR}/
|
| 119 | #http://sourceware.org/bugzilla/show_bug.cgi?id=13201 | |
| 120 | #http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50367 : WORKAROUND -flto-partition=none does not works | |
| 121 | #-fkeep-inline-functions -Wl,--as-needed | |
| 122 | cat - <<__EOF> ${QMAKESPEC_DIR}/qmake.conf
| |
| 123 | # | |
| 124 | # qmake configuration for ${QMAKESPEC}
| |
| 125 | # | |
| 126 | - | QMAKE_LIBDIR="\"C:/libs/boost/lib\"" |
| 126 | + | |
| 127 | - | QMAKE_INCDIR="\"C:/libs/boost/include\"" |
| 127 | + | |
| 128 | - | QMAKE_LIBS= |
| 128 | + | |
| 129 | # configure -xplatform ${QMAKESPEC} -device-option CROSS_COMPILE=i686-w64-mingw32-
| |
| 130 | - | QMAKESPEC_DIR="${QTDIR}/mkspecs/${QMAKESPEC}"
|
| 130 | + | |
| 131 | - | rm -vrf "${QMAKESPEC_DIR}/"
|
| 131 | + | |
| 132 | - | mkdir -vp "${QMAKESPEC_DIR}/"
|
| 132 | + | |
| 133 | - | cp -vrf ${QTDIR}/mkspecs/win32-g++-4.6/* "${QMAKESPEC_DIR}/"
|
| 133 | + | |
| 134 | load(device_config) | |
| 135 | ||
| 136 | equals(QMAKE_HOST.os, Windows): EXE_SUFFIX = .exe | |
| 137 | - | cat - <<__EOF> "${QMAKESPEC_DIR}/qmake.conf"
|
| 137 | + | |
| 138 | TEMPLATE = app | |
| 139 | CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target precompile_header | |
| 140 | QT += core gui | |
| 141 | DEFINES += UNICODE QT_LARGEFILE_SUPPORT | |
| 142 | QMAKE_COMPILER_DEFINES += __GNUC__ WIN32 | |
| 143 | ||
| 144 | QMAKE_EXT_OBJ = .o | |
| 145 | QMAKE_EXT_RES = _res.o | |
| 146 | ||
| 147 | QMAKE_CC = \$\${CROSS_COMPILE}gcc
| |
| 148 | QMAKE_LEX = flex | |
| 149 | QMAKE_LEXFLAGS = | |
| 150 | QMAKE_YACC = byacc | |
| 151 | QMAKE_YACCFLAGS = -d | |
| 152 | QMAKE_CFLAGS = ${CXXOTHER}
| |
| 153 | QMAKE_CFLAGS_DEPS = -M | |
| 154 | - | CONFIG += ${LINKAGE} exceptions rtti qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target
|
| 154 | + | |
| 155 | QMAKE_CFLAGS_WARN_OFF = -w | |
| 156 | QMAKE_CFLAGS_RELEASE = ${CXXRELEASE}
| |
| 157 | QMAKE_CFLAGS_DEBUG = ${CXXDEBUG}
| |
| 158 | QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses | |
| 159 | ||
| 160 | QMAKE_CXX = \$\${CROSS_COMPILE}g++
| |
| 161 | QMAKE_CXXFLAGS = \$\$QMAKE_CFLAGS | |
| 162 | QMAKE_CXXFLAGS_DEPS = \$\$QMAKE_CFLAGS_DEPS | |
| 163 | QMAKE_CXXFLAGS_WARN_ON = \$\$QMAKE_CFLAGS_WARN_ON | |
| 164 | QMAKE_CXXFLAGS_WARN_OFF = \$\$QMAKE_CFLAGS_WARN_OFF | |
| 165 | QMAKE_CXXFLAGS_RELEASE = \$\$QMAKE_CFLAGS_RELEASE | |
| 166 | QMAKE_CXXFLAGS_DEBUG = \$\$QMAKE_CFLAGS_DEBUG | |
| 167 | QMAKE_CXXFLAGS_YACC = \$\$QMAKE_CFLAGS_YACC | |
| 168 | QMAKE_CXXFLAGS_THREAD = \$\$QMAKE_CFLAGS_THREAD | |
| 169 | QMAKE_CXXFLAGS_RTTI_ON = -frtti | |
| 170 | QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti | |
| 171 | QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions ${THREADS}
| |
| 172 | QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions | |
| 173 | ||
| 174 | QMAKE_INCDIR = | |
| 175 | QMAKE_INCDIR_QT = \$\$[QT_INSTALL_HEADERS] | |
| 176 | - | QMAKE_CXXFLAGS = -x c++ \$\$QMAKE_CFLAGS |
| 176 | + | |
| 177 | ||
| 178 | QMAKE_RUN_CC = \$(CC) -c \$(CFLAGS) \$(INCPATH) -o \$obj \$src | |
| 179 | QMAKE_RUN_CC_IMP = \$(CC) -c \$(CFLAGS) \$(INCPATH) -o \$@ \$< | |
| 180 | QMAKE_RUN_CXX = \$(CXX) -c \$(CXXFLAGS) \$(INCPATH) -o \$obj \$src | |
| 181 | QMAKE_RUN_CXX_IMP = \$(CXX) -c \$(CXXFLAGS) \$(INCPATH) -o \$@ \$< | |
| 182 | ||
| 183 | QMAKE_LINK = \$\${CROSS_COMPILE}g++
| |
| 184 | QMAKE_LINK_C = \$\${CROSS_COMPILE}gcc
| |
| 185 | QMAKE_LFLAGS = ${LOTHER}
| |
| 186 | QMAKE_LFLAGS_EXCEPTIONS_ON = ${THREADS}
| |
| 187 | QMAKE_LFLAGS_EXCEPTIONS_OFF = | |
| 188 | QMAKE_LFLAGS_RELEASE = ${LRELEASE}
| |
| 189 | - | QMAKE_INCDIR = ${QMAKE_INCDIR}
|
| 189 | + | |
| 190 | - | QMAKE_LIBDIR = ${QMAKE_LIBDIR}
|
| 190 | + | |
| 191 | - | QMAKE_LIBS = ${QMAKE_LIBS}
|
| 191 | + | |
| 192 | QMAKE_LFLAGS_DLL = -${LINKAGE}
| |
| 193 | QMAKE_LINK_OBJECT_MAX = 5 | |
| 194 | QMAKE_LINK_OBJECT_SCRIPT= object_script | |
| 195 | QMAKE_PREFIX_STATICLIB = lib | |
| 196 | QMAKE_EXTENSION_STATICLIB = a | |
| 197 | ||
| 198 | ||
| 199 | QMAKE_LIBS = | |
| 200 | QMAKE_LIBS_CORE = -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 | |
| 201 | QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 -lole32 -luuid -luser32 -ladvapi32 | |
| 202 | QMAKE_LIBS_NETWORK = -lws2_32 | |
| 203 | QMAKE_LIBS_OPENGL = -lglu32 -lopengl32 -lgdi32 -luser32 | |
| 204 | QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32 | |
| 205 | QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain | |
| 206 | ||
| 207 | !isEmpty(QMAKE_SH) {
| |
| 208 | MINGW_IN_SHELL = 1 | |
| 209 | QMAKE_DIR_SEP = / | |
| 210 | - | QMAKE_LINK_OBJECT_MAX = 10 |
| 210 | + | |
| 211 | QMAKE_COPY = cp | |
| 212 | QMAKE_COPY_DIR = cp -r | |
| 213 | QMAKE_MOVE = mv | |
| 214 | QMAKE_DEL_FILE = rm | |
| 215 | QMAKE_MKDIR = mkdir -p | |
| 216 | QMAKE_DEL_DIR = rmdir | |
| 217 | QMAKE_CHK_DIR_EXISTS = test -d | |
| 218 | } else {
| |
| 219 | QMAKE_COPY = copy /y | |
| 220 | QMAKE_COPY_DIR = xcopy /s /q /y /i | |
| 221 | QMAKE_MOVE = move | |
| 222 | QMAKE_DEL_FILE = del | |
| 223 | QMAKE_MKDIR = mkdir | |
| 224 | QMAKE_DEL_DIR = rmdir | |
| 225 | QMAKE_CHK_DIR_EXISTS = if not exist | |
| 226 | } | |
| 227 | ||
| 228 | QMAKE_MOC = \$\$[QT_INSTALL_BINS]\$\${DIR_SEPARATOR}moc\$\${EXE_SUFFIX}
| |
| 229 | QMAKE_UIC = \$\$[QT_INSTALL_BINS]\$\${DIR_SEPARATOR}uic\$\${EXE_SUFFIX}
| |
| 230 | QMAKE_IDC = \$\$[QT_INSTALL_BINS]\$\${DIR_SEPARATOR}idc\$\${EXE_SUFFIX}
| |
| 231 | ||
| 232 | QMAKE_IDL = midl | |
| 233 | QMAKE_LIB = \$\${CROSS_COMPILE}ar -ru
| |
| 234 | QMAKE_RC = \$\${CROSS_COMPILE}windres
| |
| 235 | QMAKE_ZIP = zip -r -9 | |
| 236 | ||
| 237 | QMAKE_STRIP = \$\${CROSS_COMPILE}strip
| |
| 238 | QMAKE_STRIPFLAGS_LIB += --strip-unneeded | |
| 239 | load(qt_config) | |
| 240 | ||
| 241 | #QMAKE_CFLAGS *= -fno-keep-inline-dllexport | |
| 242 | #QMAKE_CXXFLAGS *= -fno-keep-inline-dllexport | |
| 243 | #SIMD defines: | |
| 244 | CONFIG += mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 avx | |
| 245 | CONFIG += avx | |
| 246 | CONFIG -= embed_manifest_exe | |
| 247 | CONFIG -= embed_manifest_dll | |
| 248 | __EOF | |
| 249 | #cp -vf qmake.conf mkspecs/${QMAKESPEC}/
| |
| 250 | ||
| 251 | mkdir -vp ${QT_INSTALL_PREFIX}/
| |
| 252 | rm -vrf ${QT_INSTALL_PREFIX}/*
| |
| 253 | cp -vrf ${QTDIR}/mkspecs ${QT_INSTALL_PREFIX}/
| |
| 254 | ||
| 255 | cat - <<__EOF> ${BUILD_DIR}/configure.cache
| |
| 256 | -opensource | |
| 257 | -confirm-license | |
| 258 | -platform | |
| 259 | - | CONFIG *= mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 avx |
| 259 | + | |
| 260 | -arch | |
| 261 | windows | |
| 262 | -${LINKAGE}
| |
| 263 | -stl | |
| 264 | -debug-and-release | |
| 265 | - | rm -vrf "${QT_INSTALL_PREFIX}/"
|
| 265 | + | -ltcg |
| 266 | - | mkdir -vp "${QT_INSTALL_PREFIX}/"
|
| 266 | + | |
| 267 | - | cp -vrf "${QTDIR}/mkspecs" "${QT_INSTALL_PREFIX}/"
|
| 267 | + | |
| 268 | examples | |
| 269 | - | CONF_CACHE="${BUILD_DIR}/configure.cache"
|
| 269 | + | |
| 270 | - | cat - <<__EOF> "${CONF_CACHE}"
|
| 270 | + | |
| 271 | -rtti | |
| 272 | -exceptions | |
| 273 | -process | |
| 274 | -qmake | |
| 275 | -declarative | |
| 276 | -declarative-debug | |
| 277 | -script | |
| 278 | -scripttools | |
| 279 | -opengl | |
| 280 | - | -no-ltcg |
| 280 | + | |
| 281 | -no-openvg | |
| 282 | -no-nis | |
| 283 | -no-incredibuild-xge | |
| 284 | -no-openssl | |
| 285 | -iconv | |
| 286 | -graphicssystem | |
| 287 | raster | |
| 288 | -qt-zlib | |
| 289 | -qt-libpng | |
| 290 | -qt-libmng | |
| 291 | -qt-libtiff | |
| 292 | -qt-libjpeg | |
| 293 | -no-vcproj | |
| 294 | -no-dsp | |
| 295 | -plugin-sql-sqlite | |
| 296 | -qt-sql-sqlite | |
| 297 | -no-qt3support | |
| 298 | -no-style-plastique | |
| 299 | -no-style-motif | |
| 300 | -no-style-cleanlooks | |
| 301 | -no-style-cde | |
| 302 | -no-webkit | |
| 303 | -no-phonon | |
| 304 | -no-phonon-backend | |
| 305 | -no-multimedia | |
| 306 | -no-audio-backend | |
| 307 | -native-gestures | |
| 308 | -prefix | |
| 309 | ${QT_INSTALL_PREFIX_W}
| |
| 310 | __EOF | |
| 311 | ||
| 312 | #-mmx | |
| 313 | #-sse | |
| 314 | #-sse2 | |
| 315 | ||
| 316 | #echo "-prefix" >> "${QCONFIG_CACHE}"
| |
| 317 | #echo "${QT_INSTALL_PREFIX}" >> "${QCONFIG_CACHE}"
| |
| 318 | #-plugin-sql-mysql | |
| 319 | #-plugin-sql-psql | |
| 320 | #-plugin-sql-odbc | |
| 321 | #-qt-sql-mysql | |
| 322 | #-qt-sql-psql | |
| 323 | #-qt-sql-odbc | |
| 324 | ||
| 325 | pushd ${BUILD_DIR}
| |
| 326 | - | #SQL plugins |
| 326 | + | time ${QTDIR}/configure.exe -redo
|
| 327 | - | #@cmd /K @echo %~s1 |
| 327 | + | |
| 328 | - | MYSQL_PATH="C:/PROGRA~1/MySQL/MYSQLS~1.6" |
| 328 | + | |
| 329 | - | if [ -d ${MYSQL_PATH} ]
|
| 329 | + | time make --directory="${BUILD_DIR}/" install |