From: Hans-Bernhard B. <HBB...@t-...> - 2019-11-04 21:59:39
|
Am 04.11.2019 um 20:20 schrieb Ethan A Merritt: [I'll take the liberty to answer on Marcus' behalf... > (1) > Are you saying that the issue is a pending (c++20) change to clang's > implementation-specific definition of the forms: > #include <foo> > vs #include "foo" ???? No. The change is that the C++ standard library (and not just for C++20, but also in already existing implementations) now contains a standard header named <version>, which it did not use to do. That new header gets mixed up with our VERSION file on case-ignorant file systems, and so strangeness ensues. I'm actually surprised I'm not seeing the same issue on Windows, too, as all the preconditions seem to be fulfilled there, too. Maybe the Windows compilers try harder to overcome their host system's case-blindness, and thus manage to avoid this trap. > (2) > I cannot reproduce the problem on linux using either gcc 9.2.1 or clang 9.0.0. > In the case of gcc, I tried both with and without compiler option -std=c2x. The applicable switch would have to be -std=c++2x, as this is a C++ issue; it does not affect C. To inject it into the autoconf process one would have to specifically override the CXXFLAGS, not CLAGS. > (4) > The attached patch removes VERSION from current git head for the > development branch. It works on linux in my initial tests but I will hold off > commiting it pending further confirmation. We need to be rather careful here. The VERSION file is used in several places; distributed over many build platforms. Just throwing the file away increases the number of places you would have to remember to put the new version number into, on every release. The whole point of the current construct of course is to limit that number to exactly one: the VERSION file itself. Without the VERSION file, to get the same effect we would have to export the version number from configure.ac (the AC_INIT call) to quite a number of places, most of which live resolutely outside the autoconf world. I believe the better short-term solution would be to rename the existing file, and carry that rename through into all the affected files. Unless I missed some, those would be: config/cygwin/Makefile config/makefile.cyg config/makefile.os2 config/mingw/Makefile configure.ac docs/titlepag.tex Makefile.maint src/Makefile.maint And I suspect some of the other config/* files could benefit from an update in this direction as well --- primarily those currently hard-coding it into their config.* files or Makefiles. |