xref: /src/crypto/openssl/NOTES-ANSI.md (revision e7be843b4a162e68651d3911f0357ed464915629)
109a25192SPierre ProncheryNotes on ANSI C
209a25192SPierre Pronchery===============
309a25192SPierre Pronchery
409a25192SPierre ProncheryWhen building for pure ANSI C (C89/C90), you must configure with at least
509a25192SPierre Proncherythe following configuration settings:
609a25192SPierre Pronchery
709a25192SPierre Pronchery-   `no-asm`
809a25192SPierre Pronchery
909a25192SPierre Pronchery    There are cases of `asm()` calls in our C source, which isn't supported
1009a25192SPierre Pronchery    in pure ANSI C.
1109a25192SPierre Pronchery
1209a25192SPierre Pronchery-   `no-secure-memory`
1309a25192SPierre Pronchery
1409a25192SPierre Pronchery    The secure memory calls aren't supported with ANSI C.
1509a25192SPierre Pronchery
1609a25192SPierre Pronchery-   `-D_XOPEN_SOURCE=1`
1709a25192SPierre Pronchery
1809a25192SPierre Pronchery    This macro enables the use of the following types, functions and global
1909a25192SPierre Pronchery    variables:
2009a25192SPierre Pronchery
2109a25192SPierre Pronchery    -   `timezone`
2209a25192SPierre Pronchery
2309a25192SPierre Pronchery-   `-D_POSIX_C_SOURCE=200809L`
2409a25192SPierre Pronchery
2509a25192SPierre Pronchery    This macro enables the use of the following types, functions and global
2609a25192SPierre Pronchery    variables:
2709a25192SPierre Pronchery
2809a25192SPierre Pronchery    -   `ssize_t`
2909a25192SPierre Pronchery    -   `strdup()`
3009a25192SPierre Pronchery
3109a25192SPierre ProncheryIt's arguable that with gcc and clang, all of these issues are removed when
3209a25192SPierre Proncherydefining the macro `_DEFAULT_SOURCE`.  However, that effectively sets the C
3309a25192SPierre Proncherylanguage level to C99, which isn't ANSI C.
34