#!/bin/bash
#
# Tvheadend configure shared functions
#
# Copyright (c) 2005-2008 Andreas Ă–man
#
# Based on FFmpeg's configure script:
#
# Copyright (c) 2000-2002 Fabrice Bellard
# Copyright (c) 2005-2008 Diego Biurrun
# Copyright (c) 2005-2008 Mans Rullgard
#

TOPDIR=`pwd`
TMPDIR=${TOPDIR}/tmp
BUILDDIR=build.${PLATFORM}
DEFAULT_THEME="new"
RELEASE=no

CONFIG_LIST="
 cwc
 avahi
 mmx
 sse2
 linuxdvb
 v4l
 execinfo
"

die() {
    rm -rf $TMPDIR
    exit
}

set_all(){
    value=$1
    shift
    for var in $*; do
        eval $var=$value
    done
}

enable(){
    set_all yes $*
}

disable(){
    set_all no $*
}


enabled(){
    test "${1#!}" = "$1" && op== || op=!=
    eval test "x\$${1#!}" $op "xyes"
}

disabled(){
    test "${1#!}" = "$1" && op== || op=!=
    eval test "x\$${1#!}" $op "xno"
}

toupper(){
    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
}

print_config(){
    pfx=$1
    header=$2
    makefile=$3
    shift 3
    for cfg; do
        ucname="`toupper $cfg`"
        if enabled $cfg; then
            echo "#define ${pfx}${ucname} 1" >> $header
            echo "#define ENABLE_${ucname} 1" >> $header
            echo "${pfx}${ucname}=yes" >> $makefile
        else
            echo "#define ENABLE_${ucname} 0" >> $header
        fi
    done
}



setup_env(){
	# Create the dir for local libs, and get rid of any relative path

	mkdir -p ${BUILDDIR}
	BUILDDIR=`cd ${BUILDDIR} && pwd`

	CONFIG_H=${BUILDDIR}/config.h
	CONFIG_MAK=${BUILDDIR}/config.mak
	CONFIG_DEF=${TOPDIR}/config.default

	mkdir -p ${BUILDDIR}

	# Create a tmpdir used during configure
	mkdir -p ${TMPDIR}
	TMPDIR=`cd ${TMPDIR} && pwd`

	# Create config.mak

	cat > ${CONFIG_MAK} << EOF 
# Automatically generated by configure, do not edit
TOPDIR=$TOPDIR
EOF

	# Create config.h

	cat > ${CONFIG_H} << EOF 
/* Automatically generated by configure, do not edit */
EOF

	# Create config.default

	cat > ${CONFIG_DEF} << EOF 
# Automatically generated by configure, do not edit
PLATFORM ?= $PLATFORM
EOF


}

finalize() {

cat >> ${CONFIG_MAK} << EOF 
OSENV=${OSENV}
LDFLAGS_cfg += -lm
EOF

    print_config CONFIG_ ${CONFIG_H} ${CONFIG_MAK} $CONFIG_LIST

    echo "Final binary is: build.${PLATFORM}/tvheadend"

    die
}