blob: 83e9dce068e36b1074f9029b461272b46854033f [file] [log] [blame]
###############################################################################
# prelude
###############################################################################
m4_include([project/project.m4sugar])
m4_define([SVNINFO],m4_esyscmd([LANG=en svn info 2>/dev/null]))
changequote(<<,>>)dnl
m4_define(<<PRJ_repo_url>>,m4_bregexp(SVNINFO,<<^URL: *\(.+\)>>,<<\1>>))
m4_define(<<PRJ_repo_branch>>,m4_bregexp(PRJ_repo_url,<<\([^/]+\)$>>,<<\1>>))
m4_define(<<PRJ_repo_root>>,m4_bregexp(SVNINFO,<<^Repository Root: *\(.+\)>>,<<\1>>))
m4_define(<<PRJ_repo_uuid>>,m4_bregexp(SVNINFO,<<^Repository UUID: *\(.+\)>>,<<\1>>))
m4_define(<<PRJ_repo_rev>>,m4_bregexp(SVNINFO,<<^Last Changed Rev: *\(.+\)>>,<<\1>>))
m4_define(<<PRJ_repo_date>>,m4_bregexp(SVNINFO,<<^Last Changed Date: *\(.+\)>>,<<\1>>))
m4_define(<<PRJ_repo_type>>,ifelse(m4_bregexp(PRJ_repo_url,<</releases/>>),<<-1>>,<<developer>>,<<stable>>))
changequote([,])dnl
m4_define([PRJ_version_hex],m4_format([0x%04x%02x%02x],PRJ_version_major,PRJ_version_minor,PRJ_version_point))
m4_define([PRJ_version],ifelse(
PRJ_repo_type,[stable],m4_format([%s],PRJ_repo_branch),
m4_format([%s-r%s],PRJ_repo_branch,PRJ_repo_rev)))
###############################################################################
# initialization
###############################################################################
AC_PREREQ([2.61])
AC_INIT(PRJ_name,PRJ_version,PRJ_bugreport)
AC_MSG_NOTICE([
-->
--> Configuring ]AC_PACKAGE_STRING[
-->])
AC_CONFIG_AUX_DIR([autoaux])
AM_INIT_AUTOMAKE([1.9.6 foreign -Wall -Wno-portability -Werror subdir-objects nostdinc no-dist-gzip dist-bzip2 dist-zip dejagnu])
AC_CONFIG_SRCDIR([src/mp4.cpp])
# disable unused langs (improves config speed, reduces configure file size)
AC_DEFUN([_LT_AC_LANG_F77_CONFIG], [:])
AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], [:])
AC_DEFUN([_LT_AC_LANG_RC_CONFIG], [:])
AC_CANONICAL_HOST
###############################################################################
# add configure options
###############################################################################
if test -z "$enable_dependency_tracking"; then
enable_dependency_tracking=no
fi
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--disable-debug],[disable debugging compilation])])
AC_ARG_ENABLE([optimize],
[AS_HELP_STRING([--disable-optimize],[disable optimizing compilation])])
AC_ARG_ENABLE([fvisibility],
[AS_HELP_STRING([--disable-fvisibility],[disable use of -fvisibility])])
AC_ARG_ENABLE([gch],
[AS_HELP_STRING([--disable-gch],[disable GCC precompiled-headers])])
AC_ARG_ENABLE([largefile],
[AS_HELP_STRING([--disable-largefile],[disable LFS (large file support)])])
AC_ARG_ENABLE([util],
[AS_HELP_STRING([--disable-util],[disable build of command-line utilities])])
AC_ARG_ENABLE([bi],
[AS_HELP_STRING([--enable-bi=ARCH],[enable -mARCH for bi-arch compilation])])
AC_ARG_ENABLE([ub],
[AS_HELP_STRING([--enable-ub@<:@=ARCHS@:>@],[enable -arch ARCH for universal-binaries (OSX only)])])
AC_ARG_ENABLE([cygwin_win32],
[AS_HELP_STRING([--enable-cygwin-win32],[when building with Cygwin use -mwin32])])
AC_ARG_ENABLE([mingw_mt],
[AS_HELP_STRING([--enable-mingw-threads],[when building with MinGW use -mthreads])])
###############################################################################
# checks for programs
###############################################################################
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_CHECK_PROG([FOUND_HELP2MAN],[help2man],[yes],[no])
###############################################################################
# top-level platform check
###############################################################################
AC_MSG_CHECKING([$PACKAGE_NAME platform portability])
X_PLATFORM=posix
case ${host} in
*-*-cygwin)
X_CXX_W="$X_CXX_W -Wno-format"
if test "$enable_cygwin_win32" = "yes"; then
X_PLATFORM=win32
X_CXX_ARCH="$X_CXX_ARCH -mwin32"
fi
;;
*-*-mingw*)
# do not support shared
enable_shared=no
X_PLATFORM=win32
X_MINGW_LIBS="$X_MINGW_LIBS"
X_CXX_W="$X_CXX_W -Wno-format"
if test "$enable_mingw_threads" = "yes"; then
X_CXX_ARCH="$X_CXX_ARCH -mthreads"
fi
;;
esac
AC_MSG_RESULT([$X_PLATFORM])
###############################################################################
# prepare project metadata
###############################################################################
PROJECT_name="PRJ_name"
PROJECT_name_lower="PRJ_name_lower"
PROJECT_name_upper="PRJ_name_upper"
PROJECT_name_formal="PRJ_name PRJ_version"
PROJECT_url_website="PRJ_url_website"
PROJECT_url_downloads="PRJ_url_downloads"
PROJECT_url_discussion="PRJ_url_discussion"
PROJECT_irc="PRJ_irc"
PROJECT_bugreport="<PRJ_bugreport>"
PROJECT_version="PRJ_version"
PROJECT_version_hex="PRJ_version_hex"
PROJECT_version_major="PRJ_version_major"
PROJECT_version_minor="PRJ_version_minor"
PROJECT_version_point="PRJ_version_point"
PROJECT_repo_url="PRJ_repo_url"
PROJECT_repo_branch="PRJ_repo_branch"
PROJECT_repo_root="PRJ_repo_root"
PROJECT_repo_uuid="PRJ_repo_uuid"
PROJECT_repo_rev="PRJ_repo_rev"
PROJECT_repo_date="PRJ_repo_date"
PROJECT_repo_type="PRJ_repo_type"
PROJECT_build="`date`"
test -z "$PROJECT_version_hex" && PROJECT_version_hex="0x0000000000000000LL"
test -z "$PROJECT_version_major" && PROJECT_version_major="0"
test -z "$PROJECT_version_minor" && PROJECT_version_minor="0"
test -z "$PROJECT_version_point" && PROJECT_version_point="0"
test -z "$PROJECT_repo_url" && PROJECT_repo_url="svn://nowhere.com/project/unknown"
test -z "$PROJECT_repo_branch" && PROJECT_repo_branch="unknown"
test -z "$PROJECT_repo_root" && PROJECT_repo_root="svn://nowhere.com/project"
test -z "$PROJECT_repo_uuid" && PROJECT_repo_uuid="00000000-0000-0000-0000-000000000000"
test -z "$PROJECT_repo_rev" && PROJECT_repo_rev="0"
test -z "$PROJECT_repo_date" && PROJECT_repo_date="unknown"
test -z "$PROJECT_repo_type" && PROJECT_repo_type="unknown"
test -z "$PROJECT_build" && PROJECT_build="unknown"
AC_SUBST([PROJECT_name])
AC_SUBST([PROJECT_name_lower])
AC_SUBST([PROJECT_name_upper])
AC_SUBST([PROJECT_name_formal])
AC_SUBST([PROJECT_url_website])
AC_SUBST([PROJECT_url_downloads])
AC_SUBST([PROJECT_url_discussion])
AC_SUBST([PROJECT_irc])
AC_SUBST([PROJECT_bugreport])
AC_SUBST([PROJECT_version])
AC_SUBST([PROJECT_version_hex])
AC_SUBST([PROJECT_version_major])
AC_SUBST([PROJECT_version_minor])
AC_SUBST([PROJECT_version_point])
AC_SUBST([PROJECT_repo_url])
AC_SUBST([PROJECT_repo_branch])
AC_SUBST([PROJECT_repo_root])
AC_SUBST([PROJECT_repo_uuid])
AC_SUBST([PROJECT_repo_rev])
AC_SUBST([PROJECT_repo_date])
AC_SUBST([PROJECT_repo_type])
AC_SUBST([PROJECT_build])
###############################################################################
# checks for libraries
###############################################################################
###############################################################################
# checks for header files
###############################################################################
###############################################################################
# checks for typedefs, structures, and compiler characteristics
###############################################################################
###############################################################################
# replace -ggdb3 with -ggdb2 to avoid GNU 'as' from failing
# See http://code.google.com/p/mp4v2/issues/detail?id=27
###############################################################################
if test "$GXX" = "yes"; then
CXXFLAGS_GGDB3=`echo "$CXXFLAGS" | sed -e 's/-ggdb3/-ggdb2/'`
CXXFLAGS="$CXXFLAGS_GGDB3"
fi
###############################################################################
# additional ldflags
###############################################################################
case ${host} in
*-*-darwin*)
X_libmp4v2_la_LDFLAGS='-Wl,-current_version,$(PROJECT_version_major).$(PROJECT_version_minor).$(PROJECT_version_point) -Wl,-compatibility_version,$(PROJECT_version_major).0.0'
;;
*-*-cygwin*)
X_libmp4v2_la_LDFLAGS='-no-undefined'
;;
*)
X_libmp4v2_la_LDFLAGS=
;;
esac
AC_SUBST([X_libmp4v2_la_LDFLAGS])
###############################################################################
# check for --disable-fvisibility
###############################################################################
if test "$enable_fvisibility" != "no" -a "$GXX" = "yes"; then
case ${host} in
*-*-cygwin)
;;
*-*-mingw*)
;;
*)
AC_LANG(C++)
AC_CACHE_CHECK([if $CXX supports -fvisibility],[x_cv_fvisibility],[
x_save="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
AC_TRY_COMPILE([],[],[x_cv_fvisibility=yes],[x_cv_fvisibility=no])
if test "$x_cv_fvisibility" != "yes"; then
CXXFLAGS="$x_save"
fi
x_save=
])
;;
esac
fi
###############################################################################
# check for --disable-gch
###############################################################################
AC_MSG_CHECKING([if GCC precompiled-headers should be created])
X_GCH=0
X_GCH_FLAGS=
X_GCH_STATIC=0
X_GCH_STATIC_FLAGS="$lt_prog_compiler_static_CXX"
X_GCH_SHARED=0
X_GCH_SHARED_FLAGS="$lt_prog_compiler_pic_CXX"
if test "$enable_gch" = "yes"; then
X_GCH=1
elif test "$enable_gch" != "no"; then
if test "$GXX" = "yes"; then
case ${host_os} in
cygwin*|darwin*|freebsd*|linux*|mingw*|solaris*)
X_GCH=1
;;
esac
fi
fi
if test "$X_GCH" -eq 1; then
x_gch_result="yes"
if test "$enable_static" = "yes"; then
X_GCH_STATIC=1
fi
if test "$enable_shared" = "yes"; then
X_GCH_SHARED=1
fi
else
x_gch_result="no"
fi
AC_MSG_RESULT([$x_gch_result])
AC_SUBST([X_GCH])
AC_SUBST([X_GCH_FLAGS])
AC_SUBST([X_GCH_STATIC])
AC_SUBST([X_GCH_STATIC_FLAGS])
AC_SUBST([X_GCH_SHARED])
AC_SUBST([X_GCH_SHARED_FLAGS])
###############################################################################
# check for --disable-largefile
###############################################################################
if test "$enable_largefile" != "no" -a "$ac_cv_header_unistd_h" = "yes"; then
case ${host_cpu} in
i?86|ppc)
AC_LANG(C++)
AC_CACHE_CHECK([if LFS (large file support) is required],[x_cv_largefile],[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <unistd.h>
#ifndef _LFS_LARGEFILE
error: not LFS conformant
#endif
]])],[x_cv_largefile=yes],[x_cv_largefile=no])
])
if test "$x_cv_largefile" = "yes"; then
AC_DEFINE([NEED_LFS_ACTIVATION],[1],[Define to 1 if LFS should be activated])
fi
;;
esac
fi
###############################################################################
# set arch flags
###############################################################################
if test "$GXX" = "yes"; then
AC_MSG_CHECKING([arch flags])
x_flags=
x_save_IFS=$IFS; IFS=,
for arch in ${enable_ub}; do
case "$arch" in
""|no)
;;
yes)
case ${host} in
*-*-darwin*)
x_flags="$xflags -arch i386 -arch x86_64 -arch ppc -arch ppc64"
;;
esac
;;
*)
x_flags="$x_flags -arch $arch"
;;
esac
done
IFS=$x_save_IFS
case "$enable_bi" in
""|no|yes)
;;
*)
x_flags="$x_flags -m${enable_bi}"
;;
esac
if test -n "$x_flags"; then
AC_MSG_RESULT([$x_flags])
X_CXX_ARCH="$X_CXX_ARCH $x_flags"
else
AC_MSG_RESULT([none])
fi
x_flags=
fi
###############################################################################
# disable debugging
###############################################################################
if test "$enable_debug" = "no"; then
changequote(<<,>>)dnl
if test "$GCC" = "yes"; then
CFLAGS=`echo "$CFLAGS" | sed -e 's/-g[^ ]*[ ]*//' -e 's/^ //' -e 's/ $//'`
fi
if test "$GXX" = "yes"; then
CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/-g[^ ]*[ ]*//' -e 's/^ //' -e 's/ $//'`
fi
changequote([,])dnl
fi
###############################################################################
# disable optimizing
###############################################################################
if test "$enable_optimize" = "no"; then
changequote(<<,>>)dnl
if test "$GCC" = "yes"; then
CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[^ ]*[ ]*//' -e 's/^ //' -e 's/ $//'`
fi
if test "$GXX" = "yes"; then
CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/-O[^ ]*[ ]*//' -e 's/^ //' -e 's/ $//'`
fi
changequote([,])dnl
fi
###############################################################################
# checks for library functions
###############################################################################
###############################################################################
# conditional compilation
###############################################################################
AM_CONDITIONAL([ADD_PLATFORM_POSIX],[test "$X_PLATFORM" = "posix"])
AM_CONDITIONAL([ADD_PLATFORM_WIN32],[test "$X_PLATFORM" = "win32"])
AM_CONDITIONAL([ADD_UTIL],[test "$enable_util" != "no"])
AM_CONDITIONAL([ADD_MANS],[test "$X_PLATFORM" != "win32"])
###############################################################################
# declare common substitutions
###############################################################################
AC_SUBST([X_CXX_ARCH])
AC_SUBST([X_CXX_W])
AC_SUBST([X_CXX_D])
AC_SUBST([X_CXX_I])
AC_SUBST([X_MINGW_LIBS])
###############################################################################
# output files
###############################################################################
AC_CONFIG_HEADERS([libplatform/config.h])
AC_CONFIG_FILES([GNUmakefile])
AC_CONFIG_FILES([include/mp4v2/project.h])
AC_CONFIG_FILES([project/project.m4])
AC_OUTPUT