From: Yongwei W. <wuy...@gm...> - 2007-09-27 14:17:42
|
On 27/09/2007, Keith MARSHALL <kei...@to...> wrote: > > Hi Yongwei, > > Good to hear from you again! :-) > Wu Yongwei wrote: > > I noticed a change between Make 3.79 and 3.81. In Make 3.79 I was > > able to do the following: > > > > --------------------------------------------------------------------- > > all: debug > > > > debug: DEBUG DEBUG/test.exe > > > > DEBUG: > > mkdir DEBUG > > > > DEBUG/test.exe: > > ... > > > > .PHONY: all debug > > --------------------------------------------------------------------- > > > > It worked well in Make 3.79. However, with 3.81 it will complain: > > > > make: Circular debug <- debug dependency dropped. Yes, I understand your points below. However, I think it may be useful to differentiate the case-sensitiveness of files/directories and targets (esp. phony targets). The message above looks wrong to me. I mean, it is perfectly OK to believe the directory/file "DeBUG" matches the build target "DEBUG", but it may be overkill to think the target "debug" is equivalent to the target "DEBUG". Just wild thoughts. I did not look at the code of make, so it may be not be easily doable. > This exploits what I have long considered to be a misconfiguration of > make-3.79 in MSYS; make-3.81 has `--enable-case-insensitive-file-system' > turned on, whereas make-3.79 did not. > > > While I understand it makes some sense on Windows, I doubt whether > > there is a way to improve the situation. Otherwise, one would not be > > able to name the target "debug" while having a build directory called > > "DEBUG", "Debug", or "DeBuG" ;-). > > Since Woe32 employs a case-insensitive file system, it seems somehow > wrong to not enable correct support for this within make. Indeed, it > may well cause more serious problems than the above, if you arbitrarily > ignore this OS level feature -- an extensive system of Makefiles, which > I had developed under DJGPP, fell apart big-time when I tried to port > it to MSYS, in the days when only make-3.79 was available. > > If you are writing Makefiles which you wish to be portable to systems > with fundamentally case-insensitive file systems, such as Woe32, then it > is dangerous to rely on case-sensitive behaviour in the Makefile rules. > If you want to use a directory named with any case-insensitive variation > of `debug', then don't use `debug' as a phony target; instead, you could > use `all-debug', or some such alternative name. This is the current way I am doing. I changed the directory name instead. I wish it were not necessary. Best regards, Yongwei -- Wu Yongwei URL: http://wyw.dcweb.cn/ |