AC_PREREQ(2.57) ###################### # aegisub version info ###################### m4_define([aegisub_version_major], [2]) m4_define([aegisub_version_minor], [1]) m4_define([aegisub_version_revision], [6]) m4_define([aegisub_version], [aegisub_version_major.aegisub_version_minor.aegisub_version_revision-dev]) m4_define([aegisub_version_data], [aegisub_version_major.aegisub_version_minor]) ################### # Required packages ################### m4_define([libavcodec_required_version], [52.27.0]) # (r18642) m4_define([libavformat_required_version], [52.32.0]) # (r18642) m4_define([libavutil_required_version], [50.3.0]) # (r18642) m4_define([libpostproc_required_version], [51.2.0]) # (r18642) m4_define([libswscale_required_version], [0.7.1]) # (r18642) m4_define([lua_auto3_required_version], [5.0]) m4_define([lua_auto4_required_version], [5.1]) m4_define([portaudio_required_version], [19]) m4_define([pulseaudio_required_version], [0.5]) m4_define([fontconfig_required_version], [2.4]) m4_define([freetype_required_version], [9.7.0]) m4_define([perl_required_version], [5.004]) m4_define([pkgconfig_required_version], [0.20]) m4_define([ruby_required_version], [1.8]) m4_define([wx_required_version], [2.8.1]) ####### # Setup ####### AC_INIT([Aegisub], [aegisub_version],, [aegisub]) AC_CONFIG_SRCDIR([src/main.cpp]) AM_INIT_AUTOMAKE AC_CONFIG_HEADER([acconf.h]) AC_GNU_SOURCE AC_CANONICAL_HOST ########################### # Check target architecture ########################### AC_MSG_CHECKING([for target architecture]) case x"$target" in xNONE | x) target_or_host="$host" ;; *) target_or_host="$target" ;; esac AC_MSG_RESULT([$target_or_host]) case "$target_or_host" in *-*-darwin*) build_darwin="yes" ;; *-*-linux*) build_linux="yes" ;; *) build_default="yes" ;; esac case "$target_or_host" in ppc-*-* | powerpc-*) arch_ppc="yes" ;; i*86-*-*) arch_x86="yes" ;; x86_64-*-*) arch_x86="yes" arch_x86_64="yes" ;; *) ;; esac if test "$build_darwin" = "yes"; then if test "$arch_x86" = "yes"; then DARWIN_ARCH="intel" elif test "$arch_ppc" = "yes"; then DARWIN_ARCH="ppc" fi AC_SUBST(DARWIN_ARCH) fi # Used for universalchardet. AC_AGI_MDCPUCFG($target_or_host) # For conditional file building and options in Makefile(s). AM_CONDITIONAL([BUILD_DARWIN], [test "$build_darwin" = "yes"]) AM_CONDITIONAL([BUILD_DEFAULT], [test "$build_default" = "yes"]) # FontConfig is used on Darwin for the fontlister, freetype for !Windows case. AM_CONDITIONAL([FONTLISTER_FONTCONFIG], [test "$build_darwin" != "yes"]) AM_CONDITIONAL([FONTLISTER_FREETYPE], [test "$build_darwin" = "yes"]) # Handle endianess. AC_C_BIGENDIAN( AC_DEFINE([HAVE_BIG_ENDIAN], [1], [Big Endian]), AC_DEFINE([HAVE_LITTLE_ENDIAN], [1], [Little Endian]), AC_DEFINE([HAVE_DYNAMIC_ENDIAN], [1], [Unknown endian]), AC_DEFINE([HAVE_UNIVERSAL_ENDIAN], [1], [Universal Endian (MAC Universal PPC/Intel Binaries, uses HAVE_DYNAMIC_ENDIAN)]) ) ######################## # Configurable variables ######################## # These cannot be set before AC_INIT() AEGISUB_VERSION_MAJOR=aegisub_version_major AEGISUB_VERSION_MINOR=aegisub_version_minor AEGISUB_VERSION=aegisub_version # Used for gettext. AEGISUB_VERSION_DATA=aegisub_version_data # Suffix used for data paths. AC_DEFINE_UNQUOTED(AEGISUB_VERSION_DATA, ["$AEGISUB_VERSION_DATA"], [Data path suffix.]) AC_SUBST(AEGISUB_VERSION_DATA) # Shared data and Documents location. aegisubdatadir="$datadir/$PACKAGE/aegisub_version_data" AC_SUBST(aegisubdatadir) aegisubdocdir="$datadir/doc/$PACKAGE/aegisub_version_data" AC_SUBST(aegisubdocdir) # Name of aegisub binary. AEGISUB_COMMAND="aegisub-$AEGISUB_VERSION_MAJOR.$AEGISUB_VERSION_MINOR" AC_SUBST(AEGISUB_COMMAND) # Handle location of desktop files: http://freedesktop.org/wiki/Specifications/desktop-entry-spec AC_ARG_WITH(desktop-dir, [ --with-desktop-dir=PATH desktop file locations (default: PREFIX/share)]) if ! test -z "$with_desktop_dir" ; then DESKTOP_DATADIR=$with_desktop_dir else DESKTOP_DATADIR="$datadir" fi AM_CONDITIONAL(DESKTOP_DATADIR, test "$with_desktop_dir" != "no") AC_SUBST(DESKTOP_DATADIR) # Install prefix # If a user doesn't supply --prefix then it is set to NONE so we # set it to $ac_default_prefix if it hasn't been supplied. if test "$prefix" = "NONE"; then prefix="$ac_default_prefix" fi # Install prefix used by wxStandardPaths::SetInstallPrefix. AC_DEFINE_UNQUOTED([INSTALL_PREFIX], ["$prefix"], [Default install prefix, or --prefix.]) # Build credit AC_ARG_WITH(build-credit, [ --with-build-credit=NAME Build credit shown in the program title.], [use_build_credit="yes"]) AC_MSG_CHECKING([whether BUILD_CREDIT has been set]) if test "$use_build_credit" = "yes"; then if test "$with_build_credit" = "yes" || test -z "$with_build_credit"; then AC_MSG_FAILURE([You must set a value eg --with-build-credit=]) else AC_MSG_RESULT([yes ($with_build_credit)]) AC_DEFINE_UNQUOTED([BUILD_CREDIT], ["$with_build_credit"], [Build credit supplied in application title using --with-build-credit=]) fi else AC_MSG_RESULT([no]) fi #################### # Check for programs #################### CHECK_GNU_MAKE AC_PROG_CC AC_PROG_CXX AC_LANG(C++) define([AC_LIBTOOL_LANG_F77_CONFIG], [:]) AC_PROG_LIBTOOL AC_PROG_INSTALL PKG_PROG_PKG_CONFIG([pkgconfig_required_version]) ################# # Developers only ################# AM_MAINTAINER_MODE # XXX: This needs to be fixed to handle mixed revisions properly # There is probably a better way to handle it as well... AC_MSG_CHECKING([for svn version]) if test -d "$srcdir/.svn"; then SVN_REVISION=`svnversion $srcdir | sed "s/\(^@<:@0-9@:>@*\).*/\1/"` `echo $SVN_REVISION > $srcdir/svn_revision` AC_MSG_RESULT([$SVN_REVISION from "svnversion $srcdir"]) elif test -f "$srcdir/svn_revision"; then SVN_REVISION=`cat $srcdir/svn_revision` AC_MSG_RESULT([$SVN_REVISION from "$srcdir/svn_revision"]) else AC_MSG_RESULT([not found]) AC_MSG_FAILURE([unable to get SVN Revision from $srcdir/svn_version or 'svnversion $srcdir']) fi # This is required in order for the config file to work correctly. AC_DEFINE_UNQUOTED([BUILD_SVN_REVISION], [$SVN_REVISION], [SVN Revision number, used for config.dat and verison.cpp]) # Used on OSX and Unix for packing building. PACKAGE_STRING="${PACKAGE_STRING}-r$SVN_REVISION" PACKAGE_VERSION="${PACKAGE_VERSION}-r$SVN_REVISION" VERSION="${VERSION}-r$SVN_REVISION" # Used in version.cpp AC_MSG_CHECKING([for build date]) BUILD_DATE=`date "+%Y-%m-%d %H:%M %Z"` AC_MSG_RESULT($BUILD_DATE) AC_SUBST(SVN_REVISION) AC_SUBST(BUILD_DATE) ################################################### # Check for pthreads and setup variables / compiler ################################################### ACX_PTHREAD([], [AC_MSG_FAILURE([aegisub requires pthreads])]) #LIBS="$PTHREAD_LIBS $LIBS"; #CFLAGS="$CFLAGS $PTHREAD_CFLAGS"; CC="$PTHREAD_CC"; ###################### # Check compiler flags ###################### AC_ARG_ENABLE(compiler-flags, [ --disable-compiler-flags Disable *all* additional compiler flags. (default=no)]) if test "$enable_compiler_flags" != "no"; then AC_C_FLAG([-Wall]) AC_C_FLAG([-Wextra],[AC_C_FLAG([-W])]) AC_C_FLAG([-Wno-unused-parameter]) AC_C_FLAG([-std=gnu99]) AC_C_FLAG([-pipe]) AC_CXX_FLAG([-Wall]) AC_CXX_FLAG([-Wextra],[AC_CXX_FLAG([-W])]) AC_CXX_FLAG([-Wno-unused-parameter]) AC_CXX_FLAG([-Wno-long-long]) AC_CXX_FLAG([-fpermissive]) AC_CXX_FLAG([-fno-strict-aliasing]) AC_CXX_FLAG([-std=c++98]) AC_CXX_FLAG([-pipe]) # -O* messes with debugging. if test "$enable_debug" != "yes"; then AC_C_FLAG([-O2]) AC_CXX_FLAG([-O2]) fi fi ###################################### # Check Headers / Features / Libraries ###################################### AC_PATH_XTRA AC_HEADER_STDC AC_HEADER_STDBOOL AC_C_CONST AC_C_INLINE AC_C_VOLATILE AC_CHECK_LIB([m], [main]) AC_CHECK_FUNC([strlcpy], [ AC_DEFINE([HAVE_STRLCPY], [1], [strlcpy() exists in the c library.]) ], []) AC_LIBTOOL_DLOPEN_SELF AC_MSG_CHECKING([[whether preprocessor supports #pragma once]]) AC_PREPROC_IFELSE( [AC_LANG_PROGRAM([[#pragma once]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_PRAGMA_ONCE], [1], [Preprocessor support for #pragma once]) ], [AC_MSG_RESULT([no])]) AX_OPENMP([], [with_openmp="no"]) AM_CONDITIONAL([HAVE_OPENMP], [test "$with_openmp" != "no"]) AC_SUBST(OPENMP_CXXFLAGS) ############################## # Program Support and Features ############################## ################# ## Wide Character ################# AC_CHECK_HEADER([wchar.h],,[AC_MSG_FAILURE([aegisub requires wide character support])]) ######### ## OpenGL ######### AX_CHECK_GL if test ! "$GL_LIBS"; then AC_MSG_FAILURE([aegisub requires GL support.]) fi AC_SUBST(GL_CFLAGS) AC_SUBST(GL_LIBS) #XXX: This needs to be fixed for OSX. AC_AGI_COMPILE([OpenGL], [opengl], [$GL_CFLAGS], [$GL_LIBS],[ int main(void) { return 0; }]) if test "$agi_cv_with_opengl" = "no"; then AC_MSG_FAILURE([Please install a working OpenGL library.]) fi AC_AGI_COMPILE([OpenGLU], [openglu], [$GL_CFLAGS], [$GL_LIBS -lGLU],[ #include int main(void) { return 0; }]) if test "$agi_cv_with_openglu" = "no" && test "$build_darwin" != "yes"; then AC_MSG_FAILURE([Please install a working OpenGL GLU library.]) fi ########### ## Freetype ########### PKG_CHECK_MODULES(FREETYPE, freetype2 >= freetype_required_version, AC_DEFINE(WITH_FREETYPE2, 1, [Enable FreeType 2 support.]), [AC_MSG_FAILURE([aegisub requires >= FreeType2 freetype_required_version])]) AC_AGI_COMPILE([Freetype], [freetype], [$FREETYPE_CFLAGS], [$FREETYPE_LIBS],[ #include #include FT_FREETYPE_H int main(void) { FT_Library ft; if (FT_Init_FreeType(&ft)) { return 1; } return 0; }]) if test "$agi_cv_with_freetype" = "no"; then AC_MSG_FAILURE([Please install a working Freetype library.]) fi ############# ## Fontconfig ############# PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= fontconfig_required_version) AC_AGI_COMPILE([FontConfig], [fontconfig], [$FONTCONFIG_CFLAGS], [$FONTCONFIG_LIBS],[ #include int main(void) { int fc = FcInit(); FcConfig* config; config = FcConfigGetCurrent(); if ((!config) || (!fc)) { return 1;} return 0; }]) if test "$agi_cv_with_fontconfig" = "no"; then AC_MSG_FAILURE([Please install a working Fontconfig library.]) fi AC_DEFINE(WITH_FONTCONFIG, 1, [Enable FontConfig support.]) AC_SUBST(FONTCONFIG_CFLAGS) AC_SUBST(FONTCONFIG_LIBS) ######## ## iconv ######## AC_ARG_VAR([ICONV_CFLAGS], [CFLAGS to use for iconv (default: CPPFLAGS)]) AC_ARG_VAR([ICONV_LDFLAGS], [LDFLAGS to use for iconv (default: LDFLAGS -liconv)]) if test -z "$ICONV_LDFLAGS"; then if test "$build_linux" = "yes"; then ICONV_LDFLAGS="$LDFLAGS" else ICONV_LDFLAGS="$LDFLAGS -liconv"; fi fi if test -z "$ICONV_CFLAGS"; then ICONV_CFLAGS="$CPPFLAGS"; fi AC_AGI_COMPILE([iconv], [iconv], [$ICONV_CFLAGS], [$ICONV_LDFLAGS],[ #include int main(void) { iconv_t ic; ic = iconv_open ("UTF-8", "UTF-8"); if (!ic) return 1; return 0; } ]) AC_SUBST(ICONV_LDFLAGS) AC_SUBST(ICONV_CFLAGS) ############### # Audio Players ############### ####### ## ALSA ####### AC_ARG_WITH(alsa, [ --without-alsa build without ALSA audio provider. (default: auto)], alsa_disabled="(disabled)") AC_ARG_VAR([ALSA_CFLAGS], [CFLAGS to use for ALSA (default: CPPFLAGS)]) AC_ARG_VAR([ALSA_LDFLAGS], [LDFLAGS to use for ALSA (default: -lasound)]) if test -z "$ALSA_LDFLAGS"; then ALSA_LDFLAGS="-lasound"; fi if test -z "$ALSA_CFLAGS"; then ALSA_CFLAGS="$CPPFLAGS"; fi if test "$with_alsa" != "no"; then aegisub_save_LDFLAGS="$LDFLAGS" LDFLAGS="$ALSA_LDFLAGS" AC_CHECK_LIB([asound], [snd_pcm_open], [ALSA_LDFLAGS="-lasound"; with_alsa="yes"], [with_alsa="no"]) LDFLAGS="$aegisub_save_LDFLAGS" fi if test "$with_alsa" != "no"; then AC_DEFINE(WITH_ALSA, 1, [Enable ALSA Support]) found_audio_player="yes" fi AM_CONDITIONAL([HAVE_ALSA], [test "$with_alsa" != "no"]) AC_SUBST(ALSA_LDFLAGS) ############ ## PortAudio ############ AC_ARG_WITH(portaudio,[ --without-portaudio build without PortAudio v19 audio provider. (default: auto)], pulseaudio_disabled="(disabled)") if test "$with_portaudio" != "no"; then PKG_CHECK_MODULES(PORTAUDIO, portaudio-2.0 >= portaudio_required_version, [with_portaudio="yes"], [with_portaudio="no"]) fi if test "$with_portaudio" != "no"; then AC_AGI_COMPILE([PortAudio], [portaudio], [$PORTAUDIO_CFLAGS], [$PORTAUDIO_LIBS],[ #include int main(void) { PaError err = Pa_Initialize(); if (err != paNoError) return 1; return 0; } ]) fi if test "$agi_cv_with_portaudio" = "no" && test "$with_portaudio" = "yes"; then AC_MSG_WARN([PortAudio detected, but it doesn't work...]) with_portaudio="no" fi if test "$agi_cv_with_portaudio" = "yes" && test "$with_portaudio" = "yes"; then AC_DEFINE(WITH_PORTAUDIO, 1, [Enable PortAudio v19 support]) found_audio_player="yes" fi AM_CONDITIONAL([HAVE_PORTAUDIO], [test "$with_portaudio" != "no"]) ############# ## PulseAudio ############# AC_ARG_WITH(pulseaudio,[ --without-pulseaudio build without PulseAudio audio provider. (default: auto)], pulseaudio_disabled="(disabled)") if test "$with_pulseaudio" != "no"; then PKG_CHECK_MODULES(LIBPULSE, libpulse >= pulseaudio_required_version, [with_pulseaudio="yes"], [with_pulseaudio="no"]) fi if test "$with_pulseaudio" != "no"; then AC_AGI_COMPILE([PuleseAudio], [pulseaudio], [$LIBPULSE_CFLAGS], [$LIBPULSE_LIBS],[ #include int main(void) { pa_threaded_mainloop *mainloop = pa_threaded_mainloop_new(); if (!mainloop) return 1; return 0; } ]) fi if test "$agi_cv_with_pulseaudio" = "no" && test "$with_pulseaudio" = "yes"; then AC_MSG_WARN([PulseAudio detected, but it doesn't work...]) with_pulseaudio="no" fi if test "$agi_cv_with_pulseaudio" = "yes" && test "$with_pulseaudio" = "yes"; then AC_DEFINE(WITH_PULSEAUDIO, 1, [Enable PulseAudio support]) found_audio_player="yes" fi AM_CONDITIONAL([HAVE_PULSEAUDIO], [test "$with_pulseaudio" != "no"]) ######### ## OpenAL ######### AC_ARG_WITH(openal,[ --without-openal build without OpenAL audio provider. (default: auto)], openal_disabled="(disabled)") if test "$with_openal" != "no"; then PKG_CHECK_MODULES(OPENAL, openal >= 0.0.8, [with_openal=yes], [with_openal=no]) fi if test "$with_openal" != "no"; then AC_AGI_COMPILE([OpenAL], [openal], [$OPENAL_CFLAGS], [$OPENAL_LIBS],[ #if defined(__APPLE__) #include #include #else #include #include #endif int main(void) { ALCdevice *device = alcOpenDevice(0); if (!device) return 1; ALCcontext *context = alcCreateContext(device, 0); if (!context) return 1; return 0; } ]) fi if test "$agi_cv_with_openal" = "no" && test "$with_openal" = "yes"; then AC_MSG_WARN([OpenAL detected, but it doesn't work...]) with_openal="no" fi if test "$agi_cv_with_openal" = "yes" && test "$with_openal" = "yes"; then found_audio_player="yes" AC_DEFINE(WITH_OPENAL, 1, [Enable OpenAL support]) fi AM_CONDITIONAL([HAVE_OPENAL], [test "$with_openal" != "no"]) ######################### # Video / Audio Providers ######################### AC_ARG_WITH(ffmpeg, [ --without-ffmpeg build without FFMPEG support. Disables FFMPEG and FFmpegSource A/V providers. (default: auto)], [ffmpeg_disabled="(disabled)"; with_ffmpeg="no"]) if test "$with_ffmpeg" != "no"; then PKG_CHECK_MODULES(LIBAVCODEC, libavcodec >= libavcodec_required_version, [], [with_ffmpeg="no"]) PKG_CHECK_MODULES(LIBAVFORMAT, libavformat >= libavformat_required_version, [], [with_ffmpeg="no"]) PKG_CHECK_MODULES(LIBSWSCALE, libswscale >= libswscale_required_version, [], [with_ffmpeg="no"]) PKG_CHECK_MODULES(LIBAVUTIL, libavutil >= libavutil_required_version, [], [with_ffmpeg="no"]) fi if test "$with_ffmpeg" != "no" && test "$enable_old_ffmpeg" != "yes"; then AC_AGI_COMPILE([FFMPEG], [ffmpeg], [$LIBSWSCALE_CFLAGS $LIBAVCODEC_CFLAGS $LIBAVFORMAT_CFLAGS $LIBAVUTIL_CFLAGS], [$LIBSWSCALE_LIBS $LIBAVCODEC_LIBS $LIBAVFORMAT_LIBS $LIBAVUTIL_LIBS],[ extern "C" { #include #include #include } int main (void) { AVFormatContext *fc = NULL; AVCodec *c = NULL; SwsContext *swsc = NULL; av_register_all(); fc = av_alloc_format_context(); if (fc == NULL) { printf("avformat failure\n"); return 1; } av_free(fc); avcodec_init(); avcodec_register_all(); c = avcodec_find_decoder(CODEC_ID_PCM_S16LE); if (c == NULL) { printf("avcodec failure\n"); return 1; } swsc = sws_getContext(704, 480, PIX_FMT_RGB32, 704, 480, PIX_FMT_YUV420P, SWS_BILINEAR, NULL, NULL, NULL); if (swsc == NULL) { printf("swscale failure\n"); return 1; } sws_freeContext(swsc); return 0; } ]) fi if test "$agi_cv_with_ffmpeg" = "no" && test "$with_ffmpeg" != "no"; then AC_MSG_WARN([FFMPEG detected, but it doesn't work...]) with_ffmpeg="no" fi if test "$agi_cv_with_ffmpeg" = "yes" && test "$with_ffmpeg" != "no"; then with_ffmpeg="yes" fi if test "$agi_cv_with_ffmpeg" = "no" || test "$with_ffmpeg" = "no"; then ffmpegsource_provider_disabled="(disabled, requires FFMPEG)" ffmpeg_provider_disabled="(disabled, requires FFMPEG)" with_ffmpeg="no" fi AM_CONDITIONAL([HAVE_FFMPEG], [test "$agi_cv_with_ffmpeg" = "yes"]) AC_SUBST(LIBAVFORMAT_LIBS) AC_SUBST(LIBAVFORMAT_CFLAGS) AC_SUBST(LIBAVCODEC_LIBS) AC_SUBST(LIBAVCODEC_CFLAGS) AC_SUBST(LIBSWSCALE_LIBS) AC_SUBST(LIBSWSCALE_CFLAGS) AC_SUBST(LIBAVUTIL_LIBS) AC_SUBST(LIBAVUTIL_CFLAGS) AC_ARG_WITH(provider-ffmpeg, [ --with-provider-ffmpeg build with FFMPEG A/V provider. (default: no)]", [with_provider_ffmpeg="yes"]) if test "$agi_cv_with_ffmpeg" = "yes" && test "$with_provider_ffmpeg" = "yes"; then found_video_provider="yes" AC_DEFINE(WITH_FFMPEG, 1, [Enable FFMPEG Video Provider]) else with_provider_ffmpeg="no" fi AM_CONDITIONAL([HAVE_PROVIDER_FFMPEG], [test "$with_provider_ffmpeg" = "yes"]) AC_ARG_WITH(provider-ffmpegsource, [ --without-provider-ffmpegsource build without FFmpegSource A/V provider. (default: auto)], ffmpegsource_provider_disabled="(disabled)", with_provider_ffmpegsource="yes") if test "$agi_cv_with_ffmpeg" = "yes" && test "$with_provider_ffmpegsource" = "yes"; then PKG_CHECK_MODULES(LIBPOSTPROC, libpostproc >= libpostproc_required_version, [], [with_libpostproc="no"]) AC_AGI_COMPILE([postproc], [postproc], [$LIBPOSTPROC_CFLAGS], [$LIBPOSTPROC_LIBS],[ extern "C" { #include } int main (void) { pp_context_t *PPContext = pp_get_context(704,480, 0); if (!PPContext) return 1; pp_free_context(PPContext); return 0; } ]) if test "$agi_cv_with_postproc" = "yes"; then found_video_provider="yes" AC_DEFINE(WITH_FFMPEGSOURCE, 1, [Enable FFmpegSource2 Video Provider]) else with_provider_ffmpegsource="no" fi else with_provider_ffmpegsource="no" fi AM_CONDITIONAL([HAVE_PROVIDER_FFMPEGSOURCE], [test "$with_provider_ffmpegsource" = "yes"]) AC_SUBST(LIBPOSTPROC_LIBS) AC_SUBST(LIBPOSTPROC_CFLAGS) ################### # Subtitle Provider ################### AC_ARG_ENABLE(libass, [ --disable-libass disable libass support (default=enabled)],libass_disabled="(disabled)") if test "$enable_libass" != "no"; then if test "$agi_cv_with_iconv" = "yes"; then LIBASS_LIBS="-L../libass -lass_aegisub" LIBASS_CFLAGS="-I../libass" with_libass="yes" else AC_MSG_WARN([libiconv is required for libass support.]) with_libass="no" fi fi if test "$with_libass" = "yes" || test "$enable_libass" != "no"; then AC_DEFINE(WITH_LIBASS, 1, [Enable libass Subtitle Provider]) else with_libass="no" fi AM_CONDITIONAL([WITH_LIBASS], [test "$with_libass" = "yes"]) AC_SUBST(LIBASS_LIBS) AC_SUBST(LIBASS_CFLAGS) AC_ARG_ENABLE(csri, [ --disable-csri disable CSRI (ASA) support (default=enabled)], csri_disabled="(disabled)") if test "$enable_csri" != "no"; then PKG_CHECK_MODULES(CSRI, csri >= 0.1.0, with_csri="yes", with_csri="no") PKG_CHECK_MODULES(ASA, asa >= 0.3.2, with_asa="yes", with_asa="no") if test "$with_csri" = "yes" && test "$with_asa" = "yes"; then AC_DEFINE(WITH_CSRI, 1, [Enable CSRI (ASA) Subtitle Provider]) fi else with_csri="no" fi AM_CONDITIONAL([WITH_CSRI], [test "$with_csri" = "yes"]) ########### ## Hunspell ########### AC_ARG_WITH(hunspell, [ --without-hunspell build without hunspell support (default: auto)], hunspell_disabled="(disabled)") if test "$with_hunspell" != "no"; then PKG_CHECK_MODULES(HUNSPELL, hunspell >= 1.2.0, [with_hunspell="yes"], [with_hunspell="no"]) AC_AGI_COMPILE([Hunspell], [hunspell], [$HUNSPELL_CFLAGS], [$HUNSPELL_LIBS],[ #include int main(void) { Hunspell *hunspell; hunspell = new Hunspell(".", "."); if (!hunspell) return 1; return 0; } ]) fi if test "$agi_cv_with_hunspell" = "no" && test "$with_hunspell" = "yes"; then AC_MSG_WARN([Hunspell detected, but it doesn't work...]) with_hunspell="no" fi if test "$agi_cv_with_hunspell" = "yes" && test "$with_hunspell" = "yes"; then AC_DEFINE(WITH_HUNSPELL, 1, [Enable Hunspell support.]) fi AM_CONDITIONAL([HAVE_HUNSPELL], [test "$with_hunspell" != "no"]) ###################### ## universalchardetect ###################### AC_ARG_ENABLE(univchardet, [ --disable-univchardet disble universalchardet support.], univchardet_disabled="(disabled)") if test "$enable_univchardet" != "no"; then with_univchardet="yes" AC_DEFINE(WITH_UNIVCHARDET, 1, [Enable universalchardet support]) else with_univchardet="no" fi AM_CONDITIONAL([HAVE_UNIVCHARDET], [test "$with_univchardet" != "no"]) ############ # Automation ############ ############ ## Auto4 LUA ############ AC_ARG_WITH(lua, [ --without-lua build without lua 5.1 (auto4)], [lua51_disabled="(disabled)"]) AC_ARG_VAR([LUA_CFLAGS], [CFLAGS to use for LUA 5.1 (default: CPPFLAGS)]) AC_ARG_VAR([LUA_LDFLAGS], [LDFLAGS to use for LUA 5.1 (default: -llua)]) if test -z "$LUA_LDFLAGS"; then LUA_LDFLAGS="-llua"; fi aegisub_save_LIBS="$LIBS" LIBS="$LUA_LDFLAGS" if test "$with_lua" != no; then AC_AGI_COMPILE([Lua 5.1 (auto4)], [lua], [$LUA_CFLAGS], [],[ extern "C" { #include #include } int main () { lua_State *L = luaL_newstate(); lua_pushstring(L, "test"); int res = lua_objlen(L, -1) == 4; lua_close(L); return !res; }]) fi LIBS="$aegisub_save_LIBS" if test "$agi_cv_with_lua" = "yes"; then with_auto4="yes" with_automation="yes" AC_DEFINE(WITH_AUTO4_LUA, 1, [Enable Automation (auto4), requires lua]) else with_auto4="no" fi AM_CONDITIONAL([HAVE_AUTO4_LUA], [test "$with_auto4" != "no"]) AC_SUBST(LUA_CFLAGS) AC_SUBST(LUA_LDFLAGS) ################## ## Auto3 (LUA 5.0) ################## AC_ARG_VAR([LUA50_CFLAGS], [CFLAGS to use for LUA 5.0 (default: CPPFLAGS)]) AC_ARG_VAR([LUA50_LDFLAGS], [LDFLAGS to use for LUA 5.1 (default: -llua -llualib)]) if test -z "$LUA50_LDFLAGS"; then LUA50_LDFLAGS="-llua -llualib"; fi AC_ARG_WITH(lua50, [ --without-lua50 build without lua 5.0 (auto3)], [lua50_disabled="(disabled)"]) if test "$with_lua50" != no; then AC_AGI_COMPILE([Lua 5.0 (auto3)], [lua50], [$LUA50_CFLAGS], [$LUA50_LDFLAGS],[ extern "C" { #include "lua.h" #include "lauxlib.h" } #ifdef lua_open #error This is not Lua 5.0 #endif int main() { lua_State *L = lua_open(); if (!L) return 1; luaL_newmetatable(L, "test"); lua_close(L); }]) fi if test "$agi_cv_with_lua50" = "yes"; then with_auto3="yes" with_automation="yes" AC_DEFINE(WITH_AUTO3, 1, [Enable Automation (auto3, DEPRECIATED!), requires lua 5.0]) else with_auto3="no" fi AM_CONDITIONAL([HAVE_AUTO3_LUA], [test "$with_auto3" != "no"]) AC_SUBST(LUA50_CFLAGS) AC_SUBST(LUA50_LDFLAGS) ############# ## Auto4 PERL ############# AC_ARG_WITH(perl, [ --without-perl build without PERL Automation. (default: auto)], perl_disabled="(disabled)") AC_ARG_WITH(perl-bin, [ --with-perl-bin=PATH location of PERL binary. (default: $PATH)], [WITH_PERL_BIN="$withval"]) AC_ARG_VAR([PERL_CFLAGS], [CFLAGS to use for Perl (default: -MExtUtils::Embed -eccflags -eperl_inc)]) AC_ARG_VAR([PERL_LDFLAGS], [LDFLAGS to use for Perl (default: -MExtUtils::Embed -eldopts)]) if test "$with_perl" != "no"; then if test -z "$WITH_PERL_BIN"; then AC_PATH_PROG([PERL_BIN],perl,no) else PERL_BIN="$WITH_PERL_BIN" fi if test "$PERL_BIN" != "no"; then AC_CACHE_CHECK( [checking for perl version >= perl_required_version], [with_cv_perl], [if $PERL_BIN -e 'require perl_required_version'; then with_cv_perl="yes"; else with_cv_perl="no"; fi]) if test "$with_cv_perl" = "yes"; then AC_MSG_CHECKING([$PERL_BIN cflags]) if test -z "$PERL_CFLAGS"; then PERL_CFLAGS=`$PERL_BIN -MExtUtils::Embed -eccflags -eperl_inc` fi AC_MSG_RESULT([$PERL_CFLAGS]) AC_MSG_CHECKING([$PERL_BIN libs]) if test -z "$PERL_LDFLAGS"; then PERL_LDFLAGS=`$PERL_BIN -MExtUtils::Embed -eldopts` fi AC_MSG_RESULT([$PERL_LDFLAGS]) AC_AGI_COMPILE([Perl], [perl], [$PERL_CFLAGS], [$PERL_LDFLAGS],[ #include #include int main(int argc, char **argv, char **env) { static PerlInterpreter *my_perl; PERL_SYS_INIT3(&argc,&argv,&env); my_perl = perl_alloc(); if (!my_perl) return 1; return 0; }]) fi fi fi if test "$agi_cv_with_perl" = "no" && test "$with_cv_perl" = "yes"; then AC_MSG_WARN([Perl detected, but it doesn't work...]) with_cv_perl="no" fi if test "$agi_cv_with_perl" = "yes" && test "$with_cv_perl" = "yes"; then with_automation="yes" AC_DEFINE(WITH_PERL, 1, [Enable PERL support.]) else with_cv_perl="no" fi AM_CONDITIONAL([HAVE_AUTO4_PERL], [test "$with_cv_perl" != "no"]) AC_SUBST(PERL_CFLAGS) AC_SUBST(PERL_LDFLAGS) AC_ARG_ENABLE(perl-console, [ --disable-perl-console disable PERL console (default=enabled)],perlconsole_disabled="(disabled)") if test "$with_cv_perl" = "yes" && test "$enable_perlconsole" != "no"; then AC_DEFINE(WITH_PERLCONSOLE, 1, [Enable PERL Console support (for debugging purposes)]) fi ############# ## Auto4 Ruby ############# AC_ARG_WITH(ruby, [ --without-ruby build without Ruby Automation. (default: auto)], ruby_disabled="(disabled)") AC_ARG_WITH(ruby-bin, [ --with-ruby-bin=PATH location of RUBY binary. (default: $PATH)], [WITH_RUBY_BIN="$withval"]) AC_ARG_VAR([RUBY_CFLAGS], [CFLAGS to use for Ruby (default: Config::CONFIG archdir + CFLAGS)]) AC_ARG_VAR([RUBY_LDFLAGS], [LDFLAGS to use for Ruby (default: Cofig::CONFIG LIBRUBYARG)]) if test "$with_ruby" != "no"; then if test -z "$WITH_RUBY_BIN"; then AC_PATH_PROG([RUBY_BIN],ruby,no) else RUBY_BIN="$WITH_RUBY_BIN" fi if test "$RUBY_BIN" != "no"; then AC_CACHE_CHECK( [checking for ruby version >= ruby_required_version], [with_cv_ruby], [if $RUBY_BIN -r rbconfig -e 'if Config::CONFIG@<:@"ruby_version"@:>@.to_f >= ruby_required_version then exit(0) else exit(1) end'; then with_cv_ruby="yes"; else with_cv_ruby="no"; fi]) if test "$with_cv_ruby" = "yes"; then AC_MSG_CHECKING([checking $RUBY_BIN -r rbconfig archdir, cflags]) if test -z "$RUBY_CFLAGS"; then RUBY_CFLAGS=`$RUBY_BIN -r rbconfig -e "printf(\"-I%s %s\", Config::CONFIG@<:@'archdir'@:>@, Config::CONFIG@<:@'CFLAGS'@:>@)"` fi AC_MSG_RESULT([$RUBY_CFLAGS]) AC_MSG_CHECKING([checking $RUBY_BIN rbconfig libs]) if test -z "$RUBY_LDFLAGS"; then RUBY_LDFLAGS=`$RUBY_BIN -r rbconfig -e "print Config::CONFIG@<:@'LIBRUBYARG'@:>@"` fi AC_MSG_RESULT([$RUBY_LDFLAGS]) AC_AGI_COMPILE([Ruby], [ruby], [$RUBY_CFLAGS], [$RUBY_LDFLAGS],[ #include int main(void) { /* These supposidly call exit if they fail. */ ruby_init(); ruby_init_loadpath(); return 0; }]) fi fi fi if test "$agi_cv_with_ruby" = "no" && test "$with_cv_ruby" = "yes"; then AC_MSG_WARN([Ruby detected, but it doesn't work...]) with_cv_ruby="no" fi if test "$agi_cv_with_ruby" = "yes" && test "$with_cv_ruby" = "yes"; then with_automation="yes" AC_DEFINE(WITH_RUBY, 1, [Enable RUBY Automation.]) else with_cv_ruby="no" fi AM_CONDITIONAL([HAVE_AUTO4_RUBY], [test "$with_cv_ruby" != "no"]) AC_SUBST(RUBY_CFLAGS) AC_SUBST(RUBY_LDFLAGS) # Automation setup if test "$with_automation" = "yes"; then AC_DEFINE(WITH_AUTOMATION, 1, [Enable Automation support, requires any automation language.]) fi AM_CONDITIONAL([HAVE_AUTOMATION], [test "$with_automation" = "yes"]) ################ # Widget support ################ AM_OPTIONS_WXCONFIG AM_PATH_WXCONFIG(wx_required_version, [have_wxconfig="yes"], [have_wxconfig="no"], [std,gl,stc], [--unicode]) if test "$have_wxconfig" = "no"; then AC_MSG_FAILURE([wxWidgets detection failed, please set --with-wx* or add the libraries to your LDFLAGS, CXX/CFLAGS.]) fi AC_ARG_ENABLE(check-wx-opengl, [ --disable-check-wx-opengl Force wxwidgets OpenGL support. ]) if test "$enable_check_wx_opengl" != "no"; then AC_AGI_LINK([wxWidgets OpenGL support], [wxopengl], [wx/glcanvas.h], [$GL_CFLAGS $WX_CFLAGS], [$GL_LIBS $WX_LIBS],[ #include int main(void) { wxGLCanvas *canvas; wxGLContext *context; return 0; } ]) fi if test "$with_agi_cv_wxopengl" = "no" || test "$enable_check_wx_opengl" = "yes"; then AC_MSG_FAILURE([wxWidgets OpenGL support missing]) fi AC_ARG_ENABLE(check-wx-stc, [ --disable-check-wx-stc Force wxwidgets StyledTextCtrl support.]) if test "$enable_check_wx_stc" != "no"; then AC_AGI_LINK([wxWidgets StyledTextCtrl support], [wxstc], [wx/stc/stc.h], [$WX_CFLAGS], [$WX_LIBS],[ #include int main(void) { wxStyledTextCtrl *canvas; return 0; } ]) fi if test "$with_agi_cv_wxstc" = "no" || test "$enable_check_wx_stc:" = "yes"; then AC_MSG_FAILURE([wxWidgets StyledTextCtrl support missing]) fi ###################################################### # Debugging support # This is added last so it doesn't slow down configure # If you want it earlier add it to your CXXFLAGS. ###################################################### AC_ARG_VAR([DEBUG_FLAGS], [Debug flag to use with --enable-debug (default: -g)]) AC_MSG_CHECKING([whether to turn on debugging]) AC_ARG_ENABLE(debug, [ --enable-debug enable debugging (default=no)]) if test "$enable_debug" = "yes"; then if test -z "$DEBUG_FLAGS"; then DEBUG_FLAGS="-g"; fi AC_MSG_RESULT([yes ($DEBUG_FLAGS)]) CPPFLAGS="$DEBUG_FLAGS $CPPFLAGS" msg_debug="($DEBUG_FLAGS)" # This turns on some internal (to aegisub) debugging features. # A debug version of wxWidgets is required. if $WX_CONFIG_PATH --debug; then AC_CXX_FLAG([-D_DEBUG]) fi else enable_debug="no" AC_MSG_RESULT([no]) fi AC_SUBST(DEBUG_FLAGS) if test "$enable_debug" = "yes"; then PACKAGE_DEBUG="-debug" fi AC_SUBST(PACKAGE_DEBUG) ########### # Profiling ########### AC_ARG_VAR([PROFILE_FLAGS], [Profile flag(s) to use with --enable-profile (default: -pg)]) AC_MSG_CHECKING([whether to turn on profiling]) AC_ARG_ENABLE(profile, [ --enable-profile enable profiling (default=no)]) if test "$enable_profile" = "yes"; then if test -z "$PROFILE_FLAGS"; then PROFILE_FLAGS="-pg"; fi AC_MSG_RESULT([yes ($PROFILE_FLAGS)]) CPPFLAGS="$PROFILE_FLAGS $CPPFLAGS" else enable_profile="no" AC_MSG_RESULT([no]) fi ###### # gcov ###### AC_ARG_VAR([GCOV_FLAGS], [gcov flag(s) to use with --enable-gcov (default: -ftest-coverage -fprofile-arcs)]) AC_MSG_CHECKING([whether to turn on gcov]) AC_ARG_ENABLE(gcov, [ --enable-gcov enable gcov (default=no)]) if test "$enable_gcov" = "yes"; then if test -z "$GCOV_FLAGS"; then GCOV_FLAGS="-fprofile-arcs -ftest-coverage"; fi AC_MSG_RESULT([yes ($GCOV_FLAGS)]) CFLAGS="$CFLAGS $GCOV_FLAGS" CPPFLAGS="$CPPFLAGS $GCOV_FLAGS" else enable_gcov="no" AC_MSG_RESULT([no]) fi ################ # Electric Fence ################ AC_ARG_VAR([EFENCE_LDFLAGS], [Electric Fence ldflag(s) to use with --enable-profile (default: -lefence)]) AC_MSG_CHECKING([whether to turn on Electric Fence]) AC_ARG_ENABLE(efence, [ --enable-efence enable Electric Fence (default=no)]) if test "$enable_efence" = "yes"; then if test -z "$EFENCE_LDFLAGS"; then EFENCE_LDFLAGS="-lefence"; fi AC_MSG_RESULT([yes ($EFENCE_LDFLAGS)]) else enable_efence="no" AC_MSG_RESULT([no]) fi AC_SUBST(EFENCE_LDFLAGS) ########## # ccmalloc ########## AC_ARG_VAR([CCMALLOC_LIBS], [ccmalloc libs(s) to use with --enable-ccmalloc (default: $prefix/lib/ccmalloc-c++.o)]) AC_ARG_VAR([CCMALLOC_LDFLAGS], [ccmalloc ldflag(s) to use with --enable-ccmalloc (default: -lccmalloc)]) AC_MSG_CHECKING([whether to turn on ccmalloc]) AC_ARG_ENABLE(ccmalloc, [ --enable-ccmalloc enable ccmalloc (default=no)]) if test "$enable_ccmalloc" = "yes"; then if test -z "$CCMALLOC_LIBS"; then CCMALLOC_LIBS="$prefix/lib/ccmalloc-c++.o"; fi if test -z "$CCMALLOC_LDFLAGS"; then CCMALLOC_LDFLAGS="-lccmalloc"; fi AC_MSG_RESULT([yes ($CCMALLOC_LIBS $CCMALLOC_LDFLAGS)]) else enable_ccmalloc="no" AC_MSG_RESULT([no]) fi AC_SUBST(CCMALLOC_LDFLAGS) AC_SUBST(CCMALLOC_LIBS) if test "$enable_efence" = "yes" && test "$enable_ccmalloc" = "yes"; then AC_MSG_FAILURE([Please enable Electric Fence _or_ ccmalloc otherwise strange things will happen.]) fi ############################## # Internationalisation support ############################## AC_PROG_INTLTOOL AM_GLIB_GNU_GETTEXT if test "$build_darwin" = "yes"; then GETTEXT_PACKAGE="aegisub" else GETTEXT_PACKAGE="aegisub${AEGISUB_VERSION_MAJOR}${AEGISUB_VERSION_MINOR}" fi AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The basename for our gettext translation domains.]) #################################################################### # Default settings for Providers/Players # * This is done at the end to preserve sanity rather than littering # it above. #################################################################### AC_ARG_WITH(provider-video, [ --with-provider-video=(ffmpegsource|ffmpeg) Default Video Provider. (default: ffmpegsource)]) AC_ARG_WITH(provider-audio, [ --with-provider-audio=(ffmpegsource|ffmpeg) Default Audio Provider. (default: ffmpegsource)]) AC_ARG_WITH(player-audio, [ --with-player-audio=(alsa|openal|portaudio|pulseaudio) Default Audio Player (default: Linux/ALSA, Darwin/OpenAL, */PortAudio.]) # Default Video Provider. if ! test -z "$with_provider_video"; then default_provider_video="$with_provider_video" else if test "$with_provider_ffmpegsource" = "yes"; then default_provider_video="ffmpegsource" elif test "$with_provider_ffmpeg" = "yes"; then default_provider_video="ffmpeg" fi fi AC_DEFINE_UNQUOTED([DEFAULT_PROVIDER_VIDEO], ["$default_provider_video"], [Default Video Provider.]) # Default Audio Provider. if ! test -z "$with_provider_audio"; then default_provider_audio="$with_provider_audio" else if test "$with_provider_ffmpegsource" = "yes"; then default_provider_audio="ffmpegsource" elif test "$with_provider_ffmpeg" = "yes"; then default_provider_audio="ffmpeg" fi fi AC_DEFINE_UNQUOTED([DEFAULT_PROVIDER_AUDIO], ["$default_provider_audio"], [Default Video Provider.]) # Default Subtitle Provider. if ! test -z "$with_provider_subtitle"; then default_provider_subtitle="$with_provider_subtitle" else if test "$with_libass" = "yes"; then default_provider_subtitle="libass" elif test "$with_csri" = "yes"; then default_provider_subtitle="csri" fi fi AC_DEFINE_UNQUOTED([DEFAULT_PROVIDER_SUBTITLE], ["$default_provider_subtitle"], [Default Subtitle Provider.]) # Default audio player. if ! test -z "$with_player_audio"; then default_player_audio="$with_player_audio" else if test "$build_linux" = "yes" && test "$with_alsa" = "yes"; then default_player_audio="alsa" elif test "$build_darwin" = "yes" && test "$with_openal" = "yes"; then default_player_audio="openal" elif test "$with_portaudio" = "yes"; then default_player_audio="portaudio" elif test "$with_pulseaudio" = "yes"; then default_player_audio="pulseaudio" fi fi AC_DEFINE_UNQUOTED([DEFAULT_PLAYER_AUDIO], ["$default_player_audio"], [Default audio player.]) ############### # Misc settings ############### AM_CONDITIONAL([FOUND_AUDIO_PLAYER], [test "$found_audio_player" = "yes"]) AM_CONDITIONAL([FOUND_VIDEO_PROVIDER], [test "$found_video_provider" = "yes"]) # Makefiles AC_CONFIG_FILES([ Makefile src/Makefile src/bitmaps/Makefile src/libresrc/Makefile src/libauto3/Makefile src/libosxutil/Makefile universalchardet/Makefile FFmpegSource2/Makefile libass/Makefile automation/Makefile po/Makefile.in desktop/Makefile ]) # Files that need substitution. AC_CONFIG_FILES([ desktop/aegisub.desktop scripts/osx-bundle.sed ]) AC_OUTPUT if test -z "$found_audio_player"; then AC_MSG_NOTICE([ *********************************************************************** * No supported audio player interface was found on your system. * If you want audio support in Aegisub you need to install one of * these libraries: * - PulseAudio * * http://pulseaudio.org/ * - ALSA (Linux only) (Currently broken) * * http://www.alsa-project.org/ * - PortAudio (version 18 only, version 19 is not compatible) * * http://www.portaudio.com/ *********************************************************************** ]) fi if test -z "$found_video_provider"; then AC_MSG_NOTICE([ *********************************************************************** * No supported video/audio reader interface was found on your system. * You will not be able to open any video or audio files in Aegisub * unless you install a supported video/audio provider. * You will however still be able to open "dummy" video, ie. a blank, * virtual video clip with subtitles overlaid. * Currently we only support one video/audio provider on non-Windows * systems: * - FFmpeg (libavcodec + libavformat) * * http://ffmpeg.mplayerhq.hu/ *********************************************************************** ]) fi AC_MSG_RESULT([ Configure settings Install prefix: $prefix SVN Revision: $SVN_REVISION Debug $enable_debug $msg_debug CXXFLAGS $CXXFLAGS CPPFLAGS $CPPFLAGS LDFLAGS $LDFLAGS Default Settings Video Provider: $default_provider_video Audio Provider: $default_provider_audio Subtitle Provider: $default_provider_subtitle Audio Player: $default_player_audio Scripting Engines auto3 Lua: $with_auto3 $lua50_disabled auto4 Lua: $with_auto4 $lua51_disabled auto4 Perl: $with_cv_perl $perl_disabled auto4 Ruby: $with_cv_ruby $ruby_disabled Audio Players ALSA: $with_alsa $alsa_disabled OpenAL: $with_openal $openal_disabled PortAudio: $with_portaudio $portaudio_disabled PulseAudio: $with_pulseaudio $pulseaudio_disabled A/V Support FFMPEG: $with_ffmpeg $ffmpeg_disabled (required for video providers) A/V Providers FFMPEG: $with_provider_ffmpeg (deprecated) FFmpegSource: $with_provider_ffmpegsource $ffmpegsource_provider_disabled Subtitle Providers: CSRI (ASA): $with_csri $csri_disabled $csri_default libASS $with_libass $libass_disabled $libass_default (both require iconv and fontconfig) Misc Packages Hunspell: $with_hunspell $with_hunspell_version $hunspell_disabled universalchardet: $with_univchardet $univchardet_disabled ]);