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