X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=configure;fp=configure;h=06a303d39c002ec9a9432ca170dd8178f0be31f7;hp=0000000000000000000000000000000000000000;hb=7ac3aee9efa7f9ce1a966df030b1f76f2b82ef2d;hpb=6b0a0d0efafe34d48ab344fca3b479553bd4e62c diff --git a/configure b/configure new file mode 100755 index 0000000..06a303d --- /dev/null +++ b/configure @@ -0,0 +1,448 @@ +#!/bin/sh + +# +# Yoink +# Execute this file to configure the build system. +# + +PACKAGE="Yoink" +VERSION="0.1" +BUGREPORT="chaz@dogcows.com" + + +showhelp() +{ + cat <<"END" + +This script prepares Yoink for building on your system. +Usage: ./configure [OPTION]... [VAR=VALUE]... + +Basic configuration: + -h, --help display this help and exit + --host=HOST cross-compile program to run on HOST + + --prefix=DIR base directory to install program + --bindir=DIR directory to install executables + --libdir=DIR directory to install libraries + --datadir=DIR directory to install shared data files + --mandir=DIR directory to install manual pages + +Program options: + --enable-debug include debugging symbols and code paths + --enable-double-precision use doubles instead of floats + --enable-profile compile in gprof profiling instructions + --enable-extra-warnings make the gcc compiler give more warnings + --enable-link-sh try to decrease the number of direct dependencies + --enable-clock_gettime use clock_gettime() instead of SDL + --enable-threads use threads for concurrency where appropriate + --enable-hotloading monitor assets and reload them when they change + + --with-gtk use gtk2 modal dialogs + --with-qt4 use qt4 modal dialogs; overridden by --with-gtk + +END +} + +. "build/functions.sh" + + +# +# Perform a quick sanity check. +# + +test -f configure -a -f Makefile || die <<"END" +You must `cd' to the project root directory where the Makefile resides. +END + + +# +# Define some default values. +# + +CC="" +CXX="" +AR="" +RANLIB="" + +CFLAGS="-g -O2" +CXXFLAGS="$CFLAGS" +LDFLAGS="" +LIBS="" + +prefix='/usr/local' +bindir='$prefix/bin' +libdir='$prefix/lib' +datadir='$prefix/share/yoink' +mandir='$prefix/share/man' + +host=$(./build/config.guess) +althost=$(./build/config.sub $host) +cross_compile="no" + + +# +# Parse the command-line options. +# + +for opt in "$@" +do + case $opt in + -h|--help) + showhelp + exit 0 + ;; + + --host=*) + host=$(parse_argument host $opt) + cross_compile="yes" + ;; + --prefix=*) + prefix=$(parse_argument prefix $opt) + ;; + --bindir=*) + bindir=$(parse_argument bindir $opt) + ;; + --libdir=*) + libdir=$(parse_argument libdir $opt) + ;; + --datadir=*) + datadir=$(parse_argument datadir $opt) + ;; + --mandir=*) + mandir=$(parse_argument mandir $opt) + ;; + + --enable-debug) + cflags="$cflags -O0 -Wall -Wno-uninitialized" + define "DEBUG" + ;; + --enable-double-precision) + define "USE_DOUBLE_PRECISION" + ;; + --enable-profile) + cflags="$cflags -pg" + define "PROFILING_ENABLED" + ;; + --enable-extra-warnings) + cflags="$cflags -Wextra -Wno-unused-parameter" + ;; + --enable-link-sh) + link_sh=yes + ;; + --enable-clock_gettime) + clock_gettime=yes + ;; + --enable-threads) + define "USE_THREADS" + ;; + --enable-hotloading) + define "USE_HOTLOADING" + ;; + --with-gtk) + gtk=yes + ;; + --with-qt4) + qt4=yes + ;; + *) + if echo "$opt" | grep -q '^[A-Za-z0-9_]*=.*' + then + export "$opt" + else + echo "warning: unknown option: $opt" + fi + ;; + esac +done + + +# +# Evaluate any dependent paths. +# + +eval bindir="$bindir" +eval datadir="$datadir" +eval libdir="$libdir" +eval mandir="$mandir" + +is_defined "DEBUG" || define "NDEBUG" + +export PKG_CONFIG_PATH="$libdir/pkgconfig:$PKG_CONFIG_PATH" + +define_string "YOINK_DATADIR" "$datadir" + + +# +# Determine the target platform. +# + +case $host in + *mingw32*) HOST=win32 ;; + *netbsd*) HOST=netbsd ;; +esac + + +# +# Define the check functions. +# + +# Run a command and return its exit code. If the third argument is given, +# stdin will be read and written to the specified file before the command +# is executed. If the command creates any files inside the current +# directory, they will be removed automatically. +# $1 The command to run. +# $2 The arguments to be passed to the command. +# $3 Optional filename where stdin will be written. +check_run_command() +{ + tmpdir=$(mktemp -d "tmp-XXXXXXXX") || die "could not create temp directory" + cd $tmpdir || die "could not enter temp directory" + + if test "x$3" != x + then + while read line + do + echo $line + done >$3 + fi + + saved_ifs=$IFS + IFS=: + for path in $PATH + do + if test -x "$path/$1" + then + eval "$1 $2" 2>&1 >/dev/null + exit_code=$? + + cd .. + rm -rf $tmpdir + IFS=$saved_ifs + return $exit_code + fi + done + + cd .. + rm -rf $tmpdir + IFS=$saved_ifs + return 1 +} + + +# +# Do some common checks. +# + +if test "x$cross_compile" = xno +then + # If we are not cross-compiling, we also want to consider tools without + # host prefixes. + extra_cc="gcc cc" + extra_cxx="g++ c++" + extra_ar="ar" + extra_ranlib="ranlib" + extra_windres="windres" +fi + +for exe in $CC $host-gcc $host-cc $althost-gcc $althost-cc $extra_cc +do + if check_run_command "$exe" "test.c" "test.c" <<"END" +#include +int main() +{ + printf("Hello world!\n"); + return 0; +} +END + then + CC="$exe" + break + fi +done + +for exe in $CXX $host-g++ $host-c++ $althost-g++ $althost-c++ $extra_cxx +do + if check_run_command "$exe" "test.cpp" "test.cpp" <<"END" +#include +int main() +{ + std::cout << "Hello world!" << std::endl; + return 0; +} +END + then + CXX="$exe" + break + fi +done + +for exe in $AR $host-ar $althost-ar $extra_ar +do + if check_run_command "$exe" "--version" + then + AR="$exe" + break + fi +done + +for exe in $RANLIB $host-ranlib $althost-ranlib $extra_ranlib +do + if check_run_command "$exe" "--version" + then + RANLIB="$exe" + break + fi +done + +if test x$HOST = xwin32 +then + for exe in $WINDRES $host-windres $althost-windres $extra_windres + do + if check_run_command "$exe" "--version" + then + WINDRES="$exe" + break + fi + done +fi + +if test "x$CC" = x -o "x$CXX" = x -o "x$AR" = x -o "x$RANLIB" = x +then + die <config.mk <