John Cowan wrote:
Brandon J. Van Every scripsit:
Ok, I think with my most current push to Darcs, I've taken care of
everything that's wrong with the CMake build. If you do a CMake build
under MinGW, I think you will see sane output for csc.scm. Now I think
it's down to csc.scm.in not properly handling unescaped whitespace in
pathnames. I see 2 general ways to deal with the problem:
- put double quotes in somewhere
- escape the whitespace
There are two issues: shell code and C code. To the shell, escaping
and quoting are pretty much the same. To C, however, they are utterly
different. Escaping spaces does nothing except provoke an error, and
strings must be double-quoted, that being part of C's syntax. For both
shell and C, backslashes must be escaped.
I hope this helps.
Yeah, it's a formal statement of what I had discovered empirically,
that different parts of the Chicken source code want strings to do
different things. Small wonder I was previously unable to solve the
quoting problems by trial and error. So now the question is how the
shell should be invoked in csc.scm.in with respect to unescaped
whitespace. If people who are better at Scheme could take a look at
this, that would be helpful. My Scheme skills are still weak and the
solution is probably fairly easy. I suppose if no one does, I'll just
improve my Scheme in the next few days, but now my attention is
shifting towards securing paying work.
BTW, the Chicken 2.41 tarball ./configure build on Cygwin doesn't
handle this either. The installation fails because ./configure doesn't
handle --prefix=/cygdrive/e/Program\ Files/cygchicken . It configures
it just fine, but the installation fails. Other permutations of
--prefix immediately give silly errors. Clearly, ./configure is meant
to suck at Windows pathnames. I don't really have the patience to
manually construct the installation tree, just to see if csc will
actually handle unescaped whitespace. I bet it doesn't.
Cheers,
Brandon Van Every
|