File: ax_f90_library_setup.html

package info (click to toggle)
autoconf-archive 20060312-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 4,180 kB
  • ctags: 13
  • sloc: sh: 455; makefile: 44
file content (125 lines) | stat: -rw-r--r-- 3,939 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
 <head>
  <title>
   Autoconf Macro: ax_f90_library_setup
  </title>
  <link rel="stylesheet" type="text/css" href="ac-archive.css">
 </head>
 <body>
  <table summary="web navigation" style="width:100%;">
   <tbody>
    <tr>
     <td style="width:50%;" align="center">
      <a href=
      "http://autoconf-archive.cryp.to/ax_f90_library_setup.m4">Download M4
      Source</a>
     </td>
     <td style="width:50%;" align="center">
      <a href="macros-by-category.html">Macro Index Page</a>
     </td>
    </tr>
   </tbody>
  </table>
  <hr>
  <h1>
   ax_f90_library_setup
  </h1>
  <h2>
   Synopsis
  </h2>
  <p class="indent" style="white-space:nowrap;">
   <code>AX_F90_LIBRARY_SETUP(LIBRARY, HEADER-REGEXP, MODULE-REGEXP,
   LIB-REGEXP, FUNCTION-BODY)</code>
  </p>
  <h2>
   Description
  </h2>
  <div class="indent">
   <p>
    Convenience macro to set up a fortran 90 library in a simplified way.
    LIBRARY is the name of the library. HEADER-REGEXP is a regular expression
    (used by find) matched by the header file to look for (may be empty).
    MODULE-REGEXP is a regular expression (used by find) matched by the
    filename of the module (may be empty). 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).
   </p>
   <p>
    This macro is a simple wrapper around AX_F90_MODULE and AX_F90_LIBRARY that
    uses the parameters provided by the end user through a --with-xxx option to
    set up the search path. Both a module and a library will be tested, the
    same path will be used for both tests, so the path must be set up with a
    common parent directory of both the library file and the module file. The
    macro also automatically updates the FCFLAGS, LDFLAGS and LIBS variables in
    addition to providing the F90_HEADER_xxx, F90_MODULE_xxx, F90_LDFLAGS_xxx
    and F90_LIBS_xxx output variables.
   </p>
   <p>
    Example: suppose you have /home/nostradamus/esoteric/lib/libalchemy.a and
    /home/nostradamus/esoteric/mod/alchemy.mod which provides a function
    transmute_into_gold, you can use the following in you configure.ac:
   </p>
   <pre>
  AX_F90_MODULE_EXTENSION
  if test x$ax_f90_modext = xunknown ; then
    AC_MSG_ERROR([unable to find f90 modules extension])
  fi
  AX_F90_LIBRARY_SETUP(alchemy,[],alchemy.$ax_f90_modext,libalchemy*,[
     use alchemy
     call transmute_into_gold('lead')
    ])
</pre>
   <p>
    and the user could configure your package using a command like this:
   </p>
   <pre>
  ./configure --with-alchemy=$HOME/esoteric
</pre>
  </div>
  <h2>
   Author
  </h2>
  <p class="indent">
   Luc Maisonobe &lt;luc@spaceroots.org&gt;
  </p>
  <h2>
   Last Modified
  </h2>
  <p class="indent">
   2005-01-14
  </p>
  <h2>
   M4 Source Code
  </h2>
  <div class="indent">
   <pre class="m4source">
AC_DEFUN([AX_F90_LIBRARY_SETUP],[
 AC_ARG_WITH([$1],[  --with-$1=path   specify search path form $1 module and library],
   [if test x${withval} = xno ; then
     AC_MSG_WARN([$1 disabled at user option])
    fi],[withval=""])
 if test x$2 != x ; then
   AX_F90_HEADER([$1],[$2],[$5],$withval,[
      FCFLAGS="$FCFLAGS $AS_TR_SH(F90_HEADER_$1)"
     ],[])
 fi
 if test x$3 != x ; then
   AX_F90_MODULE([$1],[$3],[$5],$withval,[
      FCFLAGS="$FCFLAGS $AS_TR_SH(F90_MODULE_$1)"
     ],[])
 fi
 AX_F90_LIBRARY([$1],[$4],[$5],$withval,[
    LDFLAGS="$LDFLAGS $AS_TR_SH(F90_LDFLAGS_$1)"
    LIBS="$AS_TR_SH(F90_LIBS_$1) $LIBS"
   ],[])
])
</pre>
  </div>
 </body>
</html>