summaryrefslogtreecommitdiff
path: root/configure.in
blob: 77153b6ed06df847c8c68efa8a05e15a79dad815 (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
dnl Process this file with autoconf to produce a configure script.
AC_INIT(ruby.h)

PROGS="ruby"
AC_SUBST(PROGS)dnl

dnl Checks for programs.
AC_PROG_CC
AC_PROG_GCC_TRADITIONAL
AC_PROG_YACC
AC_PROG_INSTALL
AC_PROG_MAKE_SET

dnl Checks for libraries.
AC_CHECK_LIB(m, pow)
AC_CHECK_LIB(crypt, crypt)
AC_CHECK_LIB(dl, dlopen, [:])

dnl Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h limits.h sys/file.h sys/ioctl.h sys/time.h unistd.h\
		stdlib.h syscall.h a.out.h string.h utime.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_UID_T
AC_TYPE_SIZE_T
AC_STRUCT_ST_BLKSIZE
AC_STRUCT_ST_BLOCKS
AC_STRUCT_ST_RDEV

dnl Checks for library functions.
AC_TYPE_GETGROUPS
AC_TYPE_SIGNAL
AC_FUNC_ALLOCA
AC_FUNC_VFORK
AC_REPLACE_FUNCS(memmove mkdir strerror strftime\
		 strstr strtoul strdup)
AC_CHECK_FUNCS(fmod killpg random wait4 waitpid syscall getcwd\
	      setruid seteuid setreuid setrgid setegid setregid\
	      getpriority sigprocmask dlopen utimes)
AC_CHECK_FUNC(setenv, [], AC_CHECK_FUNCS(putenv))
if test "$ac_cv_func strftime" = no; then
    AC_STRUCT_TIMEZONE
    AC_TRY_LINK([],
	 [extern int daylight; int i = daylight;], AC_DEFINE(HAVE_DAYLIGHT))
fi

AC_C_BIGENDIAN
AC_MSG_CHECKING(std stdio)
AC_CACHE_VAL(rb_cv_stdstdio,
[AC_TRY_COMPILE([#include <stdio.h>], 
	        [stdin->_cnt > 0;], 
	        rb_cv_stdstdio=yes,
	        rb_cv_stdstdio=no)])
AC_MSG_RESULT($rb_cv_stdstdio)
if test "$rb_cv_stdstdio" = yes; then
  AC_DEFINE(STDSTDIO)
fi
AC_MSG_CHECKING(struct passwd)
AC_EGREP_HEADER(pw_change, pwd.h, AC_DEFINE(PW_CHANGE))
AC_EGREP_HEADER(pw_quota, pwd.h, AC_DEFINE(PW_QUOTA))
AC_EGREP_HEADER(pw_age, pwd.h, AC_DEFINE(PW_AGE))
AC_EGREP_HEADER(pw_class, pwd.h, AC_DEFINE(PW_CLASS))
AC_EGREP_HEADER(pw_comment, pwd.h, AC_DEFINE(PW_COMMENT))
AC_EGREP_HEADER(pw_expire, pwd.h, AC_DEFINE(PW_EXPIRE))
AC_MSG_RESULT(done)

if test "$ac_cv_header_a_out_h" = yes; then
 AC_MSG_CHECKING(whether matz's dln works)
 cp confdefs.h config.h
 AC_CACHE_VAL(rb_cv_mydln,
 [AC_TRY_COMPILE([
#define USE_MY_DLN
#include "dln.c"
],
	        [], 
	        rb_cv_mydln=yes,
	        rb_cv_mydln=no)])
 AC_MSG_RESULT($rb_cv_mydln)
 if test "$rb_cv_mydln" = yes; then
   AC_DEFINE(USE_MY_DLN)
 fi
fi

AC_SUBST(STATIC)dnl
AC_SUBST(CCDLFLAGS)dnl
AC_SUBST(LDDLFLAGS)dnl
AC_SUBST(DLEXT)dnl
AC_SUBST(EXTMAKE)dnl

EXTMAKE=
STATIC=

if test "$rb_cv_mydln" = yes; then
  EXTMAKE=extmake
  if test "$HOSTTYPE" = sparc; then
    if test "$ac_cv_prog_CC" = gcc; then
      STATIC=-static
    else
      STATIC=-Bstatic
    fi
  fi
  DLEXT=o
  AC_DEFINE(DLEXT, ".o")
  CCDLFLAGS=
  LDCMD=
elif test "$ac_cv_lib_dl" = yes || test "$ac_cv_func_dlopen" = yes; then
  AC_CANONICAL_HOST
  echo "please mail this value to matz -- $host_os"
  EXTMAKE=extmake
  DLEXT=so
  AC_DEFINE(DLEXT, ".so")
  if test "$ac_cv_prog_CC" = gcc; then
    CCDLFLAGS=-fpic
  else
    case "$host_os" in
	hpux*)		CCDLFLAGS='+z' ;;
	solaris*|irix*)	CCDLFLAGS='-K pic' ;;
	sunos*)		CCDLFLAGS='-pic' ;;
	svr4*|esix*) 	CCDLFLAGS='-Kpic' ;;
	*)		CCDLFLAGS='' ;;
    esac
  fi
  case "$host_os" in
	hpux*)		LDDLFLAGS='-b' ;;
	solaris*) 	LDDLFLAGS='-G' ;;
	sunos*) 	LDDLFLAGS='-assert nodefinitions' ;;
	svr4*|esix*) 	LDDLFLAGS="-G $LDFLAGS" ;;
	*) 		LDDLFLAGS="" ;;
  esac
fi

cp confdefs.h config.h
AC_OUTPUT(Makefile ext/extmk.rb)