Windows: `ghc-debug-stub-0.6.0.0` does not build

Mike Pilgrem
2024-08-17T14:48:20Z

The build (with GHC 9.6.6) fails with:
~~~text
ghc-debug-stub> [1 of 1] Compiling GHC.Debug.Stub
ghc-debug-stub>
ghc-debug-stub> cbits\stub.cpp:8:10: error:
ghc-debug-stub> fatal error: 'sys/socket.h' file not found
ghc-debug-stub> |
ghc-debug-stub> 8 | #include
ghc-debug-stub> | ^
ghc-debug-stub> #include
ghc-debug-stub> ^~~~~~~~~~~~~~
ghc-debug-stub> 1 error generated.
ghc-debug-stub> `clang++.exe' failed in phase `C++ Compiler'. (Exit code: 1)
~~~

I understand that `sys/socket.h` may be Unix-like operating systems only, although I also found this: https://www.gnu.org/software/gnulib/manual/gnulib.html#sys_002fsocket_002eh (I am not sure how I would make use of it to solve the problem).

If `ghc-debug-stub` does not currently support Windows, perhaps that should be reflected in its Cabal file and could be stated more explicitly in its Haddock documentation?

(As an aside, I saw that MSYS2 package [`msys2-runtime-devel`](https://packages.msys2.org/package/msys2-runtime-devel) provided `/usr/include/sys/socket.h`. So, naively, I added that package to the MSYS2 environment (`stack exec -- pacman -S msys2-runtime-devel` and specified:
~~~yaml
extra-include-dirs:
- D:/sr/programs/x86_64-windows/msys2-20230526/usr/include/
~~~

This also fails, but for different reasons (extract only of a long list):
~~~text
Building library for ghc-debug-stub-0.6.0.0..
In file included from cbits\stub.cpp:5:0: error:
In file included from D:\sr\programs\x86_64-windows\ghc-9.6.6\lib\..\mingw\include\c++\v1\iostream:37:0: error:
In file included from D:\sr\programs\x86_64-windows\ghc-9.6.6\lib\..\mingw\include\c++\v1\ios:214:0: error:
In file included from D:\sr\programs\x86_64-windows\ghc-9.6.6\lib\..\mingw\include\c++\v1\__locale:18:0: error:
In file included from D:\sr\programs\x86_64-windows\ghc-9.6.6\lib\..\mingw\include\c++\v1\memory:808:0: error:
In file included from D:\sr\programs\x86_64-windows\ghc-9.6.6\lib\..\mingw\include\c++\v1\__functional_base:23:0: error:

D:\sr\programs\x86_64-windows\ghc-9.6.6\lib\..\mingw\include\c++\v1\new:324:12: error:
error: no member named '_aligned_malloc' in the global namespace; did you mean 'aligned_alloc'?
return ::_aligned_malloc(__size, __alignment);
~~^
|
324 | return ::_aligned_malloc(__size, __alignment);
| ^

D:\sr\programs\x86_64-windows\msys2-20230526\usr\include\stdlib.h:332:8: error:
note: 'aligned_alloc' declared here
|
332 | void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1)
| ^
void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1)
^
~~~

I understand that `_alligned_malloc` is provided by Window's `` header.)