config.h
David Faure
faure at kde.org
Tue Apr 10 00:34:49 BST 2007
On Tuesday 10 April 2007, Allen Winter wrote:
> Howdy,
>
> There's still quite a few files that include config.h.
Yep.
> And even more that don't have
> #ifdef HAVE_CONFIG_H
> #include <config.h>
> #endif
Good that they don't.
That ifdef made already little sense in kde3 times, it makes even less sense nowadays ;)
> We do pass -DHAVE_CONFIG_H into the buildsystem (see kdelibs/CMakeLists.txt).
We do in kdelibs, but I removed it from a number of modules - those were I removed config.h files altogether.
> So:
> 1. didn't we plan to replace config.h with config-foo.h to increase modularity?
Yes. And we should keep doing this everywhere.
However, I see three exceptions:
1) kdelibs, where a lot of system-specific defines are used everywhere, which makes
sense since kdelibs wraps some platform-specific things for the rest of KDE (much like
Qt wraps many more). Individual features (e.g. ACL-stuff) goes nicely into config-acl.h,
but the rest is... well, basically libc-level checks for includes and functions, I can't see
much logical grouping that can be done there.
2) third-party libraries which we have a copy of, and which refer to a config.h - but then
I recommend to make it local to that lib, like for instance I added kdepimlibs/kcal/libical/config.h.cmake
for that purpose.
3) individual applications that use config.h for all its dependency-related defines, like e.g. amarok.
Well ideally I'd rather see that splitted into one config-foo.h file per dependency but at
least it's a config.h with an application scope, which is already much better than a config.h
for a whole svn module (which makes it *really* difficult to move things around later on).
> 2. if we are compiling fine with including config.h unconditionally,
> then do we still need to pass -DHAVE_CONFIG_H?
> or should we wrap all the includes inside the #ifdef?
We should for sure get rid of the ifdef everywhere. If the code is in one of the 3 cases aboves
and relies on a config.h then it should just include it.
--
David Faure, faure at kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
More information about the kde-core-devel
mailing list