Unify the CXX feature tests for C++11 support that is required for SWR, clover, and mesa/st/tests.
Instead of using a custom made test (SWR) or testing for the gcc version (clover), use ax_check_compile_flag.m4, to test whether the compiler supports -std=c++11. If support for this flag is missing fail configuration if clover or swr is requested, and disable compiling and running the mesa/st tests. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102665 --- configure.ac | 18 ++++++++++++------ src/gallium/drivers/swr/Makefile.am | 4 ++-- src/gallium/state_trackers/clover/Makefile.am | 6 +++--- src/mesa/state_tracker/tests/Makefile.am | 7 ++++++- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/configure.ac b/configure.ac index cfc97d9f06..aaa363e99f 100644 --- a/configure.ac +++ b/configure.ac @@ -301,8 +301,15 @@ AX_CHECK_COMPILE_FLAG([-Wall], [CXXFLAGS="$CXXFL AX_CHECK_COMPILE_FLAG([-fno-math-errno], [CXXFLAGS="$CXXFLAGS -fno-math-errno"]) AX_CHECK_COMPILE_FLAG([-fno-trapping-math], [CXXFLAGS="$CXXFLAGS -fno-trapping-math"]) AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [VISIBILITY_CXXFLAGS="-fvisibility=hidden"]) +AX_CHECK_COMPILE_FLAG([-std=c++11], [have_cxx11=yes]) AC_LANG_POP([C++]) +if test "x$have_cxx11" = "xyes"; then + CXX11_FLAGS=-std=c++11 + AC_SUBST([CXX11_FLAGS]) +fi +AM_CONDITIONAL(HAVE_STD_CXX11, test "x$have_cxx11" = "xyes") + # Flags to help ensure that certain portions of the code -- and only those # portions -- can be built with MSVC: # - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and @@ -2248,8 +2255,8 @@ if test "x$enable_opencl" = xyes; then AC_MSG_ERROR([cannot enable OpenCL without Gallium]) fi - if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then - AC_MSG_ERROR([gcc >= 4.7 is required to build clover]) + if test "x$have_cxx11" != "xyes"; then + AC_MSG_ERROR([A compiler supporting -std=c++11 is required to build clover]) fi if test "x$have_libclc" = xno; then @@ -2532,10 +2539,9 @@ if test -n "$with_gallium_drivers"; then xswr) llvm_require_version $LLVM_REQUIRED_SWR "swr" - swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \ - ",-std=c++11" \ - SWR_CXX11_CXXFLAGS - AC_SUBST([SWR_CXX11_CXXFLAGS]) + if test "x$have_cxx11" != "xyes"; then + AC_MSG_ERROR([A compiler supporting -std=c++11 is required to build swr]) + fi swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \ ",-target-cpu=sandybridge,-mavx,-march=core-avx,-tp=sandybridge" \ diff --git a/src/gallium/drivers/swr/Makefile.am b/src/gallium/drivers/swr/Makefile.am index b20f128bd2..97a0cfb289 100644 --- a/src/gallium/drivers/swr/Makefile.am +++ b/src/gallium/drivers/swr/Makefile.am @@ -22,7 +22,7 @@ include Makefile.sources include $(top_srcdir)/src/gallium/Automake.inc -AM_CXXFLAGS = $(GALLIUM_DRIVER_CFLAGS) $(SWR_CXX11_CXXFLAGS) +AM_CXXFLAGS = $(GALLIUM_DRIVER_CFLAGS) $(CXX11_FLAGS) noinst_LTLIBRARIES = libmesaswr.la @@ -39,7 +39,7 @@ COMMON_CXXFLAGS = \ -fno-strict-aliasing \ $(GALLIUM_DRIVER_CFLAGS) \ $(LLVM_CXXFLAGS) \ - $(SWR_CXX11_CXXFLAGS) \ + $(CXX11_FLAGS) \ -I$(builddir)/rasterizer/codegen \ -I$(builddir)/rasterizer/core \ -I$(builddir)/rasterizer/jitter \ diff --git a/src/gallium/state_trackers/clover/Makefile.am b/src/gallium/state_trackers/clover/Makefile.am index 321393536d..fb70fc0477 100644 --- a/src/gallium/state_trackers/clover/Makefile.am +++ b/src/gallium/state_trackers/clover/Makefile.am @@ -31,14 +31,14 @@ endif noinst_LTLIBRARIES = libclover.la libcltgsi.la libclllvm.la libcltgsi_la_CXXFLAGS = \ - -std=c++11 \ + $(CXX11_FLAGS) \ $(CLOVER_STD_OVERRIDE) \ $(VISIBILITY_CXXFLAGS) libcltgsi_la_SOURCES = $(TGSI_SOURCES) libclllvm_la_CXXFLAGS = \ - -std=c++11 \ + $(CXX11_FLAGS) \ $(VISIBILITY_CXXFLAGS) \ $(LLVM_CXXFLAGS) \ $(CLOVER_STD_OVERRIDE) \ @@ -51,7 +51,7 @@ libclllvm_la_CXXFLAGS = \ libclllvm_la_SOURCES = $(LLVM_SOURCES) libclover_la_CXXFLAGS = \ - -std=c++11 \ + $(CXX11_FLAGS) \ $(CLOVER_STD_OVERRIDE) \ $(VISIBILITY_CXXFLAGS) diff --git a/src/mesa/state_tracker/tests/Makefile.am b/src/mesa/state_tracker/tests/Makefile.am index f32957608e..61087c0aca 100644 --- a/src/mesa/state_tracker/tests/Makefile.am +++ b/src/mesa/state_tracker/tests/Makefile.am @@ -1,3 +1,6 @@ +# The tests require c++11 support +if HAVE_STD_CXX11 + include $(top_srcdir)/src/gallium/Automake.inc AM_CFLAGS = \ @@ -5,7 +8,7 @@ AM_CFLAGS = \ AM_CXXFLAGS = \ $(GALLIUM_DRIVER_CXXFLAGS) \ - -std=c++11 + ${CXX11_FLAGS} AM_CPPFLAGS = \ -I$(top_srcdir)/src/gtest/include \ @@ -32,3 +35,5 @@ st_renumerate_test_LDADD = \ $(top_builddir)/src/gtest/libgtest.la \ $(GALLIUM_COMMON_LIB_DEPS) \ $(LLVM_LIBS) + +endif -- 2.13.6 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev