Advertisement
Dukales

Untitled

Dec 14th, 2012
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env bash
  2.  
  3. set -o verbose
  4. set -o xtrace
  5. set -o errexit
  6.  
  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/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++-${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=${QTDIR}/../Qt-${LINKAGE}-build
  32. rm -vf ${QTDIR}/qmake/*.o # https://bugreports.qt-project.org/browse/QTBUG-9694
  33. mkdir -vp ${BUILD_DIR}/
  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. #C:\mingw\x86_64-w64-mingw32\lib32;C:\mingw\i686-w64-mingw32\lib64;
  53. export PATH
  54.  
  55. if [ "${THREADAPI}" = "win32" ]
  56. then
  57.     THREADS="-mthreads"
  58. else
  59.     THREADS="-pthread"
  60. fi
  61.  
  62. GRAPHITE=
  63. #"-fgraphite-identity -floop-interchange -floop-block -floop-parallelize-all"
  64. #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.
  65. # -mfpmath=both is experimental
  66. OPTFLAGS="\
  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. -ftree-loop-im"
  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. #"-frtti" # configure -rtti
  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. STLP_CXXOTHER=
  91. #"-D_REENTRANT=1 -D_STLP_NEW_PLATFORM_SDK=1 -D_STLP_USE_EXCEPTIONS"
  92. LISTING=""
  93. #"-Wa,-adhlns=\"\$@.lst\""
  94. X=
  95. #"-std=gnu++11 -D__FLT_EVAL_METHOD__=2 -Wp,-w"
  96. CXXOTHER="${COMMON} \
  97. ${STLP_CXXOTHER} \
  98. ${X} \
  99. ${LISTING}"
  100. LOTHER="-${LINKAGE} ${COMMON} \
  101. ${LFLAGS_WIN32}"
  102.  
  103. STLP_CXXDEBUG=
  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. CXXDEBUG="-O0 -g \
  106. ${STLP_CXXDEBUG}"
  107. LDEBUG="-Wl,-O0"
  108. CXXRELEASE=" \
  109. -O3 \
  110. ${OPTFLAGS}"
  111. LRELEASE="-Wl,-s \
  112. -Wl,-O3 \
  113. ${OPTFLAGS}"
  114.  
  115. QMAKESPEC_DIR=${QTDIR}/mkspecs/${QMAKESPEC}
  116. mkdir -vp ${QMAKESPEC_DIR}/
  117. rm -vrf ${QMAKESPEC_DIR}/*
  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. # Written for MinGW
  127. #
  128. # Cross compile example for i686-w64-mingw32-g++:
  129. #   configure -xplatform ${QMAKESPEC} -device-option CROSS_COMPILE=i686-w64-mingw32-
  130. #
  131.  
  132. MAKEFILE_GENERATOR  = MINGW
  133.  
  134. load(device_config)
  135.  
  136. equals(QMAKE_HOST.os, Windows): EXE_SUFFIX = .exe
  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. QMAKE_CFLAGS_WARN_ON    = -Wall -Wextra
  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_LIBDIR_QT     = \$\$[QT_INSTALL_LIBS]
  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_LFLAGS_DEBUG  = ${LDEBUG}
  190. QMAKE_LFLAGS_CONSOLE    = -Wl,-subsystem,console
  191. QMAKE_LFLAGS_WINDOWS    = -Wl,-subsystem,windows
  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_QMAKE     ~= s,\\\\\\\\,/,
  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. ${QMAKESPEC}
  260. -arch
  261. windows
  262. -${LINKAGE}
  263. -stl
  264. -debug-and-release
  265. -ltcg
  266. -no-fast
  267. -nomake
  268. examples
  269. -nomake
  270. demos
  271. -rtti
  272. -exceptions
  273. -process
  274. -qmake
  275. -declarative
  276. -declarative-debug
  277. -script
  278. -scripttools
  279. -opengl
  280. desktop
  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. time ${QTDIR}/configure.exe -redo
  327. popd
  328.  
  329. time make --directory="${BUILD_DIR}/" install
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement