# $Id: configure.in,v 1.68 2003/03/02 16:37:12 t1mpy Exp $ # Copyright 1999, 2000 Scott Thomas Haug # Copyright (C) 2002 Thijmen Klok # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # require autoconf 2.13 AC_PREREQ(2.13) # init autoconf (and check for presence fo reconf) AC_INIT(reconf) ID3LIB_NAME=id3lib dnl The following has been adapted from glib (http://www.gtk.org) dnl dnl we need to AC_DIVERT_PUSH/AC_DIVERT_POP these variable definitions so they dnl are available for $ac_help expansion (don't we all *love* autoconf?) #AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) # Making releases: # ID3LIB_PATCH_VERSION += 1; # ID3LIB_INTERFACE_AGE += 1; # ID3LIB_BINARY_AGE += 1; # if any functions have been added, set ID3LIB_INTERFACE_AGE to 0. # if backwards compatibility has been broken, # set ID3LIB_BINARY_AGE _and_ ID3LIB_INTERFACE_AGE to 0. # ID3LIB_MAJOR_VERSION=3 ID3LIB_MINOR_VERSION=8 ID3LIB_PATCH_VERSION=3 ID3LIB_ADDED_VERSION= ID3LIB_VERSION=$ID3LIB_MAJOR_VERSION.$ID3LIB_MINOR_VERSION.$ID3LIB_PATCH_VERSION$ID3LIB_ADDED_VERSION ID3LIB_INTERFACE_AGE=0 ID3LIB_BINARY_AGE=0 AC_DIVERT_POP()dnl AC_SUBST(ID3LIB_NAME) AC_SUBST(ID3LIB_MAJOR_VERSION) AC_SUBST(ID3LIB_MINOR_VERSION) AC_SUBST(ID3LIB_PATCH_VERSION) AC_SUBST(ID3LIB_VERSION) AC_SUBST(ID3LIB_INTERFACE_AGE) AC_SUBST(ID3LIB_BINARY_AGE) # for documentation purposes DOX_DIR_HTML=api DOX_DIR_LATEX=latex DOX_DIR_MAN=man DOX_DIR_RTF=rtf AC_SUBST(DOX_DIR_HTML) AC_SUBST(DOX_DIR_LATEX) AC_SUBST(DOX_DIR_MAN) AC_SUBST(DOX_DIR_RTF) # libtool versioning LT_RELEASE=$ID3LIB_MAJOR_VERSION.$ID3LIB_MINOR_VERSION LT_CURRENT=`expr $ID3LIB_PATCH_VERSION - $ID3LIB_INTERFACE_AGE` LT_REVISION=$ID3LIB_INTERFACE_AGE LT_AGE=`expr $ID3LIB_BINARY_AGE - $ID3LIB_INTERFACE_AGE` AC_SUBST(LT_RELEASE) AC_SUBST(LT_CURRENT) AC_SUBST(LT_REVISION) AC_SUBST(LT_AGE) VERSION=$ID3LIB_VERSION PACKAGE=$ID3LIB_NAME dnl This is a hack to get the release date using cvs checkin macros ID3LIB_FULLNAME=$ID3LIB_NAME-$ID3LIB_VERSION AC_SUBST(ID3LIB_FULLNAME) AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE($PACKAGE,$VERSION) AC_ISC_POSIX dnl Initialize libtool AM_PROG_LIBTOOL dnl Initialize maintainer mode AM_MAINTAINER_MODE #AC_CANONICAL_HOST dnl figure debugging default, prior to $ac_help setup dnl ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) if test `expr $ID3LIB_MINOR_VERSION \% 2` = 1 ; then debug_default=yes else debug_default=minimum fi AC_DIVERT_POP()dnl dnl declare --enable-* args and collect ac_help strings AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]], , enable_ansi=no) dnl AC_SUBST(ID3LIB_DEBUG_FLAGS) dnl Checks for programs AC_PROG_CC AC_PROG_CXX AC_PROG_CXXCPP AC_PROG_INSTALL dnl for executable extensions AC_EXEEXT dnl Checks for libraries. AC_CHECK_LIB(z,uncompress,AC_DEFINE_UNQUOTED(HAVE_ZLIB))#,, # AC_MSG_ERROR([id3lib requires zlib to process compressed frames])) AM_CONDITIONAL(ID3_NEEDZLIB, test x$ac_cv_lib_z_uncompress = xno) AM_CONDITIONAL(ID3_NEEDDEBUG, test x$enable_debug = xyes) dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(zlib.h wchar.h sys/param.h unistd.h ) dnl check wheter iconv is the part of libc. AC_CHECK_HEADERS( iconv.h, has_iconv=1, has_iconv=0) dnl if we have iconv library, we have to decide if it dnl is present in libc ICONV_LIB= if test $has_iconv = 1; then AC_MSG_CHECKING(where to find iconv_open) exec 6>/dev/null AC_CHECK_FUNCS(iconv_open, iconv_in_libc=1, iconv_in_libc=0) AC_CHECK_LIB(iconv, iconv_open, iconv_in_iconv=1, iconv_in_iconv=0) AC_CHECK_LIB(iconv, libiconv_open, libiconv_in_iconv=1, libiconv_in_iconv=0) if test ! x$silent = xyes; then exec 6>&1 fi #standalone library rules over libc if test $iconv_in_iconv = 1 -o $libiconv_in_iconv = 1; then AC_MSG_RESULT(libiconv) ICONV_LIB=-liconv elif test $iconv_in_libc = 1; then AC_MSG_RESULT(libc) else AC_MSG_RESULT(not found (panic)) AC_MSG_ERROR([iconv.h found, while iconv library not found]) fi #we have iconv at this moment, better check which call to use AC_MSG_CHECKING(whether iconv takes const char ** or char **) AC_TRY_COMPILE([#include ],[ { size_t iconv (iconv_t a, const char ** b, size_t *c, char **d, size_t *e); }], iconv_oldstyle=1, iconv_oldstyle=0) if test $iconv_oldstyle = 1; then AC_MSG_RESULT(const char **) AC_DEFINE(ID3LIB_ICONV_OLDSTYLE) #we'll check out the need of #typecast in the call of iconv_open AC_MSG_CHECKING(whether to typecast in iconv) AC_TRY_COMPILE([#include ],[ { const char *src = "nothing"; char *outbuf; size_t insize = 0; size_t outsize = 0; iconv_t cd; iconv(cd, &src, &insize, &outbuf, &outsize); }], iconv_cast=0, iconv_cast=1) if test $iconv_cast = 1; then AC_MSG_RESULT(yes) AC_DEFINE(ID3LIB_ICONV_CAST_OK) else AC_MSG_RESULT(no) fi else AC_MSG_RESULT(char **) #we'll check out the need of #typecast in the call of iconv_open AC_MSG_CHECKING(whether to typecast in iconv) AC_TRY_COMPILE([#include ],[ { char *src = "nothing"; char *outbuf; size_t insize = 0; size_t outsize = 0; iconv_t cd; iconv(cd, &src, &insize, &outbuf, &outsize); }], iconv_cast=0, iconv_cast=1) if test $iconv_cast = 1; then AC_MSG_RESULT(yes) AC_DEFINE(ID3LIB_ICONV_CAST_OK) else AC_MSG_RESULT(no) fi fi fi if test "x$ICONV_LIB" != "x"; then LIBS="$LIBS $ICONV_LIB" fi dnl Check for c++ features AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_CHECK_HEADERS(libcw/sys.h) AC_CHECK_HEADERS(cctype climits cstdio cstdlib bitset cstring) AC_CHECK_HEADERS(fstream iostream iomanip vector \ ,,AC_MSG_ERROR([Missing a vital header file for id3lib - download them here: http://gcc.gnu.org/libstdc++/ or better - compile a newer compiler like gcc3.x]) ) AC_CHECK_HEADERS( \ string \ iomanip.h \ ,,AC_MSG_ERROR([Missing a vital header file for id3lib]) ) dnl Checks for the portability of certain c++ features: the bool type and dnl for-loop scoping ID3_CXX_PORTABILITY ID3_CXX_WARNINGS AC_LANG_RESTORE ID3_DEBUG ID3_UNICODE dnl Check for functions. # AC_FUNC_MEMCMP AC_CHECK_FUNCS(getopt_long) AM_CONDITIONAL(ID3_NEEDGETOPT_LONG, test x$ac_cv_func_getopt_long = xno) AC_CHECK_FUNCS(mkstemp) AC_CHECK_FUNCS( truncate \ ,,AC_MSG_ERROR([Missing a vital function for id3lib]) ) dnl Checks for typedefs, structures, and compiler characteristics. AC_TYPE_SIZE_T dnl dnl Checks with local macros dnl dnl Provides a --honor-std option to the configure script that honors the dnl std namespace. Must be used AFTER configuring ALL compilers. dnl LF_HONOR_STD dnl ACCONFIG TEMPLATE dnl dnl /* config.h defines these preprocesser symbols to be used by id3lib for dnl * determining internal versioning information. The intent is that these dnl * macros will be made available in the library via constants, functions, dnl * or static methods. dnl */ dnl #undef HAVE_ZLIB dnl #undef HAVE_GETOPT_LONG dnl #undef _ID3LIB_NAME dnl #undef _ID3LIB_VERSION dnl #undef _ID3LIB_FULLNAME dnl #undef _ID3LIB_MAJOR_VERSION dnl #undef _ID3LIB_MINOR_VERSION dnl #undef _ID3LIB_PATCH_VERSION dnl #undef _ID3LIB_INTERFACE_AGE dnl #undef _ID3LIB_BINARY_AGE dnl #undef _ID3_COMPILED_WITH_DEBUGGING dnl /* */ dnl END ACCONFIG AC_DEFINE_UNQUOTED(_ID3LIB_NAME, "$ID3LIB_NAME") AC_DEFINE_UNQUOTED(_ID3LIB_VERSION, "$ID3LIB_VERSION") AC_DEFINE_UNQUOTED(_ID3LIB_FULLNAME, "$ID3LIB_FULLNAME") AC_DEFINE_UNQUOTED(_ID3LIB_MAJOR_VERSION, $ID3LIB_MAJOR_VERSION) AC_DEFINE_UNQUOTED(_ID3LIB_MINOR_VERSION, $ID3LIB_MINOR_VERSION) AC_DEFINE_UNQUOTED(_ID3LIB_PATCH_VERSION, $ID3LIB_PATCH_VERSION) AC_DEFINE_UNQUOTED(_ID3LIB_INTERFACE_AGE, $ID3LIB_INTERFACE_AGE) AC_DEFINE_UNQUOTED(_ID3LIB_BINARY_AGE, $ID3LIB_BINARY_AGE) AC_DEFINE_UNQUOTED(_ID3_COMPILED_WITH_DEBUGGING, "${enable_debug}") CONDITIONAL_SUBDIRS= if test "x$ac_cv_lib_z_uncompress" = "xno"; then CONDITIONAL_SUBDIRS="$CONDITIONAL_SUBDIRS zlib" fi AC_CONFIG_SUBDIRS(zlib) CFLAGS="$CFLAGS -Wall" AC_OUTPUT( \ Makefile \ doc/Makefile \ m4/Makefile \ include/Makefile \ include/id3/Makefile \ id3com/Makefile \ id3com/Sample/Makefile \ src/Makefile \ examples/Makefile \ prj/Makefile \ libprj/Makefile )