###############################################################################
# Copyright (c) 2003, 2006 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################


# 1.7.0.20120412142900
# 1.7.0.20120418081600
# 1.7.0.20120525172200 rc1
# 1.7.0.20120703164200 1.7.0 final
# 1.7.1.20120822170500
# 1.7.1.20120910111500 - 1.7.1 final
# 1.7.2.20120919171200
# 1.7.2.20120920133900
# 1.7.2.20130121224400 - code gen hints
# 1.7.2.20130214224500 - 1.7.2
ajde.version=1.7.2.20130214224500

  
builder=.

# arguments file passed to ajc---this shouldn't change
ajcArgFile=${builder}/iajc-args.txt


# The prefix that will be used in the generated archive.
archivePrefix=ajdt

# The location underwhich all of the build output will be collected.
collectingFolder=${archivePrefix}


# Type of build.  Used in naming the build output.  Typically this value is
# one of I, N, M, S, ...
buildType=I

# ID of the build.  Used in naming the build output.
buildId=TestBuild

# Label for the build.  Used in naming the build output
buildLabel=${buildType}.${buildId}


# where extra plugins for the build can be found
# currently, not needed
# pluginPath=${workdir}/plugins

# uncomment both to skip fetching from cvs and use local file system instead
# should not need to uncomment
# We are only fetching Equinox Aspects sources, not AJDT sources
# AJDT sources are coming from a checked out cache
skipFetch=true
#skipMaps=true

# only used if skipMaps property is unset or set to false
mapsRepo=:pserver:anonymous@dev.eclipse.org/cvsroot/tools
mapsRoot=${builder}/maps
mapsCheckoutTag=HEAD

# Specify the output format of the compiler log when eclipse jdt is used
logExtension=.log

# Whether or not to include debug info in the output jars
javacDebugInfo=false 

# Whether or not to fail the build if there are compiler errors
javacFailOnError=true

# Enable or disable verbose mode of the compiler
javacVerbose=true

individualSourceBundles=true


# working directory for building
build.home=${build.dest}/build

# eclipse to build against and to run tests against
target.eclipse=${build.dest}/target/eclipse

# location of the workspace used for running tests
test.workspace=${build.dest}/target/test-workspace

# the eclipse that is driving the build
# must be properly provisioned with AspectJ weaver and runtime
# as well as ajdt-pde build
build.eclipse=${build.dest}/eclipse

# distribution directory for update sites
# directory for build artifact
build.dist=${build.dest}/dist
updateSite.loc=${build.dist}/updateSite
test.results=${build.dist}/test-reports

# configure extra plugins required for building and testing
eclipse.test.framework.version=eclipse-test-framework-3.7.zip
org.eclipse.test=3.3.100
test.library.xml=${build.eclipse}/plugins/org.eclipse.test_${org.eclipse.test}/library.xml


# The value that will be prefixed to all version qualifiers
# Use e34x for Eclispe 3.4 builds and e35x for 3.5 builds, etc
# This value will be ignored if forceContextQualifier is set above or from the command line
qualPrefix=e43x-RELEASE

# upload properties
upload.host=build.eclipse.org
upload.dir=43devupdate

# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironm
ent or set javacSource in build.properties
javacSource=1.5

# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionE
nvironment or set javacTarget in build.properties.
javacTarget=1.5


# Extra arguments for the compiler. These are specific to the java compiler being used.
# @category compiling
compilerArg=-nowarn

# 43 for building against Eclipse 4.3
target.eclipse.version=43

p2.sign=true
p2.repository.name=AJDT Update Site
