#!/bin/false # vim:ft=sh # Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2012 # # This file is part of roard a part of RoarAudio, # a cross-platform sound system for both, home and professional use. # See README for details. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # RoarAudio is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software; see the file COPYING. If not, write to # the Free Software Foundation, 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. # some very basic string functions: to_upper() { tr 'a-z' 'A-Z' } to_escaped() { tr 'A-Z/.+-' 'a-z____' } error_missing() { _object="$1" [ "$_object" = '' ] && _object="$last_tested_object" echo "Error: $_object is missing but required." exit 1 } write_help() { echo 'COMMON OPTIONS:' echo echo '--ldpath DIR - Add DIR to (compile time) search list for libs' echo '--incpath DIR - Add DIR to search list for headers' echo '--addpath DIR - Add DIR/lib to lib, DIR/include to header search list' echo '--root DIR - The same as "--addpath DIR --prefix DIR"' echo echo '--cflags FLAGS - Sets additional compiler flags (default: '"$CFLAGS"')' echo '--ldflags FLAGS - Sets additional linker flags (default: '"$LDFLAGS"')' echo '--opti LEVEL - Sets optimizer level (default: '"$OPTI_O"')' echo '--link-deps MODE - Model for linking dependencies: auto, full or indirect' echo echo '--cc CC - Set name of C compiler (CC) to CC' echo '--ranlib RANLIB - Set name of ranlib (RANLIB) to RANLIB' echo echo '--root-uid UID - Sets User ID (UID) of the root user/superuser' echo echo '--no-LIB - disable library LIB' echo '--maybe-LIB - autodetect library LIB (default)' echo echo '--prefix DIR - Set general prefix (default: '"$PREFIX"')' echo '--prefix-bin DIR - Set prefix for binaries (default: $PREFIX/bin)' echo '--prefix-lib DIR - Set prefix for libraries (default: $PREFIX/libs)' echo '--prefix-inc DIR - Set prefix for include files (default: $PREFIX/include)' echo '--prefix-man DIR - Set prefix for manpages (default: $PREFIX/man)' echo '--prefix-pc DIR - Set prefix for pkg-config (default: $PREFIX_LIB/pkgconfig)' echo echo '--without-beta - Disable beta code' echo '--without-experimental - Disable experimental code' echo echo '--distribution-version-string STRING' echo ' - Sets distribution part of version string' echo echo '--mmcu MMCU - Sets -mmcu compiler/linker option' echo '--target-win32 - Disable everything useful' echo '--exec-helper HELPER - Exec all test programms using this command (HELPER $cmd $args)' echo ' use '\''--exec-helper wine'\'' when building win32 binaries' echo } parse_option() { # Options are given via $n. # we can not shift used ones so we tell the caller # how many to shift: shift $SHIFT_COUNT SHIFT_COUNT=0 # we also tell if the option was handelt. HANDLED=true # will be reset if not. case "$1" in '--ldpath') LDPATH="$LDPATH -L$2" SHIFT_COUNT=1 ;; '--incpath') INCPATH="$INCPATH -I$2" SHIFT_COUNT=1 ;; '--addpath') LDPATH="$LDPATH -L$2/lib/" INCPATH="$INCPATH -I$2/include/" SHIFT_COUNT=1 ;; '--root') LDPATH="$LDPATH -L$2/lib/" INCPATH="$INCPATH -I$2/include/" PREFIX="$2" SHIFT_COUNT=1 ;; '--cflags') CFLAGS="$2" SHIFT_COUNT=1 ;; '--ldflags') LDFLAGS="$2" SHIFT_COUNT=1 ;; '--opti') OPTI_O="$2" SHIFT_COUNT=1 ;; '--link-deps') LINK_DEPS="$2" SHIFT_COUNT=1 ;; '--cc') CC="$2" SHIFT_COUNT=1 ;; '--ranlib') RANLIB="$2" SHIFT_COUNT=1 ;; '--root-uid') ROOT_UID="$2" SHIFT_COUNT=1 ;; '--no-'*) lib=$(echo "$1" | sed 's/^--no-//' | to_escaped) eval no_lib_$lib=true ;; '--maybe-'*) lib=$(echo "$1" | sed 's/^--maybe-//' | to_escaped) eval unset no_lib_$lib ;; '--distribution-version-string') DISTRIBUTION_VERSION_STRING="$2" SHIFT_COUNT=1 ;; '--without-beta') BETA=false EXPERIMENTAL=false ;; '--without-experimental') EXPERIMENTAL=false ;; '--prefix') PREFIX="$2" SHIFT_COUNT=1 ;; '--prefix-bin') PREFIX_BIN="$2" SHIFT_COUNT=1 ;; '--prefix-lib') PREFIX_LIB="$2" SHIFT_COUNT=1 ;; '--prefix-inc') PREFIX_INC="$2" SHIFT_COUNT=1 ;; '--prefix-man') PREFIX_MAN="$2" SHIFT_COUNT=1 ;; '--prefix-pc') PREFIX_PC="$2" SHIFT_COUNT=1 ;; '--prefix-ckport') PREFIX_CKPORT="$2" SHIFT_COUNT=1 ;; #################################### # autof* options block: '--prefix='*) PREFIX=$(echo "$1" | cut -d= -f2) ;; '--prefix-bin='*) PREFIX_BIN=$(echo "$1" | cut -d= -f2) ;; '--prefix-lib='*) PREFIX_LIB=$(echo "$1" | cut -d= -f2) ;; '--prefix-inc='*) PREFIX_INC=$(echo "$1" | cut -d= -f2) ;; '--prefix-man='*) PREFIX_MAN=$(echo "$1" | cut -d= -f2) ;; '--prefix-pc='*) PREFIX_PC=$(echo "$1" | cut -d= -f2) ;; '--prefix-ckport='*) PREFIX_CKPORT=$(echo "$1" | cut -d= -f2) ;; #################################### '--mmcu') MMCU="$2" SHIFT_COUNT=1 ;; '--exec-helper') EXEC_HELPER="$2" SHIFT_COUNT=1 ;; '--target-win32') TARGET_WIN32=true ;; *) HANDLED=false ;; esac; if $HANDLED then SHIFT_COUNT=`expr $SHIFT_COUNT + 1` fi } open_configure_files() { exec 3> config.h 4> Makefile.conf 5> config.log } update_target() { TARGET_CYGWIN=`echo "$SYSNAME" | if grep CYGWIN > /dev/null; then echo true; else echo false; fi` TARGET_WIN32=`echo "$SYSNAME" | if grep MINGW32 > /dev/null; then echo true; else echo $TARGET_WIN32; fi` if [ "$SYSNAME" = 'Darwin' ] then echo "Adding common $SYSNAME shared lib arguments..." SHARED="$SHARED -fno-common -dynamiclib -compatibility_version 0.1 -current_version 0.1.0" SHARED_CF="$SHARED_CF -fno-common" elif [ "$SYSNAME" = 'NetBSD' ] then echo "Adding common $SYSNAME libpath arguments..." LDPATH="$LDPATH -L/usr/local/lib/" elif [ "$SYSNAME" = 'OpenBSD' ] then echo "Adding common $SYSNAME search path arguments..." LDPATH="$LDPATH -L/usr/local/lib/" INCPATH="$INCPATH -I/usr/local/include/" # echo "Adding $SYSNAME build arguments..." # SNDIO_EMUL=false elif [ "$SYSNAME" = 'FreeBSD' ] then echo "Adding common $SYSNAME search path arguments..." LDPATH="$LDPATH -L/usr/local/lib/" INCPATH="$INCPATH -I/usr/local/include/" elif $TARGET_WIN32 then echo "Adding common win32 build arguments..." rdynamic=false fPIC=false SHARED_SUFFIX='.dll' TF_E="$TF_E.exe" elif $TARGET_CYGWIN then echo "Adding common cygwin build arguments..." rdynamic=false fPIC=false SHARED_SUFFIX='.dll' TF_E="$TF_E.exe" fi } update_prefixes() { [ "$PREFIX_BIN" = '' ] && PREFIX_BIN="$PREFIX/bin/" [ "$PREFIX_LIB" = '' ] && PREFIX_LIB="$PREFIX/lib/" [ "$PREFIX_INC" = '' ] && PREFIX_INC="$PREFIX/include/" [ "$PREFIX_MAN" = '' ] && PREFIX_MAN="$PREFIX/share/man/" [ "$PREFIX_PC" = '' ] && PREFIX_PC="$PREFIX_LIB/pkgconfig/" [ "$PREFIX_CKPORT" = '' ] && PREFIX_CKPORT="$PREFIX_LIB/ckport/db/" } update_ccft() { CCTF="$CC $CFLAGS $LDFLAGS $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C" } cleanup_ccft() { rm -f $TF_C $TF_E if [ "$TARGET_CYGWIN" = 'true' -o "$TARGET_WIN32" = 'true' ] then echo "Deleting win32 specific temp files: $TF_E.exe" rm -f $TF_E.exe fi } update_cc() { if [ "$MMCU" != '' ] then CC="$CC -mmcu=$MMCU" fi } write_header_makefileconf() { { echo "VERSION=$VERSION" echo "DISTRIBUTION_VERSION_STRING=$DISTRIBUTION_VERSION_STRING" echo echo "SHARED=$SHARED" echo "SHARED_CF=$SHARED_CF" echo "SHARED_SUFFIX=$SHARED_SUFFIX" $rdynamic && echo 'rdynamic=-rdynamic' $fPIC && echo 'fPIC=-fPIC' $Wextra && echo 'Wextra=-Wextra' echo echo "CC=$CC" echo "RANLIB=$RANLIB" echo "LDPATH=$LDPATH" echo "INCPATH=$INCPATH" echo "ROAR_BUILDSYSTEM_DIR=$ROAR_BUILDSYSTEM_DIR" echo echo "OPTI_O=-O$OPTI_O" echo [ "$CFLAGS" != '' ] && echo "CFLAGS += $CFLAGS" [ "$LDFLAGS" != '' ] && echo "LDFLAGS += $LDFLAGS" echo echo "EXEC_HELPER=$EXEC_HELPER" echo "CROSS_COMPILE=$CROSS_COMPILE" echo echo "PREFIX=$PREFIX" echo "PREFIX_BIN=$PREFIX_BIN" echo "PREFIX_LIB=$PREFIX_LIB" echo "PREFIX_INC=$PREFIX_INC" echo "PREFIX_MAN=$PREFIX_MAN" echo "PREFIX_PC=$PREFIX_PC" echo "PREFIX_CKPORT=$PREFIX_CKPORT" echo } >&4 } write_footer_makefileconf() { { echo echo '#ll' } >&4 } write_header_configlog() { { cat <<'EOF' //config.log: /* * Logfile for configure script $Revision$ of RoarAudio */ EOF echo '/* uname: ' $(uname -a) '*/' echo '/* Date : ' $(date) '*/' echo echo echo echo "ARGS(): $_CARGS" for i in PATH SHELL CC RANLIB PKG_CONFIG SYSNAME \ TARGET_CYGWIN TARGET_WIN32 TARGET_MICROCONTROLLER CROSS_COMPILE \ MINIMAL EXEC_HELPER \ "$@" do eval echo "BASICCONF\($i\): \$$i"; done echo echo } >&5 } write_footer_configlog() { { echo echo '//ll' } >&5 } write_header_configh() { { echo '//config.h:' echo echo "#ifndef $1" echo "#define $1" echo echo '/* uname: ' $(uname -a) '*/' echo '/* Date : ' $(date) '*/' echo } >&3 } write_footer_configh() { { echo echo '#endif' echo echo '//ll' } >&3 } write_vars_configh_string() { { for f in "$@" do eval val=\"\$$f\" echo "#define $f \"$val\"" done } >&3 } write_vars_configh_literal() { { for f in "$@" do eval val=\"\$$f\" echo "#define $f $val" done } >&3 } write_header() { write_header_makefileconf write_header_configlog write_header_configh "$@" } write_footer() { write_footer_makefileconf write_footer_configlog write_footer_configh } #ll