aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
blob: 052915d1f2bba601bb2d5df4253983418bcffb8d (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
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.57)
AC_INIT([jim], [0.63], [steveb@workware.net.au])
AC_CONFIG_HEADER(jimautoconf.h)

# Checks for programs.
AC_PROG_CC
AC_PROG_MAKE_SET

# Checks for types
AC_CHECK_TYPES(long long, AC_SUBST(DEFINE_HAVE_LONG_LONG,["#define HAVE_LONG_LONG 1"]),AC_SUBST(DEFINE_HAVE_LONG_LONG,["#undef HAVE_LONG_LONG"]))

# Shared library support. Because we don't believe in automake!
AC_CANONICAL_HOST
case $host in
*-*-darwin*)
	AC_SUBST(SH_CFLAGS,-dynamic)
	AC_SUBST(SH_LDFLAGS,"-dynamiclib -undefined suppress -flat_namespace");;
*)
	AC_SUBST(SH_CFLAGS,-fPIC)
	AC_SUBST(SH_LDFLAGS,-shared);;
esac

if test -n "$host_alias"; then
	AC_SUBST(CROSS,$host_alias-)
fi

AC_ARG_ENABLE(fork,
	[  --disable-fork          do not use fork (no exec, etc.)],
	[
		if test "x$enableval" = "xno" ; then
			AC_MSG_RESULT(* disabling fork)
			EXTRA_CFLAGS="-DJIM_NOFORK"
		fi
	],
)
AC_ARG_ENABLE(math,
	[  --enable-math           include support for math functions],
	[
		if test "x$enableval" = "xyes" ; then
			EXTRA_CFLAGS="$EXTRA_CFLAGS -DJIM_MATH_FUNCTIONS"
		fi
	]
)
AC_ARG_ENABLE(ipv6,
	[  --enable-ipv6           include ipv6 support in the aio extension],
	[
		if test "x$enableval" = "xyes" ; then
			EXTRA_CFLAGS="$EXTRA_CFLAGS -DJIM_IPV6"
		fi
	]
)

jim_extensions="stdlib load package readdir glob array clock exec file posix regexp signal tclcompat aio bio eventloop syslog"
AC_ARG_WITH(jim-ext,
	[  --with-jim-ext          specify jim extensions to build (or all, which is the default)],
	[
		if test "x$withval" != "xno" ; then
			if test "x$withval" != "xall" ; then
				jim_extensions="$withval"
			fi
		fi
	]
)
AC_MSG_RESULT(enabling jim extensions: $jim_extensions)
AC_SUBST(JIM_EXTENSIONS,$jim_extensions)
for i in $jim_extensions; do
	EXTRA_CFLAGS="$EXTRA_CFLAGS -Djim_ext_$i"
done

JIM_LIBTYPE=static
AC_ARG_WITH(jim-shared,
	[  --with-jim-shared       build a shared library instead of a static library],
	[
		if test "x$withval" = "xyes" ; then
			JIM_LIBTYPE=shared
		fi
	]
)
AC_SUBST(JIM_LIBTYPE,$JIM_LIBTYPE)

AC_CHECK_FUNCS([ualarm sysinfo lstat fork vfork])
AC_CHECK_FUNCS([backtrace geteuid mkstemp realpath strptime])
AC_CHECK_FUNCS([regcomp waitpid sigaction sys_signame sys_siglist])

AC_SUBST(EXTRA_CFLAGS,$EXTRA_CFLAGS)
AC_SUBST(SRCDIR,`dirname $0`)

AC_SEARCH_LIBS(dlopen, dl,
	AC_SUBST(LIBDL,${ac_cv_search_dlopen%none required})
	AC_DEFINE([HAVE_DLOPEN],[1],[Have the dlopen function])
)

# Now that we know what the platform supports:

# For all known extensions:
# - If it is disabled, remove it
# - Otherwise, check to see if it's pre-requisites are met
# -   If yes, add it if it is enabled or is a default
# -   If no, error if it is enabled, or do nothing otherwise

needs_regexp="ac_cv_func_regcomp"
needs_syslog="ac_cv_func_syslog"
needs_exec="ac_cv_func_vfork"
needs_posix="ac_cv_func_waitpid"
needs_load="ac_cv_search_dlopen"
needs_signal="ac_cv_func_sigaction"
needs_readdir="ac_cv_func_opendir"

ext_add=$(echo $with_jim_ext | tr ' ' '\n')
ext_del=$(echo $with_out_jim_ext | tr ' ' '\n')
for i in $ext_all; do
	AC_MSG_CHECKING(extension $i)
	echo "$ext_del" | grep "^$i\$" >/dev/null
	if test $? -eq 0; then
		AC_MSG_RESULT(disabled)
		continue
	fi
	# Check dependencies
	eval "dep=\$needs_$i"
	met=1
	for d in $dep; do
		eval "check=\$$d"
		if test "$check" == "no" -o -z "$check" ; then
			met=0
			break
		fi
	done
	echo "$ext_add" | grep "^$i\$" >/dev/null
	if test $? -eq 0; then
		if test $met -eq 0; then
			AC_MSG_ERROR(dependencies not met)
		fi
		AC_MSG_RESULT(enabled)
		ext="$ext $i"
		continue
	fi
	echo "$ext_default" | grep "^$i\$" >/dev/null
	if test $? -eq 0; then
		if test $met -eq 0; then
			AC_MSG_RESULT(disabled (dependencies))
			continue
		fi
		AC_MSG_RESULT(enabled (default))
		ext="$ext $i"
		continue
	fi
	AC_MSG_RESULT(not enabled)
done
	
ext=$(echo $ext | tr '\n' ' ')
AC_MSG_RESULT(Jim extensions: $ext)
AC_SUBST(JIM_EXTENSIONS,$ext)
for i in $ext; do
	EXTRA_CFLAGS="$EXTRA_CFLAGS -Djim_ext_$i"
done

AC_SUBST(EXTRA_CFLAGS,$EXTRA_CFLAGS)
AC_SUBST(SRCDIR,`dirname $0`)

AC_CONFIG_FILES([Makefile jimautoconfext.h])
AC_OUTPUT