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

depends.jars=${depends.dir}/jars
maven2.base=http://repo1.maven.org/maven2
yoko.base=${maven2.base}/org/apache/yoko

yoko.version=1.0
yoko.dir=${depends.jars}/yoko-${yoko.version}
yoko.jar=${yoko.dir}/yoko.jar
yoko.url=${yoko.base}/yoko-spec-corba/${yoko.version}/yoko-spec-corba-${yoko.version}.jar
yoko.md5=9785a46807b2f9d374296b4af1ff97fb

yoko-core.dir=${depends.jars}/yoko-${yoko.version}
yoko-core.jar=${yoko.dir}/yoko-core.jar
yoko-core.url=${yoko.base}/yoko-core/${yoko.version}/yoko-core-${yoko.version}.jar
yoko-core.md5=14acb2d10e6725ebda5bd02e7afc8218

yoko-rmi-impl.dir=${depends.jars}/yoko-${yoko.version}
yoko-rmi-impl.jar=${yoko-rmi-impl.dir}/yoko-rmi-impl.jar
yoko-rmi-impl.url=${yoko.base}/yoko-rmi-impl/${yoko.version}/yoko-rmi-impl-${yoko.version}.jar
yoko-rmi-impl.md5=dee6e519c83796d99a51b1379abf772a

yoko-rmi-spec.dir=${depends.jars}/yoko-${yoko.version}
yoko-rmi-spec.jar=${yoko-rmi-spec.dir}/yoko-rmi-spec.jar
yoko-rmi-spec.url=${yoko.base}/yoko-rmi-spec/${yoko.version}/yoko-rmi-spec-${yoko.version}.jar
yoko-rmi-spec.md5=2f8e962b3a5b9dea0a573a5285b669f6

# bcel is needed by yoko-rmi
bcel.version=5.2
bcel.dir=${depends.jars}/bcel-${bcel.version}
bcel.jar=${bcel.dir}/bcel-${bcel.version}.jar
bcel.url=${maven2.base}/org/apache/bcel/bcel/${bcel.version}/bcel-${bcel.version}.jar
bcel.md5=43d54687362fc2991d61201c453a8286

