Updating to version 1.13. Libgcrypt depends on libgpg-error
[platform/upstream/libgpg-error.git] / src / README
1 Notes on the source code
2 ========================
3
4 The mechanism to generate the system error codes is delicate and
5 fragile, but it's the best I could come up with that supports
6 cross-compilation and dynamic self-configuration.  Here is how it
7 works:
8
9 1. Generate list of supported system error codes.
10
11 mkerrcodes1.awk generates a list of supported system error codes from
12 errnos.in.  Each entry in the list is protected with #ifdef/#endif,
13 and contains a GPG_ERR_* marker.  The list is stored in "_mkerrcodes.h".
14
15 2. The HOST cpp is run on _mkerrcodes.h.  This evaluates the known
16 system error macros to something (may be a number, maybe a constant
17 expression as on the GNU/Hurd), suppressing the unknown ones.  The
18 output is piped into step 3.
19
20 3. The cpp output is filtered with grep for only those lines which
21 contain a GPG_ERR_* marker.  The output is piped into step 4.
22
23 4. The filtered output is processed by mkerrcodes.awk, which produces
24 a table of constant expressions plus GPG_ERR_* code string symbols in
25 a format suitable for the C program mkerrcodes.c.  At this point we
26 are crossing our fingers that the constant expressions produced by the
27 system do not contain GPG_ERR_* markers.  The output is stored in
28 mkerrcodes.h.
29
30 5. The file mkerrcodes.h is included by mkerrcodes.c, which is
31 compiled to a binary executable on the BUILD system.  At this point we
32 are crossing our fingers that the constant expressions produced by the
33 system do not depend on the build platform anymore.  The output is
34 post-processed by mkerrcodes2.awk and stored in "code-from-errno.h",
35 which is subsequently used in the library.
36
37 -- Marcus
38
39  Copyright 2006 g10 Code GmbH
40
41  This file is free software; as a special exception the author gives
42  unlimited permission to copy and/or distribute it, with or without
43  modifications, as long as this notice is preserved.
44
45  This file is distributed in the hope that it will be useful, but
46  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
47  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.