| Notes on the source code | |
| ======================== | |
| The mechanism to generate the system error codes is delicate and | |
| fragile, but it's the best I could come up with that supports | |
| cross-compilation and dynamic self-configuration. Here is how it | |
| works: | |
| 1. Generate list of supported system error codes. | |
| mkerrcodes1.awk generates a list of supported system error codes from | |
| errnos.in. Each entry in the list is protected with #ifdef/#endif, | |
| and contains a GPG_ERR_* marker. The list is stored in "_mkerrcodes.h". | |
| 2. The HOST cpp is run on _mkerrcodes.h. This evaluates the known | |
| system error macros to something (may be a number, maybe a constant | |
| expression as on the GNU/Hurd), suppressing the unknown ones. The | |
| output is piped into step 3. | |
| 3. The cpp output is filtered with grep for only those lines which | |
| contain a GPG_ERR_* marker. The output is piped into step 4. | |
| 4. The filtered output is processed by mkerrcodes.awk, which produces | |
| a table of constant expressions plus GPG_ERR_* code string symbols in | |
| a format suitable for the C program mkerrcodes.c. At this point we | |
| are crossing our fingers that the constant expressions produced by the | |
| system do not contain GPG_ERR_* markers. The output is stored in | |
| mkerrcodes.h. | |
| 5. The file mkerrcodes.h is included by mkerrcodes.c, which is | |
| compiled to a binary executable on the BUILD system. At this point we | |
| are crossing our fingers that the constant expressions produced by the | |
| system do not depend on the build platform anymore. The output is | |
| post-processed by mkerrcodes2.awk and stored in "code-from-errno.h", | |
| which is subsequently used in the library. | |
| -- Marcus | |
| Copyright 2006 g10 Code GmbH | |
| This file is free software; as a special exception the author gives | |
| unlimited permission to copy and/or distribute it, with or without | |
| modifications, as long as this notice is preserved. | |
| This file is distributed in the hope that it will be useful, but | |
| WITHOUT ANY WARRANTY, to the extent permitted by law; without even the | |
| implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |