Bug 109131 - cc1plus: error: unrecognized command line option "-std=c++11"
Summary: cc1plus: error: unrecognized command line option "-std=c++11"
Status: NEW
Alias: None
Product: Mesa
Classification: Unclassified
Component: Mesa core (show other bugs)
Version: git
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: mesa-dev
QA Contact: mesa-dev
URL:
Whiteboard:
Keywords: bisected, regression
Depends on:
Blocks:
 
Reported: 2018-12-22 07:12 UTC by Vinson Lee
Modified: 2019-01-11 12:07 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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 :-)


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.