[Developers] Library-specific linker flags

Erik Schnetter schnetter at cct.lsu.edu
Sun Feb 10 15:08:21 CST 2008


On Queen Bee and probably on related systems, it is necessary to link  
certain libraries statically, but others dynamically.  The  
configuration mechanism in Cactus can currently not handle this.

In Cactus, external libraries have three configuration variables  
associated with them, one defining the include path, one defining the  
library path, and one listing the library names.  It is not possible  
to add linker flags before or after the library names, since library  
names unconditionally have a "-l" prefix attached.  For example, the  
configuration settings

BLAS_DIR  = /usr/local/compilers/Intel/mkl-10.0/lib/em64t
BLAS_LIBS = mkl_em64t guide   pthread

are translated to

GENERAL_LIBRARIES = -L/usr/local/compilers/Intel/mkl-10.0/lib/em64t - 
lmkl_em64t -lguide -lpthread



I would like to add the flags -Bstatic and -Bdynamic before and after  
the library name, respectively.  I suggest to update the prefix- 
attaching mechanism so that it add prefixes to library names, but  
leaves flags alone.  This allows me to write

BLAS_DIR  = /usr/local/compilers/Intel/mkl-10.0/lib/em64t
BLAS_LIBS = -Bstatic mkl_em64t guide -Bdynamic   pthread

which would be translated to

GENERAL_LIBRARIES = -L/usr/local/compilers/Intel/mkl-10.0/lib/em64t - 
Bstatic -lmkl_em64t -lguide -Bdynamic -lpthread

which is the correct list of options for Queen Bee.



The patch below to lib/make/configure.in achieves the above:

+# How to link in the non-Cactus libraries:
+# Add -L and -l prefixes, but only for file names;
+# allow arbitrary options in between
  AC_SUBST(GENERAL_LIBRARIES)
-: ${GENERAL_LIBRARIES='$(LIBDIRS:%=-L%) $(LIBS:%=-l%)'}
+: ${GENERAL_LIBRARIES='$(patsubst -L-%,-%,$(LIBDIRS:%=-L%)) $ 
(patsubst -l-%,-%,$(LIBS:%=-l%))'}

-erik

-- 
Erik Schnetter <schnetter at cct.lsu.edu>   http://www.cct.lsu.edu/ 
~eschnett/

My email is as private as my paper mail.  I therefore support encrypting
and signing email messages.  Get my PGP key from www.keyserver.net.




-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : http://www.cactuscode.org/pipermail/developers/attachments/20080210/34a174f4/attachment.bin 


More information about the Developers mailing list