###############################################################################
# Copyright (c) 2011 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
###############################################################################
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               bundle_tests/*.jar,\
               stubs/org.eclipse.virgo.teststubs.osgi.jar,\
               about.html,\
               test.xml
# ignore warnings about jar not beeing on the bundle classpath
source.bundle_tests/PackageProvider1.jar = bundles_src/PackageProvider1/
manifest.bundle_tests/PackageProvider1.jar = META-INF/MANIFEST.MF
source.bundle_tests/ServiceProvider1.jar = bundles_src/ServiceProvider1/
manifest.bundle_tests/ServiceProvider1.jar = META-INF/MANIFEST.MF
source.bundle_tests/CapabilityProvider1.jar = bundles_src/CapabilityProvider1/
manifest.bundle_tests/CapabilityProvider1.jar = META-INF/MANIFEST.MF
source.bundle_tests/PackageProvider2.jar = bundles_src/PackageProvider2/
manifest.bundle_tests/PackageProvider2.jar = META-INF/MANIFEST.MF
source.bundle_tests/ServiceProvider2.jar = bundles_src/ServiceProvider2/
manifest.bundle_tests/ServiceProvider2.jar = META-INF/MANIFEST.MF
source.bundle_tests/CapabilityProvider2.jar = bundles_src/CapabilityProvider2/
manifest.bundle_tests/CapabilityProvider2.jar = META-INF/MANIFEST.MF
source.bundle_tests/PackageClient1.jar = bundles_src/PackageClient1/
manifest.bundle_tests/PackageClient1.jar = META-INF/MANIFEST.MF
source.bundle_tests/BundleClient1.jar = bundles_src/BundleClient1/
manifest.bundle_tests/BundleClient1.jar = META-INF/MANIFEST.MF
source.bundle_tests/ServiceClient1.jar = bundles_src/ServiceClient1/
manifest.bundle_tests/ServiceClient1.jar = META-INF/MANIFEST.MF
source.bundle_tests/CapabilityClient1.jar = bundles_src/CapabilityClient1/
manifest.bundle_tests/CapabilityClient1.jar = META-INF/MANIFEST.MF
source.bundle_tests/Singleton1.jar = bundles_src/Singleton1/
manifest.bundle_tests/Singleton1.jar = META-INF/MANIFEST.MF
source.bundle_tests/Singleton2.jar = bundles_src/Singleton2/
manifest.bundle_tests/Singleton2.jar = META-INF/MANIFEST.MF

jars.compile.order = bundle_tests/PackageProvider1.jar,\
                     bundle_tests/ServiceProvider1.jar,\
                     bundle_tests/CapabilityProvider1.jar,\
                     bundle_tests/PackageProvider2.jar,\
                     bundle_tests/ServiceProvider2.jar,\
                     bundle_tests/CapabilityProvider2.jar,\
                     bundle_tests/PackageClient1.jar,\
                     bundle_tests/BundleClient1.jar,\
                     bundle_tests/ServiceClient1.jar,\
                     bundle_tests/CapabilityClient1.jar,\
                     bundle_tests/Singleton1.jar,\
                     bundle_tests/Singleton2.jar

src.includes = about.html

