nasm/config
H. Peter Anvin (Intel) e2f38a8aed config/msvc.h: fill in gaps versus configure.ac/config.h.in
Cross-referenced configure.ac's AC_CHECK_HEADERS/AC_CHECK_FUNCS/PA_*
tests (as materialized into config/config.h.in) against config/msvc.h
and added definitions for macros MSVC actually supports:

- HAVE_STDARG_H, HAVE_STDIO_H, HAVE_WCHAR_H: always present.
- HAVE_STDINT_H: available starting with Visual Studio 2010
  (_MSC_VER >= 1600).
- HAVE_INTRIN_H plus an #include <intrin.h>, gated on Visual Studio
  2005 (_MSC_VER >= 1400) when the header was introduced.
- HAVE_ISCNTRL: always present.
- HAVE_ISASCII plus '#define isascii __isascii', since MSVC only
  provides the underscore-prefixed spelling.
- HAVE__BYTESWAP_USHORT/_ULONG/_UINT64: always present, declared in
  <stdlib.h>, matching the names PA_FIND_FUNC probes for in
  autoconf/m4/pa_endian.m4.
- HAVE__BITSCANREVERSE (>=1400) and HAVE__BITSCANREVERSE64 (>=1400 and
  only on _M_X64/_M_ARM64, since the 64-bit intrinsic does not exist
  on 32-bit x86).
- HAVE_UNSIGNED_LONG_LONG_INT: always present.
- HAVE_UINTMAX_T, gated on '#ifdef HAVE_STDINT_H' rather than a
  separate version check, with a textual 'unsigned long long'
  fallback for uintmax_t otherwise; gating strictly on HAVE_STDINT_H
  avoids the fallback macro clobbering <stdint.h>'s own uintmax_t
  typedef when both would otherwise be available.

Deliberately left out anything that is POSIX/GNU/BSD-only or does not
exist verbatim on MSVC (strcasecmp/strsep/strlcpy/mempcpy, getuid/
getrlimit/realpath, GCC __builtin_*/attribute probes, byteswap.h/
endian.h family, C23 stdbit.h, etc.), since compiler.h and the
relevant call sites already handle those cases separately for MSVC.

Verified with x86_64-w64-mingw32-gcc -fsyntax-only using manually
defined _MSC_VER/_M_X64/_M_ARM64 across Visual Studio versions
1310/1400/1600/1800/1929 (mingw-w64 declares the same intrinsics in
the expected headers), then confirmed end-to-end with a real MSVC
(cl.exe/nmake) build in CI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-07 12:57:50 -07:00
..
msvc.h config/msvc.h: fill in gaps versus configure.ac/config.h.in 2026-07-07 12:57:50 -07:00
unconfig.h portability: speed and modernize autoconf; compiler.h improvements 2025-09-16 13:25:39 -07:00
unknown.h treewide: replace verbose copyright headers with SPDX tags 2025-10-01 11:45:31 -07:00
watcom.h treewide: replace verbose copyright headers with SPDX tags 2025-10-01 11:45:31 -07:00