(rereading because a similar thread on the topic).
fpc.cfg paths are afaik relative to the location of fpc.cfg.
Really? In all FPC installations that I have on my desk, fpc.cfg contains absolute paths.
True, I was way off, I don't know what I was thinking. Anyway, I do remember it correctly now. Two distinct issues:
Making lazarus relative on windows.
I think, the fpc.cfg location independence was for a FPC embedded in the (Windows) Lazarus directory, which set the lazarusdir environment variable. The fpc.cfg can use environment variables, this reduces the need for absolute paths to only one, lazarusdir. And then lazarusdir was made to be overridable with startlazarus, so that the batchfile only has to figure out the path, and pass it to lazarus to propagate it. This default hierarchy doesn't have a version number in the path to the compiler though, so that is not a problem.
relative paths and fpc.cfg:
Probably what I had in mind when writing above quote was the relation between fpc.cfg location and compiler binary on Unix, so not unit directories relative to fpc.cfg as I said. This feature exists for when other prefixes are used (/usr/local on BSD and slackware, and /usr/exp on some older Redhats). It was also useful for NFS shares mounted on different places on different systems. But the default compiler unit search directory (only the RTL) was based on this exepath as well at some point. See options.pas:4501