I could understand if gaim spec had a scriptlet which parsed the output of ./configure and set something like %wehavetcl, then added a Requires like the above. But this is not what is happening. Can you enlighten me about the magic workings in the case of gaim?
I think all that is happening is that redhat's build system doesn't have a minimal environment for building rpms in. The package gets built inside an environment with tcl installed, configure picks it up, and the resulting package is built with tcl dependencies.
Another point in favour of clean build roots.
Indeed, however the more exact way would be to explicitly specify those minimum desired requirements as BuildRequires, and use configure --disable-foo to explicitly disabled features that you don't want. This has the benefit of the package, in this case gaim, always behaving exactly the same when built from the Fedora SRPM for the Fedora target operating system.
Reproducibility is a huge time saver in support and maintenance, as well as one of the keys to stability.
Warren