Wednesday, June 18, 2014

A MinGW-w64 Toolchain Matrix (Unofficial) (Draft 2)

Downloads: MinGW-w64 builds from 4.8.2 revision 0 to 4.9.0 revision 5
Version i686
POSIX win32
Dwarf SJLJ Dwarf SJLJ
4.8.2 rev 4 rev 4 rev 4 rev 4
rev 3 rev 3 rev 3 rev 3
rev 2 rev 2 rev 2 rev 2
rev 1 rev 1 rev 1 rev 1
rev 0 rev 0 rev 0 rev 0
4.8.3 rev 0 rev 0 rev 0 rev 0
4.9.0 rev 3 rev 3 rev 3 rev 3
rev 2 rev 2 rev 2 rev 2
rev 1 rev 1 rev 1 rev 1
rev 0 rev 0 rev 0 rev 0


Rationale:
  • Toolchain Divergence
    • Qt 4.8.6 for Windows platforms (MinGW) is compiled for MinGW-w64 version 4.8.2 , i686 architecture, POSIX threads, Dwarf exception handling, as explained in a dialogue window during installation of the MinGW edition of Qt 4.8.6. The text in the dialogue window denotes revision 3, specifically.
    • The primary makefile for the Lisp Kernel  in Clozure Common Lisp (CCL) ...
      • for Microsoft Windows Win32 architectures, CCL uses the i686 edition of MinGW-w64 
      • for Microsoft Windows Win64, CCL uses the x86_64 edition of MinGW-w64 
  • To create a template for reports on release testing

Formatting Notes:
(labels ((do-print
          (str &rest args)
          (let ((b (current-buffer)))
            (newline b)
            (princ (apply #'format str args) b)))
         (print-tr
          (rel rev)
          (do-print "<tr id='mingw64_r%s_%s'>" rel rev))
         (print-tr-1
          (rel rev)
          (print-tr rel rev)
          (do-print "<td rowspan='%s'>%s</td>" (1+ rev) rel))
         (print-td
          (rel rev arch threads eh)
          (do-print
           "<td id='mingw64_%s_r%s_%s_%s_%s'><a href='http://sourceforge.net/projects/mingw-w64/files/Toolchains%%20targetting%%20Win32/Personal%%20Builds/mingw-builds/%s/threads-%s/%s/%s-%s-release-%s-%s-rt_v3-rev%s\.7z/download'>rev %s</a></td>" rel rev arch threads eh
           rel threads eh
           arch rel threads eh rev
           rev
           )))
  (dolist (release-info '(("4.8.2" 5) ("4.8.3" 1) ("4.9.0" 4)))
    (destructuring-bind (release n-revs) release-info
      ;; release 4.8.2 available to r4 (zero indexed)
      ;; release 4.8.3 available to r0 (zero indexed)
      ;; release 4.9.0 available to r3 (zero indexed)
      (let ((rev-max (1- n-revs)))
        (do ((rev rev-max (1- rev)))
            ((= rev -1))
          (cond ((= rev rev-max)
                 (print-tr-1 release rev))
                (t
                 (print-tr release rev)))
          (dolist (arch '("i686"
                          ;; "x86_64"
                          ;; NB: x86_64 not available under MinGW "Personal Builds"
                          ))
            (dolist (threads '("posix" "win32"))
              (dolist (eh '("dwarf" "sjlj"))
                (print-td release rev arch threads eh)
                ))))
        (newline (current-buffer))
        (princ "</tr>" (current-buffer))
        ))))