Commit Graph

265 Commits

Author SHA1 Message Date
Andrey Semashev
65b9c99a67 Add explicit type casts for arguments of Interlocked* intrinsics.
This allows to use any compatible types with INTERLOCKED_* macros, not just
the ones strictly matching the particular implementation of the intrinsics.

In particular, this fixes compilation for Cygwin64, which is an LP64 target,
meaning that long is 64-bit and _Interlocked* intrinsics use a different
integer type for its 32-bit integer arguments.

Additionally, enable use of intrin.h on Cygwin (32-bit).

The test has been updated to explicitly use 32-bit integer arguments.
2019-07-10 14:44:13 +03:00
Andrey Semashev
f2789c82a4 Added a basic test for interlocked.hpp. 2019-07-10 01:41:55 +03:00
Andrey Semashev
bb91190323 Disable _Interlocked*Pointer intrinsics on x86 for MSVC-12 and below.
There is a macro conflict for _InterlockedExchangePointer between intrin.h from
MSVC-12 and winnt.h from Windows SDK 8.1, which causes compilation failures.
2019-07-10 01:06:34 +03:00
Andrey Semashev
bfb9932296 Use interlocked intrinsics for pointers more universally on more recent MSVC.
_Interlocked*Pointer intrinsics are defined for all target architectures on
MSVC-12 and later. On MSVC-11 they are also defined for ARM.
2019-05-31 18:24:35 +03:00
Andrey Semashev
52b44afc06 Use _Interlocked*Pointer intrinsics on ARM64 targets.
Fixes https://github.com/boostorg/winapi/issues/76.
Closes https://github.com/boostorg/winapi/pull/77.

Also, use consistent call convention attribute across _Interlocked*
intrinsics when they are declared in the header.
2019-05-31 17:32:57 +03:00
Andrey Semashev
51c3244e02 Reverted CXX/CXXFLAGS cleanup, changed VS2013 images to VS2015.
This is another attempt to fix Appveyor CI bootstrap failures.
2019-04-14 18:32:36 +03:00
Andrey Semashev
97f5be1fad Reset CXX and CXXFLAGS before bootstrapping to avoid confusing bootstrap scripts. 2019-04-13 18:03:12 +03:00
Andrey Semashev
1c890b7c1a Enabled multiple git fetch jobs while executing depinst in CI. Increased the number of jobs to 8. 2019-01-15 14:08:52 +03:00
Andrey Semashev
ac2b9e6ad6 Another attempt to silence MinGW gcc 5.3 warnings about unused variables. 2019-01-04 19:00:09 +03:00
Andrey Semashev
f427298368 Revert "Disable gcc warnings about unused variables."
This reverts commit a073e63cd3.

The pragmas didn't help to silence the warnings on MinGW gcc 5.3.
2019-01-04 18:55:09 +03:00
Andrey Semashev
a073e63cd3 Disable gcc warnings about unused variables.
This warning is not supposed to appear for global constants, however gcc 5.3
from MinGW spams this warning, at least for the invalid_handle_value constant.
Therefore we disable this warning for all constants declared in Boost.WinAPI.
2019-01-04 00:33:52 +03:00
Andrey Semashev
1ebefb6bf9 Use the actual number of logical CPUs for the number of CI build/test jobs. 2019-01-03 23:28:12 +03:00
Andrey Semashev
942a0ec257 Re-added manual checkout of libs/config in CI as Boost.Build depends on it. 2018-12-20 20:48:06 +03:00
Andrey Semashev
364f8f6712 Added tools/boost_install and libs/headers manual checkout to CI jobs. 2018-12-18 22:15:57 +03:00
Andrey Semashev
4246c8987a Added an experimental partial CMakeLists.txt for dependency tracking in CMake projects. 2018-12-18 19:24:12 +03:00
Andrey Semashev
b7118001c8 Corrected PATH composition for MinGW-w64 CI jobs. 2018-12-14 23:15:48 +03:00
Andrey Semashev
b5d54aa6e6 Added MinGW-w64 gcc 7 and gcc 6 32-bit CI jobs. 2018-12-13 00:15:57 +03:00
Andrey Semashev
95884f6932 Changed http to https in URLs in readme. 2018-11-01 20:39:26 +03:00
Andrey Semashev
cb0f6ed2a5 Removed volatile qualifiers for WinCE older than 6.0. 2018-08-13 20:05:34 +03:00
Andrey Semashev
bf9dfd9f21 Added support for clang-cl, improved support for WinCE and MSVC 8 and 9.
This commit incorporates some of the changes made to
boost/smart_ptr/detail/sp_interlocked.hpp by Peter Dimov, namely:

- Define an internal config macro BOOST_INTERLOCKED_HAS_INTRIN_H when
  the compiler is known to have a useful intrin.h header.
- Use this macro to select the common implementation based on intrin.h.
- Removed MinGW-w64 branch of implementation as it is now covered by
  the common branch based on intrin.h.
- Added detection of clang-cl, a new MSVC pretender. The compiler is
  assumed to have support for intrin.h.
