From bb5c65c64ff5ad3d136b351da2d629a9cd8a2ba5 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 15 Feb 2013 09:11:53 +0200 Subject: Add MinGW-W64 ODB binary build scripts --- binary/mingw-w64/NOTES | 166 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 binary/mingw-w64/NOTES (limited to 'binary/mingw-w64/NOTES') diff --git a/binary/mingw-w64/NOTES b/binary/mingw-w64/NOTES new file mode 100644 index 0000000..ae3d0fb --- /dev/null +++ b/binary/mingw-w64/NOTES @@ -0,0 +1,166 @@ +An overview of steps required to switch to a new GCC version. This is +a complete toolchain bring up. + +1. Get the MinGW-W64 GCC build of this version and get configuration + flags (gcc -v). The idea is to build both the cross-compiler + and the native compiler (with linked-in ODB plugin) as close + to the MinGW-W64 configuration as possible. + +2. Build cross-binutils: + + 1. Move old cross/mingw to cross/mingw-X.Y.Z. + 2. Unpack binutils, rename to binutils, create or clean binutils-cross-build. + 3. Build and install: + + cd binutils-cross-build + ../binutils-cross-configure + make -j 16 + make install + +3 Install runtime headers: + + 1. Unpack mingw-w64 and rename to mingw-w64, create or clean + mingw-w64-headers-build. + 2. Configure & install: + + cd mingw-w64-headers-build + ../rt-headers-cross-configure + make install + +4. Build cross-GCC, phase 1: + + 1. Unpack GCC, rename to gcc-cross, create or clean gcc-cross-build. + 2. Adapt older gcc-X.Y.Z-mingw-cross.patch (--dry-run) and apply. + 3. Adapt gcc-cross-configure based on MinGW-W64 config and old config. + 4. Build & install GCC only: + + cd gcc-cross-build + ../gcc-cross-configure + make -j 16 all-gcc + make install-gcc + +5. Build runtime: + + 1. Create or clean mingw-w64-build. + 2. Build & install: + + export PATH=`pwd`/cross/mingw/bin:$PATH + cd mingw-w64-build + ../rt-cross-configure + make -j 16 + make install + +6. Build pthreads: + + 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: + + export PATH=`pwd`/cross/mingw/bin:$PATH + cd winpthreads-build + ../pthreads-cross-configure + make -j 16 + make install + +7. Build cross-GCC, phase 2: + + 1. Build & install: + + cd gcc-cross-build + make -j 16 + make install + + 2. Disable .dll & .la files in i686-w64-mingw32/lib. + + 3. Check that the compiler works. Compile and run sizeof_funds.cxx and + throw.cxx. + +8. Package runtime: + + 1. Save mingw-rt as mingw-rt-X.Y.Z + + 2. Package: + + cd mingw-w64-headers-build + make DESTDIR=/home/boris/work/odb/build/mingw-w64/mingw-rt install + + cd mingw-w64-build + make DESTDIR=/home/boris/work/odb/build/mingw-w64/mingw-rt install + + cd winpthreads-build + make DESTDIR=/home/boris/work/odb/build/mingw-w64/mingw-rt install + + Move to the top level directory. + +9. Build binutils: + + 1. Create or clean binutils-build, /mingw. + 2. Build and install: + + export PATH=`pwd`/cross/mingw/bin:$PATH + cd binutils-build + ../configure-binutils + make -j 16 + make install + + 3. Copy /mingw/* to mingw-binutils. + +10. Build GCC prerequisites (gmp, mpfr, mpc): + + 1. Unpack {gmp, mpfr, mpc} + 2. Build and install: + + cd {gmp, mpfr, mpc} + ../gcc-prereq-configure + make -j 16 + make install + +11. Build the native compiler: + + 1. Unpack GCC, rename to gcc, create or clean gcc-build. + 2. Adapt older gcc-X.Y.Z-mingw.patch (--dry-run) and apply. + 3. Adapt older gcc-X.Y.Z-static-plugin.patch (--dry-run) and apply. + This step will probably require careful review of changes in the + plugin code (plugin.h and plugin.c). + 4. Regenerate configure script in gcc/gcc/. Use the same autoconf + version as in the original (see ~/build/autocond-X.Y). For example: + + sudo make -C ~/build/autoconf-2.64 install + autoconf --version + cd gcc + autoconf + sudo make -C ~/build/autoconf-2.64 uninstall + + 4. Adapt gcc-configure. + 5. Configure and make GCC manually: + + export PATH=`pwd`/cross/mingw/bin:$PATH + cd gcc-build + ../gcc-configure + make -j 16 + + This step will fail due to lack of libplugin-stub.a. That's + ok. Copy .h and .def files from gcc-build/gcc/ to gcc-headers/ + (backup old ones). + +4. Run the build-dist script with -rebuild + + 1. If GCC build fails, then it can be re-configured or re-made + directly from the gcc-build directory provided you don't + clean it up (if you do so, you can manually copy libplugin-stub.a + to gcc-build/gcc/). + + 2. Check the package for any stray directories/files. Compare size to + the old version. + + 3. On Windows, check that: + + - Compiler, including exceptions, work. Compile and run sizeof_funds.cxx + and throw.cxx. + + - Make sure ODB runs, including throwing exceptions (run on object + with private data members). + +5. Copy updates/patches to odb/etc/. -- cgit v1.1