dnl Id: configure.in,v 1.1 2003/06/04 00:25:25 marka Exp dnl Process this file with autoconf to produce a configure script. dnl dnl Copyright (c) 2000 Japan Network Information Center. All rights reserved. dnl dnl By using this file, you agree to the terms and conditions set forth bellow. dnl dnl LICENSE TERMS AND CONDITIONS dnl dnl The following License Terms and Conditions apply, unless a different dnl license is obtained from Japan Network Information Center ("JPNIC"), dnl a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, dnl Chiyoda-ku, Tokyo 101-0047, Japan. dnl dnl 1. Use, Modification and Redistribution (including distribution of any dnl modified or derived work) in source and/or binary forms is permitted dnl under this License Terms and Conditions. dnl dnl 2. Redistribution of source code must retain the copyright notices as they dnl appear in each source code file, this License Terms and Conditions. dnl dnl 3. Redistribution in binary form must reproduce the Copyright Notice, dnl this License Terms and Conditions, in the documentation and/or other dnl materials provided with the distribution. For the purposes of binary dnl distribution the "Copyright Notice" refers to the following language: dnl "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved." dnl dnl 4. The name of JPNIC may not be used to endorse or promote products dnl derived from this Software without specific prior written approval of dnl JPNIC. dnl dnl 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A dnl PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR dnl CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF dnl 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 OR dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF dnl ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. AC_INIT(include/idn/converter.h) AC_CANONICAL_HOST debug=no AC_ARG_ENABLE(debug, [ --enable-debug enable debug codes [default=no]], debug=$enableval) case "$debug" in yes) CFLAGS="$CFLAGS -DDEBUG" ;; esac mdnkit_compat=no COMPAT_TRUE="#" COMPAT_FALSE= AC_ARG_ENABLE(mdnkit-compat, [ --enable-mdnkit-compat enable mDNkit compatibility mode [default=no]], mdnkit_compat=$enableval) case "$mdnkit_compat" in yes) COMPAT_TRUE= COMPAT_FALSE="#" AC_DEFINE(ENABLE_MDNKIT_COMPAT, 1, [Define if --enable-mdnkit-compat is specified]) ;; no) ;; *) AC_MSG_ERROR([You must specify yes or no to --enable-runidn option.]) ;; esac AC_SUBST(COMPAT_TRUE) AC_SUBST(COMPAT_FALSE) extraace=no AC_ARG_ENABLE(extra-ace, [ --enable-extra-ace enable additional ACE converters. [default=no]], extraace=$enableval) case "$extraace" in no) ;; yes) AC_DEFINE(IDN_EXTRA_ACE, 1, [Define if you want additional ACE converters compiled in.]) ;; *) AC_MSG_ERROR([You must specify yes or no to --enable-extra-ace option.]) ;; esac UTF8_NAME=no AC_ARG_WITH(utf8, [ --with-utf8=NAME codeset name for UTF-8 encoding [UTF-8]], UTF8_NAME=$withval) case "$UTF8_NAME" in no) UTF8_NAME=UTF-8 ;; yes) AC_MSG_ERROR([You must specify NAME to --with-utf8 option.]) ;; *) AC_DEFINE_UNQUOTED(IDN_UTF8_ENCODING_NAME, "$UTF8_NAME", [Define if your iconv() does not accept "UTF-8" as the codeset name for utf-8.]) ;; esac AC_SUBST(UTF8_NAME) liteonly=no LITEONLY_TRUE="#" LITEONLY_FALSE= AC_ARG_ENABLE(liteonly, [ --enable-liteonly compile and install lite library only [default=no]], liteonly=$enableval) case "$liteonly" in no) ;; yes) if test "$install_runidn" = yes ; then AC_MSG_ERROR([you can't set value \"yes\" to --enable-runidn and --enable-liteonly simultaneously, because runidn requires iconv support of generic libidnkit.]) fi LITEONLY_TRUE= LITEONLY_FALSE="#" ;; *) AC_MSG_ERROR([You must specify yes or no to --enable-liteonly option.]) ;; esac AC_SUBST(LITEONLY_TRUE) AC_SUBST(LITEONLY_FALSE) install_runidn=no RUNIDN_TRUE="#" RUNIDN_FALSE= AC_ARG_ENABLE(runidn, [ --enable-runidn compile and install runidn [default=no]], install_runidn=$enableval) case "$install_runidn" in no) ;; yes) if test "$liteonly" = yes ; then AC_MSG_ERROR([you can't set value \"yes\" to --enable-runidn and --enable-liteonly simultaneously, because runidn requires iconv support of generic libidnkit.]) fi RUNIDN_TRUE= RUNIDN_FALSE="#" ;; *) AC_MSG_ERROR([You must specify yes or no to --enable-runidn option.]) ;; esac AC_SUBST(RUNIDN_TRUE) AC_SUBST(RUNIDN_FALSE) ICONVINC= ICONVLIB= libiconv=unspec AC_ARG_WITH(libiconv, [ --with-libiconv=IPREFIX GNU libiconv are installed in IPREFIX [PREFIX]], libiconv=$withval) case "$libiconv" in unspec) ;; no) ICONVINC= ICONVLIB= ;; yes) if test "$liteonly" = yes ; then AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.]) fi if test X$prefix = XNONE ; then libiconv=$ac_default_prefix else libiconv=$prefix fi ICONVINC="-I$libiconv/include" ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv" ;; *) if test "$liteonly" = yes ; then AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.]) fi ICONVINC="-I$libiconv/include" ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv" ;; esac iconv_include=unspec AC_ARG_WITH(iconv-include, [ --with-iconv-include=DIR iconv include files are in DIR []], iconv_include=$withval) case "$iconv_include" in unspec) ;; no) ICONVINC= ;; yes) if test "$liteonly" = yes ; then AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.]) fi AC_MSG_WARN([You must supply DIR to --with-iconv-include option. Ignored.]) ICONVINC= ;; *) if test "$liteonly" = yes ; then AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.]) fi ICONVINC="-I$iconv_include" ;; esac if test "X$ICONVINC" != X ; then iconv_include="`echo X$ICONVINC | sed -e 's/^X-I//'`" if test ! -f "$iconv_include/iconv.h" ; then AC_MSG_ERROR([iconv.h doesn't exist in $iconv_include]) fi fi AC_SUBST(ICONVINC) iconv=unspec AC_ARG_WITH(iconv, [ --with-iconv=LIB special library for iconv []], iconv=$withval) case "$iconv" in unspec) ;; no) ICONVLIB= ;; yes) if test "$liteonly" = yes ; then AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.]) fi AC_MSG_WARN([You must supply LIB to --with-iconv option. -liconv is assumed.]) ICONVLIB=-liconv ;; *) if test "$liteonly" = yes ; then AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.]) fi ICONVLIB=$iconv ;; esac AC_SUBST(ICONVLIB) AC_ARG_WITH(iconv-sofile, [ --with-iconv-sofile=PATH shared library file for libiconv []], iconv_file=$withval, iconv_file=guess) ICONVSOFILE= case "$iconv_file" in no) ICONVSOFILE=none ;; yes) if test "$liteonly" = yes ; then AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.]) fi AC_MSG_ERROR([You must supply PATH to --with-iconv-sofile option.]) ;; guess) if test "$liteonly" != yes ; then if test "$ICONVLIB" = ""; then ICONVSOFILE=none else AC_MSG_CHECKING(pathname of iconv shared library) ic_libdir= ic_libname= case "$host" in *-hpux*) SO=sl ;; *) SO=so ;; esac for arg in $ICONVLIB; do case "$arg" in -L*) ic_libdir="$ic_libdir `echo $arg | sed s/-L//`" ;; -l*) ic_libname=`echo $arg | sed s/-l//` ;; /*.$SO*) ICONVSOFILE=$arg ;; esac done if test "$ICONVSOFILE" = ""; then if test "$ic_libname" = ""; then AC_MSG_RESULT(unknown) AC_MSG_WARN([use --with-iconv-sofile for specifying iconv shared library file]) ICONVSOFILE=none else if test "$ic_libdir" = ""; then # Standard (and semi-standard) library directories ic_libdir="/lib /usr/lib /usr/local/lib" fi for dir in $ic_libdir; do ICONVSOFILE=`ls -r $dir/lib$ic_libname.$SO* 2>/dev/null | head -1` if test "$ICONVSOFILE" != ""; then break fi done if test "$ICONVSOFILE" != ""; then AC_MSG_RESULT($ICONVSOFILE) else AC_MSG_RESULT(unknown) AC_MSG_WARN([use --with-iconv-sofile for specifying iconv shared library file]) ICONVSOFILE=none fi fi fi fi else ICONVSOFILE=none fi ;; *) if test "$liteonly" = yes ; then AC_MSG_ERROR([you can't set iconv options at all when you set value \"yes\" to --enable-liteonly, because lite library does not have iconv support.]) fi ICONVSOFILE=$iconv_file ;; esac AC_SUBST(ICONVSOFILE) dnl Figure out preload stuff. PRELOAD_VAR="LD_PRELOAD" PRELOAD_SEP=":" PRELOAD_LAST="" case "$host" in *-solaris*) PRELOAD_SEP=" " ;; *-linux*) PRELOAD_SEP=" " ;; *-osf*) PRELOAD_VAR="_RLD_LIST" PRELOAD_LAST=":DEFAULT" ;; *-netbsd*) if test -x /usr/bin/file -a -x /usr/bin/grep ; then case "`/usr/bin/file /usr/bin/grep`" in *ELF*) PRELOAD_SEP=" " ;; esac fi ;; esac AC_SUBST(PRELOAD_VAR) AC_SUBST(PRELOAD_SEP) AC_SUBST(PRELOAD_LAST) dnl Checks for standard tools. AC_PROG_CC AC_PROG_INSTALL AM_PROG_LIBTOOL AC_PATH_PROGS(PERL, perl, perl) dnl Checks for header files. AC_CHECK_HEADERS(unistd.h locale.h langinfo.h pwd.h) if test "$install_runidn" = yes ; then AC_CHECK_HEADERS(dlfcn.h) fi saved_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $ICONVINC" if test "$liteonly" != yes ; then AC_CHECK_HEADER(iconv.h, , [AC_MSG_ERROR([iconv.h doesn't exist])]) fi CPPFLAGS=$saved_CPPFLAGS dnl Checks for data types. AC_TYPE_UID_T dnl for dnsproxy. AC_CHECK_TYPE(BOOL, int) dnl Checks for libraries. if test "$install_runidn" = yes ; then AC_CHECK_LIB(socket, socket) AC_CHECK_LIB(nsl, inet_addr) AC_CHECK_LIB(dl, dlopen, [ LIBS="-ldl $LIBS" LIBDL="-ldl" AC_DEFINE(HAVE_LIBDL, 1, [Define if you have the dl library (-ldl).]) AC_SUBST(LIBDL) ]) fi dnl Checks for library functions. AC_CHECK_FUNCS(vsnprintf setvbuf setlocale nl_langinfo memmove bcopy setenv \ unsetenv) if test "$install_runidn" = yes ; then AC_CHECK_FUNCS(gethostbyname gethostbyname2 gethostbyaddr) AC_CHECK_FUNCS(gethostbyname_r gethostbyname2_r gethostbyaddr_r, find_gethost_r=yes) AC_CHECK_FUNCS(getipnodebyname getipnodebyaddr freehostent) AC_CHECK_FUNCS(getaddrinfo freeaddrinfo getnameinfo) AC_CHECK_FUNCS(dlopen dlsym) fi if test "$install_runidn" = yes ; then dnl Checks the flavor of gethostbyaddr* functions. AC_CACHE_CHECK(flavor of gethostbyaddr, ac_cv_flavor_gethostbyaddr, [ac_cv_flavor_gethostbyaddr=unknown AC_TRY_RUN( [ #include #include #include #include struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type) { return NULL; } int main() { (void)gethostbyaddr(NULL, 0, 0); return 0; } ], ac_cv_flavor_gethostbyaddr=glibc2_2,, ac_cv_flavor_gethostbyaddr=unknown) AC_TRY_RUN( [ #include #include #include #include struct hostent *gethostbyaddr(const char *addr, size_t len, int type) { return NULL; } int main() { (void)gethostbyaddr(NULL, 0, 0); return 0; } ], ac_cv_flavor_gethostbyaddr=glibc,, ac_cv_flavor_gethostbyaddr=unknown) AC_TRY_RUN( [ #include #include #include #include struct hostent *gethostbyaddr(const char *addr, int len, int type) { return NULL; } int main() { (void)gethostbyaddr(NULL, 0, 0); return 0; } ], ac_cv_flavor_gethostbyaddr=traditional,, ac_cv_flavor_gethostbyaddr=unknown) if test "$ac_cv_func_gethostbyaddr" = no ; then ac_cv_flavor_gethostbyaddr=none fi]) case "$ac_cv_flavor_gethostbyaddr" in glibc2_2) ac_cv_type_ghba_addr_t='const void *' ac_cv_type_ghba_addrlen_t='socklen_t' ;; glibc) ac_cv_type_ghba_addr_t='const char *' ac_cv_type_ghba_addrlen_t='size_t' ;; traditional | none) ac_cv_type_ghba_addr_t='const char *' ac_cv_type_ghba_addrlen_t='int' ;; *) AC_MSG_ERROR([can't build runidn, since parameter type list of gethostbyaddr() is unknown to configure.]) ;; esac AC_DEFINE_UNQUOTED(GHBA_ADDR_T, $ac_cv_type_ghba_addr_t, [Define as the type of the 1st argument of gethostbyaddr.]) AC_DEFINE_UNQUOTED(GHBA_ADDRLEN_T, $ac_cv_type_ghba_addrlen_t, [Define as the type of the 2nd argument of gethostbyaddr.]) dnl Checks the flavor of getnameinfo functions. AC_CACHE_CHECK(flavor of getnameinfo, ac_cv_flavor_getnameinfo, [ac_cv_flavor_getnameinfo=unknown AC_TRY_RUN( [ #include #include #include #include int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, unsigned int flags) { return NULL; } int main() { (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); return 0; } ], ac_cv_flavor_getnameinfo=glibc2_2_2,, ac_cv_flavor_getnameinfo=unknown) AC_TRY_RUN( [ #include #include #include #include int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, int flags) { return NULL; } int main() { (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); return 0; } ], ac_cv_flavor_getnameinfo=rfc2553bis_03,, ac_cv_flavor_getnameinfo=unknown) AC_TRY_RUN( [ #include #include #include #include int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags) { return NULL; } int main() { (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); return 0; } ], ac_cv_flavor_getnameinfo=rfc2553,, ac_cv_flavor_getnameinfo=unknown) AC_TRY_RUN( [ #include #include #include #include int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags) { return NULL; } int main() { (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0); return 0; } ], ac_cv_flavor_getnameinfo=rfc2133,, ac_cv_flavor_getnameinfo=unknown) if test "$ac_cv_func_getnameinfo" = no ; then ac_cv_flavor_getnameinfo=none fi]) case "$ac_cv_flavor_getnameinfo" in glibc2_2_2) ac_cv_type_gni_salen_t='socklen_t' ac_cv_type_gni_hostlen_t='socklen_t' ac_cv_type_gni_servlen_t='socklen_t' ac_cv_type_gni_flags_t='unsigned int' ;; rfc2553bis_03) ac_cv_type_gni_salen_t='socklen_t' ac_cv_type_gni_hostlen_t='socklen_t' ac_cv_type_gni_servlen_t='socklen_t' ac_cv_type_gni_flags_t='int' ;; rfc2553) ac_cv_type_gni_salen_t='socklen_t' ac_cv_type_gni_hostlen_t='size_t' ac_cv_type_gni_servlen_t='size_t' ac_cv_type_gni_flags_t='int' ;; rfc2133 | none) ac_cv_type_gni_salen_t='size_t' ac_cv_type_gni_hostlen_t='size_t' ac_cv_type_gni_servlen_t='size_t' ac_cv_type_gni_flags_t='int' ;; *) AC_MSG_ERROR([can't build runidn, since parameter type list of getnameinfo() is unknown to configure.]) esac AC_DEFINE_UNQUOTED(GNI_SALEN_T, $ac_cv_type_gni_salen_t, [Define as the type of the 2nd argument of getnameinfo.]) AC_DEFINE_UNQUOTED(GNI_HOSTLEN_T, $ac_cv_type_gni_hostlen_t, [Define as the type of the 4th argument of getnameinfo.]) AC_DEFINE_UNQUOTED(GNI_SERVLEN_T, $ac_cv_type_gni_servlen_t, [Define as the type of the 6th argument of getnameinfo.]) AC_DEFINE_UNQUOTED(GNI_FLAGS_T, $ac_cv_type_gni_flags_t, [Define as the type of the 7th argument of getnameinfo.]) fi dnl resume here. dnl Checks the flavor of gethost*_r functions. if test "$find_gethost_r" = yes; then AC_CACHE_CHECK(flavor of gethostbyname_r, ac_cv_flavor_gethost_r, [AC_TRY_RUN( changequote(<<, >>)dnl << #include #include #include #include #include int main() { int err = 0; struct hostent hebuf, *hp; char buf[10]; /* Try resolving a invalid name using glibc flavor. */ (void)gethostbyname_r("@#!", &hebuf, buf, sizeof(buf), &hp, &err); if (err != 0) return 0; /* glibc flavor */ else return 1; /* Sun flavor */ } >>, changequote([, ])dnl ac_cv_flavor_gethost_r=glibc, ac_cv_flavor_gethost_r=sun, ac_cv_flavor_gethost_r=sun)]) if test "$ac_cv_flavor_gethost_r" = "glibc"; then AC_DEFINE(GETHOST_R_GLIBC_FLAVOR, 1, [Define if the prototype of gethost*_r is glibc flavor.]) fi fi dnl Find system shared object paths. AC_FIND_SYSTEM_SHOBJ(libc) if test "$install_runidn" = yes ; then AC_FIND_SYSTEM_SHOBJ(libnsl) fi dnl Checks for iconv library. if test "$liteonly" != yes ; then AC_MSG_CHECKING(for iconv) saved_CPPFLAGS=$CPPFLAGS saved_LIBS=$LIBS CPPFLAGS="$CPPFLAGS $ICONVINC" LIBS="$LIBS $ICONVLIB" AC_TRY_LINK([ #include ], [ iconv_t i; i = iconv_open("ISO-8859-1", "UTF-8"); ], [iconv_try_link=yes], [iconv_try_link=no]) LIBS=$saved_LIBS CPPFLAGS=$saved_CPPFLAGS AC_MSG_RESULT($iconv_try_link) if test "$iconv_try_link" = no ; then AC_MSG_ERROR(iconv function not available) fi fi dnl Check for codeset name for UTF-8. if test "$liteonly" != yes ; then AC_MSG_CHECKING([for codeset name $UTF8_NAME]) saved_CPPFLAGS=$CPPFLAGS saved_LIBS=$LIBS CPPFLAGS="$CPPFLAGS $ICONVINC" LIBS="$LIBS $ICONVLIB" AC_TRY_RUN([ #include #include #include #define UTF8_NAME "$UTF8_NAME" #define ICONV_FAIL ((iconv_t)(-1)) /* Check if the codeset name UTF8_NAME is valid by performing iconv_open(). */ int main() { int i; /* list of codeset names likely to exist */ static char *codeset[] = { "ASCII", "ISO-8859-1", "ISO8859-1", "iso8859_1", "8859-1", "Shift_JIS", "SJIS", "sjis", NULL, }; /* First try null conversion. */ if (iconv_open(UTF8_NAME, UTF8_NAME) != ICONV_FAIL) return 0; /* Unfortunately, above check fails on certain systems, such as Solaris. */ for (i = 0; codeset[i] != NULL; i++) { if (iconv_open(UTF8_NAME, codeset[i]) != ICONV_FAIL) return 0; } return 1; } ], utf8_name_valid=yes, utf8_name_valid=no, utf8_name_valid=unknown) LIBS=$saved_LIBS CPPFLAGS=$saved_CPPFLAGS AC_MSG_RESULT($utf8_name_valid) fi dnl Output. AC_CONFIG_HEADER(include/config.h) AC_OUTPUT( Makefile include/Makefile include/idn/Makefile include/mdn/Makefile lib/Makefile man/Makefile tools/Makefile tools/idnconv/Makefile tools/runidn/Makefile tools/runidn/runidn map/Makefile lib/tests/Makefile )