dnl /* ==================================================================== dnl * The Kannel Software License, Version 1.0 dnl * dnl * Copyright (c) 2001-2005 Kannel Group dnl * Copyright (c) 1998-2001 WapIT Ltd. dnl * All rights reserved. dnl * dnl * Redistribution and use in source and binary forms, with or without dnl * modification, are permitted provided that the following conditions dnl * are met: dnl * dnl * 1. Redistributions of source code must retain the above copyright dnl * notice, this list of conditions and the following disclaimer. dnl * dnl * 2. Redistributions in binary form must reproduce the above copyright dnl * notice, this list of conditions and the following disclaimer in dnl * the documentation and/or other materials provided with the dnl * distribution. dnl * dnl * 3. The end-user documentation included with the redistribution, dnl * if any, must include the following acknowledgment: dnl * "This product includes software developed by the dnl * Kannel Group (http://www.kannel.org/)." dnl * Alternately, this acknowledgment may appear in the software itself, dnl * if and wherever such third-party acknowledgments normally appear. dnl * dnl * 4. The names "Kannel" and "Kannel Group" must not be used to dnl * endorse or promote products derived from this software without dnl * prior written permission. For written permission, please dnl * contact org@kannel.org. dnl * dnl * 5. Products derived from this software may not be called "Kannel", dnl * nor may "Kannel" appear in their name, without prior written dnl * permission of the Kannel Group. dnl * dnl * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED dnl * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES dnl * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE dnl * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS dnl * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, dnl * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT dnl * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR dnl * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, dnl * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE dnl * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, dnl * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dnl * ==================================================================== dnl * dnl * This software consists of voluntary contributions made by many dnl * individuals on behalf of the Kannel Group. For more information on dnl * the Kannel Group, please see . dnl * dnl * Portions of this software are based upon software originally written at dnl * WapIT Ltd., Helsinki, Finland for the Kannel project. dnl */ dnl dnl configure.in -- main autoconf macro definition file dnl dnl Process this file with autoconf to produce a configure script. dnl dnl initialization AC_PREREQ(2.5) AC_INIT(gw/alt_charsets.h) AC_CONFIG_HEADER(gw-config.h) AC_SUBST(SHELL) AC_CONFIG_AUX_DIR(.) AC_SET_TERMINAL_SEQUENCES() AC_CONFIG_NICE(config.nice) dnl Check gateway version number. VERSION=`head -n 1 VERSION` if test "x$VERSION" = "xcvs"; then AC_MSG_CHECKING([cvs checkout date]) AC_CVS_DATE(CVS_DATE) AC_MSG_RESULT([$CVS_DATE]) VERSION="$VERSION-$CVS_DATE" fi AC_DEFINE_UNQUOTED(GW_NAME, "Kannel") AC_DEFINE_UNQUOTED(GW_VERSION, "$VERSION") AC_DEFINE_UNQUOTED(VERSION, "$VERSION") AC_SUBST(GW_VERSION) AC_SUBST(VERSION) AC_CONFIG_SECTION([Configuring for Kannel gateway version $VERSION]) dnl Solaris pkgadd support definitions PKGADD_PKG="KANNELgateway" PKGADD_NAME="Kannel - WAP and SMS gateway" PKGADD_VENDOR="www.kannel.org" AC_SUBST(PKGADD_PKG) AC_SUBST(PKGADD_NAME) AC_SUBST(PKGADD_VENDOR) dnl Target installation directory for documentation AC_SUBST(docdir) docdir='${prefix}/share/doc/kannel' dnl Checks system type. AC_CONFIG_SECTION([Running system checks]) AC_CANONICAL_HOST dnl Checks for programs. AC_PROG_CC AC_PROG_INSTALL AC_PROG_RANLIB AC_PROG_YACC AC_PROG_LEX AC_PATH_PROG(CONVERT, convert) AC_PATH_PROG(PERL, perl) dnl Apply system specific rules. dnl Executable extension for systems that need one, i.e. Cygwin dnl Set the LIBTOOL to be used to create libs EXE_EXT="" LIBTOOL="ar rc" case "$host" in *-sun-solaris*) CFLAGS="$CFLAGS -DSunOS=1" ;; *-cygwin*) EXE_EXT=".exe" ;; *apple-darwin*) # MacOS X # Lets try to find the newest installed SDK for compilation # so we know how to link against it. # If we find a SDK, we use that rather then the standard /usr # location libs and includes. found=0 SDK="" for loc in "MacOSX10.4u.sdk" "MacOSX10.4.0.sdk" "MacOSX10.3.9.sdk" \ "MacOSX10.3.0.sdk" "MacOSX10.2.8.sdk" "MacOSX10.1.5.sdk" do if test "$found" = "0" ; then if test -d "/Developer/SDKs/${E}" ; then found="1" SDK="${loc}" fi fi done if test "$SDK" != "" ; then CFLAGS="$CFLAGS -DDARWIN=1 -L/Developer/SDKs/${SDK}/usr/lib -I/Developer/SDKs/${SDK}/usr/include" else CFLAGS="$CFLAGS -DDARWIN=1" fi LIBTOOL="libtool -static -o" ;; *-linux-*) CFLAGS="$CFLAGS -D_XOPEN_SOURCE=600 -D_BSD_SOURCE" LDFLAGS="$LDFLAGS -rdynamic" ;; *-*-openbsd* | *-*-freebsd*) CFLAGS="$CFLAGS -pthread" AC_CHECK_LIB(c_r, pthread_exit, [LIBS="$LIBS -lc_r"; pthread="yes"]) AC_CHECK_LIB(kse, pthread_exit, [LIBS="$LIBS -lkse"; pthread="yes"]) ;; esac AC_SUBST(EXE_EXT) AC_SUBST(LIBTOOL) AC_ARG_WITH(cflags, [ --with-cflags=FLAGS use FLAGS for CFLAGS], CFLAGS="$CFLAGS $withval") AC_ARG_WITH(libs, [ --with-libs=FLAGS use FLAGS for extra libraries], LIBS="$LIBS $withval") dnl Check whether compiler supports inline AC_C_INLINE dnl Check for how to do large files AC_SYS_LARGEFILE(CFLAGS) if test ${ac_cv_sys_file_offset_bits} != no ; then CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=${ac_cv_sys_file_offset_bits}" fi if test ${ac_cv_sys_large_files} != "no" ; then CFLAGS="$CFLAGS -D_LARGE_FILES=${ac_cv_sys_large_files}" fi dnl Check for word sizes. AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(long, 4) AC_CHECK_SIZEOF(long long, 8) SIZEOF_SHORT=$ac_cv_sizeof_short SIZEOF_INT=$ac_cv_sizeof_int SIZEOF_LONG=$ac_cv_sizeof_long SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long AC_SUBST(SIZEOF_SHORT) AC_SUBST(SIZEOF_INT) AC_SUBST(SIZEOF_LONG) AC_SUBST(SIZEOF_LONG_LONG) dnl Checks for libraries. AC_CHECK_LIB(m, log) AC_CHECK_LIB(socket, accept) AC_CHECK_LIB(nsl, inet_ntoa) AC_CHECK_LIB(resolv, inet_ntop) AC_CHECK_LIB(bind, inet_ntop) if test -z "$pthread"; then AC_CHECK_LIB(pthread, pthread_exit, [LIBS="$LIBS -lpthread"]) fi AC_CHECK_LIB(iconv, libiconv, [LIBS="$LIBS -liconv"]) dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(sys/ioctl.h sys/time.h sys/types.h unistd.h sys/poll.h) AC_CHECK_HEADERS(pthread.h getopt.h syslog.h iconv.h zlib.h execinfo.h stdlib.h) AC_CHECK_HEADERS([sys/socket.h sys/sockio.h netinet/in.h]) AC_CHECK_HEADERS([net/if.h], [], [], [#include #if STDC_HEADERS # include # include #else #if HAVE_STDLIB_H # include # endif #endif #if HAVE_SYS_SOCKET_H # include #endif ]) dnl Checks for typedefs, structures, and compiler characteristics. AC_TRY_COMPILE(, [char *func = __FUNCTION__;], AC_DEFINE(HAVE___FUNCTION__)) AC_TRY_COMPILE(, [char *func = __func__;], AC_DEFINE(HAVE___FUNC__)) dnl Checks for library functions. AC_CHECK_FUNCS(gettimeofday select socket strdup getopt_long localtime_r gmtime_r backtrace srandom) AC_CHECK_FUNC(getopt, [], [AC_LIBOBJ([utils/attgetopt])]) dnl Check if we have reentrant gethostbyname and which one AC_CHECK_FUNC(gethostbyname_r, [ AC_FUNC_WHICH_GETHOSTBYNAME_R ], [ AC_CHECK_FUNC(gethostbyname,[], [ AC_MSG_ERROR([Couldnot find gethostbyname_r nor gethostbyname functions])])] ) dnl Extra feature checks dnl GW_HAVE_TYPE_FROM(HDRNAME, TYPE, HAVENAME, DESCRIPTION) AC_DEFUN(GW_HAVE_TYPE_FROM, [ AC_CACHE_CHECK([for $2 in <$1>], gw_cv_type_$3, AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H #include #endif #include <$1> ], [$2 foo;], gw_cv_type_$3=yes, gw_cv_type_$3=no)) if test $gw_cv_type_$3 = yes; then AC_DEFINE($3, 1, $4) fi ]) dnl GW_HAVE_FUNC_FROM(HDRNAME, FUNC, HAVENAME, DESCRIPTION) AC_DEFUN(GW_HAVE_FUNC_FROM, [ AC_CACHE_CHECK([for $2 in <$1>], gw_cv_func_$3, AC_TRY_COMPILE([#include <$1>], [void *foo = $2;], gw_cv_func_$3=yes, gw_cv_func_$3=no)) if test $gw_cv_func_$3 = yes; then AC_DEFINE($3, 1, $4) fi ]) GW_HAVE_TYPE_FROM(sys/socket.h, socklen_t, HAVE_SOCKLEN_T, [Defined if there is a socklen_t in ]) GW_HAVE_FUNC_FROM(stdio.h, getopt, HAVE_GETOPT_IN_STDIO_H, [Does declare getopt()?]) GW_HAVE_FUNC_FROM(unistd.h, getopt, HAVE_GETOPT_IN_UNISTD_H, [Does declare getopt()?]) dnl POSIX regular expression check AC_CHECK_HEADERS(regex.h, [ AC_CHECK_FUNC(regcomp, [ AC_DEFINE(HAVE_REGEX) has_posix_regex=1 ]) ]) dnl Misfeature checks AC_CONFIG_SECTION([Checking for POSIX threads support]) AC_MSG_CHECKING(for working pthreads) AC_TRY_RUN([#include #include int pid; void testpid(void* foo); int main(void){ pthread_t child; pid=getpid(); pthread_create(&child,NULL,(void*)testpid,NULL); pthread_join(child,NULL); return 0; } void testpid(void* foo){ int mypid=getpid(); if(mypid!=pid){ /* Pthreads states that all threads should have the same PID * we dont! */ exit(1); }else{ exit(0); } } ],echo yes , echo no ;CFLAGS="$CFLAGS -DBROKEN_PTHREADS=1", echo Cross compiling - assuming they work) dnl dnl Checking pthread_spin support dnl AC_MSG_CHECKING([for pthread_spinlock support]) AC_TRY_COMPILE([#include ], [ pthread_spinlock_t lock; pthread_spin_init(&lock, 0); pthread_spin_lock(&lock); pthread_spin_unlock(&lock); pthread_spin_destroy(&lock); ], [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PTHREAD_SPINLOCK_T)], AC_MSG_RESULT(no)) dnl checking pthread_rwlock support AC_MSG_CHECKING([for pthread_rwlock support]) AC_TRY_COMPILE([#include ], [ pthread_rwlock_t lock; pthread_rwlock_init(&lock, NULL); pthread_rwlock_rdlock(&lock); pthread_rwlock_unlock(&lock); pthread_rwlock_wrlock(&lock); pthread_rwlock_unlock(&lock); pthread_rwlock_destroy(&lock); ], [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PTHREAD_RWLOCK)], AC_MSG_RESULT(no), [ AC_MSG_RESULT(Cross compiling - assuming suuported) ; AC_DEFINE(HAVE_PTHREAD_RWLOCK)]) dnl checking for native semaphore support dnl Solaris & HP-UX needs librt. AC_CHECK_LIB(rt, sem_init) AC_MSG_CHECKING([for semaphore support]) AC_TRY_RUN([#include int main(void) { sem_t s; int val; /* DARWNIN doesn't implement native sem_init */ if (sem_init(&s, 0, 1) != 0) return 1; sem_wait(&s); sem_post(&s); sem_getvalue(&s, &val); sem_destroy(&s); return 0; } ], [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SEMAPHORE)], AC_MSG_RESULT(no), [ AC_MSG_RESULT(Cross compiling - assuming suuported) ; AC_DEFINE(HAVE_SEMAPHORE)]) dnl Check if we have libxml2 installed and which version it is. dnl Kannel requires currently at least version 2.6.0 of libxml2. AC_CONFIG_SECTION([Checking for libxml2 support]) xml_ver_required="2.6.0" AC_PATH_PROGS(XML_CONFIG, xml2-config xml-config, no) if test "$XML_CONFIG" = "no"; then AC_MSG_ERROR([You MUST have the libxml2 (aka gnome-xml) library installed]) else AC_MSG_CHECKING([libxml version]) xml_version=`$XML_CONFIG --version` AC_MSG_RESULT([$xml_version]) AC_CHECK_VERSION($xml_version, $xml_ver_required, [ LIBS="$LIBS `$XML_CONFIG --libs`" CFLAGS="$CFLAGS `$XML_CONFIG --cflags`" ],[ AC_MSG_ERROR([libxml2 version $xml_version is too old. You need at least $xml_ver_required]) ]) fi dnl Implement the --enable-pcre option. This will set HAVE_PCRE in gw-config.h dnl accordingly and enable the usage of Perl compatible regular expressions. AC_CONFIG_SECTION([Configuring for PCRE support]) AC_MSG_CHECKING([whether to compile with PCRE support]) AC_ARG_ENABLE(pcre, [ --enable-pcre enable PCRE regex support [disabled]], [ if test "$enableval" != yes; then AC_MSG_RESULT(disabled) else AC_MSG_RESULT(searching) AC_PATH_PROGS(PCRE_CONFIG, pcre-config, no) if test "$PCRE_CONFIG" = "no"; then AC_MSG_ERROR(Unable to find pcre-config in path for PCRE support) else AC_MSG_CHECKING([PCRE version]) pcre_version=`$PCRE_CONFIG --version` AC_MSG_RESULT([$pcre_version]) AC_MSG_CHECKING([for POSIX regex provider]) if test "x$has_posix_regex" != "x" ; then LIBS="$LIBS `$PCRE_CONFIG --libs`" CFLAGS="$CFLAGS `$PCRE_CONFIG --cflags`" AC_MSG_RESULT([system regex]) else LIBS="$LIBS `$PCRE_CONFIG --libs-posix`" CFLAGS="$CFLAGS `$PCRE_CONFIG --cflags-posix`" AC_MSG_RESULT([PCRE library]) AC_CHECK_HEADERS(pcreposix.h) AC_CHECK_LIB(pcreposix, regcomp) fi AC_CHECK_HEADERS(pcre.h) AC_CHECK_FUNCS(pcre_compile) AC_DEFINE(HAVE_PCRE) AC_DEFINE_UNQUOTED(LIBPCRE_VERSION, "$pcre_version") PCRE="yes" fi fi ],[ AC_MSG_RESULT(disabled) ]) dnl DocBook stuff AC_CONFIG_SECTION([Configuring DocBook support]) AC_CHECK_PROG(JADE, jade, jade, no) AC_CHECK_PROG(JADETEX, jadetex, jadetex, no) AC_CHECK_PROG(PDFJADETEX, pdfjadetex, pdfjadetex, no) AC_CHECK_PROG(DVIPS, dvips, dvips, no) AC_CHECK_PROG(FIG2DEV, fig2dev, fig2dev, no) AC_CHECK_PROG(CONVERT, convert, convert, no) AC_SUBST(HTML_DSL) found="" for loc in /usr /usr/local; do if test "x$found" = "x" ; then for file in ${loc}/lib/sgml/stylesheet/dsssl/docbook/nwalsh/html/docbook.dsl \ ${loc}/lib/sgml/stylesheets/nwalsh-modular/html/docbook.dsl \ ${loc}/share/sgml/docbook/dsssl-stylesheets-1.59/html/docbook.dsl \ ${loc}/share/sgml/docbook/dsssl-stylesheets-1.77/html/docbook.dsl \ ${loc}/share/sgml/docbook/dsssl-stylesheets/html/docbook.dsl \ ${loc}/share/sgml/docbook/stylesheet/dsssl/modular/html/docbook.dsl \ ${loc}/share/sgml/docbook/dsssl/modular/html/docbook.dsl ; do if test "x$found" = "x" ; then AC_CHECK_FILE($file,HTML_DSL=$file; found=1) fi done fi done AC_SUBST(TEX_DSL) found="" for loc in /usr /usr/local; do if test "x$found" = "x" ; then for file in ${loc}/lib/sgml/stylesheet/dsssl/docbook/nwalsh/print/docbook.dsl \ ${loc}/lib/sgml/stylesheets/nwalsh-modular/print/docbook.dsl \ ${loc}/share/sgml/docbook/dsssl-stylesheets-1.59/print/docbook.dsl \ ${loc}/share/sgml/docbook/dsssl-stylesheets-1.77/print/docbook.dsl \ ${loc}/share/sgml/docbook/dsssl-stylesheets/print/docbook.dsl \ ${loc}/share/sgml/docbook/stylesheet/dsssl/modular/print/docbook.dsl \ ${loc}/share/sgml/docbook/dsssl/modular/print/docbook.dsl ; do if test "x$found" = "x" ; then AC_CHECK_FILE($file,TEX_DSL=$file; found=1) fi done fi done dnl Implement --enable-warnings option. AC_ARG_ENABLE(warnings, [ --enable-warnings enable compilation warnings [disabled]], [ echo enabling compilation warnings if test -n "$GCC"; then CFLAGS="$CFLAGS -Wall" CFLAGS="$CFLAGS -Wmissing-prototypes" CFLAGS="$CFLAGS -Wmissing-declarations" CFLAGS="$CFLAGS -Wnested-externs" CFLAGS="$CFLAGS -Winline" CFLAGS="$CFLAGS -Wformat -Wformat-security -Wmissing-format-attribute" #CFLAGS="$CFLAGS -Wstrict-prototypes" #CFLAGS="$CFLAGS -Wredundant-decls" #CFLAGS="$CFLAGS -Wconversion" fi ]) dnl Implement --enable-docs option. AC_SUBST(DOCSTARGET) AC_ARG_ENABLE(docs, [ --enable-docs enable building of documentation [enabled]], [ if test "$enableval" = "yes" then DOCSTARGET="docs" else DOCSTARGET="no-docs" fi ]) if test "x$HTML_DSL" = "x" -o "x$TEX_DSL" = "x" \ || test "$JADE" = "no" \ || test "$JADETEX" = "no" \ || test "$PDFJADETEX" = "no" \ || test "$DVIPS" = "no" \ || test "$FIG2DEV" = "no" \ || test "$CONVERT" = "no" \ || test "$DOCSTARGET" = "no-docs" then DOCSTARGET="no-docs" else DOCSTARGET="docs" fi case "$DOCSTARGET" in no-docs) AC_MSG_RESULT(Not building documentation.) ;; docs) AC_MSG_RESULT(Documentation will be built as well.) ;; esac dnl Implement --enable-drafts option. AC_SUBST(DOCDRAFTS) DOCDRAFTS="IGNORE" AC_ARG_ENABLE(drafts, [ --enable-drafts enable building of documentation drafts [disabled]], [ if test "$enableval" = "yes" then DOCDRAFTS="INCLUDE" else DOCDRAFTS="IGNORE" fi ]) if test "x$DOCSTARGET" = "xdocs" then case "$DOCDRAFTS" in INCLUDE) AC_MSG_RESULT(Documentation will include drafts.) ;; esac fi AC_CONFIG_SECTION([Configuring parameters]) dnl Implement --with-suffix=version option. SUFFIX="" AC_ARG_WITH(suffix, [ --with-suffix set suffix for binaries [foobox-\$VERSION]], [ if test "x$withval" != "x" ; then SUFFIX=$withval fi ]) dnl Implement --enable-suffix option. AC_ARG_ENABLE(suffix, [ --enable-suffix enable suffix for binaries [disabled]], [ if test "$enableval" = "yes" ; then SUFFIX="-$VERSION" else SUFFIX="" fi ]) if test "x$SUFFIX" != "x" ; then AC_MSG_CHECKING(whether to append suffix to binary) AC_MSG_RESULT($SUFFIX) fi AC_DEFINE_UNQUOTED(SUFFIX, "$SUFFIX") AC_SUBST(SUFFIX) dnl Implement --with-defaults=speed/debug option. AC_ARG_WITH(defaults, [ --with-defaults set default configure options: speed/debug [speed] this will set assertion checking and malloc wrapper accordingly speed = native malloc + no assertions debug = checking malloc + assertions], [ case "$withval" in speed) assertiondefault=no mallocdefault=native ;; debug) assertiondefault=yes mallocdefault=check ;; *) echo "unknown --with-defaults parameter $withval" exit 1 ;; esac ], [ dnl defaults to native malloc but with assertions assertiondefault=yes mallocdefault=native ]) dnl Implement --with-malloc=[native|check|slow] option. AC_MSG_CHECKING(which malloc to use) AC_ARG_WITH(malloc, [ --with-malloc select malloc wrapper to use: native/check/slow [native]], [ case "$withval" in native) AC_DEFINE(USE_GWMEM_NATIVE) AC_MSG_RESULT(native malloc) ;; check) AC_DEFINE(USE_GWMEM_CHECK) AC_MSG_RESULT(checking malloc) ;; slow) AC_DEFINE(USE_GWMEM_SLOW) AC_MSG_RESULT(slow malloc) ;; *) echo "Unknown malloc wrapper $withval. Oops."; exit 1 ;; esac ], [ case "$mallocdefault" in check) AC_DEFINE(USE_GWMEM_CHECK) AC_MSG_RESULT(checking malloc) ;; slow) AC_DEFINE(USE_GWMEM_SLOW) AC_MSG_RESULT(slow malloc) ;; *) AC_DEFINE(USE_GWMEM_NATIVE) AC_MSG_RESULT(native malloc) ;; esac ]) dnl Implement --disable-assertions option. AC_ARG_ENABLE(assertions, [ --disable-assertions turn off assertion checking], [ if test "$enableval" = "no" then echo disabling assertion checking AC_DEFINE(NO_GWASSERT) fi ], [ if test "$assertiondefault" = "no" then echo disabling assertion checking AC_DEFINE(NO_GWASSERT) fi ]) dnl Implement the --enable-pam option. AC_ARG_ENABLE(pam, [ --enable-pam enable pam authentication [disabled]], [ if test "$enableval" = "yes" then AC_CHECK_LIB(pam, pam_end) AC_CHECK_LIB(dl,main) AC_CHECK_HEADERS(security/pam_appl.h) PAMTARGET="pam" else PAMTARGET="no-pam" fi ]) case "$PAMTARGET" in no-pam) echo pam authentication is disabled. ;; pam) echo pam authentication is enabled. ;; esac dnl Implement --enable-debug option. AC_ARG_ENABLE(debug, [ --enable-debug enable non-reentrant debugging for wmls compiler [disabled]], [ echo enabling WMLScript compiler debugging if test -n "$GCC"; then CFLAGS="$CFLAGS -Wall" fi AC_DEFINE(WS_DEBUG) ]) dnl Implement --enable-localtime option. AC_ARG_ENABLE(localtime, [ --enable-localtime log file time stamps in local time, not GMT [enabled]], [ if test "$enableval" = yes; then echo enabling local time AC_DEFINE(LOG_TIMESTAMP_LOCALTIME) fi ],[ echo enabling local time AC_DEFINE(LOG_TIMESTAMP_LOCALTIME) ]) dnl --enable-mutex-stats option. AC_ARG_ENABLE(mutex-stats, [ --enable-mutex-stats produce information about lock contention], [ if test "$enableval" = yes; then AC_DEFINE(MUTEX_STATS) fi ]) dnl --disable-cookies option. AC_ARG_ENABLE(cookies, [ --disable-cookies disable cookie support for WSP [enabled]], [ if test "$enableval" = yes; then echo enabling cookies AC_DEFINE(ENABLE_COOKIES) else echo disabling cookies fi ],[ echo enabling cookies AC_DEFINE(ENABLE_COOKIES) ]) dnl --disable-keepalive option. AC_ARG_ENABLE(keepalive, [ --disable-keepalive disable HTTP/1.1 keep-alive support [enabled]], [ if test "$enableval" = yes; then echo enabling HTTP/1.1 keep-alive AC_DEFINE(USE_KEEPALIVE) else echo disabling HTTP/1.1 keep-alive fi ],[ echo enabling HTTP/1.1 keep-alive AC_DEFINE(USE_KEEPALIVE) ]) dnl --enable-start-stop-daemon option. AC_ARG_ENABLE(start-stop-daemon, [ --enable-start-stop-daemon compile the start-stop-daemon program [disabled]], [ if test "$enableval" = yes; then STARTSTOPDAEMONSRC="utils/start-stop-daemon.c" fi ]) AC_SUBST(STARTSTOPDAEMONSRC) dnl Implement --disable-wap and --disable-sms options. AC_ARG_ENABLE(wap, [ --disable-wap disables WAP gateway parts in bearerbox], [ if test "$enableval" = "no" then echo disabling WAP gateway parts in bearerbox AC_DEFINE(NO_WAP) fi ]) AC_ARG_ENABLE(sms, [ --disable-sms disables SMS gateway parts in bearerbox], [ if test "$enableval" = "no" then echo disabling SMS gateway parts in bearerbox AC_DEFINE(NO_SMS) fi ]) dnl Implement the --with-ssl option. AC_CONFIG_SECTION([Configuring OpenSSL support]) AC_ARG_WITH(ssl, [ --with-ssl[=DIR] where to look for OpenSSL libs and header files DIR points to the installation [/usr/local/ssl]], [ if test -d "$withval"; then ssllib="$withval/lib"; sslinc="$withval/include" else AC_MSG_ERROR(Unable to find OpenSSL libs and/or directories at $withval) fi ]) dnl Implement --enable-ssl option. AC_MSG_CHECKING([whether to compile with SSL support]) AC_ARG_ENABLE(ssl, [ --enable-ssl enable SSL client and server support [enabled]], [ if test "$enableval" = no ; then AC_MSG_RESULT(disabled) ssl=no else ssl=yes fi ],[ ssl=yes ]) if test "$ssl" = "yes" ; then dnl test only if --with-ssl has not been used if test "x$ssllib" = "x" && test "x$sslinc" = "x"; then for loc in /usr/lib /usr/local/ssl/lib /usr/local/openssl/lib; do if test -f "$loc/libssl.a" -o -f "$loc/libssl.dylib" ; then ssllib="$loc" fi done for loc in /usr/include/ssl /usr/include/openssl /usr/local/ssl/include \ /usr/local/openssl/include; do if test -d "$loc"; then sslinc="$loc" fi done fi AC_MSG_RESULT(trying $ssllib $sslinc) fi dnl Implement the SSL library checking routine. dnl This will define HAVE_LIBSSL in gw-config.h if test "x$ssllib" != "x" && test "x$sslinc" != "x"; then CFLAGS="$CFLAGS -I$sslinc" LIBS="$LIBS -L$ssllib" AC_PATH_PROG(OPENSSL, openssl, no) if test "$OPENSSL" = "yes"; then AC_MSG_CHECKING([openssl version]) openssl_version=`$OPENSSL version | awk '{print $2}'` AC_MSG_RESULT([$openssl_version]) fi AC_CHECK_LIB(crypto, CRYPTO_lock, [ LIBS="$LIBS -lcrypto" AC_CHECK_LIB(ssl, SSL_library_init, [ AC_CHECK_LIB(ssl, SSL_connect) AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \ openssl/pem.h openssl/ssl.h openssl/err.h \ openssl/hmac.h) AC_MSG_CHECKING(whether the OpenSSL library is multithread-enabled) AC_TRY_RUN([ #define OPENSSL_THREAD_DEFINES #include int main(void) { #if defined(THREADS) exit(0); #elif defined(OPENSSL_THREADS) exit(0); #else exit(1); #endif } ], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_LIBSSL) LIBS="$LIBS -lssl" AC_MSG_CHECKING([whether to compile with SSL support]) AC_MSG_RESULT(yes) ], [ AC_ARG_ENABLE(ssl-thread-test, [ --disable-ssl-thread-test disable the multithread test for the OpenSSL library this will force to continue even if the test fails], [ if test "$enableval" = no ; then AC_MSG_RESULT([no, continue forced]) fi ], [ AC_MSG_RESULT(no) AC_MSG_ERROR(Either get a multithread-enabled SSL or configure with --disable-ssl) ]) ], echo "Cross-compiling; make sure your SSL library is multithread-enabled" ) ]) ]) fi AC_CONFIG_SECTION([Configuring DB support]) dnl Implement the --with-mysql option. This will set HAVE_MYSQL in gw-config.h dnl accordingly and enable the usage of the libmysqlclient routines. AC_MSG_CHECKING([whether to compile with MySQL support]) AC_ARG_WITH(mysql, [ --with-mysql enable MySQL storage [disabled]], [ if test "$withval" != yes ; then AC_MSG_RESULT(disabled) else dnl Implement the --with-mysql-dir option. AC_ARG_WITH(mysql-dir, [ --with-mysql-dir=DIR where to look for MySQL libs and header files DIR points to the installation [/usr/local/mysql] ], [ mysqlloc="" if test -d "$withval" ; then mysqlloc="$withval" fi ]) AC_MSG_RESULT(searching) AC_PATH_PROG(MYSQL_CONFIG, mysql_config, no, [$PATH:$mysqlloc/bin:$mysqlloc]) dnl check for MySQL 4.x style mysql_config information if test "$MYSQL_CONFIG" = "no"; then found="" for loc in $mysqlloc /usr /usr/local ; do if test "x$found" = "x" ; then AC_MSG_CHECKING([for MySQL client support in]) AC_MSG_RESULT($loc) AC_CHECK_FILE("$loc/include/mysql/mysql.h", [CFLAGS="$CFLAGS -I$loc/include/mysql"; LIBS="$LIBS -L$loc/lib/mysql -lmysqlclient"]; found=1, [AC_CHECK_FILE("$loc/include/mysql.h", [CFLAGS="$CFLAGS -I$loc/include"; LIBS="$LIBS -L$loc/lib -lmysqlclient"]; found=1 )] ) fi done if test "x$found" != "x1" ; then AC_MSG_ERROR([Unable to find mysql.h, please provide a --with-mysql-dir= location]) fi else dnl mysql_config found AC_MSG_CHECKING([mysql version]) mysql_version=`$MYSQL_CONFIG --version` AC_MSG_RESULT([$mysql_version]) dnl mysql-4.x style MYSQL_LIBS="" if $MYSQL_CONFIG --libs_r &>/dev/null ; then MYSQL_LIBS=`$MYSQL_CONFIG --libs_r` AC_MSG_CHECKING([mysql reentrant libs]) AC_MSG_RESULT([$MYSQL_LIBS]) AC_CHECK_LIB(mysqlclient_r, mysql_init, [ LIBS="$LIBS $MYSQL_LIBS" ], [ MYSQL_LIBS="" ], [ $MYSQL_LIBS ]) fi if test -z "$MYSQL_LIBS" ; then MYSQL_LIBS=`$MYSQL_CONFIG --libs` AC_MSG_CHECKING([mysql libs]) AC_MSG_RESULT([$MYSQL_LIBS]) AC_CHECK_LIB(mysqlclient, mysql_init, [ LIBS="$LIBS $MYSQL_LIBS" ], [AC_MSG_ERROR([Unable to find MySQL client libraries])], [ $MYSQL_LIBS ]) fi AC_MSG_CHECKING([mysql includes]) dnl mysql-4.x style if $MYSQL_CONFIG --include &>/dev/null ; then MYSQL_CFLAGS=`$MYSQL_CONFIG --include` else MYSQL_CFLAGS=`$MYSQL_CONFIG --cflags` fi CFLAGS="$CFLAGS $MYSQL_CFLAGS" AC_MSG_RESULT([$MYSQL_CFLAGS]) fi AC_CHECK_HEADERS(mysql/mysql.h mysql/mysql_version.h) AC_DEFINE(HAVE_MYSQL) AC_MSG_CHECKING([whether to compile with MySQL support]) AC_MSG_RESULT(yes) MYSQL="yes" fi ],[ AC_MSG_RESULT(disabled) ]) dnl Implement the --with-sdb option. This will set HAVE_SDB in gw-config.h dnl accordingly and enable the usage of the libsdb routines. AC_MSG_CHECKING([whether to compile with LibSDB support]) AC_ARG_WITH(sdb, [ --with-sdb enable LibSDB storage [disabled]], [ if test "$withval" != yes; then AC_MSG_RESULT(disabled) else AC_MSG_RESULT(searching) AC_PATH_PROGS(SDB_CONFIG, sdb-config, no) if test "$SDB_CONFIG" = "no"; then AC_MSG_ERROR(Unable to find sdb-config in path for SDB support) else AC_MSG_CHECKING([sdb version]) sdb_version=`$SDB_CONFIG --version` AC_MSG_RESULT([$sdb_version]) CFLAGS="$CFLAGS `$SDB_CONFIG --cflags`" AC_CHECK_HEADERS(sdb.h) LIBS="$LIBS `$SDB_CONFIG --libs`" AC_CHECK_LIB(sdb, sdb_init, [LIBS="$LIBS -lsdb" AC_DEFINE(HAVE_SDB) AC_DEFINE_UNQUOTED(LIBSDB_VERSION, "$sdb_version") SDB="yes"], [AC_MSG_ERROR([Unable to find libSDB client libraries])] ) fi fi ],[ AC_MSG_RESULT(disabled) ]) dnl Implement the --with-sqlite option. This will set HAVE_SQLITE in gw-config.h dnl accordingly and enable the usage of the libsqlite routines. AC_MSG_CHECKING([whether to compile with SQLite support]) AC_ARG_WITH(sqlite, [ --with-sqlite enable SQLite storage [disabled]], [ if test "$withval" != yes; then AC_MSG_RESULT(disabled) else AC_MSG_RESULT(searching) AC_CHECK_HEADERS(sqlite.h) LIBS="$LIBS -L/usr/local/lib" AC_CHECK_LIB(sqlite, sqlite_open, [LIBS="$LIBS -lsqlite" AC_DEFINE(HAVE_SQLITE) SQLITE="yes"], [AC_MSG_ERROR([Unable to find SQLite client libraries])] ) AC_PATH_PROGS(SQLITE, sqlite, no) if test "$SQLITE" = "no"; then AC_MSG_WARN([Unable to find sqlite in path for SQLite support]) else AC_MSG_CHECKING([sqlite version]) sqlite_version=`$SQLITE -version` AC_MSG_RESULT([$sqlite_version]) fi fi ],[ AC_MSG_RESULT(disabled) ]) dnl Implement the --with-sqlite3 option. This will set HAVE_SQLITE3 in gw-config.h dnl accordingly and enable the usage of the libsqlite3 routines. AC_MSG_CHECKING([whether to compile with SQLite3 support]) AC_ARG_WITH(sqlite3, [ --with-sqlite3 enable SQLite3 storage [disabled]], [ if test "$withval" != yes; then AC_MSG_RESULT(disabled) else AC_MSG_RESULT(searching) AC_CHECK_HEADERS(sqlite3.h) LIBS="$LIBS -L/usr/local/lib" AC_CHECK_LIB(sqlite3, sqlite3_open, [LIBS="$LIBS -lsqlite3" AC_DEFINE(HAVE_SQLITE3) SQLITE3="yes"], [AC_MSG_ERROR([Unable to find SQLite3 client libraries])] ) AC_PATH_PROGS(SQLITE3, sqlite3, no) if test "$SQLITE3" = "no"; then AC_MSG_WARN([Unable to find sqlite3 in path for SQLite3 support]) else AC_MSG_CHECKING([sqlite3 version]) sqlite3_version=`$SQLITE3 -version` AC_MSG_RESULT([$sqlite3_version]) fi fi ],[ AC_MSG_RESULT(disabled) ]) dnl Implement the --with-oracle option. This will set HAVE_ORACLE in gw-config.h dnl accordingly and enable the usage of the OCI routines. AC_MSG_CHECKING([whether to compile with Oracle support]) AC_ARG_WITH(oracle, [ --with-oracle enable ORACLE storage [disabled]], [ if test "$withval" != yes ; then AC_MSG_RESULT(disabled) else AC_MSG_RESULT(searching) AC_ARG_WITH( oracle-includes, [ --with-oracle-includes=DIR adds oracle include paths], [ ORACLE_INCLUDE_PATH="$withval" ], [ ORACLE_INCLUDE_PATH="$ORACLE_HOME/rdbms/demo $ORACLE_HOME/rdbms/public" ] ) for a in $ORACLE_INCLUDE_PATH do CPPFLAGS="$CPPFLAGS -I$a" done AC_MSG_CHECKING([for oci.h ]) AC_TRY_CPP([#include ],AC_MSG_RESULT(yes), AC_MSG_ERROR([oci.h not found])) CFLAGS="$CFLAGS $CPPFLAGS" AC_ARG_WITH( oracle-libs, [ --with-oracle-libs=DIR adds oracle library path], [ ORACLE_LIB_PATH="$withval" ], [ ORACLE_LIB_PATH="$ORACLE_HOME/lib" ] ) for a in $ORACLE_LIB_PATH do LIBS="$LIBS -L$a" done AC_CHECK_LIB(clntsh,OCIEnvCreate,[ LIBS="$LIBS -lclntsh" ],exit) if test -f "$ORACLE_HOME/lib/libwtc8.so" then AC_CHECK_LIB(wtc8,wtcstu,[ LIBS="$LIBS -lwtc8" ],AC_MSG_ERROR([Oracle libwtc8.so not found])) else AC_CHECK_LIB(wtc9,wtcstu,[ LIBS="$LIBS -lwtc9" ],AC_MSG_ERROR([Oracle libwtc9.so not found])) fi AC_DEFINE(HAVE_ORACLE) AC_MSG_CHECKING([whether to compile with Oracle support]) AC_MSG_RESULT(yes) fi ], [AC_MSG_RESULT(disabled)]) dnl Implement the --with-pgsql option. This will set HAVE_PGSQL in gw-config.h dnl accordingly and enable the usage of the libpq routines. AC_MSG_CHECKING([whether to compile with PostgresSQL support]) AC_ARG_WITH(pgsql, [ --with-pgsql enable PostgreSQL storage [disabled]], [ if test "$withval" != yes ; then AC_MSG_RESULT(disabled) else dnl Implement the --with-pgsql-dir option. AC_ARG_WITH(pgsql-dir, [ --with-pgsql-dir=DIR where to look for PostgreSQL libs and header files DIR points to the installation [/usr/local/pgsql] ], [ pgsqlloc="" if test -d "$withval" ; then pgsqlloc="$withval" fi ]) AC_MSG_RESULT(searching) AC_PATH_PROG(PGSQL_CONFIG, pg_config, no, [$PATH:$pgsqlloc/bin:$pgsqlloc:/usr/lib/postgresql/bin]) dnl check for PgSQL >= 7.2 style pg_config information if test "$PGSQL_CONFIG" = "no"; then found="" for loc in $pgsqlloc /usr /usr/local ; do if test "x$found" = "x" ; then AC_MSG_CHECKING([for PostgresSQL include files in]) AC_MSG_RESULT($loc) AC_CHECK_FILE("$loc/include/postgresql/libpq-fe.h", [CFLAGS="$CFLAGS -I$loc/include/postgresql"; LIBS="$LIBS -L$loc/lib/postgresql -lpq"]; found=1, [AC_CHECK_FILE("$loc/include/pgsql/libpq-fe.h", [CFLAGS="$CFLAGS -I$loc/include/pgsql"; LIBS="$LIBS -L$loc/lib/pgsql -lpq"]; found=1, [AC_CHECK_FILE("$loc/pgsql/include/libpq-fe.h", [CFLAGS="$CFLAGS -I$loc/pgsql/include"; LIBS="$LIBS -L$loc/pgsql/lib -lpq"]; found=1, )] )]) fi done if test "x$found" != "x1" ; then AC_MSG_ERROR([Unable to find libpq-fe.h, please provide a --with-pgsql-dir= location]) fi else dnl pg_config found AC_MSG_CHECKING([PostgreSQL version]) pgsql_version=`$PGSQL_CONFIG --version` AC_MSG_RESULT([$pgsql_version]) AC_MSG_CHECKING([PostgreSQL libs]) if $PGSQL_CONFIG --libdir &>/dev/null ; then LIBS="$LIBS -L`$PGSQL_CONFIG --libdir`" pg_libdir=`$PGSQL_CONFIG --libdir` AC_MSG_RESULT([$pg_libdir]) fi AC_MSG_CHECKING([PostgreSQL includes]) if $PGSQL_CONFIG --includedir &>/dev/null ; then CFLAGS="$CFLAGS -I`$PGSQL_CONFIG --includedir`" pg_incdir=`$PGSQL_CONFIG --includedir` AC_MSG_RESULT([$pg_incdir]) fi fi AC_CHECK_HEADERS(postgresql/libpq-fe.h) AC_CHECK_LIB(pq, PQconnectdb, []) AC_DEFINE(HAVE_PGSQL) AC_MSG_CHECKING([whether to compile with PostgreSQL support]) AC_MSG_RESULT(yes) PGSQL="yes" fi ],[ AC_MSG_RESULT(disabled) ]) dnl Implement the --with-wtls option. dnl Check to see if we should include WTLS support, and which library to use. AC_ARG_WITH(wtls, [ --with-wtls[=TYPE] select WTLS version to use: openssl/baltimore], [ AC_CONFIG_SECTION([Configuring WTLS support]) AC_MSG_CHECKING([for WTLS library]) AC_MSG_RESULT($withval) case "$withval" in openssl) OLDLIBS="$LIBS" LIBS="$LIBS -L/usr/local/ssl/lib -lcrypto" AC_CHECK_LIB(crypto, RSA_new, [ AC_CHECK_HEADERS(openssl/objects.h openssl/rc5.h, AC_DEFINE(HAVE_WTLS_OPENSSL), AC_MSG_WARN(OpenSSL installation seems to lack RC5 algorithm!) ) ]) ;; baltimore) AC_MSG_ERROR(This WTLS library is yet not supported!) ;; *) AC_MSG_ERROR(Unknown WTLS libary support!) exit 1 ;; esac ]) dnl Final Output AC_CONFIG_SECTION([Generating output files]) AC_OUTPUT(gwlib/gw_uuid_types.h Makefile) dnl LICENSE notice AC_CONFIG_SECTION([License information]) cat < | +--------------------------------------------------------------------+ Thank you for using Kannel. X