On Feb 17, 2010, at 11:23 AM, Jeff Squyres wrote:
> Here's my proposal on how to change the wrapper compilers to understand the 
> difference between static and dynamic linking:
> 
> *** FIRST: give the wrapper the ability to link one library or all libraries
> - wrapper data text files grow a new option: libs_private (a la pkg-config(1) 
> files)
> - wrapper data text files list -l<top_lib> in libs, and everything else in 
> libs_private.  For example, for mpicc:
>  libs=-lmpi
>  libs_private=-lopen-rte -lopen-pal
> 
> *** NEXT: give the wrappers the ability to switch between just ${libs} or 
> ${libs}+${libs_private}.  Pseudocode:
> - wrapper always adds ${libs} to the argv
> - wrapper examines each argv[x]:
>  --ompi:shared) found_in_argv=1 ;;
>  --ompi:static) add ${libs_private} ; found_in_argv=1 ;;
> - if (!found_in_argv) 
>  - if default set via configure, add ${libs_private} (SEE BELOW)

This is horrible!  Users want to be able to specify -Bstatic or -static or 
whatever and have the right things happen.  I have a better idea - since 
there's basically no set of users which use OMPI's libopal and some other 
libopal (and indeed, that's near impossible do to the horrible API exposed by 
opal (data type sizes changing based on configure arguments, for example), 
let's give up and just have libmpi.{so,a} and completely avoid this whole rat 
hole of a problem?

There's simply no way your solution is workable for most users.  They'll just 
end up wondering why when they do -Bstatic (or whatever the option is on their 
compiler) they get missing symbol link errors.

Brian

Reply via email to