Salome HOME
Merge from BR_V5_DEV 16Feb09
[modules/med.git] / adm_local / unix / config_files / ac_check_sizeof_fortran.m4
1 dnl  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 dnl
3 dnl  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 dnl
6 dnl  This library is free software; you can redistribute it and/or
7 dnl  modify it under the terms of the GNU Lesser General Public
8 dnl  License as published by the Free Software Foundation; either
9 dnl  version 2.1 of the License.
10 dnl
11 dnl  This library is distributed in the hope that it will be useful,
12 dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 dnl  Lesser General Public License for more details.
15 dnl
16 dnl  You should have received a copy of the GNU Lesser General Public
17 dnl  License along with this library; if not, write to the Free Software
18 dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 dnl
20 dnl  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 dnl
22 AC_DEFUN([AC_CHECK_SIZEOF_FORTRAN], [
23   AC_REQUIRE([AC_F77_WRAPPERS])
24   AC_CACHE_CHECK([size of Fortran [$1]], [ac_cv_sizeof_fortran_[]translit($1, [A-Z *], [a-z_p])],[
25     AC_LANG_SAVE()
26     AC_LANG([Fortran 77])
27     AC_COMPILE_IFELSE([
28       AC_LANG_SOURCE([
29         subroutine fsize()
30         $1 i(2)
31         call csize(i(1), i(2))
32         end
33       ])
34     ],[
35       AC_LANG([C])
36       cp conftest.$ac_objext conftestf.$ac_objext
37       old_LDFLAGS="$LDFLAGS"
38       LDFLAGS="conftestf.$ac_objext $LDFLAGS"
39       AC_TRY_RUN([
40 #       include <stdio.h>
41 #         define CSIZE F77_FUNC(csize,CSIZE)
42 #         define FSIZE F77_FUNC(fsize,FSIZE)
43         static long size_val;
44         /* Called by Fortran */
45         void CSIZE (i1p, i2p)
46         char *i1p, *i2p;
47         {
48           size_val = (i2p - i1p);
49         }
50         main() {
51           FILE *f=fopen ("conftestval","w");
52           if (!f) return 1;
53           /* Call the Fortran function */
54           FSIZE ();
55           fprintf (f, "%d\n", size_val);
56           return 0;
57         }
58      ])
59      LDFLAGS="$old_LDFLAGS"
60      ac_cv_sizeof_fortran_[]translit($1, [A-Z *], [a-z_p])=`cat conftestval`
61      rm -f conftestval conftestf.$ac_objext
62     ])
63     AC_LANG_RESTORE()
64   ])
65   AC_DEFINE_UNQUOTED(SIZEOF_FORTRAN_[]translit($1, [a-z *], [A-Z_p]),
66                      [$ac_cv_sizeof_fortran_[]translit($1, [A-Z *], [a-z_p])],
67                      [The size of a Fortran `$1', as computed by sizeof.])
68
69 ])