summaryrefslogtreecommitdiffstats
path: root/debian/ada/README.gnat
blob: 43febc3e6a42de965dacf86225d7def8a3b755b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
If you want to develop Ada programs and libraries on Debian, please
read the Debian Policy for Ada:

http://people.debian.org/~lbrenta/debian-ada-policy.html

The default Ada compiler is and always will be the package `gnat'.
Debian contains many programs and libraries compiled with it, which
are all ABI-compatible.

Starting with gnat-4.2, Debian provides both zero-cost and
setjump/longjump versions of the run-time library.  The zero-cost
exception handling mechanism is the default as it provides the best
performance.  The setjump/longjump exception handling mechanism is new
and only provided as a static library.  It is necessary to use this
exception handling mechanism in distributed (annex E) programs.  If
you wish to use the new sjlj library:

1) call gnatmake with --RTS=sjlj
2) call gnatbind with -static

Do NOT link your programs with libgnat-4.2.so, because it uses the ZCX
mechanism.


This package also includes small tools covering specific needs.

* When linking objects compiled from both Ada and C sources, you need
  to use compatible versions of the Ada and C compilers. The
  required major version is the output of
  # gnatmake --version | sed 's/.* \([0-9]\+\).*/\1/;q')
  Then compile C sources with gcc-MAJOR instead of gcc.
  For GPR projects, this should be sufficient:
  # gprconfig --batch --config=Ada --config=C,,,,MAJOR

  The same advice applies to C++, Fortran and assembly.
  The former /usr/bin/gnatgcc is now deprecated.

* When packaging Ada sources for Debian, you may want to read the
  /usr/share/ada/debian_packaging.mk Makefile snippet from the gnat
  package.