#  Copyright (C) 2003-2004 Doug Gregor and Dave Abrahams. Distributed
# under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE.txt or copy at
# https://www.bfgroup.xyz/b2/LICENSE.txt)
#
#  This module defines rules to handle generation of PDF and
#  PostScript files from XSL Formatting Objects via Apache FOP

import generators ;
import common ;
import boostbook ;

generators.register-standard fop.render.pdf : FO : PDF ;
generators.register-standard fop.render.ps : FO : PS ;

# Initializes the fop toolset.
#
rule init ( fop-command ? : java-home ? : java ? )
{
    if ! $(.initialized)
    {
        .initialized = true ;
    }
    else
    {
        if ! ( $(1) || $(2) || $(3) )
        {
            return ;
        }
    }

    local has-command = $(.has-command) ;

    if $(fop-command)
    {
        .has-command = true ;
    }

    if $(fop-command) || ! $(has-command)
    {
        fop-command = [ common.get-invocation-command fop : fop : $(fop-command)
          : [ modules.peek : FOP_DIR ] ] ;
    }

    if $(fop-command)
    {
        .FOP_COMMAND = $(fop-command) ;
    }

    if $(java-home) || $(java)
    {
        .FOP_SETUP = ;


        # JAVA_HOME is the location that java was installed to.

        if $(java-home)
        {
            .FOP_SETUP += [ common.variable-setting-command JAVA_HOME : $(java-home) ] ;
        }

        # JAVACMD is the location that of the java executable, useful for a
        # non-standard java installation, where the executable isn't at
        # $JAVA_HOME/bin/java.

        if $(java)
        {
            .FOP_SETUP += [ common.variable-setting-command JAVACMD : $(java) ] ;
        }
    }
}

actions render.pdf
{
    $(.FOP_SETUP) $(.FOP_COMMAND:E=fop) $(>) $(<)
}

actions render.ps
{
    $(.FOP_SETUP) $(.FOP_COMMAND:E=fop) $(>) -ps $(<)
}
