[petsc-dev] circular dependencies SLEPc
    Jed Brown 
    jed at jedbrown.org
       
    Mon Jul  8 22:37:06 CDT 2019
    
    
  
"Smith, Barry F. via petsc-dev" <petsc-dev at mcs.anl.gov> writes:
>> On Jul 8, 2019, at 9:53 PM, Jakub Kruzik via petsc-dev <petsc-dev at mcs.anl.gov> wrote:
>> 
>> Just to clarify, the suggested solution is a plug-in sitting anywhere in the PETSc source tree with postponed compilation and using __attribute__((constructor)) to register (as in libCEED) for static libraries?
>
>   Yes, this is my understanding. Good luck.
There is some nontrivial infrastructure that would be needed for this
model.
1. This new component needs to be built into a new library such as
   libpetsc-plugin.a (when static).
2. Users need to know when they should link this module.  They'll need a
   link line something like -lpetsc-plugin -lslepc -lpetsc in this case.
   It would need to be specified correctly in makefiles and pkg-config.
3. Anything with __attribute__((constructor)) runs *before* main, thus
   before PetscInitialize.  There would need to be a new mechanism to
   register a callback to be run at the end of PetscInitialize.
    
    
More information about the petsc-dev
mailing list