diff options
author | Peter Simons <simons@cryp.to> | 2007-02-18 23:43:16 +0100 |
---|---|---|
committer | Peter Simons <simons@cryp.to> | 2007-02-18 23:43:16 +0100 |
commit | 16aee45643e593e2833e4dff19df7b5f14267a79 (patch) | |
tree | ba40c1ee401bbbcec7dbee5e3bb51d21c70db130 /m4/ax_f90_library.m4 | |
download | autoconf-archive-16aee45643e593e2833e4dff19df7b5f14267a79.tar.gz |
Imported http://autoconf-archive.cryp.to/ release 2007-02-14.
Diffstat (limited to 'm4/ax_f90_library.m4')
-rw-r--r-- | m4/ax_f90_library.m4 | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/m4/ax_f90_library.m4 b/m4/ax_f90_library.m4 new file mode 100644 index 0000000..f38b82e --- /dev/null +++ b/m4/ax_f90_library.m4 @@ -0,0 +1,108 @@ +##### http://autoconf-archive.cryp.to/ax_f90_library.html +# +# SYNOPSIS +# +# AX_F90_LIBRARY(LIBRARY, LIB-REGEXP, FUNCTION-BODY [, SEARCH-PATH [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +# +# DESCRIPTION +# +# Set up the compiler flags to link a given fortran 90 library +# LIBRARY is the name of the library. LIB-REGEXP is a regular +# expression (used by find) matched by the filename of the library, +# this is useful either if the library filename does not follow the +# traditional libxxx.a or libxxx.so pattern, or if some specific +# information is embedded into the name, like compiler used, +# debugging status ...). FUNCTION-BODY is the body of a function +# (including the 'use' statements and the call to a function defined +# by the library) SEARCH-PATH is a colon-separated list of +# directories that will be used as the base directoris for 'find' to +# look for the library file. If empty, the search path will be +# composed of $prefix/lib, $ac_default_prefix/lib, and +# $LD_LIBRARY_PATH. Two output variables named F90_LDFLAGS_xxx and +# F90_LIBS_xxx will be set up with the proper flag for substitution +# in Makefiles (xxx is built from the first argument, with autoconf +# traditional escapes). +# +# LAST MODIFICATION +# +# 2005-01-14 +# +# COPYLEFT +# +# Copyright (c) 2005 Luc Maisonobe <luc@spaceroots.org> +# +# Copying and distribution of this file, with or without +# modification, are permitted in any medium without royalty provided +# the copyright notice and this notice are preserved. + +AC_DEFUN([AX_F90_LIBRARY],[ +AS_VAR_PUSHDEF([ax_ldflags],[ax_f90_ldflags_$1]) +AS_VAR_PUSHDEF([ax_libs],[ax_f90_libs_$1]) +AC_MSG_CHECKING([$1 fortran 90 library]) +AC_LANG_PUSH(Fortran) +AS_VAR_SET([ax_ldflags],"") +AS_VAR_SET([ax_libs],"not found") +if test "x$4" = x ; then +ax_search="$prefix:$ac_default_prefix" +for ax_base in "" `echo $LD_LIBRARY_PATH | tr ':' '\012'` ; do + if test "x$ax_base" != x ; then + changequote(,)dnl + ax_base=`echo $ax_base | sed 's,/[^/]*$,,'` + changequote([,])dnl + ax_search="${ax_search}:${ax_base}" + fi +done +else +ax_search="$4" +fi +ax_save_LDFLAGS="$LDFLAGS" +ax_save_LIBS="$LIBS" +for ax_base in `echo $ax_search | tr ':' '\012'` ; do + if test "AS_VAR_GET(ax_libs)" = "not found" ; then + for ax_lib in "" `find $ax_base -follow -name '$2' -print` ; do + if test "x$ax_lib" != x ; then + changequote(,)dnl + ax_dir=`echo $ax_lib | sed 's,/[^/]*$,,'` + ax_lib=`echo $ax_lib | sed 's,.*/\([^/]*\)$,\1,'` + changequote([,])dnl + case "$ax_lib" in + lib*) + changequote(,)dnl + ax_lib="`echo $ax_lib | sed 's,lib\(.*\)\.[^.]*$,\1,'`" + changequote([,])dnl + AS_VAR_SET([ax_ldflags],"-L $ax_dir") + AS_VAR_SET([ax_libs],"-l$ax_lib") + ;; + *) + AS_VAR_SET([ax_ldflags],"") + AS_VAR_SET(ax_libs,"$ax_lib") + ;; + esac + LDFLAGS="$ax_save_LDFLAGS AS_VAR_GET(ax_ldflags)" + LIBS="AS_VAR_GET(ax_libs) $ax_save_LIBS" + AC_LINK_IFELSE([program conftest_program +$3 + end program conftest_program + ],[],[AS_VAR_SET(ax_ldflags,"") + AS_VAR_SET(ax_libs,"not found") + ]) + fi + done + fi +done +AC_LANG_POP(Fortran) +AC_MSG_RESULT([AS_VAR_GET(ax_ldflags) AS_VAR_GET(ax_libs)]) +if test "AS_VAR_GET(ax_libs)" = "not found"; then + AS_TR_SH(F90_LDFLAGS_$1)="" + AS_TR_SH(F90_LIBS_$1)="" + $5 +else + AS_TR_SH(F90_LDFLAGS_$1)=AS_VAR_GET(ax_ldflags) + AS_TR_SH(F90_LIBS_$1)=AS_VAR_GET(ax_libs) + $6 +fi +AC_SUBST(AS_TR_SH(F90_LDFLAGS_$1)) +AC_SUBST(AS_TR_SH(F90_LIBS_$1)) +AS_VAR_POPDEF([ax_libs]) +AS_VAR_POPDEF([ax_ldflags]) +]) |