From a6e3969e9d99719164e894b6f026677177bf5d16 Mon Sep 17 00:00:00 2001 From: Brandon Busacker Date: Mon, 12 Jan 2026 17:18:25 -0700 Subject: [PATCH 01/83] Initial Windows cross-platform support for libnvme (#21) * feat: Windows cross-platform support for libnvme Added libnvme build support for Windows. - Added platform-specific include files for Linux/Windows. - Added BUILD.md with detailed build instructions for Linux and Windows - Added ENVIRONMENT.md with environment setup guide for both platforms - Fix format string warnings in nbft.c (use %u instead of %zd for MinGW compatibility) - Add forward declarations in windows-stubs.c to fix struct warnings - Skipping generate-accessors for now. Needs to be ported for Windows. - Note: leaving asprintf warning in generate-accessors.c since it is present in the master branch as well. Co-authored-by: Broc Going Co-authored-by: bbusacker Co-authored-by: Brandon Capener Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .gitignore | 2 +- BUILD.md | 467 +++++++ ENVIRONMENT.md | 309 +++++ ccan/ccan/minmax/minmax.h | 4 + libnvme/examples/meson.build | 6 + libnvme/src/meson.build | 68 +- libnvme/src/nvme/cleanup.h | 6 +- libnvme/src/nvme/fabrics.c | 7 +- libnvme/src/nvme/ioctl.c | 5 - libnvme/src/nvme/ioctl.h | 3 +- libnvme/src/nvme/linux.c | 5 +- libnvme/src/nvme/log.c | 3 +- libnvme/src/nvme/log.h | 2 +- libnvme/src/nvme/meson.build | 5 + libnvme/src/nvme/mi-mctp.c | 7 +- libnvme/src/nvme/mi.h | 2 +- libnvme/src/nvme/nbft.c | 17 +- libnvme/src/nvme/platform/platform_includes.h | 30 + libnvme/src/nvme/platform/platform_linux.h | 41 + libnvme/src/nvme/platform/platform_windows.h | 254 ++++ libnvme/src/nvme/private.h | 4 +- libnvme/src/nvme/tree.c | 7 +- libnvme/src/nvme/tree.h | 4 +- libnvme/src/nvme/types.h | 2 +- libnvme/src/nvme/util.c | 6 +- libnvme/src/nvme/util.h | 2 +- libnvme/src/nvme/windows-stubs.c | 1075 +++++++++++++++++ libnvme/test/ioctl/ana.c | 1 + libnvme/test/nbft/meson.build | 4 + meson.build | 212 ++-- 30 files changed, 2400 insertions(+), 160 deletions(-) create mode 100644 BUILD.md create mode 100644 ENVIRONMENT.md create mode 100644 libnvme/src/nvme/platform/platform_includes.h create mode 100644 libnvme/src/nvme/platform/platform_linux.h create mode 100644 libnvme/src/nvme/platform/platform_windows.h create mode 100644 libnvme/src/nvme/windows-stubs.c diff --git a/.gitignore b/.gitignore index f1b504ee46..9f50b93cde 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -nvme *.xml a.out *.o @@ -19,3 +18,4 @@ tests/*.pyc .build .build-ci .cache +.vscode/ diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000000..2a50d87aac --- /dev/null +++ b/BUILD.md @@ -0,0 +1,467 @@ +# Build Guide for nvme-cli + +This document provides instructions for building nvme-cli and libnvme on both Linux and Windows platforms. + +> **Prerequisites:** Before building, ensure your environment is properly set up by following the instructions in [ENVIRONMENT.md](ENVIRONMENT.md). + +## Table of Contents + +- [Build Configuration Options](#build-configuration-options) +- [Building libnvme](#building-libnvme) +- [Building nvme-cli](#building-nvme-cli) +- [Common Build Scenarios](#common-build-scenarios) +- [Reconfiguring](#reconfiguring-an-existing-build) +- [Troubleshooting](#troubleshooting) + +## Meson Options + +Key options available via `-D