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
|
AC_INIT([urweb], [20151122])
WORKING_VERSION=0
AC_USE_SYSTEM_EXTENSIONS
# automake 1.12 requires this, but automake 1.11 doesn't recognize it
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
AM_INIT_AUTOMAKE([-Wall -Werror foreign no-define])
AC_PROG_CC()
AC_PROG_LIBTOOL()
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([include/urweb/config.h])
AX_PTHREAD([echo >/dev/null], [echo "Your C compiler does not support POSIX threads."; exit 1])
AX_CHECK_OPENSSL([echo >/dev/null], [echo "You must install OpenSSL development files."; exit 1])
AC_CHECK_PROG(MLTON, mlton, yes, [])
if test [-z $MLTON]; then
echo "You must install MLton."
exit 1
fi
AC_CHECK_PROG(MLLEX, mllex, yes, [])
if test [-z $MLLEX]; then
echo "You must install MLton (to get mllex)."
exit 1
fi
AC_CHECK_PROG(MLYACC, mlyacc, yes, [])
if test [-z $MLYACC]; then
echo "You must install MLton (to get mlyacc)."
exit 1
fi
if test [$prefix = "NONE"]; then
prefix=/usr/local
fi
if test [-z $BIN]; then
BIN=$prefix/bin
fi
if test [-z $LIB]; then
LIB=$prefix/lib
fi
if test [-z $SRCLIB]; then
SRCLIB=$prefix/lib/urweb
fi
if test [-z $INCLUDE]; then
INCLUDE=$prefix/include/urweb
fi
if test [-z $SITELISP]; then
SITELISP=$prefix/share/emacs/site-lisp/urweb-mode
fi
AC_ARG_WITH([emacs],
[AS_HELP_STRING([--without-emacs],
[disable installation of Emacs mode])],
[],
[with_emacs=yes])
AM_CONDITIONAL(USE_EMACS, test "x$with_emacs" = xyes)
if test [-z $PGHEADER]; then
AC_CHECK_HEADERS([postgresql/libpq-fe.h],
[PGHEADER=postgresql/libpq-fe.h])
fi
if test [-z $PGHEADER]; then
PGHEADER=libpq-fe.h
fi
if test [-z $MSHEADER]; then
AC_CHECK_HEADERS([mysql/mysql.h],
[MSHEADER=mysql/mysql.h])
fi
if test [-z $MSHEADER]; then
MSHEADER=mysql.h
fi
if test [-z $SQHEADER]; then
SQHEADER=sqlite3.h
fi
if test [$WORKING_VERSION = "1"]; then
VERSION="$VERSION + `hg identify || (cat .hg_archival.txt | grep 'node\:') || echo ?`"
fi
# Clang does not like being passed -pthread, since it's implicit on OS X.
# So let's get rid of that! Here's to hoping it doesn't break Clang
# on other platforms.
AC_MSG_CHECKING([if compiling with clang])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([], [[
#ifndef __clang__
not clang
#endif
]])],
[CLANG=yes], [CLANG=no])
AC_MSG_RESULT([$CLANG])
if test [$CLANG = "yes"]; then
PTHREAD_CFLAGS=""
PTHREAD_LIBS=""
fi
# Check if pthread_t is a scalar or pointer type so we can use the correct
# OpenSSL functions on it.
AC_MSG_CHECKING([if pthread_t is a pointer type])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[
#include <pthread.h>
]],
[[
pthread_t a;
*a;
]])],
AC_DEFINE([PTHREAD_T_IS_POINTER], [1], [Define if pthread_t is a pointer.])
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
AC_SUBST(CC)
AC_SUBST(BIN)
AC_SUBST(LIB)
AC_SUBST(SRCLIB)
AC_SUBST(INCLUDE)
AC_SUBST(SITELISP)
AC_SUBST(CCARGS)
AC_SUBST(MLTONARGS)
AC_SUBST(PGHEADER)
AC_SUBST(MSHEADER)
AC_SUBST(SQHEADER)
AC_SUBST(VERSION)
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_LIBS)
AC_CONFIG_FILES([
Makefile
src/c/Makefile
src/config.sml
])
AC_OUTPUT()
cat <<EOF
Ur/Web configuration:
bin directory: BIN $BIN
lib directory: LIB $LIB
src lib directory: SRCLIB $SRCLIB
include directory: INCLUDE $INCLUDE
site-lisp directory: SITELISP $SITELISP
C compiler: CC $CC
Extra CC args: CCARGS $CCARGS
Extra MLTON args: MLTONARGS $MLTONARGS
Postgres C header: PGHEADER $PGHEADER
MySQL C header: MSHEADER $MSHEADER
SQLite C header: SQHEADER $SQHEADER
OpenSSL: OPENSSL_LIBS $OPENSSL_LIBS
pthreads: PTHREAD_CFLAGS $PTHREAD_CFLAGS
PTHREAD_LIBS $PTHREAD_LIBS
Version: $VERSION
EOF
|