There are more oddities in the organization of the internal header files. 1) It appears to me that there are three different levels of internal header files
- headers in `include/internal` - headers in `crypto/include/internal` - headers in `crypto/<package>` along with the source files Having such a finegrained distinction is not the problem, but (at least to me) it is not entirely clear which include file goes into which directory. 2) Some of the header files carry an `_int.h` suffix while others not, for seemingly no particular reason. ~/src/openssl$ find -name '*_int.h' ./crypto/crmf/crmf_int.h ./crypto/include/internal/err_int.h ./crypto/include/internal/ess_int.h ./crypto/include/internal/ec_int.h ./crypto/include/internal/rand_int.h ./crypto/include/internal/store_int.h ./crypto/include/internal/asn1_int.h ./crypto/include/internal/modes_int.h ./crypto/include/internal/cryptlib_int.h ./crypto/include/internal/bn_int.h ./crypto/include/internal/evp_int.h ./crypto/include/internal/x509_int.h ./crypto/cmp/cmp_int.h ./crypto/x509/pcy_int.h In particular for the headers the `include/internal` folder this suffix is superfluous, because these files are (or should be) included via relative paths. So instead of #include <openssl/evp.h> #include "internal/evp_int.h" It could just be #include <openssl/evp.h> #include "internal/evp.h" Matthias