diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2021-11-01 22:37:06 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2021-11-01 23:17:15 +0300 |
commit | 0b9ad5bc9ae331c7b4bb4564d8aa3de6a9275189 (patch) | |
tree | 541c4e57aff7f962c2ad86c74bd262ab4a8b0ed2 /README_win32.txt | |
parent | 7a98b9e7e9f12408037121516049f7a092b8699d (diff) | |
download | libatomic_ops-0b9ad5bc9ae331c7b4bb4564d8aa3de6a9275189.tar.gz |
Move all README and license files to the top folder
The rationale: all relative links (in README.md) should remain valid
after docs installation.
* doc/LICENSING.txt: Move to the base folder.
* doc/README_details.txt: Likewise.
* doc/README_malloc.txt: Likewise.
* doc/README_stack.txt: Likewise.
* doc/README_win32.txt: Likewise.
* Makefile.am (SUBDIRS): Remove doc item.
* Makefile.am [ENABLE_DOCS] (dist_doc_DATA): Add comment and items from
doc/Makefile.am.
* README.md (Overview): Replace reference to doc with the links to the
existing README_*.txt files (except for README_win32.txt).
* README.md (Installation and Usage): Add link to LICENSING.txt.
* README.md (Platform Specific Notes): Add link to README_win32.txt.
* README.md (Copyright & Warranty): Adjust link to LICENSING.txt (after
moving to the base folder).
* configure.ac (AC_CONFIG_FILES): Remove doc/Makefile item.
* doc/Makefile.am: Remove file.
* src/atomic_ops_malloc.h: Update path to LICENSING.txt in comment.
Diffstat (limited to 'README_win32.txt')
-rw-r--r-- | README_win32.txt | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/README_win32.txt b/README_win32.txt new file mode 100644 index 0000000..174de57 --- /dev/null +++ b/README_win32.txt @@ -0,0 +1,41 @@ +Most of the atomic_ops functionality is available under Win32 with +the Microsoft tools, but the build process is more primitive than that on +Linux/Unix platforms. + +To build: +1) Go to the src directory in the distribution. +2) Make sure the Microsoft command-line tools (e.g. nmake) are available. +3) Run "nmake -f Makefile.msft check". This should build libatomic_ops_gpl.lib +and run some tests. +4) To compile applications, you will need to retain or copy the following +pieces from the resulting src directory contents: + "atomic_ops.h" - Header file defining low-level primitives. This + includes files from the following folder. + "atomic_ops" - Subdirectory containing implementation header files. + "atomic_ops_stack.h" - Header file describing almost lock-free stack. + "atomic_ops_malloc.h" - Header file describing almost lock-free malloc. + "libatomic_ops_gpl.lib" - Library containing implementation of the + above two (plus AO_pause() defined in atomic_ops.c). + The atomic_ops.h implementation is entirely in the + header files in Win32. + +Note that the library is covered by the GNU General Public License, while +the top 2 of these pieces allow use in proprietary code. + +There are several macros a client could use to configure the build with the +Microsoft tools (except for AO_CMPXCHG16B_AVAILABLE one, others should be +rarely needed in practice): +* AO_ASM_X64_AVAILABLE - inline assembly available (only x86_64) +* AO_ASSUME_VISTA - assume Windows Server 2003, Vista or later target (only + x86, implied if Visual Studio 2015 or older) +* AO_CMPXCHG16B_AVAILABLE - assume target is not old AMD Opteron chip (only + x86_64) +* AO_OLD_STYLE_INTERLOCKED_COMPARE_EXCHANGE - assume ancient MS VS Win32 + headers (only arm and x86) +* AO_PREFER_GENERALIZED - prefer generalized definitions to direct + assembly-based ones +* AO_UNIPROCESSOR - assume single-core target (only arm) +* AO_USE_INTERLOCKED_INTRINSICS - assume Win32 _Interlocked* primitives + available as intrinsics (only arm) +* AO_USE_PENTIUM4_INSTRS - use mfence instruction instead of xchg (only x86, + implied if SSE2 is available) |