emcrisostomo / fswatch

A cross-platform file change monitor with multiple backends: Apple OS X File System Events, *BSD kqueue, Solaris/Illumos File Events Notification, Linux inotify, Microsoft Windows and a stat()-based backend.
https://emcrisostomo.github.io/fswatch/
GNU General Public License v3.0
4.96k stars 327 forks source link

MSVC support; [.github/workflows/cmake.yml] Add macOS and Windows building + testing #282

Open SamuelMarks opened 2 years ago

SamuelMarks commented 2 years ago

Added MSVC support, cross-platform testing in CI, and switched to more secure variants of C stdlib function (whence enabled or MSVC).

This closes #176, next is to close #251 (vcpkg is what I use for the rest of my deps).

SamuelMarks commented 2 years ago

@emcrisostomo I'll review your requested changes when I get the chance—my last commit was in February, first PR sent in November—and amend accordingly.

I can maintain compatibility with autotools (I suppose), for the symbol exporters I can create a pure C header file with the necessary ifdefs for each of gcc, clang, and msvc. If you want more than those compilers then I guess expand the list yourself. Alternatively; and preferably; Makefiles can be generated from CMake.

emmenlau commented 1 year ago

I'm actually very much interested in native MSVC support (without the need for Cygwin, dirent.h and other compatibility layers). Does this PR provide native MSVC support? @SamuelMarks , is it still actively pursued?

SamuelMarks commented 1 year ago

@emmenlau There were a lot of changes requested and compatibility with existing autotools toolchain required.

If I get the chance will make the edits and update to latest master in the process. But really would like a more complete test suite to confirm this all works (not to mention the delayed responses in feedback on the PR)