[petsc-dev] [Bitbucket] Pull request #375: Pass LDFLAGS down to GNUPackage externalpackages. (petsc/petsc)

Barry Smith bsmith at mcs.anl.gov
Sun Oct 11 15:24:20 CDT 2015


> On Oct 11, 2015, at 2:04 PM, Satish Balay <balay at mcs.anl.gov> wrote:
> 
> On Sun, 11 Oct 2015, Dmitry Karpeyev wrote:
> 
>> I'll try both.
> 
> There is no current implementation of 'removeCompilerFlags()'

  Satish,

  Well duh, it needs to be written. There didn't use to be a removeWarningFlags() until someone wrote it, probably you.

  Barry


> 
>> I assume these don't break all of 'next'? :-) I guess I
>> still don't understand why LinkerFlags includes compiler flags. Clearly,
>> though, LinkerFlags != LDFLAGS. Weird.
> 
> Well if only things were this simple. Whats the a Linker? [that these
> flgs correspond to] Is there a universal linker?
> 
> We have 'cc', 'ld' etc - but do we ever use 'ld' directly?
> 
> And what does LDFLAGS really mean? CLINKER_FLAGS or FLINKER_FLAGS [or
> CXX?]. Or a union (or intersection) of flags for all these langs?
> 
> [to answer your question wrt configure - pushlanguage(c) &&
> getLinerFlags => CLINKER_FLAGS. Similar for other langs..]
> 
> Satish
> 
>> 
>> On Sun, Oct 11, 2015, 12:59 Barry Smith <bsmith at mcs.anl.gov> wrote:
>> 
>>> 
>>>   or
>>> 
>>>> 
>>> args.append('LDFLAGS="'+self.removeCompilerFlags(self.getLinkerFlags())+'"')
>>> 
>>> 
>>>> On Oct 11, 2015, at 12:55 PM, Satish Balay <balay at mcs.anl.gov> wrote:
>>>> 
>>>> Perhaps the following is the fix Dmitry needs..
>>>> 
>>>> Satish
>>>> 
>>>> --------
>>>> diff --git a/config/BuildSystem/config/package.py
>>> b/config/BuildSystem/config/package.py
>>>> index ebe3d15..4917ce5 100644
>>>> --- a/config/BuildSystem/config/package.py
>>>> +++ b/config/BuildSystem/config/package.py
>>>> @@ -1034,7 +1034,7 @@ class GNUPackage(Package):
>>>> 
>>> args.append('CFLAGS="'+self.removeWarningFlags(self.getCompilerFlags())+'"')
>>>>    args.append('AR="'+self.setCompilers.AR+'"')
>>>>    args.append('ARFLAGS="'+self.setCompilers.AR_FLAGS+'"')
>>>> -    args.append('LDFLAGS="'+self.getLinkerFlags()+'"')
>>>> +    args.append('LDFLAGS="'+self.setCompilers.LDFLAGS+'"')
>>>>    self.popLanguage()
>>>>    if hasattr(self.compilers, 'CXX'):
>>>>      self.pushLanguage('Cxx')
>>>> 
>>>> 
>>>> On Sun, 11 Oct 2015, Satish Balay wrote:
>>>> 
>>>>> not sure about autoconf  - but we do:
>>>>> 
>>>>> c-compile-only: CPPFLAGS CFLAGS COPTFLAGS
>>>>> clinker:      LDFLAGS? CFLAGS COPTFLAGS () LIB
>>>>> 
>>>>> Perhaps configure should somehow preserve LDFLAGS option to configure
>>>>> - and make it accessiable to package.py somehow.
>>>>> 
>>>>> Satish
>>>>> 
>>>>> On Sun, 11 Oct 2015, Barry Smith wrote:
>>>>> 
>>>>>> 
>>>>>> Matt,
>>>>>> 
>>>>>> In c.py Linker.getFlags() is defined as
>>>>>> 
>>>>>> 
>>>>>>   def getFlags(self):
>>>>>>   '''Returns a string with the flags specified for running this
>>> processor.'''
>>>>>>   if not hasattr(self, '_flags'):
>>>>>>     flagsName = self.flagsName[:]
>>>>>>     if self.name == self.compiler.name:
>>>>>>       flagsName.extend(self.compiler.flagsName)
>>>>>>     if hasattr(self, 'configCompilers'):
>>>>>>       flags = ' '.join([getattr(self.configCompilers, name) for name
>>> in flagsName])
>>>>>>     else:
>>>>>>       flags = ' '.join([self.argDB[name] for name in flagsName])
>>>>>>     return flags
>>>>>> 
>>>>>> in other words if the name of the linker is the same as the name of
>>> the compiler it sticks all the compiler flags on as linker flags. WTF?
>>> Compiler flags are compiler flags, not linker flags; it is amazing this
>>> doesn't do more damage.
>>>>>> 
>>>>>> How to fix this? Do any of the compiler flags need to be made into
>>> linker flags?
>>>>>> 
>>>>>> 
>>>>>> Barry
>>>>>> 
>>>>>> 
>>>>>>> On Oct 9, 2015, at 1:48 PM, Satish Balay <balay at mcs.anl.gov> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>>> LDFLAGS="-Wall -Wwrite-strings -Wno-strict-aliasing
>>> -Wno-unknown-pragmas -Qunused-arguments -g3"
>>>>>>> 
>>>>>>> Wrt clang+gfortran - the trigger is: -Qunused-arguments [which is a
>>>>>>> clang flag - that gets passed to flinker aswell?]
>>>>>>> 
>>>>>>> balay at es^~/junk $ gfortran -Qunused-arguments cmd.f
>>>>>>> gfortran: error: unrecognized command line option ‘-Qunused-arguments’
>>>>>>> balay at es^~/junk $
>>>>>>> 
>>>>>>> Satish
>>>>>>> 
>>>>>>> 
>>>>>>> On Fri, 9 Oct 2015, Barry Smith wrote:
>>>>>>> 
>>>>>>>> 
>>>>>>>> Well that's what the tests are for, to find such problems.
>>>>>>>> 
>>>>>>>> Perhaps it should not be in GNUPackage but only in the individual
>>> xxx.py packages that require it? But how do we know which packages need it
>>> and even then will be compatible on all systems.
>>>>>>>> 
>>>>>>>> Dmitry, please send the exact error that you got that inspired you
>>> to add this to the Gnumake package.
>>>>>>>> 
>>>>>>>> Barry
>>>>>>>> 
>>>>>>>>> On Oct 9, 2015, at 1:24 PM, Satish Balay <
>>> pullrequests-reply at bitbucket.org> wrote:
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Satish Balay commented on pull request #375:
>>>>>>>>> Pass LDFLAGS down to GNUPackage externalpackages.
>>>>>>>>> Nightlybuilds broke due to this change [primarily --download-mpich
>>> - esp with clang+gfortran - and other combinations]
>>>>>>>>> View this pull request or add a comment by replying to this email.
>>>>>>>>> Unsubscribe from pull request emails for this repository.
>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>>> 
>> 




More information about the petsc-dev mailing list