[petsc-dev] COPTFLAGS
Satish Balay
balay at mcs.anl.gov
Wed Nov 13 12:55:03 CST 2013
On Wed, 13 Nov 2013, Jed Brown wrote:
> Satish Balay <balay at mcs.anl.gov> writes:
>
> > On Wed, 13 Nov 2013, Jed Brown wrote:
> >
> >> Satish Balay <balay at mcs.anl.gov> writes:
> >> > I don't understand why this would be needed. Thid code sets the
> >> > defaults for bopt='g' or 'O'. But if COPTFLAGS flags is set by user -
> >> > it routine should not be called. [so the above 2 lines appear to be
> >> > redundant]
> >>
> >> How do you figure that the routine is not called when COPTFLAGS is set
> >> by the user?
> >
> > configureCompilerFlags() in compilerFlags.py does this magic..
>
> For CFLAGS, but not for COPTFLAGS.
>
> >>>>>>>>>>>>
> > for bopt in bopts:
> > if not bopt == '' and self.getOptionalFlagsName(language) in self.framework.argDB:
> > # treat user supplied options as single option - as it could include options separated by spaces '-tp k8-64'
> > flags = [self.framework.argDB[self.getOptionalFlagsName(language)]]
> > elif bopt == '' and self.getCompilerFlagsName(language) in self.framework.argDB:
> > self.logPrint('Ignoring default options which were overridden using --'+self.getCompilerFlagsName(language)+ ' ' + self.framework.argDB[self.getCompilerFlagsName(language)])
> > flags = []
> > else:
> > flags = options.getCompilerFlags(language, self.setCompilers.getCompiler(), bopt)
>
> Notice how this one is always called, regardless of COPTFLAGS.
If COPTFLAGS is set in argDB [for either bopt= 'g' or 'O'] - the first
'if' statement is evaluated -so the 'else' block is never executed.
Similarly for CFLAGS - the second 'elif' block gets run.
You can put a print statement in getCFlags() to verify.
Satish
> Are you are saying that we should instead add
> getCompilerOptFlagsName() and a similar guard here instead of
> putting it inside getCFlags?
More information about the petsc-dev
mailing list