aboutsummaryrefslogtreecommitdiffstats
path: root/Game/Code/configure.ac
diff options
context:
space:
mode:
authormogguh <mogguh@b956fd51-792f-4845-bead-9b4dfca2ff2c>2008-02-13 19:58:44 +0000
committermogguh <mogguh@b956fd51-792f-4845-bead-9b4dfca2ff2c>2008-02-13 19:58:44 +0000
commit949fea202f6c963ad6c8a40040e1e9e6f909161b (patch)
tree9f6f683d203d55e41e5b7483b4038103d471ce76 /Game/Code/configure.ac
parent1a7da68ae6e1368dae25821b15318bd1d2d9f88e (diff)
parentefe5b06fd5715f550334692d28c2218896b62ce1 (diff)
downloadusdx-949fea202f6c963ad6c8a40040e1e9e6f909161b.tar.gz
usdx-949fea202f6c963ad6c8a40040e1e9e6f909161b.tar.xz
usdx-949fea202f6c963ad6c8a40040e1e9e6f909161b.zip
First multi platform version, works on Linux and Windows
git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.1@855 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to 'Game/Code/configure.ac')
-rw-r--r--Game/Code/configure.ac513
1 files changed, 513 insertions, 0 deletions
diff --git a/Game/Code/configure.ac b/Game/Code/configure.ac
new file mode 100644
index 00000000..781e2bd9
--- /dev/null
+++ b/Game/Code/configure.ac
@@ -0,0 +1,513 @@
+#
+# UltraStar-DX configure.ac script
+#
+# by UltraStar Deluxe Team
+#
+# Execute "autogen.sh" to create the configure script.
+#
+
+# Require autoconf >= 2.61
+AC_PREREQ(2.61)
+
+# Init autoconf
+AC_INIT([UltraStar Deluxe],
+ [1.1 alpha],
+ [http://sourceforge.net/tracker/?group_id=191560&atid=937872])
+# specify the website here
+PACKAGE_WEBSITE="http://www.ultrastardeluxe.org/"
+# specify the IRC-channel here
+PACKAGE_IRC="#ultrastardx at quakenet.org"
+
+# Specify a source-file so autoconf can check if the source-dir exists
+AC_CONFIG_SRCDIR(UltraStar.lpr)
+
+# This one is not used by autoconf at the moment.
+# When it is used maybe we don't need aclocal's -I parameter anymore.
+AC_CONFIG_MACRO_DIR(m4)
+
+# show features and packages in one list
+AC_PRESERVE_HELP_ORDER
+
+#echo $LDFLAGS
+
+#define([maco], [])
+#echo maco
+#m4_foreach_w([arg], [-L/usr/local -l/bin/bash -L/usr/local],
+# [m4_append_uniq([maco], "arg", [ ])
+#])
+#echo maco
+
+#echo m4_split([hallo o])
+#AC_MSG_ERROR(oi)
+
+# -----------------------------------------
+# define switches
+# -----------------------------------------
+
+# print library options header
+AC_ARG_WITH([cfg-dummy1], [
+External Libraries:])
+
+# add lazarus option
+AC_ARG_WITH([lazarus],
+ [AS_HELP_STRING([--with-lazarus=DIR],
+ [Directory of lazarus @<:@LAZARUSDIR@:>@])],
+ [with_lazarus=$withval], [with_lazarus="yes"])
+if [[ x$with_lazarus = xno ]] ; then
+ AC_MSG_ERROR([Lazarus is required. It is impossible to build without it.]);
+fi
+
+# add lazarus widget-type option
+# the result is not used at the moment
+AC_ARG_WITH([lcl-widget-type],
+ [AS_HELP_STRING([--with-lcl-widget-type=TYPE],
+ [Lazarus LCL Widget Type @<:@default=check@:>@])],
+ [with_lcl_widget_type=$withval], [with_lcl_widget_type=""])
+if [[ x$with_lcl_widget_type = xno -o x$with_lcl_widget_type = xyes ]] ; then
+ AC_MSG_ERROR([Invalid LCL Widget Type (try one of gtk2/gtk/qt)]);
+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"])
+
+# add skip pkg-config error option
+AC_ARG_ENABLE([skip-pkgconfig-errors],
+ [AS_HELP_STRING([--enable-skip-pkgconfig-errors],
+ [Continue if pkg-config does not find a package @<:@default=no@:>@])],
+ [skip_pkgconfig_errors=$withval], [skip_pkgconfig_errors="no"])
+
+# print path options header
+AC_ARG_WITH([cfg-dummy2], [
+Additional directories:])
+
+# add suffix option
+AC_ARG_WITH([suffix],
+ [AS_HELP_STRING([--with-suffix=SUFFIX],
+ [path suffix @<:@default=UltraStarDeluxe@:>@])],
+ [suffix=$withval], [suffix="UltraStarDeluxe"])
+if [[ x$suffix = xno -o x$suffix = xyes ]] ; then
+ AC_MSG_ERROR([Invalid suffix.]);
+fi
+
+# add logdir option
+AC_ARG_WITH([logrootdir],
+ [AS_HELP_STRING([--with-logrootdir=DIR],
+ [logging root directory @<:@default=/var/log@:>@])],
+ [with_logrootdir=$withval], [with_logrootdir="/var/log"])
+
+# print misc options header
+AC_ARG_WITH([cfg-dummy3], [
+Development options:])
+
+# add dev_layout option
+AC_ARG_ENABLE(dev-build,
+ [AS_HELP_STRING([--enable-dev-build],
+ [local development build])],
+ [enable_dev_build="yes"], [enable_dev_build="no"])
+
+# -----------------------------------------
+# tools
+# -----------------------------------------
+
+# 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
+
+# -----------------------------------------
+# 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],
+[
+ version=[$2]
+
+ # strip leading non-numeric tokens
+ # (necessary for some ffmpeg-packages in ubuntu)
+ # example: 0d.51.1.0 -> 51.1.0
+ version=`echo $version | $SED 's/^[[^.]]*[[^0-9.]][[^.]]*\.//'`
+
+ # 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].
+ read major minor release ignore <<eof
+ `echo $version | tr '.-' ' ' | $SED 's/[[^0-9\ ]].*//'`
+eof
+ # Note: Do NOT indent the eof-delimiter
+ # We use a here-document (<<< here-strings not POSIX compatible)
+
+ # strip preceding 0s and set unset version-parts to 0
+ [$1][_VERSION_MAJOR]=$(($major))
+ [$1][_VERSION_MINOR]=$(($minor))
+ [$1][_VERSION_RELEASE]=$(($release))
+ # integer representation: MMMmmmrrr (M:major,m:minor,r:release)
+ # can be used if pkg-config's comparison fails
+ [$1][_VERSION_INT]=$(($[$1][_VERSION_MAJOR]*1000000+$[$1][_VERSION_MINOR]*1000+$[$1][_VERSION_RELEASE]))
+
+ AC_SUBST([$1][_VERSION_MAJOR])
+ AC_SUBST([$1][_VERSION_MINOR])
+ AC_SUBST([$1][_VERSION_RELEASE])
+ AC_SUBST([$1][_VERSION_INT])
+])
+
+# set to yes if a pkg-config error was skipped
+pkgconfig_error_skipped="no"
+
+# 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_WARN([
+!!! Could not find the required library $2.
+]);
+ # do not abort if skip-pkgconfig-errors is set
+ if test x$skip_pkgconfig_errors = xno; then
+ AC_MSG_ERROR([
+!!! Please install $2 and try again.
+!!!
+!!! If it is already installed check if "[$2].pc" is present in one
+!!! of the pkg-config search directories (e.g. /usr/lib/pkgconfig).
+!!!
+!!! If the file is present but not in the standard search path you may add
+!!! its directory by prepending "PKG_CONFIG_PATH=mylibs_dir/pkgconfig/" to
+!!! your configure call.
+!!! See the man-page on pkg-config for further information.
+!!!
+!!! Some linux distributions do not provide a .pc-file by the default
+!!! package so you might have to install a special dev-package.
+!!!
+!!! If all of this does not help you may consider to skip this error and
+!!! adjust the configuration file yourself.
+!!! To do this call "./configure --enable-skip-pkgconfig-errors ...".
+])
+ else
+ pkgconfig_error_skipped="yes"
+ fi
+ fi
+ fi
+])
+
+# -----------------------------------------
+# check for compilers
+# -----------------------------------------
+
+# find and test the freepascal compiler
+# sets PFLAGS, FPC_VERSION, FPC_DEBUG, etc.
+AC_PROG_FPC
+# FPC_VERSION is already defined by FPC, use
+# PPC as prefix instead.
+AC_SPLIT_VERSION(PPC, $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++])
+
+# 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 lazarus
+# -----------------------------------------
+
+# 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=`AS_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@:>@)
+
+# check if LCL Widget type is valid
+if [[ x$with_lcl_widget_type = x ]]; then
+ # search for standard types
+ LCL_CHECK_WIDGET_TYPES="gtk2 gtk qt win32 carbon"
+else
+ # search for user defined type only
+ LCL_CHECK_WIDGET_TYPES="$with_lcl_widget_type"
+fi
+
+# LCL widget specific base dir
+LCL_UNIT_DIR="$LAZARUS_DIR/lcl/units/$FPC_PROCESSOR-$FPC_PLATFORM"
+
+# check for a supported widget type
+LCL_WIDGET_TYPE=""
+for widget_type in $LCL_CHECK_WIDGET_TYPES; do
+ widget_dir="$LCL_UNIT_DIR/$widget_type"
+ AC_MSG_CHECKING([whether LCL Widget Type "$widget_type" is supported])
+ if [[ -d "$widget_dir" ]]; then
+ LCL_WIDGET_TYPE=$widget_type
+ AC_MSG_RESULT(yes)
+ break
+ else
+ AC_MSG_RESULT(no)
+ fi
+done
+
+# check if a widget type was found
+if [[ x$LCL_WIDGET_TYPE = x ]]; then
+ AC_MSG_ERROR([
+!!! Could not detect the LCL Widget Type.
+!!! Specify the widget type with the --with-lcl-widget-type option.])
+fi
+
+# -----------------------------------------
+# check for libraries
+# -----------------------------------------
+
+# find sdl
+AC_PKG_CHECK_VERSION(SDL, [sdl], yes)
+
+# find sqlite3
+AC_PKG_CHECK_VERSION(SQLITE3, [sqlite3], yes)
+
+# find ffmpeg
+# Note: do not use the min/max version parameters with ffmpeg
+# otherwise it might fail in ubuntu due to a wrong version number
+# format in ffmpeg's .pc-files.
+# For example: 0d.51.1.2 instead of the correct 51.1.2.
+# A check for a version >=52.0.0 will return version 0d.51.1.2
+# although it is lower because pkg-config is confused by the 0d.
+# Use [mylib]_VERSION_INT instead
+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/versions.pas
+# -----------------------------------------
+
+# 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_0_9, $PROJECTM_HAVE)
+AC_SUBST_DEFINE(HAVE_PROJECTM_1_0_PLUS, $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)
+AC_SUBST(LCL_WIDGET_TYPE)
+
+AC_SUBST_DEFINE(USE_LOCAL_DIRS, $enable_dev_build)
+if [[ x$enable_dev_build = xyes ]]; then
+ AC_SUBST(install_type, ["dev"])
+else
+ AC_SUBST(install_type, ["release"])
+fi
+AC_SUBST(suffix)
+AC_SUBST(logrootdir, [$with_logrootdir])
+AC_DEFINE_DIR(sharerootdir, datarootdir)
+
+AC_SUBST(PLIBS)
+AC_SUBST(PACKAGE_WEBSITE)
+
+# -----------------------------------------
+# create output files
+# -----------------------------------------
+
+AC_CONFIG_FILES([config-linux.inc:config.inc.in])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+
+# -----------------------------------------
+# show results
+# -----------------------------------------
+
+AC_MSG_NOTICE([
+
+!!!
+!!! Configuration of $PACKAGE_NAME $PACKAGE_VERSION done!
+!!!
+!!! Type "make" to compile and
+!!! "make install" to install it afterwards.
+!!!
+!!! For further information on $PACKAGE_NAME visit:
+!!! $PACKAGE_WEBSITE
+!!!
+!!! IMPORTANT:
+!!! This is an UNSUPPORTED ALPHA release for developers only.
+!!!
+!!! DO NOT EXPECT THE MAKEFILE OR THE PROGRAM ITSELF TO WORK
+!!!
+!!! and do not waste your time with bugfixing this version.
+!!! Bugs might already be fixed in the developers' working copies.
+!!! If you want to contribute, visit the IRC-Channel instead:
+!!! $PACKAGE_IRC
+!!!
+!!! Known issues:
+!!! - Audio-output and -input are not working yet
+!!! - The editor is broken
+!!!
+!!! PLEASE DO NOT SEND BUGREPORTS FOR THIS VERSION.
+!!!
+])
+
+# TODO: insert this in the public beta release
+#!!! In case you find a bug send a bugreport to:
+#!!! $PACKAGE_BUGREPORT
+#!!! You might as well ask for help at the IRC-Channel
+#!!! $PACKAGE_IRC
+
+if [[ x$pkgconfig_error_skipped = xyes ]]; then
+ AC_MSG_WARN([
+??? pkg-config did not find all of the required libraries.
+??? Edit "config-linux.inc" to add the missing parts.
+??? If one of your libraries' directories is not in the linker's
+??? search-path add it to the LDFLAGS environment variable and
+??? rerun configure (e.g. ./configure LDFLAGS="-Lmylibdir" ...).
+])
+fi
+