You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
420 lines
14 KiB
420 lines
14 KiB
###############################################################################
|
|
# 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%d],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
|