source: sources/configure.in @ 1500:872b0b69e0d5

Revision 1500:872b0b69e0d5, 24.4 KB checked in by niam, 9 months ago (diff)

{issue #103} added implementation of sl- and dl- lists

Line 
1AC_PREREQ(2.60)
2
3##
4# project identity
5##
6
7AC_INIT(libdodo, 0.0.0, issues.libdodo.org)
8
9OS=$(uname)
10
11AC_SUBST(SO_VERSION)
12
13case "$OS" in
14        FreeBSD)
15                TARGET_MAKEFILE=Makefile.freebsd.make.in
16                SO_VERSION=${PACKAGE_VERSION#*.}; SO_VERSION=${SO_VERSION%.*}
17                ;;
18        Linux)
19                TARGET_MAKEFILE=Makefile.gmake.in
20                SO_VERSION=${PACKAGE_VERSION}
21                ;;
22esac
23
24##
25# default options
26##
27
28AC_PREFIX_DEFAULT(/usr)
29
30##
31# checking programs
32##
33
34AC_C_CONST
35AC_C_INLINE
36AC_TYPE_SIZE_T
37AC_STRUCT_TM
38AC_PROG_GCC_TRADITIONAL
39AC_PROG_CXX
40AC_PROG_CC
41AC_PROG_CPP
42AC_PROG_LN_S
43AC_PROG_MAKE_SET
44AC_PROG_INSTALL
45
46AC_CHECK_PROG(AR, ar, ar)
47if test "$AR" != "ar"; then
48  AC_MSG_ERROR(["ar not found"])
49fi
50
51
52##
53# checking dependencies/build options
54##
55
56AC_SUBST(TAGS)
57TAGS=$(which etags 2>/dev/null)
58if test -z "$TAGS" -o ! -x "$TAGS"
59then
60        TAGS=$(which ctags 2>/dev/null)
61        if test -z "$TAGS" -o ! -x "$TAGS"
62        then
63                AC_MSG_WARN(No application was found for generating tags)
64        else
65                AC_MSG_RESULT(ctags will be used for generating tags)
66        fi
67else
68        AC_MSG_RESULT(etags will be used for generating tags)
69fi
70
71AC_SUBST(OBJECTS)
72OBJECTS=$(for i in src/*cc; do i=${i#src/}; echo -n "${i/%cc/o} "; done)
73AC_SUBST(DEPS)
74DEPS=$(for i in src/*cc; do i=${i#src/}; echo -n "${i/%cc/d} "; done)
75
76AC_SUBST(EXAMPLES)
77EXAMPLES=$(for i in examples/*; do test -d $i && echo -n "${i#examples/} "; done)
78
79cat > include/libdodo/directives.runtime.h  <<EOF
80/***************************************************************************
81*            directives.runtime.h
82****************************************************************************/
83
84#ifndef _DIRECTIVES_RUNTIME_H_
85#define _DIRECTIVES_RUNTIME_H_ 1
86
87EOF
88
89CPPFLAGS="-I/usr/include -I/usr/local/include"
90LDFLAGS="-L/usr/lib -L/usr/local/lib"
91CXXFLAGS="-fno-exceptions"
92CFLAGS="-Wall -Wextra -Woverloaded-virtual -D_REENTRANT -D_GNU_SOURCE -D__BSD_VISIBLE -D__POSIX_VISIBLE=200112 -D_POSIX_VERSION=200112 \
93        -D__USE_UNIX98 -D_XOPEN_SOURCE=600 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE"
94
95RESULT="\n\n"
96
97AC_SUBST(DEBUG)
98AC_ARG_ENABLE(debug,
99        AS_HELP_STRING([--enable-debug], [enable debug info]),
100                [DEBUG="$enableval"], [DEBUG="no"])
101if test "$DEBUG" = "yes"
102then
103        CFLAGS="$CFLAGS -g -DDEBUG"
104
105        RESULT="$RESULT\nDebug\t\t\t\t\t\t\t\tenabled"
106else
107        RESULT="$RESULT\nDebug\t\t\t\t\t\t\t\tdisabled"
108fi
109
110AC_ARG_ENABLE(profiling,
111        AS_HELP_STRING([--enable-profiling], [enable profiling]),
112                [PROFILING="$enableval"], [PROFILING="no"])
113if test "$PROFILING" = "yes"
114then
115        CFLAGS="$CFLAGS -pg"
116
117        RESULT="$RESULT\nProfiling\t\t\t\t\t\t\tenabled"
118else
119        RESULT="$RESULT\nProfiling\t\t\t\t\t\t\tdisabled"
120fi
121
122AC_ARG_ENABLE(libwrap,
123        AS_HELP_STRING([--disable-libwrap], [disable libwrap support]),
124                [LIBWRAP="$enableval"], [LIBWRAP="yes"])
125if test "$LIBWRAP" = "yes"
126then
127        AC_CHECK_LIB([wrap], [hosts_access], [LIBWRAP="yes"], [LIBWRAP="no"; AC_MSG_WARN(libwrap lib was not found)])
128        if test "$LIBWRAP" = "yes"
129        then
130                LDFLAGS="$LDFLAGS -lwrap"
131
132                RESULT="$RESULT\nlibwrap\t\t\t\t\t\t\t\tenabled"
133        else
134                RESULT="$RESULT\nlibwrap\t\t\t\t\t\t\t\tdisabled"
135        fi
136else
137        RESULT="$RESULT\nlibwrap\t\t\t\t\t\t\t\tdisabled"
138fi
139
140AC_ARG_ENABLE(io-xexec,
141        AS_HELP_STRING([--disable-io-xexec], [compile io:: w/o xexec support]),
142                [IO_W_XEXEC="$enableval"], [IO_W_XEXEC="yes"])
143if test "$IO_W_XEXEC" = "no"
144then
145        echo -n -e "#define IO_WO_XEXEC 1\n\n" >> include/libdodo/directives.runtime.h
146        RESULT="$RESULT\nio::stdio xexec support\t\t\t\t\t\tdisabled"
147        RESULT="$RESULT\nio::network::exchange xexec support\t\t\t\tdisabled"
148        RESULT="$RESULT\nio::network::client xexec support\t\t\t\tdisabled"
149        RESULT="$RESULT\nio::network::server xexec support\t\t\t\tdisabled"
150        RESULT="$RESULT\nio::pipe xexec support\t\t\t\t\t\tdisabled"
151        RESULT="$RESULT\nio::file::fifo xexec support\t\t\t\t\tdisabled"
152        RESULT="$RESULT\nio::file::temp xexec support\t\t\t\t\tdisabled"
153        RESULT="$RESULT\nio::file::regular xexec support\t\t\t\t\tdisabled"
154else
155        RESULT="$RESULT\nio::stdio xexec support\t\t\t\t\t\tenabled"
156        RESULT="$RESULT\nio::network::exchange xexec support\t\t\t\tenabled"
157        RESULT="$RESULT\nio::network::client xexec support\t\t\t\tenabled"
158        RESULT="$RESULT\nio::network::server xexec support\t\t\t\tenabled"
159        RESULT="$RESULT\nio::pipe xexec support\t\t\t\t\t\tenabled"
160        RESULT="$RESULT\nio::file::fifo xexec support\t\t\t\t\tenabled"
161        RESULT="$RESULT\nio::file::temp xexec support\t\t\t\t\tenabled"
162        RESULT="$RESULT\nio::file::regular xexec support\t\t\t\t\tenabled"
163fi
164
165AC_ARG_ENABLE(database-xexec,
166        AS_HELP_STRING([--disable-database-xexec], [compile data::base:: w/o xexec support]),
167                [DATABASE_W_XEXEC="$enableval"], [DATABASE_W_XEXEC="yes"])
168if test "$DATABASE_W_XEXEC" = "no"
169then
170        echo -n -e "#define DATABASE_WO_XEXEC 1\n\n" >> include/libdodo/directives.runtime.h
171fi
172
173AC_CHECK_LIB([rt], [shm_open], [], AC_MSG_ERROR(rt lib was not found))
174LDFLAGS="$LDFLAGS -lrt"
175
176case "$OS" in
177        FreeBSD)
178                DEFAULT_IPC=XSI
179                ;;
180        Linux)
181                DEFAULT_IPC=POSIX
182                ;;
183esac
184
185AC_ARG_WITH([ipc],
186        [AS_HELP_STRING([--with-ipc@<:@=ipc implementation@:>@], [use IPC implementation(supported: POSIX, XSI), POSIX by default])],
187                [MOD_IPC_IMPL="$withval"], [MOD_IPC_IMPL=$DEFAULT_IPC])
188case "$MOD_IPC_IMPL" in
189        POSIX)
190                echo -n -e "#define POSIX_SEMAPHORES 1\n\n" >> include/libdodo/directives.runtime.h
191                ;;
192        XSI)
193                echo -n -e "#define XSI_IPC 1\n\n" >> include/libdodo/directives.runtime.h
194                ;;
195                *)
196                AC_MSG_ERROR(Unsuported IPC implementation specified)
197                ;;
198esac
199RESULT="$RESULT\nIPC implementation\t\t\t\t\t\t$MOD_IPC_IMPL"
200
201AC_ARG_WITH([sqlite3],
202        AS_HELP_STRING([--with-sqlite3@<:@=DIR@:>@], [use sqlite3]),
203                [MOD_SQLITE3_DIR="$withval"], [MOD_SQLITE3="no"])
204if test "$MOD_SQLITE3" != "no" -a "$MOD_SQLITE3_DIR" != "no"
205then
206        if test "$MOD_SQLITE3_DIR" = "yes"
207        then
208                MOD_SQLITE3_DIR=/usr
209        fi
210        CPPFLAGS="$CPPFLAGS -I$MOD_SQLITE3_DIR/include"
211        LDFLAGS="$LDFLAGS -L$MOD_SQLITE3_DIR/lib -lsqlite3"
212
213        AC_CHECK_LIB([sqlite3], [sqlite3_exec], [], AC_MSG_ERROR(sqlite3 lib was not found))
214        AC_CHECK_HEADER([sqlite3.h], [], AC_MSG_ERROR(sqlite3 header was not found))
215        echo -n -e "#define SQLITE3_EXT 1\n\n" >> include/libdodo/directives.runtime.h
216
217        RESULT="$RESULT\nSQLite\t\t\t\t\t\t\t\tenabled"
218
219        if test "$DATABASE_W_XEXEC" = "no"
220        then
221                RESULT="$RESULT\ndata::base::sqlite xexec support\t\t\t\tdisabled"
222        else
223                RESULT="$RESULT\ndata::base::sqlite xexec support\t\t\t\tenabled"
224        fi
225else
226        RESULT="$RESULT\nSQLite\t\t\t\t\t\t\t\tdisabled"
227fi
228
229AC_ARG_WITH([openssl],
230        AS_HELP_STRING([--with-openssl@<:@=DIR@:>@], [use openssl]),
231                [MOD_OPENSSL_DIR="$withval"], [MOD_OPENSSL="no"])
232if test "$MOD_OPENSSL" != "no" -a "$MOD_OPENSSL_DIR" != "no"
233then
234        if test "$MOD_OPENSSL_DIR" = "yes"
235        then
236                MOD_OPENSSL_DIR=/usr
237        fi
238        CPPFLAGS="$CPPFLAGS -I$MOD_OPENSSL_DIR/include"
239        LDFLAGS="$LDFLAGS -L$MOD_OPENSSL_DIR/lib -lssl -lcrypto"
240        AC_CHECK_LIB([ssl], [SSL_library_init], [], AC_MSG_ERROR(openssl lib was not found))
241        AC_CHECK_HEADER([openssl/ssl.h], [], AC_MSG_ERROR(openssl header was not found))
242        echo -n -e "#define OPENSSL_EXT 1\n\n" >> include/libdodo/directives.runtime.h
243
244        if test "$IO_W_XEXEC" = "no"
245        then
246                RESULT="$RESULT\nio::network::ssl::exchange xexec support\t\t\tdisabled"
247        else
248                RESULT="$RESULT\nio::network::ssl::exchange xexec support\t\t\tenabled"
249        fi
250
251        if test "$IO_W_XEXEC" = "no"
252        then
253                RESULT="$RESULT\nio::network::ssl::client xexec support\t\t\t\tdisabled"
254        else
255                RESULT="$RESULT\nio::network::ssl::client xexec support\t\t\t\tenabled"
256        fi
257
258        if test "$IO_W_XEXEC" = "no"
259        then
260                RESULT="$RESULT\nio::network::ssl::server xexec support\t\t\t\tdisabled"
261        else
262                RESULT="$RESULT\nio::network::ssl::server xexec support\t\t\t\tenabled"
263        fi
264
265        RESULT="$RESULT\nOpenSSL\t\t\t\t\t\t\t\tenabled"
266else
267        RESULT="$RESULT\nOpenSSL\t\t\t\t\t\t\t\tdisabled"
268fi
269
270AC_ARG_WITH([postgresql],
271        AS_HELP_STRING([--with-postgresql@<:@=DIR@:>@], [use postgresql]),
272                [MOD_POSTGRESQL_DIR="$withval"], [MOD_POSTGRESQL="no"])
273if test "$MOD_POSTGRESQL" != "no" -a "$MOD_POSTGRESQL_DIR" != "no"
274then
275        if test "$MOD_POSTGRESQL_DIR" = "yes"
276        then
277                if test "$(pg_config --version 2>/dev/null)" != ""
278                then
279                        CPPFLAGS="$CPPFLAGS -I$(pg_config --includedir)"
280                        LDFLAGS="$LDFLAGS -L$(pg_config --libdir) -lpq"
281                else
282                        MOD_POSTGRESQL_DIR=/usr
283                        CPPFLAGS="$CPPFLAGS -I$MOD_POSTGRESQL_DIR/include -I$MOD_POSTGRESQL_DIR/include/postgresql"
284                        LDFLAGS="$LDFLAGS -L$MOD_POSTGRESQL_DIR/lib -lpq"
285                fi
286        else
287                CPPFLAGS="$CPPFLAGS -I$MOD_POSTGRESQL_DIR/include -I$MOD_POSTGRESQL_DIR/include/postgresql"
288                LDFLAGS="$LDFLAGS -L$MOD_POSTGRESQL_DIR/lib -lpq"
289        fi
290        AC_CHECK_LIB([pq], [PQexecParams], [], AC_MSG_ERROR(postgresql lib was not found))
291        AC_CHECK_HEADER([libpq-fe.h], [], AC_MSG_ERROR(postgresql header was not found))
292
293        AC_LANG_PUSH(C++)
294        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libpq-fe.h>]], [[pg_encoding_to_char(0);]])], [],
295                [echo -n -e "#define POSTGRESQL_NO_ENCODINGTOCHAR 1\n\n" >> include/libdodo/directives.runtime.h])
296        AC_LANG_POP()
297
298        echo -n -e "#define POSTGRESQL_EXT 1\n\n" >> include/libdodo/directives.runtime.h
299
300        if test "$DATABASE_W_XEXEC" = "no"
301        then
302                RESULT="$RESULT\ndata::base::postgresql xexec support\t\t\t\tdisabled"
303        else
304                RESULT="$RESULT\ndata::base::postgresql xexec support\t\t\t\tenabled"
305        fi
306
307        RESULT="$RESULT\nPostgresql\t\t\t\t\t\t\tenabled"
308else
309        RESULT="$RESULT\nPostgresql\t\t\t\t\t\t\tdisabled"
310fi
311
312AC_ARG_WITH([mysql],
313        AS_HELP_STRING([--with-mysql@<:@=DIR@:>@], [use mysql]),
314                [MOD_MYSQL_DIR="$withval"], [MOD_MYSQL="no"])
315if test "$MOD_MYSQL" != "no" -a "$MOD_MYSQL_DIR" != "no"
316then
317        if test "$MOD_MYSQL_DIR" = "yes"
318        then
319                if test "$(mysql_config --version 2>/dev/null)" != ""
320                then
321                        CPPFLAGS="$CPPFLAGS $(mysql_config --cflags)"
322                        LDFLAGS="$LDFLAGS $(mysql_config --libs)"
323                else
324                        MOD_MYSQL_DIR=/usr
325                        CPPFLAGS="$CPPFLAGS -I$MOD_MYSQL_DIR/include"
326                        LDFLAGS="$LDFLAGS -L$MOD_MYSQL_DIR/lib -lmysqlclient"
327                fi
328        else
329                CPPFLAGS="$CPPFLAGS -I$MOD_MYSQL_DIR/include"
330                LDFLAGS="$LDFLAGS -L$MOD_MYSQL_DIR/lib -lmysqlclient"
331        fi
332        AC_CHECK_LIB([mysqlclient], [mysql_init], [], AC_MSG_ERROR(mySQL lib was not found))
333        AC_CHECK_HEADER([mysql.h], [], AC_MSG_ERROR(mySQL header was not found))
334
335        AC_LANG_PUSH(C++)
336        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <mysql.h>]], [[my_bool rc = 1; mysql_options(0, MYSQL_OPT_RECONNECT, &rc);]])], [],
337                [echo -n -e "#define MYSQL_NO_OPT_RECONNECT 1\n\n" >> include/libdodo/directives.runtime.h])
338        AC_LANG_POP()
339
340        echo -n -e "#define MYSQL_EXT 1\n\n" >> include/libdodo/directives.runtime.h
341
342        if test "$DATABASE_W_XEXEC" = "no"
343        then
344                RESULT="$RESULT\ndata::base::mysql xexec support\t\t\t\t\tdisabled"
345        else
346                RESULT="$RESULT\ndata::base::mysql xexec support\t\t\t\t\tenabled"
347        fi
348
349        RESULT="$RESULT\nMySQL\t\t\t\t\t\t\t\tenabled"
350else
351        RESULT="$RESULT\nMySQL\t\t\t\t\t\t\t\tdisabled"
352fi
353
354AC_ARG_WITH([fast-cgi],
355        AS_HELP_STRING([--with-fast-cgi@<:@=DIR@:>@], [use fast CGI]),
356                [MOD_FASTCGI_DIR="$withval"], [MOD_FASTCGI="no"])
357if test "$MOD_FASTCGI" != "no" -a "$MOD_FASTCGI_DIR" != "no"
358then
359        if test "$MOD_FASTCGI_DIR" = "yes"
360        then
361                MOD_FASTCGI_DIR=/usr
362        fi
363        CPPFLAGS="$CPPFLAGS -I$MOD_FASTCGI_DIR/include"
364        LDFLAGS="$LDFLAGS -L$MOD_FASTCGI_DIR/lib -lfcgi"
365        AC_CHECK_LIB([fcgi], [FCGX_Init], [], AC_MSG_ERROR(fast-cgi lib was not found))
366        AC_CHECK_HEADER([fcgiapp.h], [], AC_MSG_ERROR(fast-cgi header was not found))
367        echo -n -e "#define FASTCGI_EXT 1\n\n" >> include/libdodo/directives.runtime.h
368
369        if test "$IO_W_XEXEC" = "no"
370        then
371                RESULT="$RESULT\ncgi::fast::exchange xexec support\t\t\t\tdisabled"
372        else
373                RESULT="$RESULT\ncgi::fast::exchange xexec support\t\t\t\tenabled"
374        fi
375
376        RESULT="$RESULT\nFastCGI\t\t\t\t\t\t\t\tenabled"
377else
378        RESULT="$RESULT\nFastCGI\t\t\t\t\t\t\t\tdisabled"
379fi
380
381AC_ARG_WITH([pcre],
382        AS_HELP_STRING([--with-pcre@<:@=DIR@:>@], [use pcre]),
383                [MOD_PCRE_DIR="$withval"], [MOD_PCRE="no"])
384if test "$MOD_PCRE" != "no" -a "$MOD_PCRE_DIR" != "no"
385then
386        if test "$MOD_PCRE_DIR" = "yes"
387        then
388                CPPFLAGS="$CPPFLAGS $(pcre-config --cflags)"
389                LDFLAGS="$LDFLAGS $(pcre-config --libs)"
390        else
391                MOD_PCRE_DIR=/usr
392                CPPFLAGS="$CPPFLAGS -I$MOD_PCRE_DIR/include"
393                LDFLAGS="$LDFLAGS -L$MOD_PCRE_DIR/lib -lpcre"
394        fi
395        AC_CHECK_LIB([pcre], [pcre_exec], [], AC_MSG_ERROR(pcre lib was not found))
396        AC_CHECK_HEADER([pcre.h], [], AC_MSG_ERROR(pcre header was not found))
397        echo -n -e "#define PCRE_EXT 1\n\n" >> include/libdodo/directives.runtime.h
398
399        RESULT="$RESULT\nPCRE\t\t\t\t\t\t\t\tenabled"
400else
401        AC_CHECK_HEADER([regex.h], [], AC_MSG_ERROR(posix regex header was not found))
402        RESULT="$RESULT\nPosix regex\t\t\t\t\t\t\tenabled"
403fi
404
405AC_ARG_WITH([dl],
406        AS_HELP_STRING([--with-dl@<:@=DIR@:>@], [use dynamic loading]),
407                [MOD_DL_DIR="$withval"], [MOD_DL="no"])
408if test "$MOD_DL" != "no" -a "$MOD_DL_DIR" != "no"
409then
410        if test "$MOD_DL_DIR" = "yes"
411        then
412                MOD_DL_DIR=/usr
413        fi
414        CPPFLAGS="$CPPFLAGS -I$MOD_DL_DIR/include"
415        LDFLAGS="$LDFLAGS -L$MOD_DL_DIR/lib"
416
417        AC_ARG_ENABLE(fast-dynamic-loading,
418                AS_HELP_STRING([--disable-fast-dynamic-loading], [do not unload library to produce better performance]),
419                        [MOD_DL_FAST="$enableval"], [MOD_DL_FAST="yes"])
420
421        if test "$MOD_DL_FAST" = "yes" -a "$OS" = "Linux"
422        then
423                echo -n -e "#define DL_FAST 1\n\n" >> include/libdodo/directives.runtime.h
424
425                RESULT="$RESULT\nFast dynamic loading\t\t\t\t\t\tenabled"
426        else
427                RESULT="$RESULT\nFast dynamic loading\t\t\t\t\t\tdisabled"
428        fi
429
430        AC_CHECK_LIB([dl], [dlopen], [LDFLAGS="$LDFLAGS -ldl"], [])
431        AC_CHECK_HEADER([dlfcn.h], [], [AC_MSG_ERROR(dlfcn.h header was not found)])
432        echo -n -e "#define DL_EXT 1\n\n" >> include/libdodo/directives.runtime.h
433
434        RESULT="$RESULT\nDynamic linking\t\t\t\t\t\t\tenabled"
435else
436        RESULT="$RESULT\nDynamic linking\t\t\t\t\t\t\tdisabled"
437fi
438
439AC_ARG_WITH([libxml2],
440        AS_HELP_STRING([--with-libxml2@<:@=DIR@:>@], [use libxml2]),
441                [MOD_LIBXML2_DIR="$withval"], [MOD_LIBXML2="no"])
442if test "$MOD_LIBXML2" != "no" -a "$MOD_LIBXML2_DIR" != "no"
443then
444        if test "$MOD_LIBXML2_DIR" = "yes"
445        then
446                if test "$(xml2-config --version 2>/dev/null)" != ""
447                then
448                        CPPFLAGS="$CPPFLAGS $(xml2-config --cflags)"
449                        LDFLAGS="$LDFLAGS $(xml2-config --libs)"
450                else
451                        MOD_LIBXML2_DIR=/usr
452                        CPPFLAGS="$CPPFLAGS -I$MOD_LIBXML2_DIR/include/libxml2"
453                        LDFLAGS="$LDFLAGS -L$MOD_LIBXML2_DIR/lib -lxml2"
454                fi
455        else
456                CPPFLAGS="$CPPFLAGS -I$MOD_LIBXML2_DIR/include/libxml2"
457                LDFLAGS="$LDFLAGS -L$MOD_LIBXML2_DIR/lib -lxml2"
458        fi
459        AC_CHECK_LIB([xml2], [xmlInitParser], [], AC_MSG_ERROR(libxml2 lib was not found))
460        AC_CHECK_HEADER([libxml/xmlmemory.h], [], AC_MSG_ERROR(libxml2 header was not found))
461        echo -n -e "#define LIBXML2_EXT 1\n\n" >> include/libdodo/directives.runtime.h
462
463        RESULT="$RESULT\nlibxml2\t\t\t\t\t\t\t\tenabled"
464else
465        RESULT="$RESULT\nlibxml2\t\t\t\t\t\t\t\tdisabled"
466fi
467
468AC_ARG_WITH([threading-lib],
469        AS_HELP_STRING([--with-threading-lib@<:@=lib@:>@], [specify threading library(supported: pthread), pthread by default]),
470                [MOD_THREAD="$withval"], [MOD_THREAD="pthread"])
471case "$MOD_THREAD" in
472        pthread)
473                AC_ARG_WITH([pthread-lib],
474                        AS_HELP_STRING([--with-pthread-lib@<:@=lib@:>@], [use pthread library(supported: pthread, thr, lthread, c_r), pthread by default]),
475                                [MOD_PTHREAD_LIB="$withval"], [MOD_PTHREAD_LIB="pthread"])
476                AC_ARG_WITH([pthread-path],
477                        AS_HELP_STRING([--with-pthread-path@<:@=DIR@:>@], [path to pthread installation]),
478                                [MOD_PTHREAD_DIR="$withval"], [MOD_PTHREAD_DIR="/usr"])
479                CPPFLAGS="$CPPFLAGS -I$MOD_PTHREAD_DIR/include"
480                LDFLAGS="$LDFLAGS -L$MOD_PTHREAD_DIR/lib -l$MOD_PTHREAD_LIB"
481                AC_CHECK_LIB([$MOD_PTHREAD_LIB], [pthread_create], [], AC_MSG_ERROR($MOD_PTHREAD_LIB lib was not found))
482                AC_CHECK_HEADER([pthread.h], [], AC_MSG_ERROR(pthread header was not found))
483                echo -n -e "#define PTHREAD_EXT 1\n\n" >> include/libdodo/directives.runtime.h
484                ;;
485        *)
486                AC_MSG_ERROR(Unsuported threading library specified)
487                ;;
488esac
489RESULT="$RESULT\nthreading-library\t\t\t\t\t\t${MOD_THREAD}($MOD_PTHREAD_LIB)"
490
491AC_ARG_WITH([bzip2],
492        AS_HELP_STRING([--with-bzip2@<:@=DIR@:>@], [use bzip2]),
493                [MOD_BZIP2_DIR="$withval"], [MOD_BZIP2="no"])
494if test "$MOD_BZIP2" != "no" -a "$MOD_BZIP2_DIR" != "no"
495then
496        if test "$MOD_BZIP2_DIR" = "yes"
497        then
498                MOD_BZIP2_DIR=/usr
499        fi
500        CPPFLAGS="$CPPFLAGS -I$MOD_BZIP2_DIR/include"
501        LDFLAGS="$LDFLAGS -L$MOD_BZIP2_DIR/lib -lbz2"
502        AC_CHECK_LIB([bz2], [BZ2_bzBuffToBuffCompress], [], AC_MSG_ERROR(bz2 lib was not found))
503        AC_CHECK_HEADER([bzlib.h], [], AC_MSG_ERROR(bz2 header was not found))
504        echo -n -e "#define BZIP2_EXT 1\n\n" >> include/libdodo/directives.runtime.h
505
506        RESULT="$RESULT\nBZIP2\t\t\t\t\t\t\t\tenabled"
507else
508        RESULT="$RESULT\nBZIP2\t\t\t\t\t\t\t\tdisabled"
509fi
510
511AC_ARG_WITH([zlib],
512        AS_HELP_STRING([--with-zlib@<:@=DIR@:>@], [use zlib]),
513                [MOD_ZLIB_DIR="$withval"], [MOD_ZLIB="no"])
514if test "$MOD_ZLIB" != "no" -a "$MOD_ZLIB_DIR" != "no"
515then
516        if test "$MOD_ZLIB_DIR" = "yes"
517        then
518                MOD_ZLIB_DIR=/usr
519        fi
520        CPPFLAGS="$CPPFLAGS -I$MOD_ZLIB_DIR/include"
521        LDFLAGS="$LDFLAGS -L$MOD_ZLIB_DIR/lib"
522        AC_CHECK_HEADER([zlib.h])
523        AC_ARG_ENABLE([zlib-lib],
524                AS_HELP_STRING([--enable-zlib-lib], [enable zlib as lib]),
525                        [MOD_ZLIB_LIB="yes"], [MOD_ZLIB_LIB="no"])
526        if test "$MOD_ZLIB_LIB" = "yes"
527        then
528                AC_CHECK_LIB([z], [deflateInit2], [], AC_MSG_ERROR(zlib lib was not found))
529                LDFLAGS="$LDFLAGS -lz"
530        fi
531        echo -n -e "#define ZLIB_EXT 1\n\n" >> include/libdodo/directives.runtime.h
532
533        RESULT="$RESULT\nZLIB\t\t\t\t\t\t\t\tenabled"
534else
535        RESULT="$RESULT\nZLIB\t\t\t\t\t\t\t\tdisabled"
536fi
537
538AC_ARG_WITH([iconv],
539        AS_HELP_STRING([--with-iconv@<:@=DIR@:>@], [use iconv]),
540                [MOD_ICONV_DIR="$withval"], [MOD_ICONV="no"])
541if test "$MOD_ICONV" != "no" -a "$MOD_ICONV_DIR" != "no"
542then
543        if test "$MOD_ICONV_DIR" = "yes"
544        then
545                MOD_ICONV_DIR=/usr
546        fi
547        CPPFLAGS="$CPPFLAGS -I$MOD_ICONV_DIR/include"
548        LDFLAGS="$LDFLAGS -L$MOD_ICONV_DIR/lib"
549        AC_CHECK_HEADER([iconv.h])
550        AC_ARG_ENABLE([iconv-lib],
551                AS_HELP_STRING([--enable-iconv-lib], [enable iconv as lib]),
552                        [MOD_ICONV_LIB="yes"], [MOD_ICONV_LIB="no"])
553                if test "$MOD_ICONV_LIB" = "yes"
554        then
555                AC_CHECK_LIB([iconv], [iconv], [], AC_MSG_ERROR(iconv lib was not found))
556                LDFLAGS="$LDFLAGS -liconv"
557        fi
558        echo -n -e "#define ICONV_EXT 1\n\n" >> include/libdodo/directives.runtime.h
559
560        RESULT="$RESULT\niconv\t\t\t\t\t\t\t\tenabled"
561else
562        RESULT="$RESULT\niconv\t\t\t\t\t\t\t\tdisabled"
563fi
564
565AC_ARG_WITH([imagemagick],
566        AS_HELP_STRING([--with-imagemagick@<:@=DIR@:>@], [use ImageMagick]),
567                [MOD_IMAGEMAGICK_DIR="$withval"], [MOD_IMAGEMAGICK="no"])
568if test "$MOD_IMAGEMAGICK" != "no" -a "$MOD_IMAGEMAGICK_DIR" != "no"
569then
570        MAGICK_CONFIG="no"
571        if test "$MOD_IMAGEMAGICK_DIR" = "yes"
572        then
573                if test "$(Magick-config --version 2>/dev/null)" != ""
574                then
575                        MAGICK_CONFIG="yes"
576                        CPPFLAGS="$CPPFLAGS $(Magick-config --cppflags)"
577                        LDFLAGS="$LDFLAGS $(Magick-config --libs)"
578                else
579                        MOD_IMAGEMAGICK_DIR=/usr
580                        CPPFLAGS="$CPPFLAGS -I$MOD_IMAGEMAGICK_DIR/include -I$MOD_IMAGEMAGICK_DIR/include/ImageMagick"
581                        LDFLAGS="$LDFLAGS -L$MOD_IMAGEMAGICK_DIR/lib"
582                fi
583        else
584                CPPFLAGS="$CPPFLAGS -I$MOD_IMAGEMAGICK_DIR/include"
585                LDFLAGS="$LDFLAGS -L$MOD_IMAGEMAGICK_DIR/lib"
586        fi
587
588        AC_CHECK_LIB([MagickCore], [MagickCoreGenesis], [], OLD_IMAGEMAGICK_LIB="yes")
589        if test "$OLD_IMAGEMAGICK_LIB" = "yes"
590        then
591                AC_CHECK_LIB([Magick], [MagickCoreGenesis], [], VERY_OLD_IMAGEMAGICK_LIB="yes")
592                if test "$VERY_OLD_IMAGEMAGICK_LIB" == "yes"
593                then
594                        AC_CHECK_LIB([Magick], [InitializeMagick], [], AC_MSG_ERROR(Magick lib was not found))
595
596                        echo -n -e "#define IMAGEMAGICK_PRE_63 1\n\n" >> include/libdodo/directives.runtime.h
597                fi
598
599                if test "$MAGICK_CONFIG" == "no"
600                then
601                        LDFLAGS="$LDFLAGS -lMagick"
602                fi
603        else
604                if test "$MAGICK_CONFIG" == "no"
605                then
606                        LDFLAGS="$LDFLAGS -lMagickCore"
607                fi
608        fi
609        if test "$VERY_OLD_IMAGEMAGICK_LIB" != "yes"
610        then
611                AC_CHECK_HEADER([magick/MagickCore.h], [], AC_MSG_ERROR(Magick header was not found))
612        else
613                AC_CHECK_HEADER([magick/ImageMagick.h], [], AC_MSG_ERROR(Magick header was not found))
614        fi
615        echo -n -e "#define IMAGEMAGICK_EXT 1\n\n" >> include/libdodo/directives.runtime.h
616
617        AC_ARG_ENABLE(graphics-xexec,
618                AS_HELP_STRING([--disable-graphics-xexec], [compile graphics w/o xexec support]),
619                        [GRAPHICS_W_XEXEC="$enableval"], [GRAPHICS_W_XEXEC="yes"])
620        if test "$GRAPHICS_W_XEXEC" = "no"
621        then
622                echo -n -e "#define GRAPHICS_WO_XEXEC 1\n\n" >> include/libdodo/directives.runtime.h
623
624                RESULT="$RESULT\ngraphics xexec support\t\t\t\t\t\tdisabled"
625        else
626                RESULT="$RESULT\ngraphics xexec support\t\t\t\t\t\tenabled"
627        fi
628
629        RESULT="$RESULT\nImageMagick\t\t\t\t\t\t\tenabled"
630else
631        RESULT="$RESULT\nImageMagick\t\t\t\t\t\t\tdisabled"
632fi
633
634##
635# filter LDFLAGS and CPPLAGS
636##
637
638NEW_LDFLAGS=
639for i in $LDFLAGS
640do
641        case $i in
642        -L*)
643                SET_FLAG=0
644                for j in $NEW_LDFLAGS
645                do
646                        case $j in
647                                $i)
648                                        SET_FLAG=1
649                                        break;
650                                        ;;
651                        esac
652                done
653                if test $SET_FLAG -eq 0
654                then
655                        NEW_LDFLAGS="$NEW_LDFLAGS $i"
656                fi
657                ;;
658        *)
659                NEW_LDFLAGS="$NEW_LDFLAGS $i"
660                ;;
661        esac
662done
663LDFLAGS=$NEW_LDFLAGS
664
665NEW_CPPFLAGS=
666for i in $CPPFLAGS
667do
668        case $i in
669        -I*)
670                SET_FLAG=0
671                for j in $NEW_CPPFLAGS
672                do
673                        case $j in
674                                $i)
675                                        SET_FLAG=1
676                                        break;
677                                        ;;
678                        esac
679                done
680                if test $SET_FLAG -eq 0
681                then
682                        NEW_CPPFLAGS="$NEW_CPPFLAGS $i"
683                fi
684                ;;
685        *)
686                NEW_CPPFLAGS="$NEW_CPPFLAGS $i"
687                ;;
688        esac
689done
690CPPFLAGS=$NEW_CPPFLAGS
691
692AC_HEADER_STDC
693
694AC_CHECK_HEADERS([arpa/inet.h \
695        ctype.h \
696        dirent.h \
697        errno.h \
698        fcntl.h \
699        grp.h \
700        libgen.h \
701        math.h \
702        netdb.h \
703        netinet/in.h \
704        poll.h \
705        pwd.h \
706        semaphore.h \
707        signal.h \
708        stdarg.h \
709        stdio.h \
710        stdlib.h \
711        string.h \
712        syslog.h \
713        sys/ioctl.h \
714        sys/mman.h \
715        sys/resource.h \
716        sys/socket.h \
717        sys/stat.h \
718        sys/time.h \
719        sys/types.h \
720        sys/ipc.h \
721        sys/sem.h \
722        sys/un.h \
723        sys/wait.h \
724        time.h \
725        unistd.h \
726        utime.h],
727        [],
728        [AC_MSG_ERROR(header was not found)])
729AC_CHECK_HEADERS([net/if.h],
730        [],
731        [AC_MSG_ERROR(header was not found)],
732        [[
733         #ifdef HAVE_SYS_SOCKET_H
734         #include <sys/socket.h>
735         #endif
736        ]])
737
738AC_LANG_PUSH(C++)
739AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
740    [[#include <string.h>]],
741    [[strnlen("test", 4);]])],
742
743    [], [echo -n -e "#define NO_STRNLEN 1\n\n" >> include/libdodo/directives.runtime.h])
744AC_LANG_POP()
745
746AC_RUN_IFELSE([AC_LANG_PROGRAM(
747    [[
748      #include <stdio.h>
749      #include <stdlib.h>
750      #include <string.h>
751      #include <unistd.h>
752      #include <sys/types.h>
753      #include <sys/stat.h>
754      #include <fcntl.h>
755    ]],
756    [[
757      unsigned long ps = getpagesize();
758      char *buf = malloc(1024);
759      int n, r;
760      int fd = open("include/libdodo/directives.runtime.h", O_WRONLY|O_APPEND);
761      if (fd < 0 && buf == NULL) return 1;
762      n = sprintf(buf, "#define PAGE_SIZE %lu\n\n", ps);
763      r = write(fd, buf, n);
764      close(fd);
765      return (r!=n?1:0);
766    ]])],
767
768    [], [echo -n -e "#define PAGE_SIZE 4096\n\n" >> include/libdodo/directives.runtime.h])
769
770AC_RUN_IFELSE([AC_LANG_PROGRAM(
771    [[
772      #include <stdio.h>
773      #include <stdlib.h>
774      #include <string.h>
775      #include <unistd.h>
776      #include <sys/types.h>
777      #include <sys/stat.h>
778      #include <fcntl.h>
779    ]],
780    [[
781      long cls = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
782      char *buf = malloc(1024);
783      int n, r;
784      int fd = open("include/libdodo/directives.runtime.h", O_WRONLY|O_APPEND);
785      if (fd < 0 && buf == NULL) return 1;
786      n = sprintf(buf, "#define LEVEL1_DCACHE_LINESIZE %ld\n\n", cls);
787      r = write(fd, buf, n);
788      close(fd);
789      return (r!=n?1:0);
790    ]])],
791
792    [], [echo -n -e "#define LEVEL1_DCACHE_LINESIZE 32\n\n" >> include/libdodo/directives.runtime.h])
793
794
795echo -n -e "#endif\n" >> include/libdodo/directives.runtime.h
796
797##
798
799AC_CONFIG_FILES([Makefile:$TARGET_MAKEFILE])
800
801AC_CONFIG_FILES([bin/dodo-config
802        examples/Makefile
803        examples/graphics/Makefile
804        examples/cgi_fast/Makefile
805        examples/cgi_basic/Makefile
806        examples/db_mysql/Makefile
807        examples/db_postgresql/Makefile
808        examples/db_sqlite/Makefile
809        examples/db/Makefile
810        examples/io_network_server.nonblocked/Makefile
811        examples/io_network_ssl_server.nonblocked/Makefile
812        examples/io_stdio/Makefile
813        examples/io_file.tools_filesystem/Makefile
814        examples/io_memory/Makefile
815        examples/io_pipe.io_file_fifo.pc_thread/Makefile
816        examples/io_network.pc_thread/Makefile
817        examples/io_network_client/Makefile
818        examples/io_network_server/Makefile
819        examples/io_network_ssl_server/Makefile
820        examples/io_network_ssl_client/Makefile
821        examples/io_network_http/Makefile
822        examples/pc_thread/Makefile
823        examples/pc_process/Makefile
824        examples/pc_job/Makefile
825        examples/pc_workqueue/Makefile
826        examples/tools_network/Makefile
827        examples/tools_os/Makefile
828        examples/tools_time/Makefile
829        examples/tools_misc/Makefile
830        examples/tools_code/Makefile
831        examples/tools_logger/Makefile
832        examples/tools_library/Makefile
833        examples/tools_regexp/Makefile
834        examples/xexec/Makefile
835        examples/rpc_xml_http_client/Makefile
836        examples/rpc_xml_cgi_server/Makefile
837        examples/rpc_json_http_client/Makefile
838        examples/rpc_json_cgi_server/Makefile
839        examples/data_format_json/Makefile
840        examples/data_format_xml/Makefile])
841
842AC_OUTPUT
843
844chmod +x bin/dodo-config
845
846echo -e $RESULT
Note: See TracBrowser for help on using the repository browser.