[openssl-users] FW: problem with missing STDINT.H file

Andy Polyakov appro at openssl.org
Tue Feb 7 15:48:55 UTC 2017


>> The attached text file is a snippet from attempting to install
>> openssl-1.1.0c on a Solaris 8 machine. As can be seen, failed when
>> <stdint.h> could not be found.
> 
> Do you have inttypes.h instead?
> 
> As Jeff pointed out in another email this is for uint32_t and similar
> types. These get included from e_os2.h as follows:
> 
> # if defined(OPENSSL_SYS_UEFI)
> typedef INT8 int8_t;
> typedef UINT8 uint8_t;
> typedef INT16 int16_t;
> typedef UINT16 uint16_t;
> typedef INT32 int32_t;
> typedef UINT32 uint32_t;
> typedef INT64 int64_t;
> typedef UINT64 uint64_t;
> #  define PRIu64 "%Lu"
> # elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
>      defined(__osf__) || defined(__sgi) || defined(__hpux) || \
>      defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__)
> #  include <inttypes.h>

It should probably be noted that this is quite counter-intuitive
condition. Basically all those defined(__this-or-that__) refer to
systems that are kind of stuck between standards and are "almost, but
not quite, entirely unlike" 199901L. So that intuitively one would
expect to see __STDC_VERSION__ < 199901L || defined(__this-or-that__).
But then it was argued that inttypes.h >= 199901L includes stdint.h
anyway, as well as defines other "goodies". So that this condition
effectively produces two different outcomes: on >=199901L it results in
*extended* equivalent of stdint.h, and on __this-n-that__ - in
*pre-standard*, potentially limited equivalent of stdint.h. And
remaining question in the context of original query is what is Solaris
8. It does have inttypes.h so that one can [and probably should] extend
__this-or-that__ with defined(__sun). [And as Jeffrey already mentioned
compiling OpenSSL is job for C compiler, not C++.]



More information about the openssl-users mailing list