datapath-windows: Append flow attribute key
[cascardo/ovs.git] / INSTALL.md
index 8fae214..9dac430 100644 (file)
@@ -10,6 +10,7 @@ on a specific platform, please see one of these files:
   - [INSTALL.RHEL.md]
   - [INSTALL.XenServer.md]
   - [INSTALL.NetBSD.md]
+  - [INSTALL.Windows.md]
   - [INSTALL.DPDK.md]
 
 Build Requirements
@@ -28,6 +29,9 @@ you will need the following software:
         analysis and thread-safety checks.  For Ubuntu, there are
         nightly built packages available on clang's website.
 
+      * MSVC 2013.  See [INSTALL.Windows] for additional Windows build
+        instructions.
+
     While OVS may be compatible with other compilers, optimal
     support for atomic operations may be missing, making OVS very
     slow (see lib/ovs-atomic.h).
@@ -39,7 +43,7 @@ you will need the following software:
     libssl is installed, then Open vSwitch will automatically build
     with support for it.
 
-  - Python 2.x, for x >= 4.
+  - Python 2.7.
 
 On Linux, you may choose to compile the kernel module that comes with
 the Open vSwitch distribution or to use the kernel module built into
@@ -110,8 +114,6 @@ formats other than plain text, only if you have the following:
   - Perl.  Version 5.10.1 is known to work.  Earlier versions should
     also work.
 
-  - Python 2.x, for x >= 4.
-
 If you are going to extensively modify Open vSwitch, please consider
 installing the following to obtain better warnings:
 
@@ -190,6 +192,20 @@ To use 'clang' compiler:
 
       `% ./configure CC=clang`
 
+To supply special flags to the C compiler, specify them as CFLAGS on
+the configure command line.  If you want the default CFLAGS, which
+include "-g" to build debug symbols and "-O2" to enable optimizations,
+you must include them yourself.  For example, to build with the
+default CFLAGS plus "-mssse3", you might run configure as follows:
+
+      `% ./configure CFLAGS="-g -O2 -mssse3"`
+
+Note that these CFLAGS are not applied when building the Linux
+kernel module.  Custom CFLAGS for the kernel module are supplied
+using the EXTRA_CFLAGS variable when running make.  So, for example:
+
+      `% make EXTRA_CFLAGS="-Wno-error=date-time"
+
 To build the Linux kernel module, so that you can run the
 kernel-based switch, pass the location of the kernel build
 directory on --with-linux.  For example, to build for a running
@@ -253,6 +269,10 @@ Building the Sources
    For improved warnings if you installed "sparse" (see "Prerequisites"),
    add C=1 to the command line.
 
+   Some versions of Clang and ccache are not completely compatible.
+   If you see unusual warnings when you use both together, consider
+   disabling ccache for use with Clang.
+
 2. Consider running the testsuite.  Refer to "Running the Testsuite"
    below, for instructions.
 
@@ -579,7 +599,7 @@ report, plus any other information needed to reproduce the problem.
 Vagrant
 -------
 
-Requires: Vagrant and a compatible hypervisor
+Requires: Vagrant (version 1.7.0 or later) and a compatible hypervisor
 
 You must bootstrap and configure the sources (steps are in "Building
 and Installing Open vSwitch for Linux, FreeBSD or NetBSD" above) before
@@ -592,12 +612,32 @@ tree as found locally in a virtual machine using the following commands:
        vagrant ssh
 
 This will bring up w Fedora 20 VM by default, alternatively the
-`Vagrantfile.in` can be modified to use a different distribution box as
-base. Also, the VM can be reprovisioned at any time to recompile and
-reinstall OVS:
+`Vagrantfile` can be modified to use a different distribution box as
+base. Also, the VM can be reprovisioned at any time:
 
        vagrant provision
 
+OVS out-of-tree compilation environment can be set up with:
+
+       ./boot.sh
+       vagrant provision --provision-with configure_ovs,build_ovs
+
+This will set up an out-of-tree build environment in /home/vagrant/build.
+The source code can be found in /vagrant.  Out-of-tree build is preferred
+to work around limitations of the sync file systems.
+
+To recompile and reinstall OVS using RPM:
+
+       ./boot.sh
+       vagrant provision --provision-with configure_ovs,install_rpm
+
+Two provisioners are included to run system tests with the OVS kernel
+module or with a userspace datapath.  This tests are different from
+the self-tests mentioned above.  To run them:
+
+       ./boot.sh
+       vagrant provision --provision-with configure_ovs,test_ovs_kmod,test_ovs_system_userspace
+
 Continuous Integration with Travis-CI
 -------------------------------------