Project:Programming

Project Goals
The overal goal is to provide necessary resources supporting "The Gentoo Way" of dealing with programming environments. That is, flexible setup and, where it makes sense, coexisting multiple versions/realizations of compilers with an easy way to switch between those, while automating mundane tasks.

Often it happens that multiple compiler suits can be used to compile existing libraries. However the resulting libs are usually ABI incompatible, meaning that code utilizing these libs should be compiled with the same compiler. This situation can be further complicated by interdependencies between the provided libs. To address this situation it is necessary to introduce some kind of "ABI tracking" ability. Ideally this would be done by providing some extra dependency info and having portage deal with it. However this requires support on the portage side and as it is not going to happen soon. There is a discussion under way on how this can be done now. Those interested please take a look at bug #151343.

Another issue common to multiple language implementations is that quite a few of them have a compiler that is a gcc frontend. As such their build procedure is quite similar and so it would make sense to work on a common eclass, possibly even combining everything with toolchain.eclass. The affected compilers that I had to deal with are: gpc (Pascal, in portage), gdc (D, not in portage but has may interested users) and gnat (Ada). The last one in fact is further subdivided into gnat-gcc for version produced by FSF and gnat-gpl produced by AdaCore. These gnat versions have a proper eclass common to all of them, and thus other compilers can be based on that one.