From 6fe7fc56873b27deef74bc9dc36adf86af4fd79b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 11 Feb 2015 16:20:56 +0200 Subject: Update MinGW64 binary build (MinGW 3.3 runtime) Using GCC 4.9.3, multi-arch/multi-lib build (you don't want to try this at home). --- binary/mingw-w64/NOTES | 58 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 17 deletions(-) (limited to 'binary/mingw-w64/NOTES') diff --git a/binary/mingw-w64/NOTES b/binary/mingw-w64/NOTES index fec4e7a..c94988f 100644 --- a/binary/mingw-w64/NOTES +++ b/binary/mingw-w64/NOTES @@ -1,7 +1,11 @@ -TODO: +Notes: -* Multi-arch build (i.e., i686 hosted, i686 and x86_64-trageting, just - like in Qt5). Then will be able to pass -m32/-m64 to the ODB compiler. +- Currently have to use the mingw/lib -> i686-w64-mingw32/lib64 hack to + make GCC see 64-bit system libraries. This is required for both cross + and native compiler. In the native compiler it is removed later and + the result seem to work ok. + +- If updating msys, add gendef and reimp (from mingw-utils) utilities. An overview of steps required to switch to a new GCC version. This is a complete toolchain bring up. @@ -39,9 +43,11 @@ a complete toolchain bring up. 3. Adapt gcc-cross-configure based on MinGW-W64 config and old config. 4. Build & install GCC only: + # High -j does not seem to work properly, -j 4 seems to work. + cd gcc-cross-build ../gcc-cross-configure - make -j 16 all-gcc + make -j 4 all-gcc make install-gcc 5. Build runtime: @@ -52,32 +58,39 @@ a complete toolchain bring up. export PATH=`pwd`/cross/mingw/bin:$PATH cd mingw-w64-build ../rt-cross-configure - make -j 16 - make install + make -j 22 + make -j 22 install -6. Build pthreads: + i686-w64-mingw32-ar cr ../cross/mingw/i686-w64-mingw32/lib/libpthread.a + i686-w64-mingw32-ar cr ../cross/mingw/i686-w64-mingw32/lib64/libpthread.a - 1. Get winpthreads, create or clean winpthreads-build - - svn checkout http://mingw-w64.svn.sourceforge.net/svnroot/mingw-w64/experimental/winpthreads - - 2. Build and install: + mkdir winpthreads32 + cd winpthreads32 + ../../pthread-cross-configure + make -j 16 + make install + mv ../../cross/mingw/i686-w64-mingw32/bin/libwinpthread* ../../cross/mingw/i686-w64-mingw32/lib/ - export PATH=`pwd`/cross/mingw/bin:$PATH - cd winpthreads-build - ../pthreads-cross-configure + cd .. + mkdir winpthreads64 + cd winpthreads64 + ../../pthread-cross-configure-64 make -j 16 make install + mv ../../cross/mingw/i686-w64-mingw32/bin/libwinpthread* ../../cross/mingw/i686-w64-mingw32/lib64/ 7. Build cross-GCC, phase 2: 1. Build & install: + @@ Had to ln mingw/lib to lib64 in cross/mingw/ + cd gcc-cross-build make -j 16 make install - 2. Disable .dll & .la files in i686-w64-mingw32/lib and bin/. + 2. Disable .dll & .la files in i686-w64-mingw32/lib and bin/ (for + static link) 3. Check that the compiler works. Compile and run sizeof_funds.cxx and throw.cxx. @@ -91,11 +104,17 @@ a complete toolchain bring up. cd mingw-w64-headers-build make DESTDIR=/home/boris/work/odb/build/mingw-w64/mingw-rt install + # May need export PATH above cd mingw-w64-build make DESTDIR=/home/boris/work/odb/build/mingw-w64/mingw-rt install - cd winpthreads-build + cd winpthreads32 make DESTDIR=/home/boris/work/odb/build/mingw-w64/mingw-rt install + #do manually: mv ../../mingw-rt/i686-w64-mingw32/bin/libwinpthread* ../../mingw-rt/i686-w64-mingw32/lib/ + + cd winpthreads64 + make DESTDIR=/home/boris/work/odb/build/mingw-w64/mingw-rt install + #do manually: mv ../../mingw-rt/i686-w64-mingw32/bin/libwinpthread* ../../mingw-rt/i686-w64-mingw32/lib64/ Move to the top level directory. @@ -160,8 +179,13 @@ a complete toolchain bring up. 2. Check the package for any stray directories/files. Compare size to the old version. + Check that 32 and 64-bit libstdc++ are different (use file) Globbing + for odb. + 3. On Windows, check that: + - No dependencies on MinGW DLLs (odb, g++, cc1plus, ld). + - Compiler, including exceptions, work. Compile and run sizeof_funds.cxx and throw.cxx. -- cgit v1.1