From Gentoo Wiki
Jump to: navigation, search
Gentoo Programming Language Support Project
Description The project provides coverage for Gentoo-specific issues associated with various programming languages that can be found in Portage.
Lead(s) none
No lead election date set
(and inherited members)
Parent Project Gentoo Linux
Project listing


The overall 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 libraries are usually ABI incompatible, meaning that code utilizing these libraries should be compiled with the same compiler. This situation can be further complicated by inter-dependencies between the provided libraries . 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.

This article is based on a document formerly found on our main website
The following people contributed to the original document: George Shapovalov
They are listed here as the Wiki history does not allow for any external attribution. If you edit the Wiki article, please do not add yourself here; your contributions are recorded on the history page.