- Added a separate branch for Windows CE >=6, with differently named
  interlocked functions. No way to test this and no idea if this is
  correct.
- For MSVC 8 and 9 don't use intrin.h as it reportedly conflicts
  with <utility>. On these compilers we will declare the intrinsics
  ourselves.
2018-08-13 18:44:29 +03:00
Andrey Semashev
fee1bec7f9 Marked OVERLAPPED member struct with __extension__ to silence gcc warnings. 2018-08-08 20:54:02 +03:00
Andrey Semashev
3f56c2348f Removed the deprecated definitions of calling convention macros.
These macros conflict with the same named macros from Windows SDK and generate
warnings. Downstream libraries were ported to Boost.WinAPI replacement macros.
2018-04-18 07:39:09 +03:00
Andrey Semashev
1b912fa070 Silenced gcc warnings about using long long in C++03. 2018-03-26 21:51:03 +03:00
Andrey Semashev
a9bc4e753e Added an extension markup to silence gcc warnings about nameless struct. 2018-03-23 21:28:48 +03:00
Andrey Semashev
fb2774ee66 Updated copyright years. 2018-03-18 01:42:55 +03:00
Andrey Semashev
9fcdbe2135 Added workerounds for Windows SDKs shipped with MSVC-7.1 and 8. 2018-03-17 21:29:28 +03:00
Andrey Semashev
169d0ad34b Added new error codes and made error_codes_abi test auto-generated. 2018-03-17 21:07:11 +03:00
Andrey Semashev
97adb533ae Don't enable bcrypt on MinGW-w64 regardless of the target Windows version. This API is only available since Vista. 2018-03-16 23:00:47 +03:00
Andrey Semashev
0156a685c7 Added documentation about BOOST_WINAPI_IS_CYGWIN. 2018-03-14 14:16:08 +03:00
Andrey Semashev
b55c1ca81d Added new macros to winapi_info output. 2018-03-14 14:06:07 +03:00
Andrey Semashev
2fe56a3b6d Added workarounds for MSVC-7.1. 2018-03-14 13:54:32 +03:00
Andrey Semashev
d626055575 Updates for compatibility with Cygwin. 2018-03-11 19:40:41 +03:00
Andrey Semashev
20b8d76929 Only test NTSTATUS for Desktop partition on Windows SDKs prior to 10. 2018-03-11 04:33:22 +03:00
Andrey Semashev
3ea45ad0e1 Disabled 64-bit builds in MSVC-11 UWP jobs. 2018-03-11 04:30:26 +03:00
Andrey Semashev
5e5a9c8252 Reverted addition of ntdef.h include as it causes macro clashes with winnt.h. 2018-03-11 03:57:02 +03:00
Andrey Semashev
9fbba91e44 Fixed compilation. 2018-03-11 03:38:27 +03:00
Andrey Semashev
2f3fa36ba1 Updated API partition checks. 2018-03-11 03:30:54 +03:00
Andrey Semashev
0c94a4a224 Added an include to bring in NTSTATUS from Windows SDK. 2018-03-11 03:04:12 +03:00
Andrey Semashev
f6d4772e62 Added missing preprocessor checks in apc_abi test. 2018-03-11 02:47:52 +03:00
Andrey Semashev
e64e4d646a Added WINAPI and NTAPI macros. Deprecated until downstream libraries update.
These macros may clash with macros defined by Windows SDK and generate warnings.
Downstream libraries need to be ported to Boost.WinAPI replacements and then
these definitions can be removed.
2018-03-11 02:41:06 +03:00
Andrey Semashev
5a8d525e84 Renamed calling conventions macros. 2018-03-11 02:05:57 +03:00
Andrey Semashev
a513f8ec72 Added workarounds for MinGW to the error_code_abi test. 2018-03-11 01:47:36 +03:00
Andrey Semashev
8abe2f82d9 Added a configuration step to detect the Platform SDKs that don't provide BCrypt API. 2018-03-11 01:46:41 +03:00
Andrey Semashev
d2490dcb19 Fixed tokens after #endifs. 2018-03-11 00:45:09 +03:00
Andrey Semashev
4b69ca219a Enable thread_pool_abi test only for Win2000 and later. 2018-03-11 00:38:46 +03:00
Andrey Semashev
936447c9f7 Updated PROCESS_ALL_ACCESS definition for pre-Vista targets. 2018-03-11 00:33:13 +03:00
Andrey Semashev
d8c8e71788 Disabled 32 or 64-bit builds for jobs that don't support them. 2018-03-11 00:22:49 +03:00
Andrey Semashev
c830a9a898 Added missing API partition checks to file_management_abi test. 2018-03-10 23:51:38 +03:00
Andrey Semashev
906e611d17 Fixed dll_abi test on non-desktop/system API partitions. 2018-03-10 23:46:09 +03:00
Andrey Semashev
b6d038998a Removed the obsolete workaround for MinGW buggy declarations of crypt functions. 2018-03-10 23:44:09 +03:00