summaryrefslogtreecommitdiff
path: root/vere/ext/nasm/build.zig
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
committerpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
commitfcedfddf00b3f994e4f4e40332ac7fc192c63244 (patch)
tree51d38e62c7bdfcc5f9a5e9435fe820c93cfc9a3d /vere/ext/nasm/build.zig
claude is gud
Diffstat (limited to 'vere/ext/nasm/build.zig')
-rw-r--r--vere/ext/nasm/build.zig830
1 files changed, 830 insertions, 0 deletions
diff --git a/vere/ext/nasm/build.zig b/vere/ext/nasm/build.zig
new file mode 100644
index 0000000..557a8e5
--- /dev/null
+++ b/vere/ext/nasm/build.zig
@@ -0,0 +1,830 @@
+const std = @import("std");
+const builtin = @import("builtin");
+
+pub fn build(b: *std.Build) void {
+ const target = b.graph.host;
+ const optimize = b.standardOptimizeOption(.{});
+ const t = target.result;
+
+ const exe = b.addExecutable(.{
+ .name = "nasm",
+ .target = target,
+ .optimize = optimize,
+ });
+
+ exe.addIncludePath(b.path("include"));
+ exe.addIncludePath(b.path("asm"));
+ exe.addIncludePath(b.path("x86"));
+ exe.addIncludePath(b.path("output"));
+
+ exe.addConfigHeader(b.addConfigHeader(.{
+ .style = .blank,
+ .include_path = "version.h",
+ }, .{
+ .NASM_MAJOR_VER = 2,
+ .NASM_MINOR_VER = 16,
+ .NASM_SUBMINOR_VER = 1,
+ .NASM_PATCHLEVEL_VER = 0,
+ .NASM_VERSION_ID = 0x02100100,
+ .NASM_VER = "2.16.01",
+ }));
+
+ if (b.graph.host.result.os.tag == .windows) {
+ exe.addConfigHeader(b.addConfigHeader(.{
+ .style = .{ .autoconf = b.path("config/config.h.in") },
+ .include_path = "config/config.h",
+ }, .{
+ .ABORT_ON_PANIC = have(optimize == .Debug),
+ .AC_APPLE_UNIVERSAL_BUILD = null,
+ .CFLAGS_FDATA_SECTIONS = null,
+ .CFLAGS_FFUNCTION_SECTIONS = null,
+ .CFLAGS_FGNU89_INLINE = null,
+ .CFLAGS_FLTO = null,
+ .CFLAGS_FNO_COMMON = null,
+ .CFLAGS_FNO_OMIT_FRAME_POINTER = null,
+ .CFLAGS_FSANITIZE_ADDRESS = null,
+ .CFLAGS_FSANITIZE_UNDEFINED = null,
+ .CFLAGS_FTRIVIAL_AUTO_VAR_INIT_ZERO = null,
+ .CFLAGS_FVISIBILITY_HIDDEN = null,
+ .CFLAGS_FWRAPV = null,
+ .CFLAGS_GGDB3 = null,
+ .CFLAGS_O0 = have(optimize == .Debug),
+ .CFLAGS_PEDANTIC = null,
+ .CFLAGS_PG = null,
+ .CFLAGS_STD_C11 = null,
+ .CFLAGS_STD_C17 = 1,
+ .CFLAGS_STD_C99 = null,
+ .CFLAGS_U_STRICT_ANSI = null,
+ .CFLAGS_W = null,
+ .CFLAGS_WALL = null,
+ .CFLAGS_WC90_C99_COMPAT = null,
+ .CFLAGS_WC99_COMPAT = null,
+ .CFLAGS_WC99_EXTENSIONS = null,
+ .CFLAGS_WERROR = null,
+ .CFLAGS_WERROR_ATTRIBUTES = null,
+ .CFLAGS_WERROR_COMMENT = null,
+ .CFLAGS_WERROR_IMPLICIT = null,
+ .CFLAGS_WERROR_MISSING_BRACES = null,
+ .CFLAGS_WERROR_MISSING_DECLARATIONS = null,
+ .CFLAGS_WERROR_MISSING_PROTOTYPES = null,
+ .CFLAGS_WERROR_POINTER_ARITH = null,
+ .CFLAGS_WERROR_RETURN_TYPE = null,
+ .CFLAGS_WERROR_STRICT_PROTOTYPES = null,
+ .CFLAGS_WERROR_TRIGRAPHS = null,
+ .CFLAGS_WERROR_UNKNOWN_WARNING_OPTION = null,
+ .CFLAGS_WERROR_VLA = null,
+ .CFLAGS_WLONG_LONG = null,
+ .CFLAGS_WPEDANTIC_MS_FORMAT = null,
+ .CFLAGS_WSHIFT_NEGATIVE_VALUE = null,
+ .CFLAGS_WSTRINGOP_TRUNCATION = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_COLD = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_CONST = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_FORMAT = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_MALLOC = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_NORETURN = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_PURE = null,
+ .HAVE_ACCESS = 1,
+ .HAVE_CANONICALIZE_FILE_NAME = null,
+ .HAVE_CPU_TO_LE16 = null,
+ .HAVE_CPU_TO_LE32 = null,
+ .HAVE_CPU_TO_LE64 = null,
+ .HAVE_DECL_STRCASECMP = 1,
+ .HAVE_DECL_STRICMP = 0,
+ .HAVE_DECL_STRLCPY = null,
+ .HAVE_DECL_STRNCASECMP = 1,
+ .HAVE_DECL_STRNICMP = 0,
+ .HAVE_DECL_STRNLEN = 0,
+ .HAVE_DECL_STRRCHRNUL = 0,
+ .HAVE_DECL_STRSEP = 0,
+ .HAVE_ENDIAN_H = null,
+ .HAVE_FACCESSAT = 1,
+ .HAVE_FCNTL_H = 1,
+ .HAVE_FILENO = 1,
+ .HAVE_FSEEKO = 1,
+ .HAVE_FSTAT = 1,
+ .HAVE_FTRUNCATE = 1,
+ .HAVE_FUNC_ATTRIBUTE1_ALLOC_SIZE = 1,
+ .HAVE_FUNC_ATTRIBUTE2_ALLOC_SIZE = null,
+ .HAVE_FUNC_ATTRIBUTE3_FORMAT = 1,
+ .HAVE_FUNC_ATTRIBUTE_COLD = 1,
+ .HAVE_FUNC_ATTRIBUTE_CONST = 1,
+ .HAVE_FUNC_ATTRIBUTE_ERROR = 1,
+ .HAVE_FUNC_ATTRIBUTE_MALLOC = 1,
+ .HAVE_FUNC_ATTRIBUTE_NORETURN = 1,
+ .HAVE_FUNC_ATTRIBUTE_PURE = 1,
+ .HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL = 1,
+ .HAVE_FUNC_ATTRIBUTE_SENTINEL = 1,
+ .HAVE_FUNC_ATTRIBUTE_UNUSED = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE1_ALLOC_SIZE = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE2_ALLOC_SIZE = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE3_FORMAT = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_COLD = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_CONST = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_MALLOC = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_NORETURN = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_PURE = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_RETURNS_NONNULL = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_SENTINEL = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_UNUSED = 1,
+ .HAVE_GETGID = null,
+ .HAVE_GETPAGESIZE = null,
+ .HAVE_GETRLIMIT = null,
+ .HAVE_GETUID = null,
+ .HAVE_HTOLE16 = null,
+ .HAVE_HTOLE32 = null,
+ .HAVE_HTOLE64 = null,
+ .HAVE_INTRIN_H = 1,
+ .HAVE_INTTYPES_H = 1,
+ .HAVE_IO_H = null,
+ .HAVE_ISASCII = 1,
+ .HAVE_ISCNTRL = 1,
+ .HAVE_MACHINE_ENDIAN_H = null,
+ .HAVE_MEMPCPY = 1,
+ .HAVE_MEMPSET = null,
+ .HAVE_MINIX_CONFIG_H = null,
+ .HAVE_MMAP = null,
+ .HAVE_PATHCONF = null,
+ .HAVE_REALPATH = null,
+ .HAVE_SNPRINTF = 1,
+ .HAVE_STAT = 1,
+ .HAVE_STDARG_H = 1,
+ .HAVE_STDBOOL_H = 1,
+ .HAVE_STDC_INLINE = 1,
+ .HAVE_STDINT_H = 1,
+ .HAVE_STDIO_H = 1,
+ .HAVE_STDLIB_H = 1,
+ .HAVE_STDNORETURN_H = 1,
+ .HAVE_STRCASECMP = 1,
+ .HAVE_STRICMP = 1,
+ .HAVE_STRINGS_H = 1,
+ .HAVE_STRING_H = 1,
+ .HAVE_STRLCPY = null,
+ .HAVE_STRNCASECMP = 1,
+ .HAVE_STRNICMP = 1,
+ .HAVE_STRNLEN = 1,
+ .HAVE_STRRCHRNUL = null,
+ .HAVE_STRSEP = null,
+ .HAVE_STRUCT_STAT = null,
+ .HAVE_STRUCT__STATI64 = null,
+ .HAVE_SYSCONF = null,
+ .HAVE_SYS_ENDIAN_H = null,
+ .HAVE_SYS_MMAN_H = null,
+ .HAVE_SYS_PARAM_H = null,
+ .HAVE_SYS_RESOURCE_H = null,
+ .HAVE_SYS_STAT_H = 1,
+ .HAVE_SYS_TYPES_H = 1,
+ .HAVE_S_ISREG = null,
+ .HAVE_TYPEOF = null,
+ .HAVE_UINTPTR_T = 1,
+ .HAVE_UNISTD_H = null,
+ .HAVE_VSNPRINTF = 1,
+ .HAVE_WCHAR_H = null,
+ .HAVE__ACCESS = null,
+ .HAVE__BITSCANREVERSE = null,
+ .HAVE__BITSCANREVERSE64 = null,
+ .HAVE__BOOL = 1,
+ .HAVE__BYTESWAP_UINT64 = null,
+ .HAVE__BYTESWAP_ULONG = null,
+ .HAVE__BYTESWAP_USHORT = null,
+ .HAVE__CHSIZE = null,
+ .HAVE__CHSIZE_S = null,
+ .HAVE__FILENO = null,
+ .HAVE__FSEEKI64 = null,
+ .HAVE__FSTATI64 = null,
+ .HAVE__FULLPATH = null,
+ .HAVE__STATI64 = null,
+ .HAVE___BSWAP_16 = 1,
+ .HAVE___BSWAP_32 = 1,
+ .HAVE___BSWAP_64 = 1,
+ .HAVE___BUILTIN_BSWAP16 = 1,
+ .HAVE___BUILTIN_BSWAP32 = 1,
+ .HAVE___BUILTIN_BSWAP64 = 1,
+ .HAVE___BUILTIN_CHOOSE_EXPR = 1,
+ .HAVE___BUILTIN_CLZ = 1,
+ .HAVE___BUILTIN_CLZL = 1,
+ .HAVE___BUILTIN_CLZLL = 1,
+ .HAVE___BUILTIN_CONSTANT_P = 1,
+ .HAVE___BUILTIN_EXPECT = 1,
+ .HAVE___CPU_TO_LE16 = null,
+ .HAVE___CPU_TO_LE32 = null,
+ .HAVE___CPU_TO_LE64 = null,
+ .LDFLAGS_WL_GC_SECTIONS = null,
+ .PACKAGE_BUGREPORT = "",
+ .PACKAGE_NAME = "",
+ .PACKAGE_STRING = "",
+ .PACKAGE_TARNAME = "",
+ .PACKAGE_URL = "",
+ .PACKAGE_VERSION = "",
+ .STDC_HEADERS = 1,
+ ._ALL_SOURCE = 1,
+ ._DARWIN_C_SOURCE = 1,
+ .__EXTENSIONS__ = 1,
+ ._GNU_SOURCE = 1,
+ ._HPUX_ALT_XOPEN_SOCKET_API = 1,
+ ._MINIX = null,
+ ._NETBSD_SOURCE = 1,
+ ._OPENBSD_SOURCE = 1,
+ ._POSIX_SOURCE = null,
+ ._POSIX_1_SOURCE = null,
+ ._POSIX_PTHREAD_SEMANTICS = 1,
+ .__STDC_WANT_IEC_60559_ATTRIBS_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_BFP_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_DFP_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_FUNCS_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_TYPES_EXT__ = 1,
+ .__STDC_WANT_LIB_EXT2__ = 1,
+ .__STDC_WANT_MATH_SPEC_FUNCS__ = 1,
+ ._TANDEM_SOURCE = 1,
+ ._XOPEN_SOURCE = null,
+ .WORDS_BIGENDIAN = have(t.cpu.arch.endian() == .big),
+ .WORDS_LITTLEENDIAN = have(t.cpu.arch.endian() != .big),
+ ._FILE_OFFSET_BITS = null,
+ ._LARGEFILE_SOURCE = null,
+ ._LARGE_FILES = null,
+ .@"const" = .@"const",
+ .@"inline" = .@"inline",
+ .restrict = .restrict,
+ .size_t = null,
+ .snprintf = null,
+ .typeof = .__typeof,
+ .uintptr_t = null,
+ .vsnprintf = null,
+ }));
+ } else if (b.graph.host.result.os.tag.isDarwin()) {
+ exe.addConfigHeader(b.addConfigHeader(.{
+ .style = .{ .autoconf = b.path("config/config.h.in") },
+ .include_path = "config/config.h",
+ }, .{
+ // Define to 1 to call abort() on panics (internal errors), for debugging.
+ .ABORT_ON_PANIC = null,
+ // Define if building universal (internal helper macro)
+ .AC_APPLE_UNIVERSAL_BUILD = null,
+ // Compiler flags
+ .CFLAGS_STD_C11 = null,
+ .CFLAGS_STD_C17 = 1,
+ .CFLAGS_STD_C99 = null,
+ .CFLAGS_WC90_C99_COMPAT = null,
+ .CFLAGS_WC99_COMPAT = null,
+ .CFLAGS_WC99_EXTENSIONS = null,
+ .CFLAGS_WERROR_ATTRIBUTES = null,
+ .CFLAGS_FDATA_SECTIONS = 1,
+ .CFLAGS_FFUNCTION_SECTIONS = 1,
+ .CFLAGS_FGNU89_INLINE = null,
+ .CFLAGS_FLTO = null,
+ .CFLAGS_FNO_COMMON = 1,
+ .CFLAGS_FNO_OMIT_FRAME_POINTER = null,
+ .CFLAGS_FSANITIZE_ADDRESS = null,
+ .CFLAGS_FSANITIZE_UNDEFINED = null,
+ .CFLAGS_FTRIVIAL_AUTO_VAR_INIT_ZERO = 1,
+ .CFLAGS_FVISIBILITY_HIDDEN = 1,
+ .CFLAGS_FWRAPV = 1,
+ .CFLAGS_GGDB3 = 1,
+ .CFLAGS_O0 = have(optimize == .Debug),
+ .CFLAGS_PEDANTIC = 1,
+ .CFLAGS_PG = null,
+ .CFLAGS_U_STRICT_ANSI = 1,
+ .CFLAGS_W = 1,
+ .CFLAGS_WALL = 1,
+ .CFLAGS_WERROR = null,
+ .CFLAGS_WERROR_COMMENT = 1,
+ .CFLAGS_WERROR_IMPLICIT = 1,
+ .CFLAGS_WERROR_MISSING_BRACES = 1,
+ .CFLAGS_WERROR_MISSING_DECLARATIONS = 1,
+ .CFLAGS_WERROR_MISSING_PROTOTYPES = 1,
+ .CFLAGS_WERROR_POINTER_ARITH = 1,
+ .CFLAGS_WERROR_RETURN_TYPE = 1,
+ .CFLAGS_WERROR_STRICT_PROTOTYPES = 1,
+ .CFLAGS_WERROR_TRIGRAPHS = 1,
+ .CFLAGS_WERROR_UNKNOWN_WARNING_OPTION = 1,
+ .CFLAGS_WERROR_VLA = 1,
+ .CFLAGS_WLONG_LONG = null,
+ .CFLAGS_WPEDANTIC_MS_FORMAT = null,
+ .CFLAGS_WSHIFT_NEGATIVE_VALUE = null,
+ .CFLAGS_WSTRINGOP_TRUNCATION = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_COLD = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_CONST = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_FORMAT = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_MALLOC = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_NORETURN = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_PURE = null,
+
+ // Function availability
+ .HAVE_ACCESS = 1,
+ .HAVE_CANONICALIZE_FILE_NAME = null,
+ .HAVE_CPU_TO_LE16 = null,
+ .HAVE_CPU_TO_LE32 = null,
+ .HAVE_CPU_TO_LE64 = null,
+ .HAVE_FACCESSAT = 1,
+ .HAVE_FILENO = 1,
+ .HAVE_FSEEKO = 1,
+ .HAVE_FSTAT = 1,
+ .HAVE_FTRUNCATE = 1,
+ .HAVE_GETGID = 1,
+ .HAVE_GETPAGESIZE = 1,
+ .HAVE_GETRLIMIT = 1,
+ .HAVE_GETUID = 1,
+ .HAVE_HTOLE16 = null,
+ .HAVE_HTOLE32 = null,
+ .HAVE_HTOLE64 = null,
+ .HAVE_ISASCII = 1,
+ .HAVE_ISCNTRL = 1,
+ .HAVE_MEMPCPY = null,
+ .HAVE_MEMPSET = null,
+ .HAVE_MMAP = 1,
+ .HAVE_PATHCONF = 1,
+ .HAVE_REALPATH = 1,
+ .HAVE_SNPRINTF = 1,
+ .HAVE_STAT = 1,
+ .HAVE_STRCASECMP = 1,
+ .HAVE_STRICMP = null,
+ .HAVE_STRLCPY = 1,
+ .HAVE_STRNCASECMP = 1,
+ .HAVE_STRNICMP = null,
+ .HAVE_STRNLEN = 1,
+ .HAVE_STRRCHRNUL = null,
+ .HAVE_STRSEP = 1,
+ .HAVE_SYSCONF = 1,
+ .HAVE_S_ISREG = null,
+ .HAVE_VSNPRINTF = 1,
+ .HAVE__ACCESS = null,
+ .HAVE__BITSCANREVERSE = null,
+ .HAVE__BITSCANREVERSE64 = null,
+ .HAVE__BYTESWAP_UINT64 = null,
+ .HAVE__BYTESWAP_ULONG = null,
+ .HAVE__BYTESWAP_USHORT = null,
+ .HAVE__CHSIZE = null,
+ .HAVE__CHSIZE_S = null,
+ .HAVE__FILENO = null,
+ .HAVE__FSEEKI64 = null,
+ .HAVE__FSTATI64 = null,
+ .HAVE__FULLPATH = null,
+ .HAVE__STATI64 = null,
+
+ // Function declarations
+ .HAVE_DECL_STRCASECMP = 1,
+ .HAVE_DECL_STRICMP = 0,
+ .HAVE_DECL_STRLCPY = 1,
+ .HAVE_DECL_STRNCASECMP = 1,
+ .HAVE_DECL_STRNICMP = 0,
+ .HAVE_DECL_STRNLEN = 1,
+ .HAVE_DECL_STRRCHRNUL = 0,
+ .HAVE_DECL_STRSEP = 1,
+
+ // Header files
+ .HAVE_ENDIAN_H = null,
+ .HAVE_FCNTL_H = 1,
+ .HAVE_INTRIN_H = null,
+ .HAVE_INTTYPES_H = 1,
+ .HAVE_IO_H = null,
+ .HAVE_MACHINE_ENDIAN_H = 1,
+ .HAVE_MINIX_CONFIG_H = null,
+ .HAVE_STDARG_H = 1,
+ .HAVE_STDBOOL_H = 1,
+ .HAVE_STDINT_H = 1,
+ .HAVE_STDIO_H = 1,
+ .HAVE_STDLIB_H = 1,
+ .HAVE_STDNORETURN_H = 1,
+ .HAVE_STRINGS_H = 1,
+ .HAVE_STRING_H = 1,
+ .HAVE_SYS_ENDIAN_H = null,
+ .HAVE_SYS_MMAN_H = 1,
+ .HAVE_SYS_PARAM_H = 1,
+ .HAVE_SYS_RESOURCE_H = 1,
+ .HAVE_SYS_STAT_H = 1,
+ .HAVE_SYS_TYPES_H = 1,
+ .HAVE_UNISTD_H = 1,
+ .HAVE_WCHAR_H = 1,
+
+ // Built-in functions
+ .HAVE___BSWAP_16 = null,
+ .HAVE___BSWAP_32 = null,
+ .HAVE___BSWAP_64 = null,
+ .HAVE___BUILTIN_BSWAP16 = 1,
+ .HAVE___BUILTIN_BSWAP32 = 1,
+ .HAVE___BUILTIN_BSWAP64 = 1,
+ .HAVE___BUILTIN_CHOOSE_EXPR = 1,
+ .HAVE___BUILTIN_CLZ = 1,
+ .HAVE___BUILTIN_CLZL = 1,
+ .HAVE___BUILTIN_CLZLL = 1,
+ .HAVE___BUILTIN_CONSTANT_P = 1,
+ .HAVE___BUILTIN_EXPECT = 1,
+ .HAVE___CPU_TO_LE16 = null,
+ .HAVE___CPU_TO_LE32 = null,
+ .HAVE___CPU_TO_LE64 = null,
+
+ // Function attributes
+ .HAVE_FUNC_ATTRIBUTE1_ALLOC_SIZE = 1,
+ .HAVE_FUNC_ATTRIBUTE2_ALLOC_SIZE = 1,
+ .HAVE_FUNC_ATTRIBUTE3_FORMAT = 1,
+ .HAVE_FUNC_ATTRIBUTE_COLD = 1,
+ .HAVE_FUNC_ATTRIBUTE_CONST = 1,
+ .HAVE_FUNC_ATTRIBUTE_ERROR = 1,
+ .HAVE_FUNC_ATTRIBUTE_MALLOC = null,
+ .HAVE_FUNC_ATTRIBUTE_NORETURN = 1,
+ .HAVE_FUNC_ATTRIBUTE_PURE = 1,
+ .HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL = 1,
+ .HAVE_FUNC_ATTRIBUTE_SENTINEL = 1,
+ .HAVE_FUNC_ATTRIBUTE_UNUSED = 1,
+
+ // Function pointer attributes
+ .HAVE_FUNC_PTR_ATTRIBUTE1_ALLOC_SIZE = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE2_ALLOC_SIZE = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE3_FORMAT = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_COLD = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_CONST = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_MALLOC = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_NORETURN = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_PURE = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_RETURNS_NONNULL = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_SENTINEL = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_UNUSED = 1,
+
+ // Types and features
+ .HAVE_STDC_INLINE = 1,
+ .HAVE_STRUCT_STAT = 1,
+ .HAVE_STRUCT__STATI64 = null,
+ .HAVE_TYPEOF = 1,
+ .HAVE_UINTPTR_T = 1,
+ .HAVE__BOOL = 1,
+
+ // Linker flags
+ .LDFLAGS_WL_GC_SECTIONS = null,
+
+ // Package information
+ .PACKAGE_BUGREPORT = "",
+ .PACKAGE_NAME = "",
+ .PACKAGE_STRING = "",
+ .PACKAGE_TARNAME = "",
+ .PACKAGE_URL = "",
+ .PACKAGE_VERSION = "",
+
+ // Standard headers
+ .STDC_HEADERS = 1,
+
+ // Feature test macros
+ ._ALL_SOURCE = 1,
+ ._DARWIN_C_SOURCE = 1,
+ .__EXTENSIONS__ = 1,
+ ._GNU_SOURCE = 1,
+ ._HPUX_ALT_XOPEN_SOCKET_API = 1,
+ ._MINIX = null,
+ ._NETBSD_SOURCE = 1,
+ ._OPENBSD_SOURCE = 1,
+ ._POSIX_SOURCE = null,
+ ._POSIX_1_SOURCE = null,
+ ._POSIX_PTHREAD_SEMANTICS = 1,
+ .__STDC_WANT_IEC_60559_BFP_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_DFP_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_FUNCS_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_ATTRIBS_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_TYPES_EXT__ = 1,
+ .__STDC_WANT_LIB_EXT2__ = 1,
+ .__STDC_WANT_MATH_SPEC_FUNCS__ = 1,
+ ._TANDEM_SOURCE = 1,
+ ._XOPEN_SOURCE = null,
+
+ // Endianness
+ .WORDS_BIGENDIAN = null,
+ .WORDS_LITTLEENDIAN = 1,
+
+ // File offset bits
+ ._FILE_OFFSET_BITS = null,
+ ._LARGEFILE_SOURCE = null,
+ ._LARGE_FILES = null,
+
+ // Type definitions and replacements
+ .@"const" = null,
+ .@"inline" = null,
+ .restrict = .__restrict__,
+ .size_t = null,
+ .snprintf = null,
+ .typeof = .__typeof,
+ .uintptr_t = null,
+ .vsnprintf = null,
+ }));
+ } else if (b.graph.host.result.os.tag == .linux) {
+ exe.addConfigHeader(b.addConfigHeader(.{
+ .style = .{ .autoconf = b.path("config/config.h.in") },
+ .include_path = "config/config.h",
+ }, .{
+ .ABORT_ON_PANIC = have(optimize == .Debug),
+ .AC_APPLE_UNIVERSAL_BUILD = null,
+ .CFLAGS_FDATA_SECTIONS = null,
+ .CFLAGS_FFUNCTION_SECTIONS = null,
+ .CFLAGS_FGNU89_INLINE = null,
+ .CFLAGS_FLTO = null,
+ .CFLAGS_FNO_COMMON = null,
+ .CFLAGS_FNO_OMIT_FRAME_POINTER = null,
+ .CFLAGS_FSANITIZE_ADDRESS = null,
+ .CFLAGS_FSANITIZE_UNDEFINED = null,
+ .CFLAGS_FTRIVIAL_AUTO_VAR_INIT_ZERO = null,
+ .CFLAGS_FVISIBILITY_HIDDEN = null,
+ .CFLAGS_FWRAPV = null,
+ .CFLAGS_GGDB3 = null,
+ .CFLAGS_O0 = have(optimize == .Debug),
+ .CFLAGS_PEDANTIC = null,
+ .CFLAGS_PG = null,
+ .CFLAGS_STD_C11 = null,
+ .CFLAGS_STD_C17 = 1,
+ .CFLAGS_STD_C99 = null,
+ .CFLAGS_U_STRICT_ANSI = null,
+ .CFLAGS_W = null,
+ .CFLAGS_WALL = null,
+ .CFLAGS_WC90_C99_COMPAT = null,
+ .CFLAGS_WC99_COMPAT = null,
+ .CFLAGS_WC99_EXTENSIONS = null,
+ .CFLAGS_WERROR = null,
+ .CFLAGS_WERROR_ATTRIBUTES = null,
+ .CFLAGS_WERROR_COMMENT = null,
+ .CFLAGS_WERROR_IMPLICIT = null,
+ .CFLAGS_WERROR_MISSING_BRACES = null,
+ .CFLAGS_WERROR_MISSING_DECLARATIONS = null,
+ .CFLAGS_WERROR_MISSING_PROTOTYPES = null,
+ .CFLAGS_WERROR_POINTER_ARITH = null,
+ .CFLAGS_WERROR_RETURN_TYPE = null,
+ .CFLAGS_WERROR_STRICT_PROTOTYPES = null,
+ .CFLAGS_WERROR_TRIGRAPHS = null,
+ .CFLAGS_WERROR_UNKNOWN_WARNING_OPTION = null,
+ .CFLAGS_WERROR_VLA = null,
+ .CFLAGS_WLONG_LONG = null,
+ .CFLAGS_WPEDANTIC_MS_FORMAT = null,
+ .CFLAGS_WSHIFT_NEGATIVE_VALUE = null,
+ .CFLAGS_WSTRINGOP_TRUNCATION = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_COLD = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_CONST = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_FORMAT = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_MALLOC = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_NORETURN = null,
+ .CFLAGS_WSUGGEST_ATTRIBUTE_PURE = null,
+ .HAVE_ACCESS = 1,
+ .HAVE_CANONICALIZE_FILE_NAME = null,
+ .HAVE_CPU_TO_LE16 = null,
+ .HAVE_CPU_TO_LE32 = null,
+ .HAVE_CPU_TO_LE64 = null,
+ .HAVE_DECL_STRCASECMP = 0,
+ .HAVE_DECL_STRICMP = 0,
+ .HAVE_DECL_STRLCPY = 0,
+ .HAVE_DECL_STRNCASECMP = 0,
+ .HAVE_DECL_STRNICMP = 0,
+ .HAVE_DECL_STRNLEN = 0,
+ .HAVE_DECL_STRRCHRNUL = 0,
+ .HAVE_DECL_STRSEP = 0,
+ .HAVE_ENDIAN_H = 1,
+ .HAVE_FACCESSAT = 1,
+ .HAVE_FCNTL_H = 1,
+ .HAVE_FILENO = 1,
+ .HAVE_FSEEKO = 1,
+ .HAVE_FSTAT = 1,
+ .HAVE_FTRUNCATE = 1,
+ .HAVE_FUNC_ATTRIBUTE1_ALLOC_SIZE = 1,
+ .HAVE_FUNC_ATTRIBUTE2_ALLOC_SIZE = null,
+ .HAVE_FUNC_ATTRIBUTE3_FORMAT = 1,
+ .HAVE_FUNC_ATTRIBUTE_COLD = 1,
+ .HAVE_FUNC_ATTRIBUTE_CONST = 1,
+ .HAVE_FUNC_ATTRIBUTE_ERROR = 1,
+ .HAVE_FUNC_ATTRIBUTE_MALLOC = 1,
+ .HAVE_FUNC_ATTRIBUTE_NORETURN = 1,
+ .HAVE_FUNC_ATTRIBUTE_PURE = 1,
+ .HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL = 1,
+ .HAVE_FUNC_ATTRIBUTE_SENTINEL = 1,
+ .HAVE_FUNC_ATTRIBUTE_UNUSED = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE1_ALLOC_SIZE = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE2_ALLOC_SIZE = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE3_FORMAT = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_COLD = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_CONST = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_MALLOC = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_NORETURN = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_PURE = null,
+ .HAVE_FUNC_PTR_ATTRIBUTE_RETURNS_NONNULL = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_SENTINEL = 1,
+ .HAVE_FUNC_PTR_ATTRIBUTE_UNUSED = 1,
+ .HAVE_GETGID = null,
+ .HAVE_GETPAGESIZE = null,
+ .HAVE_GETRLIMIT = null,
+ .HAVE_GETUID = null,
+ .HAVE_HTOLE16 = null,
+ .HAVE_HTOLE32 = null,
+ .HAVE_HTOLE64 = null,
+ .HAVE_INTRIN_H = 1,
+ .HAVE_INTTYPES_H = 1,
+ .HAVE_IO_H = null,
+ .HAVE_ISASCII = 1,
+ .HAVE_ISCNTRL = 1,
+ .HAVE_MACHINE_ENDIAN_H = 1,
+ .HAVE_MEMPCPY = 1,
+ .HAVE_MEMPSET = null,
+ .HAVE_MINIX_CONFIG_H = null,
+ .HAVE_MMAP = 1,
+ .HAVE_PATHCONF = null,
+ .HAVE_REALPATH = 1,
+ .HAVE_SNPRINTF = 1,
+ .HAVE_STAT = 1,
+ .HAVE_STDARG_H = 1,
+ .HAVE_STDBOOL_H = 1,
+ .HAVE_STDC_INLINE = 1,
+ .HAVE_STDINT_H = 1,
+ .HAVE_STDIO_H = 1,
+ .HAVE_STDLIB_H = 1,
+ .HAVE_STDNORETURN_H = 1,
+ .HAVE_STRCASECMP = 1,
+ .HAVE_STRICMP = 1,
+ .HAVE_STRINGS_H = 1,
+ .HAVE_STRING_H = 1,
+ .HAVE_STRLCPY = null,
+ .HAVE_STRNCASECMP = 1,
+ .HAVE_STRNICMP = 1,
+ .HAVE_STRNLEN = 1,
+ .HAVE_STRRCHRNUL = null,
+ .HAVE_STRSEP = null,
+ .HAVE_STRUCT_STAT = null,
+ .HAVE_STRUCT__STATI64 = null,
+ .HAVE_SYSCONF = null,
+ .HAVE_SYS_ENDIAN_H = 1,
+ .HAVE_SYS_MMAN_H = 1,
+ .HAVE_SYS_PARAM_H = null,
+ .HAVE_SYS_RESOURCE_H = null,
+ .HAVE_SYS_STAT_H = 1,
+ .HAVE_SYS_TYPES_H = 1,
+ .HAVE_S_ISREG = null,
+ .HAVE_TYPEOF = null,
+ .HAVE_UINTPTR_T = 1,
+ .HAVE_UNISTD_H = null,
+ .HAVE_VSNPRINTF = null,
+ .HAVE_WCHAR_H = null,
+ .HAVE__ACCESS = null,
+ .HAVE__BITSCANREVERSE = null,
+ .HAVE__BITSCANREVERSE64 = null,
+ .HAVE__BOOL = 1,
+ .HAVE__BYTESWAP_UINT64 = null,
+ .HAVE__BYTESWAP_ULONG = null,
+ .HAVE__BYTESWAP_USHORT = null,
+ .HAVE__CHSIZE = null,
+ .HAVE__CHSIZE_S = null,
+ .HAVE__FILENO = null,
+ .HAVE__FSEEKI64 = null,
+ .HAVE__FSTATI64 = null,
+ .HAVE__FULLPATH = null,
+ .HAVE__STATI64 = null,
+ .HAVE___BSWAP_16 = 1,
+ .HAVE___BSWAP_32 = 1,
+ .HAVE___BSWAP_64 = 1,
+ .HAVE___BUILTIN_BSWAP16 = 1,
+ .HAVE___BUILTIN_BSWAP32 = 1,
+ .HAVE___BUILTIN_BSWAP64 = 1,
+ .HAVE___BUILTIN_CHOOSE_EXPR = 1,
+ .HAVE___BUILTIN_CLZ = 1,
+ .HAVE___BUILTIN_CLZL = 1,
+ .HAVE___BUILTIN_CLZLL = 1,
+ .HAVE___BUILTIN_CONSTANT_P = 1,
+ .HAVE___BUILTIN_EXPECT = 1,
+ .HAVE___CPU_TO_LE16 = null,
+ .HAVE___CPU_TO_LE32 = null,
+ .HAVE___CPU_TO_LE64 = null,
+ .LDFLAGS_WL_GC_SECTIONS = null,
+ .PACKAGE_BUGREPORT = "",
+ .PACKAGE_NAME = "",
+ .PACKAGE_STRING = "",
+ .PACKAGE_TARNAME = "",
+ .PACKAGE_URL = "",
+ .PACKAGE_VERSION = "",
+ .STDC_HEADERS = 1,
+ ._ALL_SOURCE = 1,
+ ._DARWIN_C_SOURCE = 1,
+ .__EXTENSIONS__ = 1,
+ ._GNU_SOURCE = 1,
+ ._HPUX_ALT_XOPEN_SOCKET_API = 1,
+ ._MINIX = null,
+ ._NETBSD_SOURCE = 1,
+ ._OPENBSD_SOURCE = 1,
+ ._POSIX_SOURCE = null,
+ ._POSIX_1_SOURCE = null,
+ ._POSIX_PTHREAD_SEMANTICS = 1,
+ .__STDC_WANT_IEC_60559_ATTRIBS_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_BFP_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_DFP_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_FUNCS_EXT__ = 1,
+ .__STDC_WANT_IEC_60559_TYPES_EXT__ = 1,
+ .__STDC_WANT_LIB_EXT2__ = 1,
+ .__STDC_WANT_MATH_SPEC_FUNCS__ = 1,
+ ._TANDEM_SOURCE = 1,
+ ._XOPEN_SOURCE = null,
+ .WORDS_BIGENDIAN = have(t.cpu.arch.endian() == .big),
+ .WORDS_LITTLEENDIAN = have(t.cpu.arch.endian() != .big),
+ ._FILE_OFFSET_BITS = null,
+ ._LARGEFILE_SOURCE = null,
+ ._LARGE_FILES = null,
+ .@"const" = .@"const",
+ .@"inline" = .@"inline",
+ .restrict = .restrict,
+ .size_t = null,
+ .snprintf = null,
+ .typeof = .__typeof,
+ .uintptr_t = null,
+ .vsnprintf = null,
+ }));
+ }
+
+ const files = [_][]const u8{
+ "nasmlib/alloc.c",
+ "nasmlib/asprintf.c",
+ "nasmlib/badenum.c",
+ "nasmlib/bsi.c",
+ "nasmlib/crc32.c",
+ "nasmlib/crc64.c",
+ "nasmlib/file.c",
+ "nasmlib/filename.c",
+ "nasmlib/hashtbl.c",
+ "nasmlib/ilog2.c",
+ "nasmlib/md5c.c",
+ "nasmlib/mmap.c",
+ "nasmlib/nctype.c",
+ "nasmlib/path.c",
+ "nasmlib/perfhash.c",
+ "nasmlib/raa.c",
+ "nasmlib/rbtree.c",
+ "nasmlib/readnum.c",
+ "nasmlib/realpath.c",
+ "nasmlib/rlimit.c",
+ "nasmlib/saa.c",
+ "nasmlib/string.c",
+ "nasmlib/strlist.c",
+ "nasmlib/ver.c",
+ "nasmlib/zerobuf.c",
+
+ "asm/assemble.c",
+ "asm/directbl.c",
+ "asm/directiv.c",
+ "asm/error.c",
+ "asm/eval.c",
+ "asm/exprdump.c",
+ "asm/exprlib.c",
+ "asm/floats.c",
+ "asm/labels.c",
+ "asm/listing.c",
+ "asm/nasm.c",
+ "asm/parser.c",
+ "asm/pptok.c",
+ "asm/pragma.c",
+ "asm/preproc.c",
+ "asm/quote.c",
+ "asm/rdstrnum.c",
+ "asm/segalloc.c",
+ "asm/srcfile.c",
+ "asm/stdscan.c",
+ "asm/strfunc.c",
+ "asm/tokhash.c",
+ "asm/warnings.c",
+
+ "stdlib/snprintf.c",
+ "stdlib/strlcpy.c",
+ "stdlib/strnlen.c",
+ "stdlib/strrchrnul.c",
+ "stdlib/vsnprintf.c",
+
+ "x86/disp8.c",
+ "x86/iflag.c",
+ "x86/insnsa.c",
+ "x86/insnsb.c",
+ "x86/insnsd.c",
+ "x86/insnsn.c",
+ "x86/regflags.c",
+ "x86/regs.c",
+ "x86/regvals.c",
+
+ "common/common.c",
+
+ "macros/macros.c",
+
+ "output/codeview.c",
+ "output/legacy.c",
+ "output/nulldbg.c",
+ "output/nullout.c",
+ "output/outaout.c",
+ "output/outas86.c",
+ "output/outbin.c",
+ "output/outcoff.c",
+ "output/outdbg.c",
+ "output/outelf.c",
+ "output/outform.c",
+ "output/outieee.c",
+ "output/outlib.c",
+ "output/outmacho.c",
+ "output/outobj.c",
+ };
+ const flags = [_][]const u8{
+ "-DHAVE_CONFIG_H",
+ "-std=c17",
+ "-Wno-implicit-function-declaration",
+ };
+ exe.addCSourceFiles(.{
+ .files = &files,
+ .flags = &flags,
+ });
+ exe.linkLibC();
+ b.installArtifact(exe);
+}
+
+fn have(c: bool) ?c_int {
+ return if (c) 1 else null;
+}