# # UltraStar-DX configure.in script # # by UltraStar Deluxe Team # # Call "aclocal -I m4" to create the aclocal.m4 file. # Process this file with autoconf to produce a configure script. # # Require autoconf >= 2.61 AC_PREREQ(2.61) # Init autoconf AC_INIT([UltraStar Deluxe], [1.1], [TODO: send bugreport BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR(UltraStar.lpr) AC_CONFIG_MACRO_DIR(m4) # show features and packages in one list AC_PRESERVE_HELP_ORDER # ----------------------------------------- # define switches # ----------------------------------------- # print library option header AC_ARG_WITH([cfg-dummy1], [ External Libraries:]) # add lazarus option AC_ARG_WITH([lazarus], [AS_HELP_STRING([--with-lazarus=DIR], [Directory of lazarus directory @<:@LAZARUSDIR@:>@])], [with_lazarus=$withval], [with_lazarus="yes"]) if [[ $with_lazarus = "no" ]] ; then AC_MSG_ERROR("Lazarus is required. It is impossible to build without it."); fi # add portaudio option AC_ARG_WITH([portaudio], [AS_HELP_STRING([--with-portaudio=DIR], [Directory of portaudio library @<:@PORTAUDIODIR@:>@])], [with_portaudio=$withval], [with_portaudio="yes"]) # add portmixer option AC_ARG_WITH([portmixer], [AS_HELP_STRING([--with-portmixer@<:@=DIR@:>@], [Enable portmixer audio-mixer support @<:@default=check@:>@])], [with_portmixer=$withval], [with_portmixer="check"]) # add projectM option AC_ARG_WITH([projectM], [AS_HELP_STRING([--with-projectM@<:@=DIR@:>@], [Enable projectM visualization support @<:@default=check@:>@])], [with_projectM=$withval], [with_projectM="check"]) # AC_ARG_ENABLE(foobar, # [ --enable-foobar Dummy option], # enable_foobar=$enableval, enable_foobar="no") # ----------------------------------------- # macro declarations # ----------------------------------------- # AC_SPLIT_VERSION(VARIABLE_PREFIX, VERSION) # Splits version number ("major.minor.release") into its components. # Sets # [$VARIABLE_PREFIX]_VERSION_MAJOR # [$VARIABLE_PREFIX]_VERSION_MINOR # [$VARIABLE_PREFIX]_VERSION_RELEASE # This function calls # AC_SUBST([$VARIABLE_PREFIX]_VERSION_type] for each type AC_DEFUN([AC_SPLIT_VERSION], [ # replace "." and "-" with " " and ignore trailing tokens. # 1.23.4-r2 will be splitted to [maj=1, min=23, rel=4]. # In addition we delete every character which is not 0-9. # 1.3a4-r32 will be [maj=1, min=34, rel=32]. # # Note: We use a here-document (<<< here-strings not POSIX compatible) # Do NOT indent the eof-delimiter read major minor release ignore <@) fi else AC_MSG_CHECKING(for [$2]) fi if test x$have_lib = xno; then [$1][_HAVE]="no" AC_SPLIT_VERSION([$1], [0.0.0]) AC_MSG_RESULT(no) if test x$3 = xyes -o x$4 = xyes; then AC_MSG_ERROR(["Could not find required library $2. Please install $2 and try again."]); fi fi ]) # ----------------------------------------- # check for compilers # ----------------------------------------- # find and test the freepascal compiler # sets PFLAGS, FPC_VERSION, FPC_DEBUG, etc. AC_PROG_FPC AC_SPLIT_VERSION(FPC, $FPC_VERSION) # find and test the C compiler (for C-libs and wrappers) AC_PROG_CC AC_LANG([C]) # find and test the C++ compiler (for C-libs and wrappers) AC_PROG_CXX AC_LANG([C++]) # options for make command AC_PROG_MAKE_SET # find tool for ln -s AC_LN_S # find the best install tool AC_PROG_INSTALL # some other useful tools #AC_PROG_AWK #AC_PROG_SED #AC_PROG_GREP #AC_PROG_EGREP # find pkg-config PKG_PROG_PKG_CONFIG() if [[ x$PKG_CONFIG = x ]]; then AC_MSG_ERROR([ !!! pkg-config was not found on your system. !!! It is needed to determine the versions of your libraries. !!! Install it and try again.]) fi # ----------------------------------------- # check for libraries # ----------------------------------------- # set dirs to check for lazarus if [[ x$with_lazarus = xyes ]]; then # use default path (ignore the standard path (PATH) because the lazarus executable might # be in /usr/bin, but what we want is the program directory with the libs) LAZARUS_CHECK_DIRS="/usr/bin/lazarus:/usr/lib/lazarus:/usr/share/lazarus:/opt/lazarus:/usr/local/bin/lazarus:/usr/local/lib/lazarus:/usr/local/share/lazarus" else # check if dir is valid if [[ -d $with_lazarus ]] ; then LAZARUS_CHECK_DIRS=$with_lazarus else AC_MSG_ERROR(["LAZARUSDIR is not a directory."]); fi fi # find lazarus AC_PATH_PROG(LAZARUS, lazarus, no, [$LAZARUS_CHECK_DIRS]) if [[ $LAZARUS = "no" ]] ; then AC_MSG_ERROR(["Could not find lazarus. Please install lazarus and try again."]); fi LAZARUS_DIR=`dirname "$LAZARUS"` # get lazarus version AC_MSG_CHECKING(for version of lazarus) # (do this in a temporary shell to prevent a change of directory) LAZARUS_VERSION=`(cd "$LAZARUS_DIR/tools/install"; ./get_lazarus_version.sh)` #LAZARUS_VERSION=`cat ide/version.inc | tr -d "' \t"` AC_SPLIT_VERSION([LAZARUS], [$LAZARUS_VERSION]) AC_MSG_RESULT(@<:@$LAZARUS_VERSION@:>@) # find sdl AC_PKG_CHECK_VERSION(SDL, [sdl], yes) # find sqlite3 AC_PKG_CHECK_VERSION(SQLITE3, [sqlite3], yes) # find ffmpeg AC_PKG_CHECK_VERSION(AVCODEC, [libavcodec], yes) AC_CHECK_LIB(avcodec, avcodec_decode_audio) AC_CHECK_LIB(avcodec, avcodec_decode_audio2) AC_CHECK_LIB(avcodec, img_convert) AC_PKG_CHECK_VERSION(AVFORMAT, [libavformat], yes) AC_PKG_CHECK_VERSION(AVUTIL, [libavutil], yes) AC_PKG_CHECK_VERSION(SWSCALE, [libswscale], no) if [[ x$AVCODEC_HAVE = xyes -a x$AVFORMAT_HAVE = xyes -a x$AVUTIL_HAVE = xyes ]]; then FFMPEG_HAVE=yes else FFMPEG_HAVE=no fi # find projectM version AC_PKG_CHECK_VERSION(PROJECTM, [libprojectM], no, $with_projectM, [], 0.99) # find portaudio version AC_PKG_CHECK_VERSION(PORTAUDIO, [portaudio-2.0], yes, $with_portaudio) AC_PKG_CHECK_VERSION(PORTMIXER, [portmixer], no, $with_portmixer) # ----------------------------------------- # defines for config.inc # ----------------------------------------- # AC_SUBST_DEFINE(DEFINE_SUFFIX, IS_DEFINED) AC_DEFUN([AC_SUBST_DEFINE], [ if [[ x$2 = xyes ]]; then DEFINE_[$1]=DEFINE else DEFINE_[$1]=UNDEF fi AC_SUBST(DEFINE_[$1]) ]) AC_SUBST_DEFINE(DEBUG, $FPC_DEBUG) AC_SUBST(AVCODEC_LIB) AC_SUBST(AVFORMAT_LIB) AC_SUBST(AVUTIL_LIB) AC_SUBST_DEFINE(HAVE_FFMPEG, $FFMPEG_HAVE) AC_SUBST(SWSCALE_LIB) AC_SUBST_DEFINE(HAVE_SWSCALE, $SWSCALE_HAVE) AC_SUBST(PROJECTM_LIB) AC_SUBST_DEFINE(HAVE_PROJECTM, $PROJECTM_HAVE) AC_SUBST(PORTAUDIO_LIB) AC_SUBST_DEFINE(HAVE_PORTAUDIO, $PORTAUDIO_HAVE) AC_SUBST(PORTMIXER_LIB) AC_SUBST_DEFINE(HAVE_PORTMIXER, $PORTMIXER_HAVE) AC_SUBST(LAZARUS_DIR) # ----------------------------------------- # create output files # ----------------------------------------- AC_CONFIG_FILES([config.inc Makefile]) AC_OUTPUT # ----------------------------------------- # show results # ----------------------------------------- AC_MSG_NOTICE([ !!! Configuration done! !!! Type "make" to compile the program. ])