Recently, I had to compile a bunch of stuff on a system where I don’t have root access. Since I want to be able to “install” it in a tree that mirrors the system root / (e.g. put stuff in /bin, /usr/, etc.), that required using a custom --prefix for the output:

./configure --prefix=$HOME/prefix
make install

Now everything’s under $HOME/prefix, e.g. something which would otherwise be installed in /bin/bla will now be at $HOME/prefix/bin/bla. Just need to set $PATH and everything’s good!

So far so good, but having dependencies between installed packages is problematic. ./configure won’t “see” pre-existing headers or libraries in the prefix without setting CPPFLAGS and LDFLAGS explicitly every time.

There is a solution, though - the config.site file. Had to put the following in $HOME/prefix/share/config.site:

CPPFLAGS=-I$HOME/prefix/include
LDFLAGS=-L$HOME/prefix/lib

Now the configure scripts are always being able to “see” the installed stuff inside the custom prefix.