# -*- shell-script -*-

sub_packages="doc"

[ "$cygwin" == "mingw" ] && sub_packages="doc extra"

depends="libfontconfig1 libfreetype6 libguile16 libintl3 libpango1"
build_depends="mingw-devel gettext-devel guile-devel pango-devel"

v=$(expr "$ver" : "\(.*\)-[0-9]*")

save_PATH="$PATH"

# copy and include extra mknetrel stuff
. $src/$cygwin/mknetrel.extras || . $mknetrel/extras

doc () {
    # doc works, but take too long to build each time
    [ "$cygwin" == "mingw" ] && return 1
    return 0
}

preconfig () {
    extras_preconfig

    [ "$cygwin" == "mingw" ] && if grep 'PYTHON_DEVEL(REQUIRED)' $src/configure.in; then
	sed -i~ -e 's/PYTHON_DEVEL(REQUIRED)/PYTHON_DEVEL(OPTIONAL)/' \
	    $src/configure.in
    fi
    [ "$cygwin" == "mingw" ] && cd $src && ./autogen.sh --noconfigure
    
    cd $build || exit 1
    # cross-compiling: configure for build-host
    if ! iscygwin; then
	rm -f config.cache
	export HOST_CC=${HOST_CC:-gcc}
	export HOST_CXX=${HOST_CXX:-g++}
	export HOST_PKG_CONFIG=${HOST_PKG_CONFIG:-pkg-config}
	export HOST_PKG_CONFIG_PATH=${HOST_PKG_CONFIG_PATH:-}
	export HOST_FREETYPE_CONFIG=${HOST_FREETYPE_CONFIG:-freetype-config}
	(PATH="$build:$save_PATH" \
	    CFLAGS="-O2 -g" \
	    CPPFLAGS="" \
	    CC=$HOST_CC \
	    CXX=$HOST_CXX \
	    LDFLAGS="" \
	    PKG_CONFIG=$HOST_PKG_CONFIG \
	    PKG_CONFIG_PATH=$HOST_PKG_CONFIG_PATH \
	    FREETYPE_CONFIG=$HOST_FREETYPE_CONFIG \
	    $src/configure --prefix=$prefix --enable-config=for-build)
    fi

    if [ "$cygwin" == "mingw" ]; then
	cp /usr/include/FlexLexer.h .
	mkdir python2.3
	cp /usr/include/python2.3/Python.h python2.3
    fi

    GUILE=$($cygwin_prefix/bin/guile-config --version 2>&1 | awk '{print $NF}')
    cat > $target-guile-config <<EOF
[ "\$1" == "--version" ] && echo "$target-guile-config - Guile version $GUILE"
[ "\$1" == "compile" ] && echo "-I$cygwin_prefix/include"
[ "\$1" == "link" ] && echo "-L$cygwin_prefix/lib -lguile -lgmp"
exit 0
EOF
    chmod 755 $target-guile-config
    export PATH=.:$PATH
    build_cxx="$build_cxx -I$(pwd)"
    if [ "$cygwin" == "mingw" ]; then
	CONFIGOPTS="--without-kpathsea $CONFIGOPTS"
	CPPFLAGS="-DARGV0_RELOCATION=1 $CPPFLAGS"
	# There's a problem with inlining the string utils.
	# The -O2 flag is still passed by default through opt.
	CONFIGOPTS="--disable-optimising $CONFIGOPTS"
        ## debugging
	##opt='-g'
    fi
    :
}

prebuild () {
    extras_prebuild

    # shortcircuit python for mingw
    if [ "$cygwin" == "mingw" ]; then
	mkdir -p python/out
	touch python/out/midi.lo python/out/midi.so python/out/midi.dll
    fi

    # cross-compiling: build for build-host, generate doc
    if ! iscygwin; then
	cd $build || exit 1

	if doc; then
	    args="all doc web"
	else
	    args="all"
	fi
	(PATH="$build:$save_PATH" \
	    CFLAGS="-O2 -g" \
	    CPPFLAGS="" \
	    CC=$HOST_CC \
	    CXX=$HOST_CXX \
	    LDFLAGS="" \
	    eval make conf=for-build $args) || exit 1
	
	mkdir -p mf/out
	cp -pv mf/out-for-build/* mf/out

	mkdir -p Documentation/user/out
	cp -pv Documentation/user/out-for-build/*{tely,texi} Documentation/user/out
    fi

    addmakeflags "target=$target" ' '
    if [ -f "$cygwin_prefix/bin/libpython2.4.dll" ]; then
	addmakeflags LDFLAGS="$cygwin_prefix/bin/libpython2.4.dll" ' '
    fi

    if iscygwin && doc; then
	addmakeflags all ' ' doc ' ' web ' '
    fi
}

preinstall () {
    extras_preinstall
    if iscygwin && doc; then
	addmakeflags webdir="$inst-doc/$packagedocdir" ' ' web-install
    fi
}

postinstall () {
    extras_postinstall

    cd $build || exit 1
    if ! iscygwin && doc; then
	make conf=for-build webdir=$inst-doc/$packagedocdir web-install
    fi

    # txt files reside elsewhere
    cd $build/Documentation/topdocs/out
    install -m644 AUTHORS.txt INSTALL.txt NEWS.txt README.txt $inst/$packagedocdir
    ## copy examples
    cd $src || exit 1
    cp -prv input $inst/$packagedocdir
    rm -rf $(find $inst/$packagedocdir -name 'CVS')
    rm -f $(find $inst/$packagedocdir -name 'SCons*')
    rm -f $(find $inst/$packagedocdir -name 'GNUmakefile*')

    rm -rf $(find $inst/usr/share/lilypond -name '*.pyc')
    rm -f $inst/usr/share/lilypond/$v/tex/texinfo.tex

    if [ "$cygwin" == "mingw" ]; then
	find $inst -name '*ly' | xargs unix2dos
    fi

    install -d -m755 $inst-doc/$infodir/lilypond
    if doc; then
	cd $inst-doc/$infodir/lilypond && ln -sf ../../doc/$base-$ver/Documentation/user/out-www/*png .
    fi
}

doc_split () {
    extras_doc_split
    mkdir -p ./$packagedocdir/input
    mv $inst/$packagedocdir/input/{no-notation,regression,test,tutorial} ./$packagedocdir/input
    mkdir -p ./$prefix/share/lilypond/$v/fonts
    mv $inst/$prefix/share/lilypond/$v/fonts/source ./$prefix/share/lilypond/$v/fonts
}

extra_name () {
    echo lilypond-extra
}

extra_split () {
    mkdir -p 
    # should be in devel...
    mkdir -p ./$prefix/share/lilypond/$v
    for i in make python tex vim; do
	mv $inst/$prefix/share/lilypond/$v/$i ./$prefix/share/lilypond/
    done
    mkdir -p ./$prefix/share/lilypond/$v/fonts
    for i in source svg tfm; do
	mv $inst/$prefix/share/lilypond/$v/fonts/$i ./$prefix/share/lilypond/fonts
    done

    mkdir -p ./$prefix/share
    for i in locale omf; do
	mv $inst/$prefix/share/$i ./$prefix/share
    done
}
