-std=cxx11 for sure is a compile flag. But don't really know if its also needed at pre-process stage and/or at link stage.
And for compile stage both CXXFLAGS and CXXPPFLAGS should get used. [PETSc makefiles make sure this is the case] And for link stage CXXFLAGS and LDFLAGS get used [but then sometimes we have CLINKER, and FLINKER - and they certainly don't use CXXFLAGS - so -std=cxx11 isn't really needed at link time? So the previous default of CXXPPFLAGS=-std=cxx11 looks reasonable to me. However if this project is not using PETSc makefiles - it should make sure all compile flags are grabbed. # lib/petsc/conf/variables PETSC_CXXCPPFLAGS = ${PETSC_CC_INCLUDES} ${PETSCFLAGS} ${CXXPP_FLAGS} ${CXXPPFLAGS} CXXCPPFLAGS = ${PETSC_CXXCPPFLAGS} PETSC_CXXCOMPILE_SINGLE = ${CXX} -o $*.o -c ${CXX_FLAGS} ${CXXFLAGS} ${CXXCPPFLAGS} # lib/petsc/conf/rules .cpp.o .cxx.o .cc.o .C.o: ${PETSC_CXXCOMPILE_SINGLE} `pwd`/$< # gmakefile.test PETSC_COMPILE.cxx = $(call quiet,CXX) -c $(CXX_FLAGS) $(CXXFLAGS) $(CXXCPPFLAGS) $(CXX_DEPFLAGS) # lib/petsc/conf/test LINK.cc = $(CXXLINKER) $(CXX_FLAGS) $(CXXFLAGS) $(CXXCPPFLAGS) $(LDFLAGS) Satish On Tue, 23 Mar 2021, Junchao Zhang wrote: > I would rather directly change the project to use CXXFLAGS instead of > CXXPPFLAGS. > > --Junchao Zhang > > > On Tue, Mar 23, 2021 at 10:01 AM Satish Balay via petsc-dev < > petsc-dev@mcs.anl.gov> wrote: > > > On Tue, 23 Mar 2021, Stefano Zampini wrote: > > > > > Just tried out of main, and and the include tests of a c++11 project fail > > > Below my fix, if we agree on, I'll make a MR > > > > > > diff --git a/config/BuildSystem/config/compilers.py > > > b/config/BuildSystem/config/compilers.py > > > index c96967e..44e4657 100644 > > > --- a/config/BuildSystem/config/compilers.py > > > +++ b/config/BuildSystem/config/compilers.py > > > @@ -527,6 +527,8 @@ class Configure(config.base.Configure): > > > if self.setCompilers.checkCompilerFlag(flag, includes, > > > body+body14): > > > newflag = getattr(self.setCompilers,LANG+'FLAGS') + ' ' + > > flag # > > > append flag to the old > > > setattr(self.setCompilers,LANG+'FLAGS',newflag) > > > + newflag = getattr(self.setCompilers,LANG+'PPFLAGS') + ' ' + > > flag > > > # append flag to the old > > > + setattr(self.setCompilers,LANG+'PPFLAGS',newflag) > > > > > > https://gitlab.com/petsc/petsc/commit/ead1aa4045d7bca177e78933b9ca25145fc3c574 > > > > self.setCompilers.CXXPPFLAGS += ' ' + flag > > newflag = getattr(self.setCompilers,LANG+'FLAGS') + ' ' + flag # > > append flag to the old > > setattr(self.setCompilers,LANG+'FLAGS',newflag) > > > > So the old code was setting 'PPFLAGS' - but this commit changed to > > 'FLAGS'. Maybe this flag is needed at both compile time and link time? > > > > So this project is somehow using CXXPPFLAGS - but not CXXFLAGS? > > > > I'm fine with adding it to PPFLAGS - duplicate listing hopefully shouldn't > > cause grief. > > > > Satish > > > > > cxxdialect = 'C++14' > > > self.addDefine('HAVE_'+LANG+'_DIALECT_CXX14',1) > > > self.addDefine('HAVE_'+LANG+'_DIALECT_CXX11',1) > > > @@ -546,6 +548,8 @@ class Configure(config.base.Configure): > > > if self.setCompilers.checkCompilerFlag(flag, includes, body): > > > newflag = getattr(self.setCompilers,LANG+'FLAGS') + ' ' + > > flag # > > > append flag to the old > > > setattr(self.setCompilers,LANG+'FLAGS',newflag) > > > + newflag = getattr(self.setCompilers,LANG+'PPFLAGS') + ' ' + > > flag > > > # append flag to the old > > > + setattr(self.setCompilers,LANG+'PPFLAGS',newflag) > > > cxxdialect = 'C++11' > > > self.addDefine('HAVE_'+LANG+'_DIALECT_CXX11',1) > > > break > > > > > > > > > > > > > >