[CCing bug-gettext and Charles Wilson]
Eric Blake wrote in [1]:
> At least cygwin still ships with 
> only gettext 0.17, because all versions of 0.18 are unbuildable on the 
> current cygwin.

This is a myth, and is factually wrong.

I just built gettext 0.18.1.1 on a Cygwin 1.7.5 system, with gcc 4.3.4,
and it passed "make check" with only 1 failure in lang-tcl, and
"make install" succeeded as well. Likewise on Cygwin 1.7.9, with
gcc 4.3.4 as well. The build command was:

$ mkdir build3
$ cd build3
$ ../configure --prefix=/usr/local/cygwin \
               CPPFLAGS="-I/usr/local/cygwin/include -Wall" \
               LDFLAGS="-L/usr/local/cygwin/lib" \
               --with-included-libxml 2>&1 | tee log1
$ make 2>&1 | tee log2
$ make check 2>&1 | tee log3
$ make install 2>&1 | tee log4

Reviewing the history of these build reports:

* Eric Blake tried to build it on 2010-06-16 [2], got the error

  undefined reference to `_xmlFree'

  I recommended trying --without-libxml2-prefix [3]. This would have helped
  if libxml2 was installed in a nonstandard location. But it's installed in
  /usr/lib/, so the option that's needed is --with-included-libxml.

  He reports that he "ran into a bug with the cygwin linker claiming that
  libintl.dll.a had an invalid symbol relocation". Well, on Cygwin 1.7.5
  and 1.7.9 I don't run into this bug. So, install Cygwin 1.7.5 or 1.7.9,
  and you can build gettext binaries.

* Markus Moeller reported this error [4]

   collect2: ld terminated with signal 6 [Aborted]
   /usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../i686-pc-cygwin/bin/ld: 
/usr/lib/libintl.dll.a(d000050.o): illegal symbol index 1633970 478 in relocs
   make[4]: *** [msgcmp.exe] Error 1

  whereupon Corinna Vinschen put the blame on gettext [5].
  Then Markus Moeller gave it a try with the opposite flag than what
  what gettext uses and found that the same linker error still existed [6].
  So it was *not* a problem with gettext's use of --disable-auto-import.

* After which Eric Blake continued to report that gettext 0.18 does not
  build on Cygwin 1.7. [7]

Half of his diagnosis in [7] was correct:

  * The xmlFree link error is a consequence of --disable-auto-import.
    Witness:

    $ cat > foo.c <<EOF
    #include <libxml/xmlversion.h>
    #include <libxml/xmlmemory.h>
    int main ()
    {
      xmlCheckVersion (0); xmlFree ((void *) 0);
      return 0;
    }
    EOF
    $ gcc -I/usr/include/libxml2 foo.c -lxml2
    [works fine]
    $ gcc -I/usr/include/libxml2 foo.c -lxml2 -Wl,--disable-auto-import
    /tmp/cc4EveXj.o:foo.c:(.text+0x23): undefined reference to `_xmlFree'
    collect2: ld returned 1 exit status

    But gettext's configure provides the right option to fix it. You
    only need to do "./configure --help | grep xml".

    Additionally, the next version of gettext will detect this situation
    automatically.

  * The Cygwin maintainer of gettext didn't put enough time into it.

The other half of the diagnosis was incorrect:

  * No, gettext is not unbuildable on Cygwin.

  * No, the collect2 linker crash has been demonstrated to also occur
    with --enable-auto-import.

I hope, with this mail, I've helped to separate truth from myth.

Please, next time, be more modest and don't say "gettext is unbuildable",
but rather "I have not succeeded in building gettext".

Bruno

[1] http://lists.gnu.org/archive/html/bug-gnulib/2011-08/msg00099.html
[2] http://lists.gnu.org/archive/html/bug-gnu-utils/2010-06/msg00057.html
[3] http://lists.gnu.org/archive/html/bug-gnu-utils/2010-06/msg00061.html
[4] http://cygwin.com/ml/cygwin/2010-08/msg00082.html
[5] http://cygwin.com/ml/cygwin/2010-08/msg00154.html
[6] http://cygwin.com/ml/cygwin/2010-08/msg00157.html
[7] http://www.cygwin.com/ml/cygwin/2011-01/msg00400.html
[8] 
http://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commitdiff;h=fcf0f235f4dd3e6ceb2149002834223b1c7e9f47
-- 
In memoriam Itzik Feffer <http://en.wikipedia.org/wiki/Itzik_Feffer>

Reply via email to