builderVersion=v201103310616


#   This parameter is specific to the compiler
#   being used (JDT Compiler, in our case).
#   'showversion' causes the version of JDT Compiler to be
#   printed to the compiler log file.
#compilerArg=-showversion -encoding ISO-8859-1 -warn:-discouraged,serial,raw
#compilerArg=-showversion -encoding ISO-8859-1 -warn:-serial,raw,typeHiding,unchecked
compilerArg=-showversion -encoding ISO-8859-1 -warn:-serial,-raw,-typeHiding,-unchecked,-discouraged

#############################################################

# TODO: these variables, and many others no longer need to be defined here in build.cfg, so 
#       should be moved into other property or ant files. They don't differ by stream. 
# note that eclipsebuilder.id should/could be "filled in" later, based on value in dependencies.properties file
# but, for short cut, we'll duplicate here. We mostly need a unique identifier as to where to intall it
eclipsebuilderstore.id=3.6.2
# eclipse.builder.location.name should be empty, if using tranditional basebuilder
eclipse.builder.location.name=eclipse
# These last two are use in other scirpts, the three above are not (at least, should not be). 
eclipse.builder.base.install.dir=${env.BASE_BUILDERS}/${eclipsebuilderstore.id}/${build.distribution}
pde.builder.path=${eclipse.builder.base.install.dir}/${eclipse.builder.location.name}

# uncomment if its desired to 'force' fetch of eclipse builder
# (if not already defined from elsewhere)
eclipse.builder.fetch=true

buildDirectory=${env.PROJECT_PROJECTS}/${projectname}/workdir

# new in 3.4 based build, have the source files for sdk builds bundled as individual jars.
individualSourceBundles=true

# dropins folder is either left undefined, or /eclipse/dropins (no trailing spaces)
dropinsFolder=/eclipse/dropins

# should be set for 3.1+ build. should be unset (not exist, or commented out) for earlier builds
doCreateFprojZips=yes


# arguments for relent tests (that vary by stream)
# omit qualifierArgValue to not flag a unit test error for "warnings"
qualifierArgValue=-countQualifierIncreaseOnlyAsError
#qualifierArgValue=
referenceIDArgValue=R-3.2.3-20110217214612
referenceURLArgValue=http://download.eclipse.org/webtools/downloads/drops/R3.2.3/R-3.2.3-20110217214612/versioningReference_R-3.2.3-20110217214612.xml
# omit to not test
testToReferenceArgValue=-testToReference
# omit to not list
listToReferenceFileArgValue=-listToReferenceFile

testFeatureIUs=org.eclipse.jpt.tests.feature.feature.group,org.eclipse.jst.enterprise_tests.feature.feature.group,org.eclipse.jst.jsf.tests.feature.feature.group,org.eclipse.jst.server_adapters.ext_tests.feature.feature.group,org.eclipse.jst.server_tests.feature.feature.group,org.eclipse.jst.web_tests.feature.feature.group,org.eclipse.jst.ws.cxf_tests.feature.feature.group,org.eclipse.jst.ws.jaxws.dom_tests.feature.feature.group,org.eclipse.jst.ws.jaxws_tests.feature.feature.group,org.eclipse.wst.common_tests.feature.feature.group,org.eclipse.wst.jsdt_tests.feature.feature.group,org.eclipse.wst.server_tests.feature.feature.group,org.eclipse.wst.web_tests.feature.feature.group,org.eclipse.wst.ws_tests.feature.feature.group,org.eclipse.wst.xml_tests.feature.feature.group,org.eclipse.wst.xsl_tests.feature.feature.group,org.eclipse.wtp.releng.tests.feature.feature.group
wtpFeatureIUs=org.eclipse.wst.common.fproj.sdk.feature.group,org.eclipse.wst.jsdt_sdk.feature.feature.group,org.eclipse.wst.xml_sdk.feature.feature.group,org.eclipse.wst.web_sdk.feature.feature.group,org.eclipse.wst.xsl_sdk.feature.feature.group,org.eclipse.wst.server_adapters.sdk.feature.feature.group,org.eclipse.jst.common.fproj.enablement.jdt.sdk.feature.group,org.eclipse.jst.server_sdk.feature.feature.group,org.eclipse.jst.web_sdk.feature.feature.group,org.eclipse.jst.enterprise_sdk.feature.feature.group,org.eclipse.jst.server_adapters.sdk.feature.feature.group,org.eclipse.jst.server_adapters.ext.sdk.feature.feature.group,org.eclipse.jst.ws.axis2tools_sdk.feature.feature.group,org.eclipse.jst.ws.jaxws_sdk.feature.feature.group,org.eclipse.jst.ws.cxf_sdk.feature.feature.group,org.eclipse.jst.ws.jaxws.dom_sdk.feature.feature.group,org.eclipse.jst.jsf.apache.trinidad.tagsupport_sdk.feature.feature.group,org.eclipse.jst.webpageeditor_sdk.feature.feature.group,org.eclipse.jsf_sdk.feature.feature.group,org.eclipse.jpt_sdk.feature.feature.group,org.eclipse.jpt.eclipselink_sdk.feature.feature.group

jsdtTestFeatureIUs=org.eclipse.wst.jsdt_tests.feature.feature.group
jsdtFeatureIUs=org.eclipse.wst.jsdt.feature.feature.group,org.eclipse.wst.jsdt.feature.source.feature.group,org.eclipse.wst.jsdt_sdk.feature.feature.group

baseComparatorRepoDir=${env.BUILD_HOME}/maintenance

createNoopZips=true

# uncomment to restore batch build customization of access rules (for fewer "discouraged access" warnings)
#customizeAccessRules=true