summaryrefslogtreecommitdiff
path: root/binary/mingw/new-gcc-version
blob: 66425897a9ecbe533f4da34fdb8c7b5f15ed4fb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
An overview of steps required to switch to a new GCC version.

1. Get the MinGW 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 configuration as possible.

2. Build the cross-compiler:

   1. Backup old cross/mingw to cross/mingw-X.Y.Z.
   2. Cleanup old GCC files from cross/mingw.
   3. Unpack GCC, rename to gcc-cross, create or clean gcc-cross-build.
   4. Adapt older gcc-X.Y.Z-mingw-cross.patch (--dry-run) and apply.
   5. Adapt gcc-cross-configure.
   6. Build & install:

      cd gcc-cross-build
      ../gcc-cross-configure
      make -j 16
      make install

   7. Clean up .so & .la files from cross/mingw/lib/gcc/i686-mingw/X.Y.Z
      (we still seem to have to build with --enable-shared for exceptions
       to work).
   8. Check that the compiler works. Compile and run sizeof_funds.cxx and
      throw.cxx. There should be no auto-importing (see step 7).

3. 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. Regegerate 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.

   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/.