#!/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-sbin DIR - Set prefix for system binaries (default: $PREFIX/sbin)' 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/share/man)' echo '--prefix-pc DIR - Set prefix for pkg-config (default: $PREFIX_LIB/pkgconfig)' echo '--prefix-sysconf DIR - Set prefix for system configuration (default: $PREFIX/etc)' echo '--prefix-dev DIR - Set prefix for devices (default: $PREFIX/dev)' echo '--prefix-doc DIR - Set prefix for documentation (default: $PREFIX/share/doc)' echo '--prefix-tmp DIR - Set prefix for temporary files (default: $PREFIX/tmp)' echo '--prefix-var DIR - Set prefix for variable files (default: $PREFIX/var)' echo '--prefix-cache DIR - Set prefix for application caches (default: $PREFIX_VAR/cache)' echo '--prefix-data DIR - Set prefix for variable application data (default: $PREFIX_VAR/lib)' echo '--prefix-lock DIR - Set prefix for lock files (locked resources) (default: $PREFIX_VAR/lock)' echo '--prefix-log DIR - Set prefix for log files (default: $PREFIX_VAR/log)' echo '--prefix-mail DIR - Set prefix for user'\''s mailboxes (default: $PREFIX_VAR/mail)' echo '--prefix-run DIR - Set prefix for information about the running system (default: $PREFIX_VAR/run)' echo '--prefix-spool DIR - Set prefix for spools (queued jobs) (default: $PREFIX_VAR/spool)' 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-sbin') PREFIX_SBIN="$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 ;; '--prefix-sysconf') PREFIX_SYSCONF="$2" SHIFT_COUNT=1 ;; '--prefix-dev') PREFIX_DEV="$2" SHIFT_COUNT=1 ;; '--prefix-doc') PREFIX_DOC="$2" SHIFT_COUNT=1 ;; '--prefix-tmp') PREFIX_TMP="$2" SHIFT_COUNT=1 ;; '--prefix-var') PREFIX_VAR="$2" SHIFT_COUNT=1 ;; '--prefix-cache') PREFIX_CACHE="$2" SHIFT_COUNT=1 ;; '--prefix-data') PREFIX_DATA="$2" SHIFT_COUNT=1 ;; '--prefix-lock') PREFIX_LOCK="$2" SHIFT_COUNT=1 ;; '--prefix-log') PREFIX_LOG="$2" SHIFT_COUNT=1 ;; '--prefix-mail') PREFIX_MAIL="$2" SHIFT_COUNT=1 ;; '--prefix-run') PREFIX_RUN="$2" SHIFT_COUNT=1 ;; '--prefix-spool') PREFIX_SPOOL="$2" SHIFT_COUNT=1 ;; #################################### # autof* options block: '--prefix='*) PREFIX=$(echo "$1" | cut -d= -f2) ;; '--prefix-bin='*) PREFIX_BIN=$(echo "$1" | cut -d= -f2) ;; '--prefix-sbin='*) PREFIX_SBIN=$(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) ;; '--prefix-sysconf='*) PREFIX_SYSCONF=$(echo "$1" | cut -d= -f2) ;; '--prefix-dev='*) PREFIX_DEV=$(echo "$1" | cut -d= -f2) ;; '--prefix-doc='*) PREFIX_DOC=$(echo "$1" | cut -d= -f2) ;; '--prefix-tmp='*) PREFIX_TMP=$(echo "$1" | cut -d= -f2) ;; '--prefix-var='*) PREFIX_VAR=$(echo "$1" | cut -d= -f2) ;; '--prefix-cache='*) PREFIX_CACHE=$(echo "$1" | cut -d= -f2) ;; '--prefix-data='*) PREFIX_DATA=$(echo "$1" | cut -d= -f2) ;; '--prefix-lock='*) PREFIX_LOCK=$(echo "$1" | cut -d= -f2) ;; '--prefix-log='*) PREFIX_LOG=$(echo "$1" | cut -d= -f2) ;; '--prefix-mail='*) PREFIX_MAIL=$(echo "$1" | cut -d= -f2) ;; '--prefix-run='*) PREFIX_RUN=$(echo "$1" | cut -d= -f2) ;; '--prefix-spool='*) PREFIX_SPOOL=$(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_SBIN" = '' ] && PREFIX_SBIN="$PREFIX/sbin/" [ "$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/" [ "$PREFIX_SYSCONF" = '' ] && PREFIX_SYSCONF="$PREFIX/etc/" [ "$PREFIX_DEV" = '' ] && PREFIX_DEV="$PREFIX/dev/" [ "$PREFIX_DOC" = '' ] && PREFIX_DOC="$PREFIX/share/doc/" [ "$PREFIX_TMP" = '' ] && PREFIX_TMP="$PREFIX/tmp/" [ "$PREFIX_VAR" = '' ] && PREFIX_VAR="$PREFIX/var/" [ "$PREFIX_CACHE" = '' ] && PREFIX_CACHE="$PREFIX_VAR/cache/" [ "$PREFIX_DATA" = '' ] && PREFIX_DATA="$PREFIX_VAR/lib/" [ "$PREFIX_LOCK" = '' ] && PREFIX_LOCK="$PREFIX_VAR/lock/" [ "$PREFIX_LOG" = '' ] && PREFIX_LOG="$PREFIX_VAR/log/" [ "$PREFIX_MAIL" = '' ] && PREFIX_MAIL="$PREFIX_VAR/mail/" [ "$PREFIX_RUN" = '' ] && PREFIX_RUN="$PREFIX_VAR/run/" [ "$PREFIX_SPOOL" = '' ] && PREFIX_SPOOL="$PREFIX_VAR/spool/" } update_ccft() { CCTF="$CC $CFLAGS $LDFLAGS $LDPATH $INCPATH -Iinclude/ -o $TF_E $TF_C" } cleanup_ccft() { rm -f $TF_C $TF_E } 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 "Wall=-Wall" 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 "DEBUG_g=-g" echo "IMPLIB=$IMPLIB" 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_SBIN=$PREFIX_SBIN" 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 "PREFIX_SYSCONF=$PREFIX_SYSCONF" echo "PREFIX_DEV=$PREFIX_DEV" echo "PREFIX_DOC=$PREFIX_DOC" echo "PREFIX_TMP=$PREFIX_TMP" echo "PREFIX_VAR=$PREFIX_VAR" echo "PREFIX_CACHE=$PREFIX_CACHE" echo "PREFIX_DATA=$PREFIX_DATA" echo "PREFIX_LOCK=$PREFIX_LOCK" echo "PREFIX_LOG=$PREFIX_LOG" echo "PREFIX_MAIL=$PREFIX_MAIL" echo "PREFIX_RUN=$PREFIX_RUN" echo "PREFIX_SPOOL=$PREFIX_SPOOL" 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