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

sf.base=http://internap.dl.sourceforge.net/sourceforge
dejavu-fonts.dir=${depends.dir}/dejavu-fonts
dejavu-fonts.fonts.dir=${depends.dir}/dejavu-fonts/dejavu-ttf-2.18
dejavu-fonts.zip=${dejavu-fonts.dir}/dejavu-ttf-2.18-1.zip
dejavu-fonts.url=${sf.base}/dejavu/dejavu-ttf-2.18-1.zip
dejavu-fonts.md5=72e0a87ec1f9c5c26c66eabcf1e2018e

depends.lib.dir=${depends.dir}/libs/${hy.platform}
awt.base=http://people.apache.org/~hindessm/classlib-depends/${hy.platform}
jpeg.ver=6b
jpeg.dir=${depends.lib.dir}/jpeg-${jpeg.ver}
jpeg.testfile=${jpeg.dir}/jversion.h
jpeg.tar=${depends.lib.dir}/jpeg-${jpeg.ver}.tar.gz
jpeg.url=${awt.base}/jpeg-${jpeg.ver}.tar.gz
jpeg.md5@x86@=610ebc3e6a9f93c9ac9d9261b3fe6611
jpeg.md5@x86_64@=132fe7221ba3e5c3aa96b851a42ef2a4

lcms.ver@x86@=1.18
lcms.ver@x86_64@=1.15
lcms.dir=${depends.lib.dir}/lcms-${lcms.ver}
lcms.testfile=${lcms.dir}/lcms.h
lcms.tar=${depends.lib.dir}/lcms-${lcms.ver}.tar.gz
lcms.url=${awt.base}/lcms-${lcms.ver}.tar.gz
lcms.md5@x86@=85cf182f4bf93c9fabe0ddd9fc396a8a
lcms.md5@x86_64@=e23282246ba9e1cf8b32c52d7fe97c78

png.ver@x86@=1.2.38
png.ver@x86_64@=1.2.12
png.dir=${depends.lib.dir}/png-${png.ver}
png.testfile=${png.dir}/png.h
png.tar=${depends.lib.dir}/png-${png.ver}.tar.gz
png.url=${awt.base}/png-${png.ver}.tar.gz
png.md5@x86@=d7cc20b44f12b4e46da29ed6cccbcba5
png.md5@x86_64@=b562d8042aeb71d877cfd10518d019bc
