Re: [petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Matthew Knepley
On Tue, Mar 23, 2021 at 1:15 PM Junchao Zhang 
wrote:

> Can we combine CXXPPFLAGS and CXXFLAGS into one CXXFLAGS?
>

No. There are compiler-only flags.

  Matt


> --Junchao Zhang
>
>
> On Tue, Mar 23, 2021 at 11:38 AM Patrick Sanan 
> wrote:
>
>> I had a related (I think) issue trying to build with Kokkos. Those
>> headers throw an #error if they're expecting OpenMP and the compiler
>> doesn't have the OpenMP flag. I have an open MR here (number 60^2!) which
>> thus adds the OpenMP flag to the CXXPPFLAGS:
>> https://gitlab.com/petsc/petsc/-/merge_requests/3600
>>
>>
>> My collaborator at CSCS was testing with the latest Kokkos and ran into
>> an even hairier version of this problem trying to use CUDA - the Kokkos
>> headers now apparently check that you're using nvcc. He has some workaround
>> which I'll review and hopefully be able to submit.
>>
>>
>> Am 23.03.2021 um 17:04 schrieb Stefano Zampini > >:
>>
>> The check fails within buildsystem when running mpicc -E (which uses
>> CXXPPFLAGS)  The package header needs c++11  to be included properly.
>> C++11 is also needed at preprocessing time
>>
>> Il Mar 23 Mar 2021, 18:59 Satish Balay  ha scritto:
>>
>>> -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') + ' '
>>> +

Re: [petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Satish Balay via petsc-dev
And I think there are some flags that can't be used at link time [so
they have to go into CPPFLAGS and not CFLAGS - as CFLAGS gets used
with CLINKER aswell]

Satish

On Tue, 23 Mar 2021, Satish Balay via petsc-dev wrote:

> I'm not sure if we can eliminate preprocessing. [mpi.h detection is
> one place where its used - don't remember others - perhaps detection
> of most includes? - some externalpacakges need them listed
> separately?]
> 
> And as long as we need preprocessing as a separate step [and some
> compile flags give errors when used with processor] - we'll need
> separate PPFLAGS.
> 
> 
> Satish
> 
> On Tue, 23 Mar 2021, Junchao Zhang wrote:
> 
> > Can we combine CXXPPFLAGS and CXXFLAGS into one CXXFLAGS?
> > --Junchao Zhang
> > 
> > 
> > On Tue, Mar 23, 2021 at 11:38 AM Patrick Sanan 
> > wrote:
> > 
> > > I had a related (I think) issue trying to build with Kokkos. Those headers
> > > throw an #error if they're expecting OpenMP and the compiler doesn't have
> > > the OpenMP flag. I have an open MR here (number 60^2!) which thus adds the
> > > OpenMP flag to the CXXPPFLAGS:
> > > https://gitlab.com/petsc/petsc/-/merge_requests/3600
> > >
> > >
> > > My collaborator at CSCS was testing with the latest Kokkos and ran into an
> > > even hairier version of this problem trying to use CUDA - the Kokkos
> > > headers now apparently check that you're using nvcc. He has some 
> > > workaround
> > > which I'll review and hopefully be able to submit.
> > >
> > >
> > > Am 23.03.2021 um 17:04 schrieb Stefano Zampini  > > >:
> > >
> > > The check fails within buildsystem when running mpicc -E (which uses
> > > CXXPPFLAGS)  The package header needs c++11  to be included properly.
> > > C++11 is also needed at preprocessing time
> > >
> > > Il Mar 23 Mar 2021, 18:59 Satish Balay  ha scritto:
> > >
> > >> -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 

Re: [petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Satish Balay via petsc-dev
I'm not sure if we can eliminate preprocessing. [mpi.h detection is
one place where its used - don't remember others - perhaps detection
of most includes? - some externalpacakges need them listed
separately?]

And as long as we need preprocessing as a separate step [and some
compile flags give errors when used with processor] - we'll need
separate PPFLAGS.


Satish

On Tue, 23 Mar 2021, Junchao Zhang wrote:

