SDCC supports the VPATH feature provided by configure and make. It allows to separate the source and build trees. Here's an example:
cd ~ # cd $HOME
tar -xzf sdcc.src.tar.gz # extract source to directory sdcc
mkdir sdcc.build # put output in sdcc.build
cd sdcc.build
../sdcc/configure # configure is doing all the magic!
make
That's it! configure will create the directory
tree will all the necessary Makefiles in ~/sdcc.build.
It automagically computes the variables srcdir, top_srcdir and top_buildir
for each directory. After running make the generated files
will be in ~/sdcc.build, while the source files stay
in ~/sdcc.
This is not only usefull for building different binaries, e.g. when
cross compiling. It also gives you a much better overview in the source
tree when all the generated files are not scattered between the source
files. And the best thing is: if you want to change a file you can
leave the original file untouched in the source directory. Simply
copy it to the build directory, edit it, enter `make clean', `rm Makefile.dep'
and `make'. make will do the rest for you!