| # $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 |
| ) |