Hello,
I am attempting to build tar-1.19 on VMS.
I am getting an error assert from inttypes.h:
"This file assumes that 'int' has exactly 32 bits. Please report your
platform and compiler to <bug-gnulib(at)gnu.org>.
From the analysis of the macro values used to generate the error
assert, I have discovered that INT32_MAX and INT32_MIN have not been yet
defined.
It looks like the issue is related to the order that the header files
get included and the guard macros used.
Step 1:
lib/stdint.h sets up guard macros to prevent it from being recursively
called.
lib/stdint.h then sets _GL_JUST_INCLUDE_SYSTEM_INTTYPE_H and does a
#include <inttypes.h>, which really just includes the system inttypes.h.
After that it undefs _GL_JUST_INCLUDE_SYSTEM_INTTYPE_H.
It then includes <sys/bitypes.h>, the system supplied version.
sys/bitypes.h on VMS then includes <inttypes.h> intending to pull in the
system one, but actually gets the replacement because of the -I setting.
Now lib/inttypes.h, with out the inhibit macros, and with out the
INT32_MAX and INT32_MIN macros defined.
The quick patch that I can do is to move where the #undef of the
_GL_JUST_INCLUDE_SYSTEM_DIRECTORY_H is.
The long term fix to avoid this would be to not use the same names for
the replacement header files as the system header files, because system
header files can and do call each other, and will not know about any guards.
As bitypes.h is not part of x/open, I can not find any official rules as
to what header files it is also allowed to expose.
Regards,
-John
[EMAIL PROTECTED]
Personal Opinion Only