###############################################################################
# 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
###############################################################################



# when updating AspectJ to the next version, also make sure to uodate
# the MANIFEST.MF bundle-version and all package versions
# 1.8.3.20140820082000 - 1.8.3 dev (apt in ajdt)
# 1.8.3.20141021140000 - 1.8.3 almost release
# 1.8.3.20141023123000 - 1.8.3 release
# 1.8.4.20141030180000 - 1.8.4 dev (thisAspectInstance fix)
# 1.8.4.20141106133000 - 1.8.4 release
# 1.8.5.20141117171500 - 1.8.5 dev
# 1.8.5.20141218084900 - 1.8.5 dev
# 1.8.5.20150128171000 - 1.8.5 release
# 1.8.6.20150608154200 - 1.8.6 release
# 1.8.7.20150629114800 - 1.8.7 snapshot (AspectJ rebased on Mars)
# 1.8.7.20150903142800 - 1.8.7 snapshot
# 1.8.7.20150910082200 - 1.8.7 release
# 1.8.8.20160111180000 - 1.8.8 release
# 1.8.9.20160119082720 - 1.8.9 snapshot
# 1.8.9.20160308095600 - 1.8.9 snapshot
# 1.8.9.20160315000000 - 1.8.9 release
# 1.8.10.20160329000000 - 1.8.10 dev
# 1.8.10.20160728000000 - 1.8.10 dev
# 1.8.10.20160728170000 - 1.8.10 dev
# 1.8.10.20160728170000 - 1.8.10 dev
# 1.8.10.20160729105600 - 1.8.10 dev
# 1.8.10.20161202172300 - 1.8.10 dev
# 1.8.10.20161208125753 - 1.8.10 dev
# 1.8.10.20161209165800 - 1.8.10 dev
# 1.8.10.20161212130900 - 1.8.10 really final !
# 1.8.11.20161216164900 - 1.8.11 first build
# 1.8.11.20161216172400 - 1.8.11 
# 1.8.11.20171005105600 - 1.8.11 release (plus one extra fix)
# 1.8.13.20171030102906 - 1.8.13 dev
# 1.9.2.20180528092400 - 1.9.2 snapshot
# 1.9.2.20181011162500 - 1.9.2 snapshot
# 1.9.2.20181015114000 - 1.9.2 snapshot
# 1.9.2.20181015114000 - 1.9.2 snapshot
# 1.9.3.20190109134500 - 1.9.3 snapshot
ajde.version=1.9.3.20190109134500


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


# 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-4.5.zip
org.eclipse.test=3.3.200.v20150327-1546
org.eclipse.test.feature.version=3.7.0.v20150428-2048
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 Eclipse 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=e45x

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

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

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


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

# 44 for building against Eclipse 4.4
target.eclipse.version=45

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