From avraham.adler at gmail.com  Mon Mar  9 06:33:39 2015
From: avraham.adler at gmail.com (Avraham Adler)
Date: Mon, 9 Mar 2015 01:33:39 -0400
Subject: [Rd] Notes on building a gcc toolchain for Rtools (but not
	multilib)
In-Reply-To: <CAPuMoLaHvijBO4autv7h2QJ6Mewptn_kXXocxO5D+BZUkLPvJA@mail.gmail.com>
References: <CAPuMoLZAWUvcQ-ubBwuqzLONom3ZLGJzzUPbmzm2E_2HzCHWYg@mail.gmail.com>
	<CAL6gwnKDrzw-qR43A4bd+0hKk8jzd=pPVBfMP6jmeQgH4v8EAg@mail.gmail.com>
	<CAPuMoLaHvijBO4autv7h2QJ6Mewptn_kXXocxO5D+BZUkLPvJA@mail.gmail.com>
Message-ID: <CAL6gwnK-bVqwfqBmEhXidaTG8hBF+u9Ox_fyY9enek0GpUK=Nw@mail.gmail.com>

Spurred by Hsiu-Khuern's post, I was able to compile
R-devel_2015-03-08 using the already compiled distribution at
<http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/seh/x86_64-4.9.2-release-win32-seh-rt_v3-rev1.7z/download>This
GCC 4.9.2 using seh error handling and windows threads, so as per this
note <https://stat.ethz.ch/pipermail/r-devel/2015-March/070782.html>,
I left out ICU. I also did not use curl for this build, I applied
Hsiu-Khuern's suggestion to the NM filtering, and I left leaving
Rtools\bin to handle utilities like tar.

I built all, cairodevices, recommended, vignettes, manuals, and
rinstaller, and then ran make check-all. The only .out.fail file that
appeared was the one for "internet.R" where I got a "connect: No
error". That was fixed inside R by using setInternet2(). This has not
happened for me before; has the internet handling in r-devel been
changed? Is there a way to have that properly set in the Makefile?
Skimming through the logs of the make check-all, some vignettes failed
to generate as the packages they depend on could not be loaded. If
there was a way to have the proper internet connectivity set when
being compiled, it appears this would have passed make check-all
completely.

This build was also compiled against OpenBLAS 2.13 and a bunch of
optimizations (specifically -O3 -march=native -mfpmath=sse -msse2avx
-mavx256-split-unaligned-load -mavx256-split-unaligned-store
-mvzeroupper -std=gnu++11 -pipe) and it still passed.

While I uncommented OPENMP and PTHREAD in Mkrules, I have not
explicitly checked them (unless that is handled in check-all). Also, I
only built 64 bit, I did not try to simultaneously build a 32-bit
version. However, being that this distribution is already compiled and
exists, it may be easier to use than having to custom build off of the
neuwen distro, and perhaps someone with more skill can try the 32 bit
version and even getting curl to work (which may sidestep the internet
problem I had above).

Thank you,

Avi



[Rd] Notes on building a gcc toolchain for Rtools (but not multilib)
Avraham Adler