aboutsummaryrefslogtreecommitdiff
path: root/libf2c/libI77/configure.in
blob: 20f2628ba3a2d590e815cc4b0f450af93453f01e (plain)
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# Process this file with autoconf to produce a configure script.
#   Copyright (C) 1995, 1997, 1998, 2001 Free Software Foundation, Inc.
#   Contributed by Dave Love (d.love@dl.ac.uk).
#
#This file is part of GNU Fortran.
#
#GNU Fortran is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2, or (at your option)
#any later version.
#
#GNU Fortran is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with GNU Fortran; see the file COPYING.  If not, write to
#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#02111-1307, USA.

AC_PREREQ(2.12.1)
AC_INIT(ftell_.c)
AC_CONFIG_HEADER(config.h)

dnl Checks for programs.

dnl FIXME AC_PROG_CC wants CC to be able to link things, but it may
dnl not be able to.
define([AC_PROG_CC_WORKS],[])

# For g77 we'll set CC to point at the built gcc, but this will get it into
# the makefiles
AC_PROG_CC

test "$AR" || AR=ar
AC_SUBST(AR)
AC_PROG_MAKE_SET

dnl Checks for libraries.

dnl Checks for header files.
# Sanity check for the cross-compilation case:
AC_CHECK_HEADER(stdio.h,:,
  [AC_MSG_ERROR([Can't find stdio.h.
You must have a usable C system for the target already installed, at least
including headers and, preferably, the library, before you can configure
the G77 runtime system.  If necessary, install gcc now with \`LANGUAGES=c',
then the target library, then build with \`LANGUAGES=f77'.])])

AC_HEADER_STDC
dnl We could do this if we didn't know we were using gcc
dnl AC_MSG_CHECKING(for prototype-savvy compiler)
dnl AC_CACHE_VAL(g77_cv_sys_proto,                
dnl   [AC_TRY_LINK(,                             
dnl dnl looks screwy because TRY_LINK expects a function body
dnl    [return 0;} int foo (int * bar) {],       
dnl    g77_cv_sys_proto=yes,                      
dnl    [g77_cv_sys_proto=no                       
dnl     AC_DEFINE(KR_headers)])])                
dnl AC_MSG_RESULT($g77_cv_sys_proto)              

AC_MSG_CHECKING(for posix)
AC_CACHE_VAL(g77_cv_header_posix,
  AC_EGREP_CPP(yes,
  [#include <sys/types.h>
#include <unistd.h>
#ifdef _POSIX_VERSION
  yes
#endif
], 
  g77_cv_header_posix=yes,
  g77_cv_header_posix=no))
AC_MSG_RESULT($g77_cv_header_posix)

# We can rely on the GNU library being posix-ish.  I guess checking the 
# header isn't actually like checking the functions, though...
AC_MSG_CHECKING(for GNU library)
AC_CACHE_VAL(g77_cv_lib_gnu,
  AC_EGREP_CPP(yes,
    [#include <stdio.h>
#ifdef __GNU_LIBRARY__
  yes
#endif
], 
  g77_cv_lib_gnu=yes, g77_cv_lib_gnu=no))
AC_MSG_RESULT($g77_cv_lib_gnu)

# Apparently cygwin needs to be special-cased.
AC_MSG_CHECKING([for cyg\`win'32])
AC_CACHE_VAL(g77_cv_sys_cygwin32,
  AC_EGREP_CPP(yes,
  [#ifdef __CYGWIN32__
  yes
#endif
],
  g77_cv_sys_cygwin32=yes,
  g77_cv_sys_cygwin32=no))
AC_MSG_RESULT($g77_cv_sys_cygwin32)

# ditto for mingw32.
AC_MSG_CHECKING([for mingw32])
AC_CACHE_VAL(g77_cv_sys_mingw32,
  AC_EGREP_CPP(yes,
  [#ifdef __MINGW32__
  yes
#endif
],
  g77_cv_sys_mingw32=yes,
  g77_cv_sys_mingw32=no))
AC_MSG_RESULT($g77_cv_sys_mingw32)


AC_CHECK_HEADER(fcntl.h,
   test $g77_cv_header_posix = yes && AC_DEFINE(_POSIX_SOURCE),
   AC_DEFINE(NO_FCNTL, 1, [Define if fcntl.h is missing.]) 
   AC_DEFINE(OPEN_DECL, 1, [Define if fcntl.h is missing.]))

dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T

dnl Checks for library functions.

# This should always succeed on unix.
# Apparently positive result on cygwin loses re. NON_UNIX_STDIO
# (as of cygwin b18). Likewise on mingw.
AC_CHECK_FUNC(fstat)
AC_MSG_CHECKING([need for NON_UNIX_STDIO])
if test $g77_cv_sys_cygwin32 = yes \
  || test $g77_cv_sys_mingw32 = yes \
  || test $ac_cv_func_fstat = no; then
  AC_MSG_RESULT(yes)
  AC_DEFINE(NON_UNIX_STDIO, 1, [Define if we do not have Unix Stdio.])
else
  AC_MSG_RESULT(no)
fi

AC_CHECK_FUNCS(ftruncate)
AC_CHECK_FUNCS(mkstemp)
AC_CHECK_FUNCS(tempnam)

# posix will guarantee the right behaviour for sprintf, else we can't be
# sure; HEADER_STDC wouldn't be the right check in sunos4, for instance.
# However, on my sunos4/gcc setup unistd.h leads us wrongly to believe
# we're posix-conformant, so always do the test.
AC_MSG_CHECKING(for ansi/posix sprintf result)
dnl This loses if included as an argument to AC_CACHE_VAL because the
dnl changequote doesn't take effect and the [] vanish.
dnl fixme: use cached value
AC_TRY_RUN(changequote(<<, >>)dnl
  <<#include <stdio.h>
    /* does sprintf return the number of chars transferred? */
    main () {char foo[2]; (sprintf(foo, "1") == 1) ? exit(0) : exit(1);}
>>changequote([, ]),
    g77_cv_sys_sprintf_ansi=yes,
    g77_cv_sys_sprintf_ansi=no,
    g77_cv_sys_sprintf_ansi=no)
AC_CACHE_VAL(g77_cv_sys_sprintf_ansi,
     g77_cv_sys_sprintf_ansi=$g77_cv_sys_sprintf_ansi)
dnl We get a misleading `(cached)' message...
AC_MSG_RESULT($g77_cv_sys_sprintf_ansi)

# The cygwin patch takes steps to avoid defining USE_STRLEN here -- I don't
# understand why.
if test $g77_cv_sys_sprintf_ansi != yes; then 
  AC_DEFINE(USE_STRLEN, 1, [Define if we use strlen.])
fi

# define NON_ANSI_RW_MODES on unix (can't hurt)
AC_MSG_CHECKING(NON_ANSI_RW_MODES)
AC_EGREP_CPP(yes,
[#ifdef unix
  yes
#endif
#ifdef __unix
  yes
#endif
#ifdef __unix__
  yes
#endif
], is_unix=yes, is_unix=no)
# NON_ANSI_RW_MODES shouldn't be necessary on cygwin for binary mounts.
if test $g77_cv_sys_cygwin32 = yes || test $g77_cv_sys_mingw32 = yes; then
  AC_MSG_RESULT(no)
else
  if test $is_unix = yes; then
    AC_DEFINE(NON_ANSI_RW_MODES, 1, [Define if we have non ANSI RW modes.])
    AC_MSG_RESULT(yes)
  else
    AC_MSG_RESULT(no)
  fi
fi

# This EOF_CHAR is a misfeature on unix.
AC_DEFINE(NO_EOF_CHAR_CHECK, 1, [Always defined.])

AC_TYPE_OFF_T

AC_DEFINE(Skip_f2c_Undefs, 1, [Define to skip f2c undefs.])

AC_OUTPUT(Makefile)

dnl We might have configuration options to:
dnl * change unit preconnexion in err.c (f_init.c)
dnl * -DALWAYS_FLUSH
dnl * -DOMIT_BLANK_CC

dnl Local Variables:
dnl comment-start: "dnl "
dnl comment-end: ""
dnl comment-start-skip: "\\bdnl\\b\\s *"
dnl End: