<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 5, 2013 at 7:32 AM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>   4. XXIntializePackage() is called automatically for all default PETSc classes when using --with-single-library=1</div>
<div><br></div><div>I am guessing that default call will use PETSC_COMM_WORLD.</div></blockquote></div><br>One way to do this is to make a "constructor" function for each shared library that registers its *InitializePackage function to be called from PetscInitialize. (Constructors are called before main so they can't be collective.) Then we wouldn't have a source-level reverse dependency and it would get loaded even for single-library=0. I'm not aware of any platforms that don't support some constructor mechanism, either via an attribute or C++ (which should not require linking libstdc++).</div>
</div>