Barry Smith <[email protected]> writes:
On Wed, 14 Dec 2005, Matthew Knepley wrote:
Barry Smith <[email protected]> writes:
Hmmm, why should you have a PIC test? Who cares if something has PIC or not? You only thing you care about is that you CAN do what you want to do with it? (In this case I think it is simply that you can build an executable using a shared library PLUS the given library you are testing.)
Barry
configure is suppose to be "can I ...?" not "is something ...?"
Because the "can I" is VERY erratic. I can build some shared libraries, but cannot build others.
My understanding is that it can build a basic shared library (stand alone with a couple of symbols) BUT cannot build a shared library (and use it) in conjunction with the MPI libraries. So I fail to understand why you cannot just test this?????
This is not my understanding. The checkShared() from MPI.py DOES EXACTLY build a shared library (two in fact) linked to MPI. These succeed just fine.
Make a new test that is, exactly the FIRST part of the test
def checkShared(self, inclu....
up to the code where
if not checkLink(includes, body, cleanup = 0, codeBegin = codeBegin, codeEnd = codeEnd, shared = 1): if os.path.isfile(configObj.compilerObj): os.remove(configObj.compilerObj) self.setCompilers.LIBS = oldFlags raise RuntimeError('Could not complete shared library check\nCould not create a shared library using the currently configured shared linker.\nSuggest running with --with-shared=0 if you do not need shared libraries. Otherwise send configure.log to [email protected]')
but instead of throwing the silly exception you return 0 here. But if the link succeeds you continue the test until
This does succeed.
''' % (boolType, checkCode) if finiFunction: body += ' if (isInitialized) '+finiFunction+'();\n' body += ' return (int) isInitialized;\n' codeEnd = '\n}\n' if not checkLink(includes, body, cleanup = 0, codeBegin = codeBegin, codeEnd = codeEnd, shared = 1): if os.path.isfile(configObj.compilerObj): os.remove(configObj.compilerObj) self.setCompilers.LIBS = oldFlags raise RuntimeError('Could not complete shared library check\nCould not create a shared library using the currently configured shared linker.\nSuggest running with --with-shared=0 if you do not need shared libraries. Otherwise send configure.log to [email protected]') return 0
here instead of the exception return 1 or 0 based on whether the link succeeds. Do not do the rest of the test.
This also succeeds, unless I misunderstand greatly the error. Matt
I may be missing something but I don't understand why this has to be such a difficult thing. We know exactly where things go wrong (based on the log files) so we write a test specifically for that problem and report failure or success why make life more complicated.
Barry
I do not understand the difference between these libraries at the moment, however I DO know that absence of the PIC option causes the error. Furthermore, checking this option allows a precise error message rather than a guess. Lastly, this is in the configure spirit I believe, because we often test the "what" of things, like endianness or the size of void *.
Matt
-- "Failure has a thousand explanations. Success doesn't need one" -- Sir Alec Guiness
participants (1)
-
Matthew Knepley