Message ID | 20200606091928.1351706-2-fontaine.fabrice@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | [1/2] package/edid-decode: use TARGET_CONFIGURE_OPTS | expand |
Hello Fabrice, On Sat, 6 Jun 2020 11:19:28 +0200, Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote: > Pass -std=c++11 to fix the following build failure with gcc <= 5: > > /tmp/instance-0/output-1/host/bin/mips64el-linux-g++ -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -g -DSHA="not available" -o edid-decode edid-decode.cpp parse-base-block.cpp parse-cta-block.cpp parse-displayid-block.cpp parse-ls-ext-block.cpp parse-di-ext-block.cpp parse-vtb-ext-block.cpp -lm > edid-decode.cpp: In member function 'std::__cxx11::string edid_state::dtd_type()': > edid-decode.cpp:192:17: error: 'to_string' is not a member of 'std' > unsigned len = std::to_string(preparse_total_dtds).length(); > ^ > > Fixes: > - http://autobuild.buildroot.org/results/71e4a50542c4551797f1d0404d27244612b427d7 > > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> > --- > package/edid-decode/edid-decode.mk | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/package/edid-decode/edid-decode.mk b/package/edid-decode/edid-decode.mk > index c41a9f2a76..7e463c02b1 100644 > --- a/package/edid-decode/edid-decode.mk > +++ b/package/edid-decode/edid-decode.mk > @@ -11,7 +11,7 @@ EDID_DECODE_LICENSE_FILES = LICENSE > > define EDID_DECODE_BUILD_CMDS > $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ > - CFLAGS="$(TARGET_CXXFLAGS)" > + CFLAGS="$(TARGET_CXXFLAGS) -std=c++11" > endef Thanks for taking care of the build failure, but with c++11 something like 'depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11' (or 4_7/4_8) missing? Regards, Peter > > define EDID_DECODE_INSTALL_TARGET_CMDS
Peter, All, On 2020-06-06 13:56 +0200, Peter Seiderer spake thusly: > On Sat, 6 Jun 2020 11:19:28 +0200, Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote: > > Pass -std=c++11 to fix the following build failure with gcc <= 5: [--SNIP--] > > diff --git a/package/edid-decode/edid-decode.mk b/package/edid-decode/edid-decode.mk > > index c41a9f2a76..7e463c02b1 100644 > > --- a/package/edid-decode/edid-decode.mk > > +++ b/package/edid-decode/edid-decode.mk > > @@ -11,7 +11,7 @@ EDID_DECODE_LICENSE_FILES = LICENSE > > > > define EDID_DECODE_BUILD_CMDS > > $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ > > - CFLAGS="$(TARGET_CXXFLAGS)" > > + CFLAGS="$(TARGET_CXXFLAGS) -std=c++11" > > endef > > Thanks for taking care of the build failure, but with c++11 something > like 'depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11' (or 4_7/4_8) missing? Parts of C++11 already landed as far back as gcc-4.3: https://gcc.gnu.org/projects/cxx-status.html#cxx11 So, to have full C++11 support, on eeds gcc-4.8 or later, but for some subsets of C++11, older versions may still be suitable. But the C++98 standard was the default one until gcc-6.1, which switched directly over to C++14 as the default. That's why the C++11 standard has to be explicitly requested. However, -std=c++11 is only recognised from gcc-4.7 onward; older versions only knew about -std=c++0x. So if this would also work for gcc <= 4.6, we 'd have to use =std=c++0x (which is still recognised up to gcc-9.x). Regards, Yann E. MORIN.
Hello Yann, On Sat, 6 Jun 2020 14:26:34 +0200, "Yann E. MORIN" <yann.morin.1998@free.fr> wrote: > Peter, All, > > On 2020-06-06 13:56 +0200, Peter Seiderer spake thusly: > > On Sat, 6 Jun 2020 11:19:28 +0200, Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote: > > > Pass -std=c++11 to fix the following build failure with gcc <= 5: > [--SNIP--] > > > diff --git a/package/edid-decode/edid-decode.mk b/package/edid-decode/edid-decode.mk > > > index c41a9f2a76..7e463c02b1 100644 > > > --- a/package/edid-decode/edid-decode.mk > > > +++ b/package/edid-decode/edid-decode.mk > > > @@ -11,7 +11,7 @@ EDID_DECODE_LICENSE_FILES = LICENSE > > > > > > define EDID_DECODE_BUILD_CMDS > > > $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ > > > - CFLAGS="$(TARGET_CXXFLAGS)" > > > + CFLAGS="$(TARGET_CXXFLAGS) -std=c++11" > > > endef > > > > Thanks for taking care of the build failure, but with c++11 something > > like 'depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11' (or 4_7/4_8) missing? > > Parts of C++11 already landed as far back as gcc-4.3: > https://gcc.gnu.org/projects/cxx-status.html#cxx11 > > So, to have full C++11 support, on eeds gcc-4.8 or later, but for some > subsets of C++11, older versions may still be suitable. > > But the C++98 standard was the default one until gcc-6.1, which switched > directly over to C++14 as the default. That's why the C++11 standard has > to be explicitly requested. > > However, -std=c++11 is only recognised from gcc-4.7 onward; older > versions only knew about -std=c++0x. So if this would also work for > gcc <= 4.6, we 'd have to use =std=c++0x (which is still recognised up > to gcc-9.x). Thanks for the detailed explanation! So for edid-decode the simplest solution is at-least-4.7 and std=c++11... Regards, Peter > > Regards, > Yann E. MORIN. >
diff --git a/package/edid-decode/edid-decode.mk b/package/edid-decode/edid-decode.mk index c41a9f2a76..7e463c02b1 100644 --- a/package/edid-decode/edid-decode.mk +++ b/package/edid-decode/edid-decode.mk @@ -11,7 +11,7 @@ EDID_DECODE_LICENSE_FILES = LICENSE define EDID_DECODE_BUILD_CMDS $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ - CFLAGS="$(TARGET_CXXFLAGS)" + CFLAGS="$(TARGET_CXXFLAGS) -std=c++11" endef define EDID_DECODE_INSTALL_TARGET_CMDS
Pass -std=c++11 to fix the following build failure with gcc <= 5: /tmp/instance-0/output-1/host/bin/mips64el-linux-g++ -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -g -DSHA="not available" -o edid-decode edid-decode.cpp parse-base-block.cpp parse-cta-block.cpp parse-displayid-block.cpp parse-ls-ext-block.cpp parse-di-ext-block.cpp parse-vtb-ext-block.cpp -lm edid-decode.cpp: In member function 'std::__cxx11::string edid_state::dtd_type()': edid-decode.cpp:192:17: error: 'to_string' is not a member of 'std' unsigned len = std::to_string(preparse_total_dtds).length(); ^ Fixes: - http://autobuild.buildroot.org/results/71e4a50542c4551797f1d0404d27244612b427d7 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> --- package/edid-decode/edid-decode.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)