xref: /freebsd/crypto/openssl/NOTES-ANSI.md (revision e7be843b4a162e68651d3911f0357ed464915629)
1*e7be843bSPierre ProncheryNotes on ANSI C
2*e7be843bSPierre Pronchery===============
3*e7be843bSPierre Pronchery
4*e7be843bSPierre ProncheryWhen building for pure ANSI C (C89/C90), you must configure with at least
5*e7be843bSPierre Proncherythe following configuration settings:
6*e7be843bSPierre Pronchery
7*e7be843bSPierre Pronchery-   `no-asm`
8*e7be843bSPierre Pronchery
9*e7be843bSPierre Pronchery    There are cases of `asm()` calls in our C source, which isn't supported
10*e7be843bSPierre Pronchery    in pure ANSI C.
11*e7be843bSPierre Pronchery
12*e7be843bSPierre Pronchery-   `no-secure-memory`
13*e7be843bSPierre Pronchery
14*e7be843bSPierre Pronchery    The secure memory calls aren't supported with ANSI C.
15*e7be843bSPierre Pronchery
16*e7be843bSPierre Pronchery-   `-D_XOPEN_SOURCE=1`
17*e7be843bSPierre Pronchery
18*e7be843bSPierre Pronchery    This macro enables the use of the following types, functions and global
19*e7be843bSPierre Pronchery    variables:
20*e7be843bSPierre Pronchery
21*e7be843bSPierre Pronchery    -   `timezone`
22*e7be843bSPierre Pronchery
23*e7be843bSPierre Pronchery-   `-D_POSIX_C_SOURCE=200809L`
24*e7be843bSPierre Pronchery
25*e7be843bSPierre Pronchery    This macro enables the use of the following types, functions and global
26*e7be843bSPierre Pronchery    variables:
27*e7be843bSPierre Pronchery
28*e7be843bSPierre Pronchery    -   `ssize_t`
29*e7be843bSPierre Pronchery    -   `strdup()`
30*e7be843bSPierre Pronchery
31*e7be843bSPierre ProncheryIt's arguable that with gcc and clang, all of these issues are removed when
32*e7be843bSPierre Proncherydefining the macro `_DEFAULT_SOURCE`.  However, that effectively sets the C
33*e7be843bSPierre Proncherylanguage level to C99, which isn't ANSI C.
34