diff options
author | tobigun <tobigun@b956fd51-792f-4845-bead-9b4dfca2ff2c> | 2008-01-18 17:59:54 +0000 |
---|---|---|
committer | tobigun <tobigun@b956fd51-792f-4845-bead-9b4dfca2ff2c> | 2008-01-18 17:59:54 +0000 |
commit | b35a00ba936bc16180c2f18fb0089e80c05ee4a8 (patch) | |
tree | 3100b4d877145721834710fa8a42680b02a42486 /Game/Code/configure.ac | |
parent | e95f320dd030e9def8174e8b173e3631f11dba25 (diff) | |
download | usdx-b35a00ba936bc16180c2f18fb0089e80c05ee4a8.tar.gz usdx-b35a00ba936bc16180c2f18fb0089e80c05ee4a8.tar.xz usdx-b35a00ba936bc16180c2f18fb0089e80c05ee4a8.zip |
Autoconf scripts for configure and make.
Run "aclocal -I m4" and "autoconf" to create the configure script.
I checked this in to test the configure script.
Note: the generated Makefile is not supposed to work yet. Use the already checked in Makefile instead.
git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@796 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to '')
-rw-r--r-- | Game/Code/configure.ac | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/Game/Code/configure.ac b/Game/Code/configure.ac new file mode 100644 index 00000000..2c4e37f1 --- /dev/null +++ b/Game/Code/configure.ac @@ -0,0 +1,307 @@ +# +# 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 <<eof + `echo [$2] | tr '.-' ' ' | sed s/[^0-9\ ].*//` +eof + + # strip preceding 0s and set unset version-parts to 0 + [$1][_VERSION_MAJOR]=$(($major)) + [$1][_VERSION_MINOR]=$(($minor)) + [$1][_VERSION_RELEASE]=$(($release)) + + AC_SUBST([$1][_VERSION_MAJOR]) + AC_SUBST([$1][_VERSION_MINOR]) + AC_SUBST([$1][_VERSION_RELEASE]) +]) + +# AC_PKG_CHECK_VERSION(VARIABLE_PREFIX, MODULE, REQUIRED, PATH, MIN, MAX) +# Aborts if lib was not found and REQUIRED="yes". +# The PATH can be "check", "no" or "yes" +# Sets +# [$VARIABLE_PREFIX]_HAVE=("yes"|"no") and +# [$VARIABLE_PREFIX]_VERSION=major.minor.release +# [$VARIABLE_PREFIX]_VERSION_MAJOR +# [$VARIABLE_PREFIX]_VERSION_MINOR +# [$VARIABLE_PREFIX]_VERSION_RELEASE +AC_DEFUN([AC_PKG_CHECK_VERSION], +[ + have_lib=no + if test x$4 != xno; then + # on empty PATH or PATH="yes"/"check" use the default path + if test x$4 = x -o x$4 = xyes -o x$4 = xcheck; then + # search in default path if no path is given + lib_path="" + else + # all PKG_* names are forbidden by pkg.m4 so we have to allow this first + m4_pattern_allow(PKG_CONFIG_LIBDIR) + # search only in the path given + lib_path="PKG_CONFIG_LIBDIR=$4/pkgconfig" + fi + + minmax_flags="" + minmax_text="" + + # min version + if test x$5 != x; then + minmax_flags="$minmax_flags --atleast-version=$5" + minmax_text="$minmax_text >= $5" + fi + + # max version + if test x$6 != x; then + minmax_flags="$minmax_flags --max-version=$6" + minmax_text="$minmax_text <= $6" + fi + + # call pkg-config + AC_MSG_CHECKING(for [$2]$minmax_text) + [$1][_VERSION]=`eval $lib_path $PKG_CONFIG $minmax_flags --modversion [$2] --silence-errors` + if test $? -eq 0; then + have_lib=yes + [$1][_HAVE]="yes" + AC_SPLIT_VERSION([$1], $[$1][_VERSION]) + AC_MSG_RESULT(yes @<:@$[$1][_VERSION]@:>@) + 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. +]) |