freetype
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Freetype] (no subject)


From: Eli Zaretskii
Subject: Re: [Freetype] (no subject)
Date: Thu, 11 Nov 2004 01:16:03 +0200

> Date: Wed, 10 Nov 2004 13:30:50 +0100 (CET)
> Cc: address@hidden
> From: Werner LEMBERG <address@hidden>
> 
> > I am trying to compile on Windows XP with DJGPP.
> > 
> > At first run , make generates CONFIG.MK with true
> > configuration.
> > 
> > At second it must compile, but it cannot detect
> > CONFIG.MK and regenarates.
> > 
> > To start compiling you must rename CONFIG.MK to
> > config.mk
> 
> This looks like a problem with DJGPP's port of GNU make.

It's actually a feature; see below.

> As far as I know, Windows XP's file system is case insensitive, so
> all tools for this platform should be able to handle this
> gracefully.

No.  GNU Make, and also most Makefiles that come from Unix, are
inherently case-sensitive, and the DJGPP port of Make doesn't (and
cannot) change that, since Posix compatibility is one of important
goals of the DJGPP project, and since we don't want to risk breaking
well-behaved Makefiles just because they mention upper-case file names
like MORE.STUFF or some such.  Other ported GNU programs behave
similarly; e.g., GCC compiles foo.C as a C++ program, not a C program.
If it didn't do that, some Makefiles that come from Unix would become
broken.  Therein be dragons.

There are a few subtle tricks in the DJGPP library and in the ported
Make code (one of them causes config.mk to be returned lower-cased
from $(wildcard)) that generally DTRT in many cases, but those tricks
are not intended to solve all such problems.

> Eli, if I say
> 
>   $(wildcard config.mk)
> 
> does DJGPP's make find `CONFIG.MK'?

Yes (that's one of those tricks I talked about above).  The reason is
that CONFIG.MK is a valid 8+3 file name, and such files frequently
come from legacy DOS systems or floppies, where file names are always
recorded upcased in the directory.  So the library downcases such file
names by default.  If you want to defeat this automatic downcasing,
set FNCASE=y in the environment (or in the Makefile, in this case).

But it's possible that on XP, some of those tricks don't work, because
XP has bugs in several system calls that DJGPP library uses to find
out whether long file names are supported (in which case, the library
tries to preserve letter-case in file names).  The OP should make sure
he/she has the latest binary of the DJGPP port of Make.

Alternatively, use the file name CONFIG.MAKE.  Since this is not a
valid 8+3 file name, it will not be downcased by default, on any
system, since the library tries to be case-preserving whenever
possible.  I'd recommend this solution rather than setting FNCASE=y,
since FNCASE might cause other problems (that's why it is not ON by
default).

As yet another idea, why not generate lower-case config.mk instead of
an upper-case CONFIG.MK?  This is probably the best and safest
alternative.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]