[petsc-dev] meaning of PETSC_USE_EXTERN_CXX?

Barry Smith bsmith at mcs.anl.gov
Wed Mar 6 00:04:41 CST 2013


  nm -o arch-dynamic-cxx-split-visibility/lib/libpetsc*.dylib  | grep " T " | grep "[A-Za-z]_[A-Za-z]" | grep -v Create

   finds a few other oddball public functions that maybe don't need to be public. Do we need to just go through and replace the PETSC_EXTERN for those that don't need it?

   I had made things like _MatConvert_MPIMAIJ_MPIAIJ PETSC_EXTERN_C because we use dlsym on a built string to find them.  But can we actually make them PETSC_INTERN now?

   Barry



On Mar 5, 2013, at 11:57 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:

> 
>  This is very nice, much better than before, no confusing macros and complicated #if conditions, simpler for the users to understand also.
> 
>  Does this mean we shouldn't/don't need to/should continue to mark functions used in a single file as static?
> 
>  I found a few problems so far 
> 
>   0) Do these really need PETSC_EXTERN? Note that they are not declared PETSC_EXTERN when defined, only in snesimpl.h
> 
> PETSC_EXTERN PetscErrorCode SNESReset_VI(SNES);
> PETSC_EXTERN PetscErrorCode SNESDestroy_VI(SNES);
> PETSC_EXTERN PetscErrorCode SNESView_VI(SNES,PetscViewer);
> PETSC_EXTERN PetscErrorCode SNESSetFromOptions_VI(SNES);
> PETSC_EXTERN PetscErrorCode SNESSetUp_VI(SNES);
> PETSC_EXTERN_TYPEDEF typedef PetscErrorCode (*SNESVIComputeVariableBoundsFunction)(SNES,Vec,Vec);
> PETSC_EXTERN PetscErrorCode SNESVISetComputeVariableBounds_VI(SNES,SNESVIComputeVariableBoundsFunction);
> PETSC_EXTERN PetscErrorCode SNESVISetVariableBounds_VI(SNES,Vec,Vec);
> PETSC_EXTERN PetscErrorCode SNESDefaultConverged_VI(SNES,PetscInt,PetscReal,PetscReal,PetscReal,SNESConvergedReason*,void*);
> 
> 
>   1) arch-dynamic-cxx-split  (you can guess what these mean, split means split libraries) fails with gfortran on Mac. This may have been this way for a while, I'm guess it is related to how common blocks in shared libraries are not shared by default and nothing to do with recent changes.
> 
>   --with-visibility
> 
>   2) Fortran auto generated functions are not visible to user code 
> 
>        Key in Matt's grumbling about sowing and how it should be rewritten in Python.  We need to modify bfort to insert visibility macro for the functions. Satish, can you look at that?
> 
>   3) The -fvisibility=hidden is blindly passed down to all --download-packages and will break them all. I fixed MPI.py to crudely remove it but we should have it auto-removed for all package builds. Matt, can you look at that?
> 
>   Barry
> 
> 
> 
> On Mar 5, 2013, at 10:14 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> 
>> 
>> On Tue, Mar 5, 2013 at 8:28 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
>> On Tue, Mar 5, 2013 at 7:19 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
>> I'm testing it now.
>> 
>> I pushed two minor patches and I'm going through configure now.
>> 
>> https://bitbucket.org/BarryFSmith/petsc-dev-simp/commits/41ad8d3b80c7a9edf4d80bf2e09f7fb8c0405f2b
>> 
>> Okay, ready for testing.
>> 
>> https://bitbucket.org/BarryFSmith/petsc-dev-simp/commits/8d2ebbb193fb583bccc64015e35640c4e08c3426
> 




More information about the petsc-dev mailing list