> Can we combine CXXPPFLAGS and CXXFLAGS into one CXXFLAGS?
> --Junchao Zhang
> 
> 
> On Tue, Mar 23, 2021 at 11:38 AM Patrick Sanan 
> wrote:
> 
> > I had a related (I think) issue trying to build with Kokkos. Those headers
> > throw an #error if they're expecting OpenMP and the compiler doesn't have
> > the OpenMP flag. I have an open MR here (number 60^2!) which thus adds the
> > OpenMP flag to the CXXPPFLAGS:
> > https://gitlab.com/petsc/petsc/-/merge_requests/3600
> >
> >
> > My collaborator at CSCS was testing with the latest Kokkos and ran into an
> > even hairier version of this problem trying to use CUDA - the Kokkos
> > headers now apparently check that you're using nvcc. He has some workaround
> > which I'll review and hopefully be able to submit.
> >
> >
> > Am 23.03.2021 um 17:04 schrieb Stefano Zampini  > >:
> >
> > The check fails within buildsystem when running mpicc -E (which uses
> > CXXPPFLAGS)  The package header needs c++11  to be included properly.
> > C++11 is also needed at preprocessing time
> >
> > Il Mar 23 Mar 2021, 18:59 Satish Balay  ha scritto:
> >
> >> -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
> >> > >
> >> > 

Re: [petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Junchao Zhang
Can we combine CXXPPFLAGS and CXXFLAGS into one CXXFLAGS?
--Junchao Zhang


On Tue, Mar 23, 2021 at 11:38 AM Patrick Sanan 
wrote:

> I had a related (I think) issue trying to build with Kokkos. Those headers
> throw an #error if they're expecting OpenMP and the compiler doesn't have
> the OpenMP flag. I have an open MR here (number 60^2!) which thus adds the
> OpenMP flag to the CXXPPFLAGS:
> https://gitlab.com/petsc/petsc/-/merge_requests/3600
>
>
> My collaborator at CSCS was testing with the latest Kokkos and ran into an
> even hairier version of this problem trying to use CUDA - the Kokkos
> headers now apparently check that you're using nvcc. He has some workaround
> which I'll review and hopefully be able to submit.
>
>
> Am 23.03.2021 um 17:04 schrieb Stefano Zampini  >:
>
> The check fails within buildsystem when running mpicc -E (which uses
> CXXPPFLAGS)  The package header needs c++11  to be included properly.
> C++11 is also needed at preprocessing time
>
> Il Mar 23 Mar 2021, 18:59 Satish Balay  ha scritto:
>
>> -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
>> > > > + 

Re: [petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Patrick Sanan
I had a related (I think) issue trying to build with Kokkos. Those headers 
throw an #error if they're expecting OpenMP and the compiler doesn't have the 
OpenMP flag. I have an open MR here (number 60^2!) which thus adds the OpenMP 
flag to the CXXPPFLAGS: 
https://gitlab.com/petsc/petsc/-/merge_requests/3600 



My collaborator at CSCS was testing with the latest Kokkos and ran into an even 
hairier version of this problem trying to use CUDA - the Kokkos headers now 
apparently check that you're using nvcc. He has some workaround which I'll 
review and hopefully be able to submit. 


> Am 23.03.2021 um 17:04 schrieb Stefano Zampini :
> 
> The check fails within buildsystem when running mpicc -E (which uses 
> CXXPPFLAGS)  The package header needs c++11  to be included properly. C++11 
> is also needed at preprocessing time
> 
> Il Mar 23 Mar 2021, 18:59 Satish Balay  > ha scritto:
> -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
> > > > +  

Re: [petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Stefano Zampini
The check fails within buildsystem when running mpicc -E (which uses
CXXPPFLAGS)  The package header needs c++11  to be included properly. C++11
is also needed at preprocessing time

Il Mar 23 Mar 2021, 18:59 Satish Balay  ha scritto:

> -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
> > > >
> > > >
> > > >
> > >
> > >
> >
>
>


Re: [petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Satish Balay via petsc-dev
-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
> > >
> > >
> > >
> >
> >
> 



Re: [petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Junchao Zhang
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
> >
> >
> >
>
>


Re: [petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Satish Balay via petsc-dev
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
> 
> 
> 



[petsc-dev] configureLibrary fails for c++11 projects

2021-03-23 Thread Stefano Zampini
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)
   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


-- 
Stefano