2013/11/18 Mark Morgan Lloyd
Show quoted text 8 lines
There are definitely hazards, but I think that an exists() predicate of
some form would definitely be useful. For example, inside an {$ifdef
persist} it would give the developers the ability to have a tailored error
message advising the maintainer that if persists.pas didn't exist he should
also get such-and-such a project from local svn, and set up appropriate
symlinks.
The major issue would be directories and search paths.
That's also what I want to achieve. My original purpose is to reduce dependencies by put non-critical functions into a separate aux unit while make the main unit still workable without the aux unit.
As to the search path, I would suggest searching the current path (which *this* unit resides in), plus the path defined in project options. I also suggest to disable path component in this proposed directive, i.e.:
{$ifexists some/relative/path/filename.pas} and
{$ifexists /some/absolute/path/filename.pas}
are BOTH NOT allowed, only {$ifexists filename.pas} is allowed.
I don't know if this conforms to fpc traditions or not.
As to the concern about existing ppu or .o file, I think it is not a problem, because you just follow the normal rule to compare file datetime of the .o and .pas file. I don't like to rely on make files as fpc has its own building system.
Xiangrong