On Sun, Jul 30, 2017 at 10:54 PM, Ben Pfaff <[email protected]> wrote:
> This should help address a recurring problem.
>
> Signed-off-by: Ben Pfaff <[email protected]>
> ---
>  .travis.yml                     |  1 +
>  Makefile.am                     |  1 +
>  configure.ac                    |  2 ++
>  include/openvswitch/automake.mk | 14 ++++++++++++++
>  m4/openvswitch.m4               | 21 +++++++++++++++++++++
>  5 files changed, 39 insertions(+)

Why does this patch depend on libboost?  It looks like it's only used
when building a test C++ program in configure.  We could build a test
C++ program without the dependency, right?

>
> diff --git a/.travis.yml b/.travis.yml
> index 9d0fd44281e8..5d708498387e 100644
> --- a/.travis.yml
> +++ b/.travis.yml
> @@ -16,6 +16,7 @@ addons:
>        - libjemalloc1
>        - libjemalloc-dev
>        - python-sphinx
> +      - libboost-dev
>
>  before_install: ./.travis/${TRAVIS_OS_NAME}-prepare.sh
>
> diff --git a/Makefile.am b/Makefile.am
> index 9679379defef..373ef6e9189f 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -108,6 +108,7 @@ MAN_ROOTS =
>  noinst_DATA =
>  noinst_HEADERS =
>  lib_LTLIBRARIES =
> +noinst_LTLIBRARIES =
>  noinst_man_MANS =
>  noinst_PROGRAMS =
>  noinst_SCRIPTS =
> diff --git a/configure.ac b/configure.ac
> index 194c4b92ee34..093b6ffed50e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -23,6 +23,7 @@ AM_INIT_AUTOMAKE([tar-pax])
>
>  AC_PROG_CC_C99
>  AM_PROG_CC_C_O
> +AC_PROG_CXX
>  AC_PROG_CPP
>  AC_PROG_MKDIR_P
>  AC_PROG_FGREP
> @@ -135,6 +136,7 @@ OVS_CHECK_POSIX_AIO
>  OVS_CHECK_PTHREAD_SET_NAME
>  OVS_CHECK_LINUX_HOST
>  OVS_LIBTOOL_VERSIONS
> +OVS_CHECK_CXX
>  AX_FUNC_POSIX_MEMALIGN
>
>  OVS_CHECK_INCLUDE_NEXT([stdio.h string.h])
> diff --git a/include/openvswitch/automake.mk b/include/openvswitch/automake.mk
> index 699d9d74ecd0..74b31acfa66b 100644
> --- a/include/openvswitch/automake.mk
> +++ b/include/openvswitch/automake.mk
> @@ -30,3 +30,17 @@ openvswitchinclude_HEADERS = \
>         include/openvswitch/version.h \
>         include/openvswitch/vconn.h \
>         include/openvswitch/vlog.h
> +
> +if HAVE_CXX
> +# OVS does not use C++ itself, but it provides public header files
> +# that a C++ compiler should accept, so when --enable-Werror is in
> +# effect and a C++ compiler is available, we build a C++ source file
> +# that #includes all the public headers, as a way to ensure that they
> +# are acceptable as C++.
> +noinst_LTLIBRARIES += include/openvswitch/libcxxtest.la
> +nodist_include_openvswitch_libcxxtest_la_SOURCES = 
> include/openvswitch/cxxtest.cc
> +include/openvswitch/cxxtest.cc: include/openvswitch/automake.mk
> +       $(AM_V_GEN)for header in $(openvswitchinclude_HEADERS); do      \
> +         echo $$header;                                                \
> +       done | sed 's,^include/\(.*\)$$,#include <\1>,' > $@
> +endif
> diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4
> index 648750ab5ad9..8a15a4a77dc2 100644
> --- a/m4/openvswitch.m4
> +++ b/m4/openvswitch.m4
> @@ -620,3 +620,24 @@ AC_DEFUN([OVS_LIBTOOL_VERSIONS],
>    AC_MSG_RESULT([libX-$OVS_MAJOR.$OVS_MINOR.so.$LT_CURRENT.0.$OVS_MICRO)])
>    AC_SUBST(OVS_LTINFO)
>      ])
> +
> +dnl OVS does not use C++ itself, but it provides public header files
> +dnl that a C++ compiler should accept, so when --enable-Werror is in
> +dnl effect and a C++ compiler is available, we enable building a C++
> +dnl source file that #includes all the public headers, as a way to
> +dnl ensure that they are acceptable as C++.
> +AC_DEFUN([OVS_CHECK_CXX],
> +  [AC_REQUIRE([AC_PROG_CXX])
> +   AC_REQUIRE([OVS_ENABLE_WERROR])
> +   if test $enable_Werror = yes; then
> +     AC_LANG_PUSH([C++])
> +     AC_COMPILE_IFELSE(
> +       [AC_LANG_PROGRAM([[#include <boost/static_assert.hpp>
> +]],)],
> +       [enable_cxx=:],
> +       [enable_cxx=false])
> +     AC_LANG_POP([C++])
> +   else
> +     enable_cxx=false
> +   fi
> +   AM_CONDITIONAL([HAVE_CXX], [$enable_cxx])])
> --
> 2.10.2
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev



-- 
Russell Bryant
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to