ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/acinclude.m4
Revision: 912
Committed: Wed Nov 7 22:47:44 2007 UTC (16 years, 4 months ago) by michael
File size: 15374 byte(s)
Log Message:
- Implemented libtool-ltdl. Only shared modules are supported currently
- Several build fixes and cleanups. ircd now builds and runs without any problems
- Added back all files to SVN that are needed to built the daemon
  I really don't want to force other people that want to test the snapshots
  or svn versions to install yyacc, lex, automake, autoconf and libtool...
  No problem having required files in svn
- Removed some automake maintainer stuff which is kinda useless for us

File Contents

# Content
1 dnl Inspired by work Copyright (C) 2006 Luca Filipozzi
2 dnl vim: set fdm=marker sw=2 ts=2 et si:
3 dnl {{{ ax_check_lib_ipv4
4 AC_DEFUN([AX_CHECK_LIB_IPV4],[
5 AC_SEARCH_LIBS([socket],[socket],,[AC_MSG_ERROR([socket library not found])])
6 AC_CHECK_FUNCS([inet_aton inet_ntop inet_pton])
7 AC_CHECK_TYPES([struct sockaddr_in, struct sockaddr_storage, struct addrinfo],,,[#include <netdb.h>])
8 AC_CHECK_MEMBERS([struct sockaddr_in.sin_len],,,[#include <netdb.h>])
9 ])dnl }}}
10 dnl {{{ ax_check_lib_ipv6
11 AC_DEFUN([AX_CHECK_LIB_IPV6],[
12 AC_CHECK_TYPES([struct sockaddr_in6],,[AC_DEFINE([IPV6],[1],[Define to 1 if you have IPv6 support.])],,[#include <netdb.h>])
13 ])dnl }}}
14 dnl {{{ ax_check_crypt
15 AC_DEFUN([AX_CHECK_LIB_CRYPT],[
16 AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
17 AM_CONDITIONAL([HAVE_CRYPT],[test "$ac_cv_search_crypt" = "none required"])
18 ])dnl }}}
19 dnl {{{ ax_arg_enable_ioloop_mechanism (FIXME)
20 AC_DEFUN([AX_ARG_ENABLE_IOLOOP_MECHANISM],[
21 dnl {{{ allow the user to specify desired mechanism
22 desired_iopoll_mechanism="none"
23 dnl FIXME need to handle arguments a bit better (see ac_arg_disable_block_alloc)
24 AC_ARG_ENABLE([kqueue], [AC_HELP_STRING([--enable-kqueue], [Force kqueue usage.])], [desired_iopoll_mechanism="kqueue"])
25 AC_ARG_ENABLE([epoll], [AC_HELP_STRING([--enable-epoll], [Force epoll usage.])], [desired_iopoll_mechanism="epoll"])
26 AC_ARG_ENABLE([devpoll],[AC_HELP_STRING([--enable-devpoll],[Force devpoll usage.])],[desired_iopoll_mechanism="devpoll"])
27 AC_ARG_ENABLE([rtsigio],[AC_HELP_STRING([--enable-rtsigio],[Force rtsigio usage.])],[desired_iopoll_mechanism="rtsigio"])
28 AC_ARG_ENABLE([poll], [AC_HELP_STRING([--enable-poll], [Force poll usage.])], [desired_iopoll_mechanism="poll"])
29 AC_ARG_ENABLE([select], [AC_HELP_STRING([--enable-select], [Force select usage.])], [desired_iopoll_mechanism="select"])
30 dnl }}}
31 dnl {{{ preamble
32 AC_MSG_CHECKING([for optimal/desired iopoll mechanism])
33 iopoll_mechanism_none=0
34 AC_DEFINE_UNQUOTED([__IOPOLL_MECHANISM_NONE],[$iopoll_mechanism_none],[no iopoll mechanism])
35 dnl }}}
36 dnl {{{ check for kqueue mechanism support
37 iopoll_mechanism_kqueue=1
38 AC_DEFINE_UNQUOTED([__IOPOLL_MECHANISM_KQUEUE],[$iopoll_mechanism_kqueue],[kqueue mechanism])
39 AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([kevent])],[is_kqueue_mechanism_available="yes"],[is_kqueue_mechanism_available="no"])
40 dnl }}}
41 dnl {{{ check for epoll oechanism support
42 iopoll_mechanism_epoll=2
43 AC_DEFINE_UNQUOTED([__IOPOLL_MECHANISM_EPOLL],[$iopoll_mechanism_epoll],[epoll mechanism])
44 AC_RUN_IFELSE([
45 #include <sys/epoll.h>
46 #include <sys/syscall.h>
47 #if defined(__stub_epoll_create) || defined(__stub___epoll_create) || defined(EPOLL_NEED_BODY)
48 #if !defined(__NR_epoll_create)
49 #if defined(__ia64__)
50 #define __NR_epoll_create 1243
51 #elif defined(__x86_64__)
52 #define __NR_epoll_create 214
53 #elif defined(__sparc64__) || defined(__sparc__)
54 #define __NR_epoll_create 193
55 #elif defined(__s390__) || defined(__m68k__)
56 #define __NR_epoll_create 249
57 #elif defined(__ppc64__) || defined(__ppc__)
58 #define __NR_epoll_create 236
59 #elif defined(__parisc__) || defined(__arm26__) || defined(__arm__)
60 #define __NR_epoll_create 224
61 #elif defined(__alpha__)
62 #define __NR_epoll_create 407
63 #elif defined(__sh64__)
64 #define __NR_epoll_create 282
65 #elif defined(__i386__) || defined(__sh__) || defined(__m32r__) || defined(__h8300__) || defined(__frv__)
66 #define __NR_epoll_create 254
67 #else
68 #error No system call numbers defined for epoll family.
69 #endif
70 #endif
71 _syscall1(int, epoll_create, int, size)
72 #endif
73 main() { return epoll_create(256) == -1 ? 1 : 0; }
74 ],[is_epoll_mechanism_available="yes"],[is_epoll_mechanism_available="no"])
75 dnl }}}
76 dnl {{{ check for devpoll mechanism support
77 iopoll_mechanism_devpoll=3
78 AC_DEFINE_UNQUOTED([__IOPOLL_MECHANISM_DEVPOLL],[$iopoll_mechanism_devpoll],[devpoll mechanism])
79 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <devpoll.h>])],[is_devpoll_mechanism_available="yes"],[is_devpoll_mechanism_available="no"])
80 if test "$is_devpoll_mechanism_available" = "yes" ; then
81 AC_DEFINE([HAVE_DEVPOLL_H],[1],[Define to 1 if you have the <devpoll.h> header file.])
82 fi
83 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/devpoll.h>])],[is_devpoll_mechanism_available="yes"],[is_devpoll_mechanism_available="no"])
84 if test "$is_devpoll_mechanism_available" = "yes" ; then
85 AC_DEFINE([HAVE_SYS_DEVPOLL_H],[1],[Define to 1 if you have the <sys/devpoll.h> header file.])
86 fi
87 dnl }}}
88 dnl {{{ check for rtsigio mechanism support
89 iopoll_mechanism_rtsigio=4
90 AC_DEFINE_UNQUOTED([__IOPOLL_MECHANISM_RTSIGIO],[$iopoll_mechanism_rtsigio],[rtsigio mechanism])
91 AC_RUN_IFELSE([AC_LANG_PROGRAM([
92 #include <fcntl.h>
93 #ifdef F_SETSIG
94 main () { return 0; } /* F_SETSIG defined */
95 #else
96 main () { return 1; } /* F_SETSIG not defined */
97 #endif
98 ])],[is_rtsigio_mechanism_available="yes"],[is_rtsigio_mechanism_available="no"])
99 dnl }}}
100 dnl {{{ check for poll mechanism support
101 iopoll_mechanism_poll=5
102 AC_DEFINE_UNQUOTED([__IOPOLL_MECHANISM_POLL],[$iopoll_mechanism_poll],[poll mechanism])
103 AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([poll])],[is_poll_mechanism_available="yes"],[is_poll_mechanism_available="no"])
104 dnl }}}
105 dnl {{{ check for select mechanism support
106 iopoll_mechanism_select=6
107 AC_DEFINE_UNQUOTED([__IOPOLL_MECHANISM_SELECT],[$iopoll_mechanism_select],[select mechanism])
108 AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([select])],[is_select_mechanism_available="yes"],[is_select_mechanism_available="no"])
109 dnl }}}
110 dnl {{{ determine the optimal mechanism
111 optimal_iopoll_mechanism="none"
112 for mechanism in "kqueue" "epoll" "devpoll" "rtsigio" "poll" "select" ; do # order is important
113 eval "is_optimal_iopoll_mechanism_available=\$is_${mechanism}_mechanism_available"
114 if test "$is_optimal_iopoll_mechanism_available" = "yes" ; then
115 optimal_iopoll_mechanism="$mechanism"
116 break
117 fi
118 done
119 dnl }}}
120 dnl {{{ select between optimal mechanism and desired mechanism (if specified)
121 if test "$desired_iopoll_mechanism" = "none" ; then
122 if test "$optimal_iopoll_mechanism" = "none" ; then
123 AC_MSG_RESULT([none])
124 AC_MSG_ERROR([no iopoll mechanism found!])
125 else
126 selected_iopoll_mechanism=$optimal_iopoll_mechanism
127 AC_MSG_RESULT([$selected_iopoll_mechanism])
128 fi
129 else
130 eval "is_desired_iopoll_mechanism_available=\$is_${desired_iopoll_mechanism}_mechanism_available"
131 if test "$is_desired_iopoll_mechanism_available" = "yes" ; then
132 selected_iopoll_mechanism=$desired_iopoll_mechanism
133 AC_MSG_RESULT([$selected_iopoll_mechanism])
134 else
135 AC_MSG_RESULT([none])
136 AC_MSG_ERROR([desired iopoll mechanism, $desired_iopoll_mechanism, is not available])
137 fi
138 fi
139 dnl }}}
140 dnl {{{ postamble
141 eval "use_iopoll_mechanism=\$iopoll_mechanism_${selected_iopoll_mechanism}"
142 AC_DEFINE_UNQUOTED([USE_IOPOLL_MECHANISM],[$use_iopoll_mechanism],[use this iopoll mechanism])
143 dnl }}}
144 ])dnl }}}
145 dnl {{{ ax_arg_with_topiclen
146 AC_DEFUN([AX_ARG_WITH_TOPICLEN],[
147 AC_ARG_WITH([topiclen],[AC_HELP_STRING([--with-topiclen=<value>],[Set topic length (default 160).])],[topiclen="$withval"],[topiclen="160"])
148 AC_DEFINE_UNQUOTED([TOPICLEN],[($topiclen+1)],[Length of topics.])
149 ])dnl }}}
150 dnl {{{ ax_arg_with_nicklen
151 AC_DEFUN([AX_ARG_WITH_NICKLEN],[
152 AC_ARG_WITH([nicklen],[AC_HELP_STRING([--with-nicklen=<value>],[Set nickname length (default 9).])],[nicklen="$withval"],[nicklen="9"])
153 AC_DEFINE_UNQUOTED([NICKLEN],[($nicklen+1)],[Length of nicknames.])
154 ])dnl }}}
155 dnl {{{ ax_arg_with_userlen
156 AC_DEFUN([AX_ARG_WITH_USERLEN],[
157 AC_ARG_WITH([userlen],[AC_HELP_STRING([--with-userlen=<value>],[Set username length (default 9).])],[userlen="$withval"],[userlen="9"])
158 AC_DEFINE_UNQUOTED([USERLEN],[($userlen+1)],[Length of nicknames.])
159 ])dnl }}}
160 dnl {{{ ax_arg_with_hostlen
161 AC_DEFUN([AX_ARG_WITH_HOSTLEN],[
162 AC_ARG_WITH([hostlen],[AC_HELP_STRING([--with-hostlen=<value>],[Set username length (default 62).])],[hostlen="$withval"],[hostlen="62"])
163 AC_DEFINE_UNQUOTED([HOSTLEN],[($hostlen+1)],[Length of nicknames.])
164 ])dnl }}}
165 dnl {{{ ax_arg_with_lclient_heap_size
166 AC_DEFUN([AX_ARG_WITH_LCLIENT_HEAP_SIZE],[
167 AC_ARG_WITH([lclient-heap-size],[AC_HELP_STRING([--lclient-heap-size=<value>],[Set local client heap size (default 256).])],[lclient_heap_size="$withval"],[lclient_heap_size="256"])
168 AC_DEFINE_UNQUOTED([LCLIENT_HEAP_SIZE],[$lclient_heap_size],[Size of the local client heap.])
169 ])dnl }}}
170 dnl {{{ ax_arg_with_nickname_history_length
171 AC_DEFUN([AX_ARG_WITH_NICKNAME_HISTORY_LENGTH],[
172 AC_ARG_WITH([nickname-history-length],[AC_HELP_STRING([--nickname-history-length=<value>],[Set length of nickname history list (default 1500).])],[nickname_history_length="$withval"],[nickname_history_length="1500"])
173 AC_DEFINE_UNQUOTED([NICKNAMEHISTORYLENGTH],[$nickname_history_length],[Size of the nickname history list.])
174 ])dnl }}}
175 dnl {{{ ax_arg_with_client_heap_size
176 AC_DEFUN([AX_ARG_WITH_CLIENT_HEAP_SIZE],[
177 AC_ARG_WITH([client-heap-size],[AC_HELP_STRING([--client-heap-size=<value>],[Set client heap size (default 256).])],[client_heap_size="$withval"],[client_heap_size="256"])
178 AC_DEFINE_UNQUOTED([CLIENT_HEAP_SIZE],[$client_heap_size],[Size of the client heap.])
179 ])dnl }}}
180 dnl {{{ ax_arg_with_channel_heap_size
181 AC_DEFUN([AX_ARG_WITH_CHANNEL_HEAP_SIZE],[
182 AC_ARG_WITH([channel-heap-size],[AC_HELP_STRING([--channel-heap-size=<value>],[Set channel heap size (default 256).])],[channel_heap_size="$withval"],[channel_heap_size="256"])
183 AC_DEFINE_UNQUOTED([CHANNEL_HEAP_SIZE],[$channel_heap_size],[Size of the channel heap.])
184 ])dnl }}}
185 dnl {{{ ax_arg_with_dbuf_heap_size
186 AC_DEFUN([AX_ARG_WITH_DBUF_HEAP_SIZE],[
187 AC_ARG_WITH([dbuf-heap-size],[AC_HELP_STRING([--dbuf-heap-size=<value>],[Set dbuf heap size (default 64).])],[dbuf_heap_size="$withval"],[dbuf_heap_size="64"])
188 AC_DEFINE_UNQUOTED([DBUF_HEAP_SIZE],[$dbuf_heap_size],[Size of the dbuf heap.])
189 ])dnl }}}
190 dnl {{{ ax_arg_with_dnode_heap_size
191 AC_DEFUN([AX_ARG_WITH_DNODE_HEAP_SIZE],[
192 AC_ARG_WITH([dnode-heap-size],[AC_HELP_STRING([--dnode-heap-size=<value>],[Set dnode heap size (default 256).])],[dnode_heap_size="$withval"],[dnode_heap_size="256"])
193 AC_DEFINE_UNQUOTED([DNODE_HEAP_SIZE],[$dnode_heap_size],[Size of the dlink_node heap.])
194 ])dnl }}}
195 dnl {{{ ax_arg_with_ban_heap_size
196 AC_DEFUN([AX_ARG_WITH_BAN_HEAP_SIZE],[
197 AC_ARG_WITH([ban-heap-size],[AC_HELP_STRING([--ban-heap-size=<value>],[Set ban heap size (default 128).])],[ban_heap_size="$withval"],[ban_heap_size="128"])
198 AC_DEFINE_UNQUOTED([BAN_HEAP_SIZE],[$ban_heap_size],[Size of the ban heap.])
199 ])dnl }}}
200 dnl {{{ ax_arg_with_topic_heap_size
201 AC_DEFUN([AX_ARG_WITH_TOPIC_HEAP_SIZE],[
202 AC_ARG_WITH([topic-heap-size],[AC_HELP_STRING([--topic-heap-size=<value>],[Set topic heap size (default 256).])],[topic_heap_size="$withval"],[topic_heap_size="256"])
203 AC_DEFINE_UNQUOTED([TOPIC_HEAP_SIZE],[$topic_heap_size],[Size of the topic heap.])
204 ])dnl }}}
205 dnl {{{ ax_arg_with_ircd_heap_size
206 AC_DEFUN([AX_ARG_WITH_IRCD_HEAP_SIZE],[
207 AC_ARG_WITH([ircd-heap-size],[AC_HELP_STRING([--ircd-heap-size=<value>],[Set ircd heap size (default 8).])],[ircd_heap_size="$withval"],[ircd_heap_size="8"])
208 AC_DEFINE_UNQUOTED([IRCD_HEAP_SIZE],[$ircd_heap_size],[Size of the ircd heap.])
209 ])dnl }}}
210 dnl {{{ ax_arg_with_mqueue_heap_size
211 AC_DEFUN([AX_ARG_WITH_MQUEUE_HEAP_SIZE],[
212 AC_ARG_WITH([mqueue-heap-size],[AC_HELP_STRING([--mqueue-size=<value>],[Set mqueue heap size (default 256).])],[mqueue_heap_size="$withval"],[mqueue_heap_size="256"])
213 AC_DEFINE_UNQUOTED([MQUEUE_HEAP_SIZE],[$mqueue_heap_size],[Size of the floodserv mqueue heap.])
214 ])dnl }}}
215 dnl {{{ ax_arg_with_fmsg_heap_size
216 AC_DEFUN([AX_ARG_WITH_FMSG_HEAP_SIZE],[
217 AC_ARG_WITH([fmsg-heap-size],[AC_HELP_STRING([--fmsg-size=<value>],[Set fmsg heap size (default 256).])],[fmsg_heap_size="$withval"],[fmsg_heap_size="256"])
218 AC_DEFINE_UNQUOTED([FMSG_HEAP_SIZE],[$fmsg_heap_size],[Size of the floodserv fmsg heap.])
219 ])dnl }}}
220 dnl {{{ ax_arg_enable_efnet
221 AC_DEFUN([AX_ARG_ENABLE_EFNET],[
222 AC_ARG_ENABLE([efnet],[AC_HELP_STRING([--enable-efnet],[For IRCDs running on EFnet.])],[efnet="$enableval"],[efnet="no"])
223 if test "$efnet" = "yes" ; then
224 use_efnet="yes"
225 AC_DEFINE([EFNET],[1],[Define to 1 if this server will be an EFnet server.])
226 AC_DEFINE([TS5_ONLY],[1],[If Defined to 1 server links to your network must have a minimum of TS5.])
227 else
228 AC_DEFINE([INVARIANTS],[1],[Miscellaneous sanity checks for the IRCd. Makes it slightly slower])
229 use_efnet="no"
230 fi
231 AM_CONDITIONAL([EFNET],[test "$use_efnet" = "yes"])
232 ])dnl }}}
233 dnl {{{ ax_arg_enable_halfops
234 AC_DEFUN([AX_ARG_ENABLE_HALFOPS],[
235 AC_ARG_ENABLE([halfops],[AC_HELP_STRING([--enable-halfops],[Enable halfops support.])],[halfops="$enableval"],[halfops="no"])
236 if test "$halfops" = "yes" ; then
237 AC_DEFINE([HALFOPS],[1],[Define to 1 if you want halfops support.])
238 fi
239 ])dnl }}}
240 dnl {{{ ax_arg_enable_debugging
241 AC_DEFUN([AX_ARG_ENABLE_DEBUGGING],[
242 AC_ARG_ENABLE([debugging],[AC_HELP_STRING([--enable-debugging],[Enable debugging.])],[debugging="$enableval"],[debugging="no"])
243 if test "$debugging" = "yes" ; then
244 AC_DEFINE([DEBUG],[1],[Define to 1 to enable debugging.])
245 CFLAGS="$CFLAGS -Wall -Werror -g -O0"
246 else
247 AC_DEFINE([NDEBUG],[1],[Define to 1 to disable debugging.])
248 fi
249 ])dnl }}}
250 dnl {{{ ax_arg_enable_warnings
251 AC_DEFUN([AX_ARG_ENABLE_WARNINGS],[
252 AC_ARG_ENABLE([warnings],[AC_HELP_STRING([--enable-warnings],[Enable compiler warnings.])],[warnings="$enableval"],[warnings="no"])
253 if test "$warnings" = "yes" ; then
254 CFLAGS="-Wcast-qual -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wredundant-decls -Wshadow -Wwrite-strings -Wno-unused"
255 fi
256 ])dnl }}}
257 dnl {{{ ax_arg_enable_syslog
258 AC_DEFUN([AX_ARG_ENABLE_SYSLOG],[
259 AC_CHECK_HEADERS([syslog.h sys/syslog.h])
260 AC_ARG_ENABLE([syslog],[AC_HELP_STRING([--enable-syslog="EVENTS"],[Enable syslog for events: users oper (space separated in quotes; default: disabled).])],[syslog="$enableval"],[syslog="no"])
261 if test "$enableval" != "no" ; then
262 for option in $enableval ; do
263 case "$option" in
264 users) AC_DEFINE([SYSLOG_USERS],[1],[Send user log stuff to syslog.]) ;;
265 oper) AC_DEFINE([SYSLOG_OPER],[1],[Send oper log stuff to syslog.]) ;;
266 yes) : ;;
267 *) AC_MSG_ERROR([invalid value for --enable-syslog: $option]) ;;
268 esac
269 done
270 AC_DEFINE([USE_SYSLOG],[1],[Define to 1 if you want to use syslog.])
271 fi
272 ])dnl }}}
273 dnl {{{ ax_arg_with_syslog_facility
274 AC_DEFUN([AX_ARG_WITH_SYSLOG],[
275 AC_ARG_WITH([syslog-facility],[AC_HELP_STRING([--with-syslog-facility=LOG],[Define the syslog facility to use (default: LOG_LOCAL4)])],[syslog_facility="$withval"],[syslog_facility="LOG_LOCAL4"])
276 AC_DEFINE_UNQUOTED([LOG_FACILITY],[$syslog_facility],[Set to syslog facility to use.])
277 ])dnl }}}
278 dnl {{{ ac_define_dir
279 dnl http://autoconf-archive.cryp.to/ac_define_dir.html
280 AC_DEFUN([AC_DEFINE_DIR], [
281 prefix_NONE=
282 exec_prefix_NONE=
283 test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
284 test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
285 eval ac_define_dir="\"[$]$2\""
286 eval ac_define_dir="\"$ac_define_dir\""
287 AC_SUBST($1, "$ac_define_dir")
288 AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3])
289 test "$prefix_NONE" && prefix=NONE
290 test "$exec_prefix_NONE" && exec_prefix=NONE
291 ])dnl }}}
292 ]) dnl }}}