This allows FreeBSD to successfully build with BUILD_TESTING enabled. Currently,
only 3/184 tests fail:
13 - TestLibraryLoadLibrary (Failed)
14 - TestLibraryGetProcAddress (Failed)
15 - TestLibraryGetModuleFileName (Failed)
These failures are probably due to a lack of GetModuleFileNameA implementation
on FreeBSD.
winpr is now always build as single library.
The build option MONOLITHIC_BUILD doesn't influence this behavior anymore.
The only exception is winpr-makecert-tool which is still build as extra
library.
This obsoletes complex_libraries for winpr.
- Complete implementation including recursion support
- Added an intensive ctest (TestSynchCritical)
- Struct members are used exactly as Windows does it internally:
LockCount starts at -1, RecursionCount at 0
- Same performance optimizations as internally on Windows:
- Fast lock acquisition path using CAS -> SpinCount -> wait
- SpinCount automatically disabled on uniprocessor systems
- On Linux SpinCount is disabled because it provided no advantage over NPTL/futex in all tests
Support for CRITICAL_SECTION's DebugInfo is not yet included (but trivial to add).