Enable native Windows support for NeuG.
This could be achieved through the following adaptation tasks:
- Build System Adaptation (CMake):
- Update
CMakeLists.txt to properly detect and support the MSVC compiler and Windows SDK.
- Fix compiler-specific flags (e.g., replacing
-Wall -Werror with /W4 /WX, handling /O2 vs -O3).
- OS Abstraction Layer (System Calls & I/O):
- Abstract POSIX-specific memory mapping (e.g.,
mmap / munmap) and provide Win32 equivalents (CreateFileMapping / MapViewOfFile).
- Replace or wrap Linux-specific file I/O and directory operations with
std::filesystem or cross-platform wrappers.
- Adapt threading and synchronization primitives if
pthread is heavily used (migrate to std::thread, std::mutex, or Windows SRWLock).
- Dependency Management:
- Ensure third-party C++ dependencies are cross-platform.
- (Optional) Provide
vcpkg or conan integration to easily fetch Windows-compatible binaries for dependencies.
- CI/CD Integration:
- Add a Windows runner (e.g.,
windows-latest with MSVC) to GitHub Actions to continuously verify Windows builds and prevent future regressions.
Enable native Windows support for NeuG.
This could be achieved through the following adaptation tasks:
CMakeLists.txtto properly detect and support the MSVC compiler and Windows SDK.-Wall -Werrorwith/W4 /WX, handling/O2vs-O3).mmap/munmap) and provide Win32 equivalents (CreateFileMapping/MapViewOfFile).std::filesystemor cross-platform wrappers.pthreadis heavily used (migrate tostd::thread,std::mutex, or WindowsSRWLock).vcpkgorconanintegration to easily fetch Windows-compatible binaries for dependencies.windows-latestwith MSVC) to GitHub Actions to continuously verify Windows builds and prevent future regressions.