summaryrefslogtreecommitdiff
path: root/binary/mingw-w64/NOTES
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-02-15 09:11:53 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-02-15 09:11:53 +0200
commitbb5c65c64ff5ad3d136b351da2d629a9cd8a2ba5 (patch)
tree2036331bd329f4915df9374e4a71a7ef30973486 /binary/mingw-w64/NOTES
parent663a6689ba14a422cbc714d113b28dad731c44bf (diff)
Add MinGW-W64 ODB binary build scripts
Diffstat (limited to 'binary/mingw-w64/NOTES')
-rw-r--r--binary/mingw-w64/NOTES166
1 files changed, 166 insertions, 0 deletions
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/.