###############################################################################
#ASM: a very small and fast Java bytecode manipulation framework
#Copyright (c) 2000-2011 INRIA, France Telecom
#All rights reserved.
#
#Redistribution and use in source and binary forms, with or without
#modification, are permitted provided that the following conditions
#are met:
#1. Redistributions of source code must retain the above copyright
#   notice, this list of conditions and the following disclaimer.
#2. 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.
#3. Neither the name of the copyright holders 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.
###############################################################################

# Some information about the product

product.name    asm
product.version 5.0.4
# product.snapshot yes

plugin.version 3.3.0


###############################################################################
# BUILD
###############################################################################

# Wich compiler do you want to use ?
# jikes is faster than javac but keeps line numbers in compiled classes, even
# with the -O option (javac removes line numbers and local variable names with
# this option, resulting in smaller classes)

build.compiler modern

# Build class path (classes needed to build the project)
# Class path for the ObjectWeb utility Ant tasks (version 1.3.2 or higher)
# See http://forge.objectweb.org/projects/monolog

# objectweb.ant.tasks.path ow_util_ant_tasks.jar

###############################################################################
# TESTS (PERFORMANCE COMPARISONS WITH BCEL AND SERP)
###############################################################################

# Class path for the BCEL library (version 5.2)
# See http://jakarta.apache.org/bcel

# bcel.path bcel.jar

# Class path for the AspectJ library that contains the modified BCEL version 
# (version 1.5) See http://www.eclipse.org/aspectj

# aspectj.path aspectjweaver.jar

# Class path for the SERP library (version 1.14.2)
# See http://serp.sourceforge.net

# serp.path serp.jar

# Class path for the Javassist library (version 3.6.GA)
# See http://www.csg.is.titech.ac.jp/~chiba/javassist

# javassist.path javassist.jar

# Class path for the Janino compiler (version 2.5.11)
# See http://www.janino.net/

# janino.path janino.jar

# Class paths for Cobertura (version 1.9)

# corbertura.path cobertura.jar
# cobertura.runtime.path cobertura.jar

# Class paths for Kawa (version 1.9.1)

# kawa.runtime.path kawa.jar

# Class paths for CSG Bytecode

# csg-bytecode.runtime.path csg-bytecode.jar

# Class paths for Cojen (version 2.0)

# cojen.runtime.path cojen.jar

# Class paths for JBET (version 3-R1)

# jbet.runtime.path jbet.jar

# Class paths for JClassLib

# jclasslib.runtime.path jclasslib.jar

# Class paths for Jiapi

# jiapi.runtime.path jiapi.jar

# Class paths for mozilla.classfile (version 1_7R1)

# rhino.runtime.path rhino.jar

###############################################################################
# DOCUMENTATION
###############################################################################

# URLs of external Javadocs (JDK)

jdk.url     http://java.sun.com/j2se/1.4.2/docs/api

