summaryrefslogtreecommitdiff
path: root/README_win32.txt
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2021-11-01 22:37:06 +0300
committerIvan Maidanski <ivmai@mail.ru>2021-11-01 23:17:15 +0300
commit0b9ad5bc9ae331c7b4bb4564d8aa3de6a9275189 (patch)
tree541c4e57aff7f962c2ad86c74bd262ab4a8b0ed2 /README_win32.txt
parent7a98b9e7e9f12408037121516049f7a092b8699d (diff)
downloadlibatomic_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.txt41
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)