Bug 109131

Summary: cc1plus: error: unrecognized command line option "-std=c++11"
Product: Mesa Reporter: Vinson Lee <vlee>
Component: Mesa coreAssignee: mesa-dev
Status: RESOLVED INVALID QA Contact: mesa-dev
Severity: normal    
Priority: medium CC: baker.dylan.c, emil.l.velikov
Version: gitKeywords: bisected, regression
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Vinson Lee 2018-12-22 07:12:23 UTC
CXX    gallivm/lp_bld_debug.lo
cc1plus: error: unrecognized command line option "-std=c++11"

commit 12187550f9c248e72ed8848e96da8f29f1e3a713
Author: Emil Velikov <emil.velikov@collabora.com>
Date:   Thu Dec 13 11:56:40 2018 +0000

    configure: add CXX11_CXXFLAGS to LLVM_CXXFLAGS
    
    Seemingly with LLVM7 and GCC 5.0, the former won't properly advertise
    -std=c++11 and the latter will choke.
    
    dd this temporary workaround, otherwise we'll get errors like:
    
    In file included from /usr/include/c++/5/type_traits:35:0,
                     from /usr/lib/llvm-7/include/llvm/Support/type_traits.h:18,
                     from /usr/lib/llvm-7/include/llvm/ADT/Optional.h:22,
                     from /usr/lib/llvm-7/include/llvm/ADT/STLExtras.h:20,
                     from /usr/lib/llvm-7/include/llvm/ADT/StringRef.h:13,
                     from /usr/lib/llvm-7/include/llvm/Target/TargetMachine.h:17,
                     from ../../../src/amd/common/ac_llvm_helper.cpp:36:
    /usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
    
    Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
    Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Comment 1 Dylan Baker 2018-12-22 21:03:18 UTC
what compiler and what version? It wouldn't surprise me if old versions of gcc (Say 4.2) doesn't actually support C++11.
Comment 2 Dylan Baker 2018-12-22 21:25:13 UTC
Actually, it looks like std=c++11 was added in GCC 4.7, and before that you had to use std=c++0x. Clang added support for std=c++11 it looks like.

https://gcc.gnu.org/projects/cxx-status.html#cxx11
https://clang.llvm.org/cxx_status.html
Comment 3 Gert Wollny 2018-12-23 08:30:22 UTC
Given the patch in question explicitly adds CXX11_CXXFLAGS in a section that is only taken into account when llvm is enabled the llvm version would also be relevant. 

AFAIR the last version before llvm-7 that didn't advertise -std=c++11 was  something like llvm-3.9, and there was a patch proposed by Emil that would bump the minimum required version to 5.0 (it didn't land yet, I guess because there was some andorid WIP patch in the series). With that support for -std=c++11 would become a requirement for builds that enable llvm.
Comment 4 Emil Velikov 2019-01-11 12:07:54 UTC
AFAICT we probe if the compiler supports -std... before using it.
If somehow that's not the case we ought to fix that, or fallback to one that owrks.

Patches welcome :-)
Comment 5 Dylan Baker 2019-02-28 18:59:27 UTC
I haven't seen any other reports of this, so I'm going to remove it rom the 19.0 blocker. I don't think it's worth it to block the release.
Comment 6 Timothy Arceri 2019-05-07 05:30:15 UTC
autotools builds have been removed from Mesa. Closing.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.