#
# Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
#   - Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#
#   - Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#
#   - Neither the name of Sun Microsystems nor the names of its
#     contributors may be used to endorse or promote products derived
#     from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#

includes=\
    com/sun/java2d/ \
    com/sun/image/ \
    com/sun/imageio/ \
    java/awt/ \
    javax/imageio/ \
    javax/print/ \
    sun/dcpr/ \
    sun/image/ \
    sun/awt/ \
    sun/splashscreen/ \
    sun/xawt/ \
    sun/headless/ \
    sun/font/ \
    sun/jpeg/ \
    sun/cmm/ \
    sun/jawt/ \
    sun/text/ \
    sun/java2d/ \
    sun/print/
excludes=\
    java/awt/doc-files/ \
    java/awt/im/ \
    sun/awt/im/ \
    sun/awt/resources/ \
    sun/print/resources/
demos=\
    java2d/J2DBench/src/ \
    java2d/J2DBench/options/ \
    java2d/J2DBench/build.xml \
    jfc/
jtreg.tests=\
    java/awt/ \
    javax/imageio/ \
    javax/print/ \
    sun/awt/ \
    sun/java2d/ \
    closed/java/awt/ \
    closed/javax/imageio/ \
    closed/javax/print/ \
    closed/sun/awt/ \
    closed/sun/java2d/
jtreg.options=-automatic
use.make=true
javadoc.options=-J-Xmx256m
