From: Gurucharan Shetty Date: Thu, 28 Aug 2014 16:25:56 +0000 (-0700) Subject: cccl: Ability to enable compiler optimization. X-Git-Tag: v2.4.0~1494 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fovs.git;a=commitdiff_plain;h=b0e1bce5d6528d71605f0d75e47f5f14d4b04f0d cccl: Ability to enable compiler optimization. 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 Acked-by: Saurabh Shah --- diff --git a/INSTALL.Windows b/INSTALL.Windows index abe665df6..24d0bb776 100644 --- a/INSTALL.Windows +++ b/INSTALL.Windows @@ -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 diff --git a/Makefile.am b/Makefile.am index 3c2ae89aa..161936d64 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/build-aux/cccl b/build-aux/cccl index c18629af6..1a06e3878 100644 --- a/build-aux/cccl +++ b/build-aux/cccl @@ -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" diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 index e918f2555..d54483b2b 100644 --- a/m4/openvswitch.m4 +++ b/m4/openvswitch.m4 @@ -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