Hi Charles, I know little about the threading inside MPICH at this point and even less about per object builds. Though I intend to now learn more about this, I’m CC’ing the mpich-devel mailing list in an effort to bring in the right people more quickly. Wesley On Jan 23, 2014, 2:03:48 PM, Archer, Charles J <[email protected]> wrote: Hi, Wesley, I’m playing around with per-obj builds, using per-object/tls configure options. pamid defined it’s own critical sections so it doesn’t see this build error, but I’m trying to use default per-obj builds and I hit this: mpiimplthreadpost.h:27: error: static declaration of 'MPIU_Thread_CS_enter_lockname_impl_' follows non-static declaration My solution for me was to prototype the functions in src/include/mpiimplthread.h: diff --git a/src/include/mpiimplthread.h b/src/include/mpiimplthread.h index f0141c6..c9af705 100644 --- a/src/include/mpiimplthread.h +++ b/src/include/mpiimplthread.h @@ -1039,5 +1039,20 @@ do { \ #define MPIU_THREAD_MPI_OBJ_FINALIZE(objptr_) do {} while (0) #endif + +#if 0 +static MPIU_DBG_INLINE_KEYWORD void +MPIU_Thread_CS_enter_lockname_impl_(enum MPIU_Nest_mutexes kind, + const char *lockname, + MPID_Thread_mutex_t *mutex); + + +static MPIU_DBG_INLINE_KEYWORD void +MPIU_Thread_CS_exit_lockname_impl_(enum MPIU_Nest_mutexes kind, + const char *lockname, + MPID_Thread_mutex_t *mutex); +#endif + + #endif /* !defined(MPIIMPLTHREAD_H_INCLUDED) */ …. Can you guys add in the prototypes? This patch isn’t complete, I wanted to talk to you first. Is this the right solution? Also related (reported by Bill): https://trac.mpich.org/projects/mpich/ticket/1937