cccl: Ability to enable compiler optimization.
authorGurucharan Shetty <gshetty@nicira.com>
Thu, 28 Aug 2014 16:25:56 +0000 (09:25 -0700)
committerGurucharan Shetty <gshetty@nicira.com>
Fri, 5 Sep 2014 01:38:26 +0000 (18:38 -0700)
MSVC has a '-O2' compiler optimization flag which makes code run
fast and is the recommended option for released code. For e.g.,
running "./tests/ovstest.exe test-cmap benchmark 1000000 3 1"
shows a 3x improvement for some cmap micro-benchmarks.

In the Visual Studio world, there is a concept of "release" build
(fast code, harder to debug) and a "debug" build (easier to debug).
The IDE provides this option and the IDE users expect something similar
for command line build.

So this commit, introduces a "--with-debug" configure option for Windows
and does not use '-O2' as a compiler option when specified. This can
be extended further if there are more compiler options that distinguish
a "release" build vs "debug" build.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Saurabh Shah <ssaurabh@vmware.com>
INSTALL.Windows
Makefile.am
build-aux/cccl
m4/openvswitch.m4

index abe665d..24d0bb7 100644 (file)
@@ -63,6 +63,10 @@ or from a distribution tar ball.
     --prefix="C:/openvswitch/usr" --localstatedir="C:/openvswitch/var" \
     --sysconfdir="C:/openvswitch/etc" --with-pthread="C:/pthread"
 
+    By default, the above enables compiler optimization for fast code.
+    For default compiler optimization, pass the "--with-debug" configure
+    option.
+
 * Run make for the ported executables in the top source directory, e.g.:
 
   % make
index 3c2ae89..161936d 100644 (file)
@@ -16,6 +16,7 @@ if WIN32
 AM_CPPFLAGS += -I $(top_srcdir)/include/windows
 AM_CPPFLAGS += -I $(top_srcdir)/datapath-windows/include
 AM_CPPFLAGS += $(PTHREAD_INCLUDES)
+AM_CPPFLAGS += $(MSVC_CFLAGS)
 AM_LDFLAGS += $(PTHREAD_LDFLAGS)
 endif
 
index c18629a..1a06e38 100644 (file)
@@ -89,6 +89,14 @@ EOF
         linkopt="$linkopt ${slash}DEBUG"
         ;;
 
+    -O0)
+        clopt="$clopt ${slash}Ot"
+        ;;
+
+    -O2)
+        clopt="$clopt ${slash}O2"
+        ;;
+
     -L*)
         path=`echo "$1" | sed 's/-L//'`
         linkopt="$linkopt ${slash}LIBPATH:$path"
index e918f25..d54483b 100644 (file)
@@ -86,6 +86,17 @@ AC_DEFUN([OVS_CHECK_WIN32],
             AC_MSG_ERROR([pthread directory not specified])
          ]
       )
+      AC_ARG_WITH([debug],
+         [AS_HELP_STRING([--with-debug],
+            [Build without compiler optimizations])],
+         [
+            MSVC_CFLAGS="-O0"
+            AC_SUBST([MSVC_CFLAGS])
+         ], [
+            MSVC_CFLAGS="-O2"
+            AC_SUBST([MSVC_CFLAGS])
+         ]
+      )
 
       AC_DEFINE([WIN32], [1], [Define to 1 if building on WIN32.])
       AH_BOTTOM([#ifdef WIN32