> -----Original Message----- > From: Richard Biener <richard.guent...@gmail.com> > Sent: Tuesday, July 8, 2025 14:22 > To: Robert Dubner <rdub...@symas.com> > Cc: Rainer Orth <r...@cebitec.uni-bielefeld.de>; gcc-patches@gcc.gnu.org > Subject: Re: [PATCH] cobol: Implement CXXFLAGS_FOR_COBOL. > > On Tue, Jul 8, 2025 at 12:46 AM Robert Dubner <rdub...@symas.com> wrote: > > > > > > > > > -----Original Message----- > > > From: Rainer Orth <r...@cebitec.uni-bielefeld.de> > > > Sent: Monday, July 7, 2025 18:08 > > > To: Robert Dubner <rdub...@symas.com> > > > Cc: gcc-patches@gcc.gnu.org > > > Subject: Re: [PATCH] cobol: Implement CXXFLAGS_FOR_COBOL. > > > > > > Hi Robert, > > > > > > > I have elsewhere described my frustration in trying, during > > development, > > > > to set more stringent error-finding and warning-generating > compilation > > > > options. But they seem to require the use of CXXFLAGS, which in at > > > least > > > > the case of trying to set -std=c++14, causes libcody's compilation > to > > > > fail, since it wants, specifically c++11. > > > > > > > > So, I dove in and figured out how to implement CXXFLAGS_FOR_COBOL. > > This > > > > new flag applies only to compilations of c++ programs in the > gcc/cobol > > > > source code tree. > > > > > > > > These changes were tested with a bootstrap build of > > > > --enable-languages=c,c++,fortran,cobol. > > > > > > > > Is this okay for trunk? > > > > > > I think there's a far easier way which doesn't require any patch. > Have > > > a look at toplevel configure.ac: > > > > > > # When bootstrapping with GCC, build stage 1 in C++14 mode to ensure > > that > > > a > > > # C++14 compiler can still start the bootstrap. Otherwise, if > building > > > GCC, > > > # require C++14 (or higher). > > > if test "$enable_bootstrap:$GXX" = "yes:yes"; then > > > CXX="$CXX -std=c++14" > > > elif test "$have_compiler" = yes; then > > > AX_CXX_COMPILE_STDCXX(14) > > > > > > if test "${build}" != "${host}"; then > > > AX_CXX_COMPILE_STDCXX(14, [], [], [_FOR_BUILD]) > > > fi > > > fi > > > > > > You should be able to achieve what you want by building with CXX='g++ > > > -std=c++14', just as one can build a 32-bit gcc with a 64-bit host > > > compiler using CXX='g++ -m32'. > > > > In this case, although I reported my patch works with a bootstrap build, > I > > need it to work with an --disable-bootstrap build. I did the bootstrap > > just to make sure I hadn't broken something. I anticipate using > > CXXFLAGS_FOR_COBOL during development. > > > > When I try > > > > CXX=banana ../configure ... & make ... > > For me: > > obj> CXX=banana ~/src/gcc/configure --disable-bootstrap > configure: loading site script /usr/share/site/x86_64-unknown-linux-gnu > checking build system type... x86_64-pc-linux-gnu > checking host system type... x86_64-pc-linux-gnu > checking target system type... x86_64-pc-linux-gnu > checking for a BSD-compatible install... /usr/bin/install -c > checking whether ln works... yes > ... > checking whether banana supports C++14 features by default... no > checking whether banana supports C++14 features with -std=gnu++14... no > checking whether banana supports C++14 features with -std=gnu++1y... no > checking whether banana supports C++14 features with -std=c++14... no > checking whether banana supports C++14 features with +std=c++14... no > checking whether banana supports C++14 features with -h std=c++14... no > checking whether banana supports C++14 features with -std=c++1y... no > checking whether banana supports C++14 features with +std=c++1y... no > checking whether banana supports C++14 features with -h std=c++1y... no > configure: error: *** A compiler with support for C++14 language > features is required. > > so setting CXX definitely makes a difference even with --disable- > bootstrap. > > It seems libcody alters CXX to force -std=c++11 but as CXXFLAGS comes > after it when you add -std=c++14 to it it will break. > > So using CXX="g++ -std=c++14" should do the trick. You do not need to > re-specify that at make time. It works for me and builds libcody just > fine.
I agree that CXX=banana ../configure fails quickly regardless of any other configure parameters. I don't know what I did wrong that led me to suggest otherwise. This apparently does provide a solution for -std=c++14, one that does an end run around the problems that show up with CXXFLAGS="-std=c++14" although I have to wonder why that's not regarded as a problem. But I have other requirements. I apologize if I keep repeating myself, but I am being forced to. I want to be able to, for example, CXXFLAGS='-ggdb -O0' CXXFLAGS_FOR_COBOL="-Wsomething_or_other" ../configure .... I want those warnings to apply to gcc/cobol and not to anything else. And then, later on, I want to be able to make CXXFLAGS_FOR_COBOL="-Wreplacement_warnings" <shrug> I can't do that with the CXXFLAGS= or CXX= solutions. > > Richard. > > > and > > make CXX=banana > > > > in both cases, the build succeeds. The "CXX=banana" seems to do nothing > > when --disable-bootstrap is active. > > > > For a bootstrap build, the configure fails quickly: > > > > checking whether banana supports C++14 features by default... no > > > > Furthermore, even if this method did work, I need the CXXFLAGS_FOR_COBOL > > options to appear at the end of the list, not the beginning, since they > > may need to override what came before. > > > > So, my request for agreement to apply the patch stands. > > > > > > > > Rainer > > > > > > -- > > > > > ------------------------------------------------------------------------ > -- > > > --- > > > Rainer Orth, Center for Biotechnology, Bielefeld University