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

Reply via email to