All, for historical reasons, deal.II has had three libraries (base, lac, and deal.II, the latter existing in versions for 1d, 2d, and 3d). This structure is also reflected in the directories in which files live.
I have been thinking about changing things a bit by creating top-level directories include/ and source/ and moving everything into (subdirectories) there, and creating only a single library out of it all. There are a number of advantages to this: 1/We currently have a few strange dependencies, for example things in base/ can not link symbols in lac/. But there are parts of base/ that need functionality from lac/ (e.g. Vectors) and this only works if every function called from base/ that lives in lac/ is inline. A single library would break these dependencies 2/It would be much simpler to install the library if someone wanted to do that, i.e. copy header and library files into /usr/include and /usr/lib, for example 3/As part of this, it would be simpler to replace our homegrown build system by automake, and to link shared libraries using libtool. I don't think this needs to happen right away, but these are standard solutions widely used elsewhere 4/Recent versions of GCC have a mode (called LTO -- link time optimization) in which object files contain not only code but also something like a parse tree of all functions, and when linking things together the compiler is called again and can inline and otherwise optimize functions it wouldn't usually see together because they live in different files. This optimization obviously becomes better the larger the collection of object files is that is being linked together. With the exception of 1/, the others are not current problems but would be good to have. I know how to do 4/ and a part of me has some hope that maybe we can find volunteers with experience in automake for 3/, which would immediately make 2/ happen. There is a bigger consideration as well: While directory structure doesn't matter much for tools like emacs, it does to modern IDEs like Eclipse, NetBeans or KDevelop. These IDEs don't work very well if you have a completely non-standard build system and many different sub-targets in your Makefiles. They are, however, well integrated with things like automake. I think if we can make it easier to work on all parts of deal.II from IDEs (including building all libraries, generating the documentation, and possibly running the tutorial programs) then that would be a goal in itself that might in the end even provide the impetus for us old-timers to take the plunge and switch to a system that's better than emacs. Any thoughts? Maybe even volunteers? Best W. -- ------------------------------------------------------------------------- Wolfgang Bangerth email: [email protected] www: http://www.math.tamu.edu/~bangerth/ _______________________________________________ dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii
