On Wed, Jun 05, 2002 at 08:14:00AM +0800, Peter N Lewis wrote: > At 14:05 -0700 4/6/02, Alex S wrote: > If you want a more general solution than Perl changing the name of > the files to *.txt (which would mnake sense anyway as someone else > pointed out), then i think changing make is far more likely than > changing Apple's file system. What about updating make to deal with > the difference between a file called INSTALL and a tag install rather > than just blindly using the file system. > > Heck, even a special case for install/INSTALL would resolve a lot of > problems - perhaps even just a special build for Mac OS X that dealt > with the issue.
Another approach (for gnu make). From make.info: Phony Targets ============= A phony target is one that is not really the name of a file. It is just a name for some commands to be executed when you make an explicit request. There are two reasons to use a phony target: to avoid a conflict with a file of the same name, and to improve performance. If you write a rule whose commands will not create the target file, the commands will be executed every time the target comes up for remaking. Here is an example: clean: rm *.o temp Because the `rm' command does not create a file named `clean', probably no such file will ever exist. Therefore, the `rm' command will be executed every time you say `make clean'. The phony target will cease to work if anything ever does create a file named `clean' in this directory. Since it has no prerequisites, the file `clean' would inevitably be considered up to date, and its commands would not be executed. To avoid this problem, you can explicitly declare the target to be phony, using the special target `.PHONY' (*note Special Built-in Target Names: Special Targets.) as follows: .PHONY : clean Once this is done, `make clean' will run the commands regardless of whether there is a file named `clean'. Since it knows that phony targets do not name actual files that could be remade from other files, `make' skips the implicit rule search for phony targets (*note Implicit Rules::). This is why declaring a target phony is good for performance, even if you are not worried about the actual file existing. Thus, you first write the line that states that `clean' is a phony target, then you write the rule, like this: .PHONY: clean clean: rm *.o temp ---------------------------------- so, adding: .PHONY: install at the top of the (gnu)makefile will force the install target to execute. rick