View difference between Paste ID: WHqANgTx and 8Qirgm0J
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