microsoft / vcpkg

C++ Library Manager for Windows, Linux, and MacOS
MIT License
23.34k stars 6.45k forks source link

[pthreads] pthreads-win32 or winpthreads? #14692

Open longnguyen2004 opened 4 years ago

longnguyen2004 commented 4 years ago

Is your feature request related to a problem? Please describe. Is pthreads-win32 still actively maintained? The last commit on sourceforge dates back to 2019, while winpthreads is still active and will continue to be so for the foreseeable future. Is it a good idea to switch to winpthreads?

PhoebeHui commented 4 years ago

I'm fine to switch to actively maintained repo, however, I'm not sure if it's right thing for pthreads.

cc @cenit @atkawa7 @JamesOldfield who may know more about this port.

cenit commented 4 years ago

can we just use pthreads as an overlay and then make it depend on one or the other? Like blas, lapack, opencv, (ssl maybe!), ...?

longnguyen2004 commented 4 years ago

The problem is pthreads-win32 is currently inactive (last code commit on 2018) while winpthreads is still active, and I can't find any reason to use pthreads-win32 instead of winpthreads. There has been an attempt to get winpthreads to compile on MSVC, and also a sample CMakeLists.txt.

PhoebeHui commented 4 years ago

@longnguyen2004, as @cenit suggested, I think you can set pthreads to empty package and then set it depends on winpthreads, like opencv.

dg0yt commented 3 years ago

What is the roadmap for the pthreads port?

I try to build fontconfig with MinGW. One issue is its pthread [!] dependency. pthread is empty and depends on pthreads.

pthreads is empty already for non-windows targets. The rest of the portfile is written for MSVC only. And modern mingw-64, in particular MSYS2, doesn't need the pthreads port because it comes with its own winpthreads. Shall the port be set to empty also for mingw? Or shall the dependency from pthread to pthreads be filtered to non-mingw windows? (Does an empty port mean "system library in use"?)

cenit commented 3 years ago

pthread is just an alias to pthreads. So the best option is just to not install pthreads also if mingw is the target.

dg0yt commented 3 years ago

pthread is just an alias to pthreads.

This is what I said, in other words.

So the best option is just to not install pthreads also if mingw is the target.

Because you don't see an issue with the alias, I translate this as: "Make pthreads an empty port also if mingw is the target".

cenit commented 3 years ago

exactly, that's my suggestion