Linux build : fix undefined pragma
[scilab.git] / scilab / m4 / fortran.m4
1 dnl
2 dnl Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 dnl Copyright (C) INRIA - 2006 - Sylvestre Ledru
4 dnl 
5 dnl Copyright (C) 2012 - 2016 - Scilab Enterprises
6 dnl
7 dnl This file is hereby licensed under the terms of the GNU GPL v2.0,
8 dnl pursuant to article 5.3.4 of the CeCILL v.2.1.
9 dnl This file was originally licensed under the terms of the CeCILL v2.1,
10 dnl and continues to be available under such terms.
11 dnl For more information, see the COPYING file which you should have received
12 dnl along with this program.
13 dnl
14
15 dnl Fortran Macros
16
17 dnl ------------------------------------------------------
18 dnl AC_CHECK_UNDERSCORE_FORTRAN
19 dnl Look for trailing or leading underscores
20 dnl 
21 AC_DEFUN([AC_CHECK_UNDERSCORE_FORTRAN],[
22
23 AC_CHECK_PROGS(NM,nm,no)
24 if test "x$NM" = "xno"; then
25         AC_MSG_ERROR([Unable to find nm in the path. nm is used to list all the symbol from a lib])
26 fi
27 AC_MSG_CHECKING([for leading underscores with Fortran (name-mangling scheme)])
28
29 cat << EOF > pipof.f
30        subroutine pipof
31        end
32 EOF
33
34 dnl expand possible $SCIDIR in $FC (wizard command...)
35 eval "$F77 -c pipof.f > /dev/null 2>&1"
36
37 FC_LEADING_UNDERSCORE=no
38 FC_TRAILING_UNDERSCORE=no
39
40 output=`$NM $NMOPT pipof.o|grep _pipof 2>&1`
41 if test ! -z "$output"; then
42   FC_LEADING_UNDERSCORE=yes
43   FC_TRAILING_UNDERSCORE=no
44 fi
45
46 output=`$NM $NMOPT pipof.o|grep pipof_ 2>&1`
47 if test ! -z "$output"; then
48   FC_LEADING_UNDERSCORE=no
49   FC_TRAILING_UNDERSCORE=yes
50 fi
51
52 output=`$NM $NMOPT pipof.o|grep _pipof_ 2>&1`
53 if test ! -z "$output"; then
54   FC_LEADING_UNDERSCORE=yes
55   FC_TRAILING_UNDERSCORE=yes
56 fi
57
58 if test "$FC_LEADING_UNDERSCORE" = yes; then
59   AC_DEFINE([WLU],,[If leading underscores])
60 fi
61 if test "$FC_TRAILING_UNDERSCORE" = yes; then
62   AC_DEFINE([WTU],,[If trailing underscores])
63 fi
64
65 rm -f pipof.f pipof.o
66
67 AC_MSG_RESULT([$FC_LEADING_UNDERSCORE])
68 AC_MSG_CHECKING([for trailing underscores with Fortran (name-mangling scheme)])
69 AC_MSG_RESULT([$FC_TRAILING_UNDERSCORE])
70
71 #####################
72 ## test for sharpsign
73 #####################
74
75 AC_MSG_CHECKING([use of the sharpsign in CPP])
76
77 AC_COMPILE_IFELSE(
78         [ 
79                 AC_LANG_PROGRAM(
80                         [[#define C2F(name) name##_]], 
81                         [[C2F(toto)()]]
82                 )
83         ],
84         [AC_MSG_RESULT(yes)
85         AC_DEFINE([CNAME(name1,name2)], [name1##name2],[Cname])
86         USE_SHARP_SIGN=yes]
87         ,
88         [AC_MSG_RESULT(no)
89         AC_DEFINE([CNAME(name1,name2)], [name1/**/name2],[Cname])
90         USE_SHARP_SIGN=no]
91 )
92
93 ## Define  C2F and F2C entry point conversion ##
94 if test "$FC_TRAILING_UNDERSCORE" = yes; then
95         if test "$USE_SHARP_SIGN" = yes; then
96         AC_MSG_RESULT([Define C2F with Trailing Underscore and Sharp Sign])
97                 AC_DEFINE([C2F(name)], [name##_],[Define C2F with Trailing Underscore and Sharp Sign])
98                 AC_DEFINE([F2C(name)], [name##_],[Define F2C with Trailing Underscore and Sharp Sign])
99         else
100         AC_MSG_RESULT([Define C2F with Trailing Underscore and without Sharp Sign])
101                 AC_DEFINE([C2F(name)], [name/**/_],[Define C2F with Trailing Underscore and without Sharp Sign])
102                 AC_DEFINE([F2C(name)], [name/**/_],[Define F2C with Trailing Underscore and without Sharp Sign])
103         fi
104 else
105                 AC_MSG_RESULT([Define C2F without Trailing Underscore])
106         AC_DEFINE([C2F(name)], [name],[Define C2F without Trailing Underscore])
107         AC_DEFINE([F2C(name)], [name],[Define C2F without Trailing Underscore])
108 fi
109
110 ])dnl AC_CHECK_UNDERSCORE_FORTRAN
111