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 |