We'll try to give you all the information we can. We know there's not a standard README or INSTALL for those building from source, and all our compilations are done using our own c++ program, MakeRelease.
The reason is that Pluto includes soooo many different pieces, all of which have very specific requirements. For example, our UpdateMedia program, which monitors the media partitions to pick up new files the user may add over the samba share and scan for attributes to add to the media database, requires INotify in the kernel. And then there are the 3rd party applications. VDR, for example, requires certain kernel options. Others like Linphone requries a certain version of the Asterisk library. We found that only certain versions of bluez Bluetooth libraries can handle constant scanning like we do. And in some cases, we had to put extra patches to the 3rd party projects that perhaps the main project didn't want to include because they were specific to Pluto interoperability. For example I know we build our own Asterisk.
Originally the reason we wrote MakeRelease rather than using the normal mechanisms was because we wanted to target all distros, and different distros use different packaging versions, and both Linux and Windows. So MakeRelease is database-driven, and you can say that 'Bluetooth Dongle' when compiled under Windows requires Widcom SDK version X or Y, when compiled under Debian requires bluez and bluez-utils, and under Suse requires bluetooth-subsys.
But in the end we found it was sooooo much work just getting it all to run on 1 platform, we abandoned the others for the moment. We figure once we have a release version that we know is not going to change, then we can make it work for other distros. But for now it would slow us down too much. When we upgraded our kernel and debian mirror recently it broken dozens and dozens of packages, and took us weeks to get it all working. The latest debian sarge introduced bugs in lots of packages, for example, their update-inetd had a typo preventing it from upgrading non-interactively, which broken several packages. And Bluetooth was broken in kernel 22.214.171.124-2.6.13.rc6, and so on and so on. If we tried to repeat that whole testing process for lots of platforms, we would have never gotten the release out.
If you want to build from source, check out our whole svn tree. Then you'll have to build a few things by hand to get the basic Pluto libraries that most of our stuff relies on:
src/DCE src/PlutoUtils src/SerializeClass src/pluto_main
Then you could build src/MakeRelease. I use the following script to do an automated build on my own pc each night:
svn co newbielink:http://svn.plutohome.com/pluto/trunk [nonactive] .
/usr/pluto/bin/MakeRelease -d -c -a -o 1 -r 2,9,11 -m 1 -s /home/work -n / > /home/work/MakeRelease.log
That builds everything. However MakeRelease requires you to have the pluto_main databaes and mysql running, since that's where the dependency information is stored. You can add a -h ip_address if the mysql server is other than localhost. But MakeRelease doesn't automatically add the required dependencies first--it only builds. The -r 2,9,11 means build for a '2=debian package', '9=.tar files with binaries', '11=debian package with source'. To get the dependencies there's another program ConfirmDependencies. This is run automatically at startup. It checks to see if the machine is for building from source (ie the development flag is set in the database), or just for running. If for building from source, it pulls in extra packages (like source headers and development libraries and so forth).
Hope this helps a bit.