blob: c8577356068d9f3b33c71fa65fca3069311b8fa4 [file] [log] [blame]
# $Id: configure.in,v 1.68 2003/03/02 16:37:12 t1mpy Exp $
# Copyright 1999, 2000 Scott Thomas Haug <eldamitri@users.sourceforge.net>
# Copyright (C) 2002 Thijmen Klok <thijmen@id3lib.org>
#
# 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 <iconv.h>],[
{
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 <iconv.h>],[
{
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 <iconv.h>],[
{
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
)