################################################################################
##
##  Licensed to the Apache Software Foundation (ASF) under one or more
##  contributor license agreements.  See the NOTICE file distributed with
##  this work for additional information regarding copyright ownership.
##  The ASF licenses this file to You under the Apache License, Version 2.0
##  (the "License"); you may not use this file except in compliance with
##  the License.  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
##  Unless required by applicable law or agreed to in writing, software
##  distributed under the License is distributed on an "AS IS" BASIS,
##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
##  See the License for the specific language governing permissions and
##  limitations under the License.
##
################################################################################
bin.includes = META-INF/,\
               plugin.xml,\
               fdb.jar
output.fdb.jar = target/
source.fdb.jar = src/main/java/

jars.compile.order = fdb.jar

# description values 
release=Apache Flex SWF Debugger


# JAR Manifest Entries
manifest.sealed=false
manifest.Implementation-Title=${release}
manifest.Implementation-Version=${release.version}
manifest.Implementation-Vendor=Apache Software Foundation
main.class=flex.tools.debugger.cli.DebugCLI

# Directories
basedir.bin=${basedir}/target
basedir.lib=${basedir}/../compiler/lib
basedir.src=${basedir}/src/main/java
basedir.swfutils=${basedir}/target/downloads/java
basedir.generated.src=${basedir}/target/generated-sources/jburg
basedir.manifest=${basedir}/META-INF
compiler.generated.lib=${basedir}/../compiler/lib
generated=${basedir}/target/generated-sources
dist=${basedir}/../compiler/lib

#JAR names
jar=fdb.jar
jar.dependencies=compiler.jar external/commons-lang-2.6.jar



