[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnulib cross-compiling issue with musl
From: |
Rich Felker |
Subject: |
gnulib cross-compiling issue with musl |
Date: |
Tue, 18 Jun 2013 13:03:05 -0400 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Hi again,
Last year after a great deal of discussion, we got most of the issues
between gnulib and musl libc fixed. However there's one problem that
keeps coming up again and again from our users: when cross-compiling,
gnulib treats fseeko (well, actually fflush(stdin), which in turn
requires a replacement fseeko) as broken by default (since it can't
run tests to check) and the #else case in gnulib's fseeko.c contains
#error.
Presumably it's possible to work around this issue by creating a
config.cache file that overrides gl_cv_func_fflush_stdin=yes, but that
requires a bit of manual intervention to make it work, and it would
give a much nicer user experience if things just worked out of the
box.
I have a couple proposed solutions for gnulib's fseeko.c:
1. In the #else case, instead of #error, put if(0). In other words,
treat unknown platforms as having working fseeko that does not need
any of the replacement code; execution would simply fall through to
the call to the real fseeko at the end of the function.
2. Write a "portable" version of the replacement code for the #else
case (or to replace all the existing cases) in terms of standard
functions and other existing gnulib extended-stdio functions. I
don't understand well enough what it's doing to judge whether this
is feasible, but this seems to be the mechanism by which the
replacement fflush is currently working on musl; all of the
functions it calls in the #else cases are either standard functions
or other gnulib functions.
I like the first option better. What do you think?
Rich
- gnulib cross-compiling issue with musl,
Rich Felker <=