Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit06cd0f1

Browse files
committed
Substituted new configure test for types of accept()
Interfaced a lot of the custom tests to the config.cache, in the processmade them separate macros and grouped them out into files. Made namingadjustments.Removed a couple of useless/unused configure tests.Disabled C++ by default. C++ is no more special than Perl, Python, and Tcl.And it breaks equally often. :(
1 parentb4182b1 commit06cd0f1

File tree

16 files changed

+1605
-1023
lines changed

16 files changed

+1605
-1023
lines changed

‎aclocal.m4

Lines changed: 336 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ dnl PARTICULAR PURPOSE.
1313
#
1414
# Autoconf macros for configuring the build of Python extension modules
1515
#
16-
# $Header: /cvsroot/pgsql/aclocal.m4,v 1.1 2000/06/10 18:01:34 petere Exp $
16+
# $Header: /cvsroot/pgsql/aclocal.m4,v 1.2 2000/06/11 11:39:45 petere Exp $
1717
#
1818

1919
# PGAC_PROG_PYTHON
@@ -61,6 +61,74 @@ else
6161
AC_MSG_ERROR([Python not found])
6262
fi])# PGAC_PATH_PYTHONDIR
6363

64+
# Macros to detect certain C++ features
65+
# $Header: /cvsroot/pgsql/aclocal.m4,v 1.2 2000/06/11 11:39:45 petere Exp $
66+
67+
68+
# PGAC_CLASS_STRING
69+
# -----------------
70+
# Look for class `string'. First look for the <string> header. If this
71+
# is found a <string> header then it's probably safe to assume that
72+
# class string exists. If not, check to make sure that <string.h>
73+
# defines class `string'.
74+
AC_DEFUN([PGAC_CLASS_STRING],
75+
[AC_LANG_SAVE
76+
AC_LANG_CPLUSPLUS
77+
AC_CHECK_HEADER(string,
78+
[AC_DEFINE(HAVE_CXX_STRING_HEADER)])
79+
80+
if test x"$ac_cv_header_string" != xyes ; then
81+
AC_CACHE_CHECK([for class string in <string.h>],
82+
[pgac_cv_class_string_in_string_h],
83+
[AC_TRY_COMPILE([#include <stdio.h>
84+
#include <stdlib.h>
85+
#include <string.h>
86+
],
87+
[string foo = "test"],
88+
[pgac_cv_class_string_in_string_h=yes],
89+
[pgac_cv_class_string_in_string_h=no])])
90+
91+
if test x"$pgac_cv_class_string_in_string_h" != xyes ; then
92+
AC_MSG_ERROR([neither <string> nor <string.h> seem to define the C++ class \`string\'])
93+
fi
94+
fi
95+
AC_LANG_RESTORE])# PGAC_CLASS_STRING
96+
97+
98+
# PGAC_CXX_NAMESPACE_STD
99+
# ----------------------
100+
# Check whether the C++ compiler understands `using namespace std'.
101+
#
102+
# Note 1: On at least some compilers, it will not work until you've
103+
# included a header that mentions namespace std. Thus, include the
104+
# usual suspects before trying it.
105+
#
106+
# Note 2: This test does not actually reveal whether the C++ compiler
107+
# properly understands namespaces in all generality. (GNU C++ 2.8.1
108+
# is one that doesn't.) However, we don't care.
109+
AC_DEFUN([PGAC_CXX_NAMESPACE_STD],
110+
[AC_REQUIRE([PGAC_CLASS_STRING])
111+
AC_CACHE_CHECK([for namespace std in C++],
112+
pgac_cv_cxx_namespace_std,
113+
[
114+
AC_LANG_SAVE
115+
AC_LANG_CPLUSPLUS
116+
AC_TRY_COMPILE(
117+
[#include <stdio.h>
118+
#include <stdlib.h>
119+
#ifdef HAVE_CXX_STRING_HEADER
120+
#include <string>
121+
#endif
122+
using namespace std;
123+
],[],
124+
[pgac_cv_cxx_namespace_std=yes],
125+
[pgac_cv_cxx_namespace_std=no])
126+
AC_LANG_RESTORE])
127+
128+
if test $pgac_cv_cxx_namespace_std = yes ; then
129+
AC_DEFINE(HAVE_NAMESPACE_STD,1,[Define to 1 if the C++ compiler understands `using namespace std'])
130+
fi])# PGAC_CXX_NAMESPACE_STD
131+
64132
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
65133
dnl The program must properly implement --version.
66134
AC_DEFUN(AM_MISSING_PROG,
@@ -77,3 +145,270 @@ else
77145
fi
78146
AC_SUBST($1)])
79147

148+
# Macros to detect C compiler features
149+
# $Header: /cvsroot/pgsql/aclocal.m4,v 1.2 2000/06/11 11:39:45 petere Exp $
150+
151+
152+
# PGAC_C_SIGNED
153+
# -------------
154+
# Check if the C compiler understands signed types.
155+
# (Of course any ISO C compiler should, what is this still doing here?)
156+
AC_DEFUN([PGAC_C_SIGNED],
157+
[AC_CACHE_CHECK(forsignedtypes,pgac_cv_c_signed,
158+
[AC_TRY_COMPILE([],
159+
[signed char c; signed short s; signed int i;],
160+
[pgac_cv_c_signed=yes],
161+
[pgac_cv_c_signed=no])])
162+
if test x"$pgac_cv_c_signed" = xno ; then
163+
AC_DEFINE(signed,,[Define empty if the C compiler does not understand signed types])
164+
fi])# PGAC_C_SIGNED
165+
166+
167+
168+
# PGAC_C_VOLATILE
169+
# ---------------
170+
# Check if the C compiler understands `volatile'. Note that if it doesn't
171+
# then this will potentially break the program semantics.
172+
AC_DEFUN([PGAC_C_VOLATILE],
173+
[AC_CACHE_CHECK(forvolatile,pgac_cv_c_volatile,
174+
[AC_TRY_COMPILE([],
175+
[extern volatile int i;],
176+
[pgac_cv_c_volatile=yes],
177+
[pgac_cv_c_volatile=no])])
178+
if test x"$pgac_cv_c_volatile" = xno ; then
179+
AC_DEFINE(volatile,,[Define empty if the C compiler does not understand `volatile'])
180+
fi])# PGAC_C_VOLATILE
181+
182+
183+
184+
# PGAC_TYPE_64BIT_INT(TYPE)
185+
# -------------------------
186+
# Check if TYPE is a working 64 bit integer type. Set HAVE_TYPE_64 to
187+
# yes or no respectively, and define HAVE_TYPE_64 if yes.
188+
AC_DEFUN([PGAC_TYPE_64BIT_INT],
189+
[define([Ac_define],[translit([have_$1_64],[a-z *],[A-Z_P])])dnl
190+
define([Ac_cachevar],[translit([pgac_cv_type_$1_64],[ *],[_p])])dnl
191+
AC_CACHE_CHECK([whether$1 is 64 bits],[Ac_cachevar],
192+
[AC_TRY_RUN(
193+
[typedef$1 int64;
194+
195+
/*
196+
* These are globals to discourage the compiler from folding all the
197+
* arithmetic tests down to compile-time constants.
198+
*/
199+
int64 a = 20000001;
200+
int64 b = 40000005;
201+
202+
int does_int64_work()
203+
{
204+
int64 c,d;
205+
206+
if (sizeof(int64) != 8)
207+
return 0;/* definitely not the right size */
208+
209+
/* Do perfunctory checks to see if 64-bit arithmetic seems to work */
210+
c = a * b;
211+
d = (c + b) / b;
212+
if (d != a+1)
213+
return 0;
214+
return 1;
215+
}
216+
main() {
217+
exit(! does_int64_work());
218+
}],
219+
[Ac_cachevar=yes],
220+
[Ac_cachevar=no],
221+
[Ac_cachevar=no
222+
dnl We will do better here with Autoconf 2.50
223+
AC_MSG_WARN([64 bit arithmetic disabled when cross-compiling])])])
224+
225+
Ac_define=$Ac_cachevar
226+
if test x"$Ac_cachevar" = xyes ; then
227+
AC_DEFINE(Ac_define,,[Set to 1 if `]$1[' is 64 bits])
228+
fi
229+
undefine([Ac_define])dnl
230+
undefine([Ac_cachevar])dnl
231+
])# PGAC_TYPE_64BIT_INT
232+
233+
234+
235+
# PGAC_CHECK_ALIGNOF(TYPE)
236+
# ------------------------
237+
# Find the alignment requirement of the given type. Define the result
238+
# as ALIGNOF_TYPE. If cross-compiling, sizeof(type) is used as a
239+
# default assumption.
240+
#
241+
# This is modeled on the standard autoconf macro AC_CHECK_SIZEOF.
242+
# That macro never got any points for style.
243+
AC_DEFUN([PGAC_CHECK_ALIGNOF],
244+
[changequote(<<,>>)dnl
245+
dnl The name to #define.
246+
define(<<AC_TYPE_NAME>>,translit(alignof_$1,[a-z *],[A-Z_P]))dnl
247+
dnl The cache variable name.
248+
define(<<AC_CV_NAME>>,translit(pgac_cv_alignof_$1,[ *],[_p]))dnl
249+
changequote([,])dnl
250+
AC_MSG_CHECKING(alignmentof$1)
251+
AC_CACHE_VAL(AC_CV_NAME,
252+
[AC_TRY_RUN([#include <stdio.h>
253+
struct { char filler;$1 field; } mystruct;
254+
main()
255+
{
256+
FILE *f=fopen("conftestval", "w");
257+
if (!f) exit(1);
258+
fprintf(f, "%d\n", ((char*) & mystruct.field) - ((char*) & mystruct));
259+
exit(0);
260+
}],AC_CV_NAME=`catconftestval`,
261+
AC_CV_NAME='sizeof($1)',
262+
AC_CV_NAME='sizeof($1)')])dnl
263+
AC_MSG_RESULT($AC_CV_NAME)
264+
AC_DEFINE_UNQUOTED(AC_TYPE_NAME,$AC_CV_NAME,[The alignment requirement of a `]$1['])
265+
undefine([AC_TYPE_NAME])dnl
266+
undefine([AC_CV_NAME])dnl
267+
])# PGAC_CHECK_ALIGNOF
268+
269+
# $Header: /cvsroot/pgsql/aclocal.m4,v 1.2 2000/06/11 11:39:45 petere Exp $
270+
# This comes from the official Autoconf macro archive at
271+
# <http://research.cys.de/autoconf-archive/>
272+
# (I removed the $ before the Id CVS keyword below.)
273+
274+
275+
dnl @synopsis AC_FUNC_ACCEPT_ARGTYPES
276+
dnl
277+
dnl Checks the data types of the three arguments to accept(). Results are
278+
dnl placed into the symbols ACCEPT_TYPE_ARG[123], consistent with the
279+
dnl following example:
280+
dnl
281+
dnl #define ACCEPT_TYPE_ARG1 int
282+
dnl #define ACCEPT_TYPE_ARG2 struct sockaddr *
283+
dnl #define ACCEPT_TYPE_ARG3 socklen_t
284+
dnl
285+
dnl This macro requires AC_CHECK_HEADERS to have already verified the
286+
dnl presence or absence of sys/types.h and sys/socket.h.
287+
dnl
288+
dnl NOTE: This is just a modified version of the AC_FUNC_SELECT_ARGTYPES
289+
dnl macro. Credit for that one goes to David MacKenzie et. al.
290+
dnl
291+
dnl @version Id: ac_func_accept_argtypes.m4,v 1.1 1999/12/03 11:29:29 simons Exp $
292+
dnl @author Daniel Richard G. <skunk@mit.edu>
293+
dnl
294+
295+
# PostgreSQL local changes: In the original version ACCEPT_TYPE_ARG3
296+
# is a pointer type. That's kind of useless because then you can't
297+
# use the macro to define a corresponding variable. We also make the
298+
# reasonable(?) assumption that you can use arg3 for getsocktype etc.
299+
# as well (i.e., anywhere POSIX.2 has socklen_t).
300+
301+
AC_DEFUN(AC_FUNC_ACCEPT_ARGTYPES,
302+
[AC_MSG_CHECKING([types of arguments for accept()])
303+
AC_CACHE_VAL(ac_cv_func_accept_arg1,dnl
304+
[AC_CACHE_VAL(ac_cv_func_accept_arg2,dnl
305+
[AC_CACHE_VAL(ac_cv_func_accept_arg3,dnl
306+
[for ac_cv_func_accept_arg1 in 'int' 'unsigned int'; do
307+
for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'void *'; do
308+
for ac_cv_func_accept_arg3 in 'socklen_t' 'size_t' 'unsigned int' 'int'; do
309+
AC_TRY_COMPILE(dnl
310+
[#ifdef HAVE_SYS_TYPES_H
311+
#include <sys/types.h>
312+
#endif
313+
#ifdef HAVE_SYS_SOCKET_H
314+
#include <sys/socket.h>
315+
#endif
316+
extern accept ($ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *);],,dnl
317+
[ac_not_found=no ; break 3],ac_not_found=yes)
318+
done
319+
done
320+
done
321+
])dnl AC_CACHE_VAL
322+
])dnl AC_CACHE_VAL
323+
])dnl AC_CACHE_VAL
324+
if test "$ac_not_found" = yes; then
325+
ac_cv_func_accept_arg1=int
326+
ac_cv_func_accept_arg2='struct sockaddr *'
327+
ac_cv_func_accept_arg3='socklen_t'
328+
fi
329+
AC_MSG_RESULT([$ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *])
330+
AC_DEFINE_UNQUOTED(ACCEPT_TYPE_ARG1,$ac_cv_func_accept_arg1)
331+
AC_DEFINE_UNQUOTED(ACCEPT_TYPE_ARG2,$ac_cv_func_accept_arg2)
332+
AC_DEFINE_UNQUOTED(ACCEPT_TYPE_ARG3,$ac_cv_func_accept_arg3)
333+
])
334+
335+
# Macros that test various C library quirks
336+
# $Header: /cvsroot/pgsql/aclocal.m4,v 1.2 2000/06/11 11:39:45 petere Exp $
337+
338+
339+
# PGAC_VAR_INT_TIMEZONE
340+
# ---------------------
341+
# Check if the global variable `timezone' exists. If so, define
342+
# HAVE_INT_TIMEZONE.
343+
AC_DEFUN([PGAC_VAR_INT_TIMEZONE],
344+
[AC_CACHE_CHECK(forinttimezone,pgac_cv_var_int_timezone,
345+
[AC_TRY_LINK([#include <time.h>],
346+
[int res = timezone / 60;],
347+
[pgac_cv_var_int_timezone=yes],
348+
[pgac_cv_var_int_timezone=no])])
349+
if test x"$pgac_cv_var_int_timezone" = xyes ; then
350+
AC_DEFINE(HAVE_INT_TIMEZONE,,[Set to 1 if you have the global variable timezone])
351+
fi])# PGAC_VAR_INT_TIMEZONE
352+
353+
354+
# PGAC_FUNC_GETTIMEOFDAY_1ARG
355+
# ---------------------------
356+
# Check if gettimeofday() has only one arguments. (Normal is two.)
357+
# If so, define GETTIMEOFDAY_1ARG.
358+
AC_DEFUN([PGAC_FUNC_GETTIMEOFDAY_1ARG],
359+
[AC_CACHE_CHECK(whethergettimeofdaytakesonlyoneargument,
360+
pgac_cv_func_gettimeofday_1arg,
361+
[AC_TRY_COMPILE([#include <sys/time.h>],
362+
[struct timeval *tp;
363+
struct timezone *tzp;
364+
gettimeofday(tp,tzp);],
365+
[pgac_cv_func_gettimeofday_1arg=no],
366+
[pgac_cv_func_gettimeofday_1arg=yes])])
367+
if test x"$pgac_cv_func_gettimeofday_1arg" = xyes ; then
368+
AC_DEFINE(GETTIMEOFDAY_1ARG,,[Set to 1 if gettimeofday() takes only 1 argument])
369+
fi])# PGAC_FUNC_GETTIMEOFDAY_1ARG
370+
371+
372+
# PGAC_UNION_SEMUN
373+
# ----------------
374+
# Check if `union semun' exists. Define HAVE_UNION_SEMUN if so.
375+
# If it doesn't then one could define it as
376+
# union semun { int val; struct semid_ds *buf; unsigned short *array; }
377+
AC_DEFUN([PGAC_UNION_SEMUN],
378+
[AC_CACHE_CHECK(forunionsemun,pgac_cv_union_semun,
379+
[AC_TRY_COMPILE([#include <sys/types.h>
380+
#include <sys/ipc.h>
381+
#include <sys/sem.h>],
382+
[union semun semun;],
383+
[pgac_cv_union_semun=yes],
384+
[pgac_cv_union_semun=no])])
385+
if test x"$pgac_cv_union_semun" = xyes ; then
386+
AC_DEFINE(HAVE_UNION_SEMUN,,[Set to 1 if you have `union semun'])
387+
fi])# PGAC_UNION_SEMUN
388+
389+
390+
# PGAC_FUNC_POSIX_SIGNALS
391+
# -----------------------
392+
# Check to see if the machine has the POSIX signal interface. Define
393+
# HAVE_POSIX_SIGNALS if so. Also set the output variable HAVE_POSIX_SIGNALS
394+
# to yes or no.
395+
#
396+
# Note that this test only compiles a test program, it doesn't check
397+
# whether the routines actually work. If that becomes a problem, make
398+
# a fancier check.
399+
AC_DEFUN([PGAC_FUNC_POSIX_SIGNALS],
400+
[AC_CACHE_CHECK(forPOSIXsignalinterface,pgac_cv_func_posix_signals,
401+
[AC_TRY_LINK([#include <signal.h>
402+
],
403+
[struct sigaction act, oact;
404+
sigemptyset(&act.sa_mask);
405+
act.sa_flags = SA_RESTART;
406+
sigaction(0, &act, &oact);],
407+
[pgac_cv_func_posix_signals=yes],
408+
[pgac_cv_func_posix_signals=no])])
409+
if test x"$pgac_cv_func_posix_signals" = xyes ; then
410+
AC_DEFINE(HAVE_POSIX_SIGNALS,,[Set to 1 if you have the POSIX signal interface])
411+
fi
412+
HAVE_POSIX_SIGNALS=$pgac_cv_func_posix_signals
413+
AC_SUBST(HAVE_POSIX_SIGNALS)])# PGAC_FUNC_POSIX_SIGNALS
414+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp