summaryrefslogtreecommitdiff
path: root/debian/README.Debian.m4
diff options
context:
space:
mode:
Diffstat (limited to 'debian/README.Debian.m4')
-rw-r--r--debian/README.Debian.m4205
1 files changed, 205 insertions, 0 deletions
diff --git a/debian/README.Debian.m4 b/debian/README.Debian.m4
new file mode 100644
index 0000000..e3b1786
--- /dev/null
+++ b/debian/README.Debian.m4
@@ -0,0 +1,205 @@
+divert(-1)
+define(`ifenabled', `ifelse(index(PACKAGES, `$1'), -1, `dnl', `$2')')
+
+divert`'dnl
+dnl --------------------------------------------------------------------------
+ The Debian GNU Compiler Collection Setup
+ ========================================
+
+Abstract
+--------
+
+Debian uses a default version of GCC for most packages; however, some
+packages require another version. So, Debian allows several versions
+of GCC to coexist on the same system, and selects the default version
+by means of the gcc-defaults package, which creates symbolic links as
+appropriate.
+
+FIXME: Needs update for stretch
+
+Versions of GCC present in Debian Stretch
+-----------------------------------------
+
+- GCC 5 is the default compiler for all frontends on all architectures
+ except for Ada.
+
+- GCC 4.9 is the default compiler for Ada.
+
+- GCC 4.8 was removed for the release of Stretch.
+
+- GCC 4.7 was removed for the release of Jessie.
+
+- GCC 3.3 is not provided anymore; it is used to build libstdc++5 on
+ the amd64 and i386 architectures. It is expected that libstdc++5 is
+ not available anymore for the release following Lenny.
+
+- GCC 2.95 and GCC 2.7.2.3 were removed for the release of Lenny.
+
+How are the default compilers selected?
+---------------------------------------
+
+Starting in Debian 3.0, there is now a gcc-defaults package set. This
+creates the actual packages for gcc, gnat, g++, gobjc, chill, gcj, gij,
+gdc and gpc. These packages will depend on the corresponding default
+compiler for that architecture. For Debian 5.0 for example, "gcc"
+depends on "gcc-5", which means that the "gcc-5" package will
+install a binary called "gcc-5", which is symlinked to in the "gcc"
+package as "gcc".
+
+This may seem confusing, but what it allows you do to is install more
+than one version of the GCC compiler collection at the same time,
+making sure you are always using the one preferred for that
+architecture. To use the other compiler, simply set CC=gcc-5, or
+similar.
+
+The default compiler versions for Debian GNU/OS_NAME on DEB_ARCH are
+(minor version numbers omitted):
+
+ cpp : cpp-PV_CPP
+ gcc : gcc-PV_GCC
+ifenabled(`g++',` g++ : g++-PV_GPP')
+ifenabled(`gfortran',` gfortran : gfortran-PV_GFORT')
+ifenabled(`gcj',` gcj : gcj-PV_GCJ')
+ifenabled(`gcj',` gij : gij-PV_GIJ')
+ifenabled(`gccgo',` gccgo : gccgo-PV_GGO')
+ifenabled(`gobjc',` gobjc : gobjc-PV_GOBJC')
+ifenabled(`gobjc++',` gobjc++ : gobjc++-PV_GOBJCXX')
+ifenabled(`gnat',` gnat : gnat-PV_GNAT')
+ifenabled(`gpc',` gpc : gpc-PV_GPC')
+ifenabled(`gdc',` gdc : gdc-PV_GDC')
+
+ifdef(`GFDL',`dnl
+Documentation for the default compilers can be found in
+
+ /usr/share/doc/<compiler>-<package version>.
+',`dnl
+Most of the documentation for GCC including the manual pages is
+licensed under the GFDL and therefore not included in the main section.
+')`'dnl
+
+Thanks to gcc-defaults, each architecture can choose its own preferred
+compiler for each language, and that preference can change without
+requiring a complete rebuild of both compiler packages for all
+architectures.
+
+
+Practical implications
+----------------------
+
+The most important practical implications are in the merging/linking
+of object files built with different compilers; If you use the 4.9
+C compiler, you should use the `gcc-4.9' compiler driver for all your
+work. When configuring sources, use
+
+ CC=gcc-4.9 ./configure <configure options> # bash
+ setenv CC gcc-4.9; ./configure <options> # csh
+
+When calling make, use `make CC=gcc-4.9'.
+
+
+libstdc++ ABI
+-------------
+
+Starting with Debian 8.0 (stretch), gcc-5 and newer compiler versions
+now provides a stable libcxx11 ABI, and stable support for C++11 (GCC
+version before 5 called this supported experimental). This required
+some changes in the libstdc++ ABI, and now libstdc++6 provides a dual
+ABI, the classic libcxx98 ABI, and the new libcxx11. Many C++ using
+packages were rebuilt; it is likely that third party applications will
+need rebuilds too. See https://wiki.debian.org/GCC5.
+
+
+C Application Binary Interface
+------------------------------
+
+Starting with Debian 4.0 (lenny), gcc-4.1 and newer compilers do
+support the `long double' datatype with 128bit on the alpha, powerpc,
+s390 and sparc architectures. Libraries and applications using this
+datatype have to be rebuilt using the compiler versions in Lenny
+unless these depend on libc6/libc6.1 and libstdc++6, which still have
+compatibility with a 64bit `long double' datatype.
+
+
+gcc/g++/... are not handled using alternatives
+----------------------------------------------
+
+The symlinks in /usr/bin (gcc, g++, ...) are not handled using the Debian
+alternative mechanism. There are differences in the architecture specific
+ABI on some architectures and the C++ ABI differs as well. Having the
+symlinks managed by alternatives doesn't allow reliable builds with the
+same major/minor version of the compiler. To use another compiler version,
+set the appropriate environment variables as described above in the section
+"Practical implications".
+
+
+C++ libraries
+-------------
+
+To use the libstdc++ library for debugging (found in the
+libstd++6-<GCC version>-dbg package), add /usr/lib/debug to your
+LD_LIBRARY_PATH. For gdb to display the source you need to get the
+correspondig gcc-X.Y source package, unpack the source and point gdb
+to the location of the source (`dir' directive).
+
+
+C++ Application Binary Interface
+--------------------------------
+
+Sometimes, the C++ ABI of GCC changes. It is impossible to link
+object files that obey different ABIs into an executable. When the
+ABI changes, Debian provides a new version of libstdc++ with a new
+soname.
+
+Version 4 of the ABI was used by GCC 3.0 and 3.1; it is no longer
+supported.
+
+Version 5 of the ABI is common to GCC 3.2 and 3.3; GCC 3.3
+provides libstdc++5. It is only supported as a runtime library.
+
+Version 6 of the ABI is common to GCC 3.4 and later; GCC 4.3 provides
+libstdc++6.
+
+libstdc++6 in GCC 5 provides a dual ABI, see https://wiki.debian.org/GCC5.
+
+Bugs
+----
+
+Before submitting a bug, please read README.Bugs in this directory.
+
+
+Feedback appreciated
+--------------------
+
+Feedback about this document is appreciated; preferably as a Severity:
+wishlist bug against Package: gcc . For general discussions and
+questions, subscribe and/or email the debian-gcc@lists.debian.org mailing
+list.
+
+Maintainers of these packages
+-----------------------------
+
+Matthias Klose <doko@debian.org>
+Ludovic Brenta <ludovic@ludovic-brenta.org> (gnat)
+Iain Buclaw <ibuclaw@ubuntu.com> (gdc)
+Aurelien Jarno <aurel32@debian.org> (mips*-linux)
+Aurelien Jarno <aurel32@debian.org> (s390X*-linux)
+
+Former and/or inactive maintainers of these packages
+----------------------------------------------------
+
+Falk Hueffner <falk@debian.org> (alpha-linux)
+Ray Dassen <jdassen@debian.org>
+Jeff Bailey <jbailey@nisa.net> (hurd-i386)
+Joel Baker <fenton@debian.org> (netbsd-i386)
+Randolph Chung <tausq@debian.org> (ia64-linux)
+Philip Blundell <pb@debian.org> (arm-linux)
+Ben Collins <bcollins@debian.org> (sparc-linux)
+Dan Jacobowitz <dan@debian.org> (powerpc-linux)
+Thiemo Seufer <ths@networkno.de> (mips*-linux)
+Matt Taggart <taggart@carmen.fc.hp.com> (hppa-linux)
+Gerhard Tonn <GerhardTonn@swol.de> (s390-linux)
+Roman Zippel <zippel@linux-m68k.org> (m68k-linux)
+Arthur Loiret <arthur.loiret@gmail.com> (gdc)
+
+===============================================================================
+