# Format of this file:
#
# Comments start with '#' and are ignored.  Empty lines (only whitespace) are ignored.
#
# All other lines have one of two different formats:
# 
# if (<logical-expression>)  
#     starts a block that specifies the download site(s) of an external library.
# 
# <name>=<value>
#    defines a variable.  A definition after an "if" statement is only valid up to the next
#    "if" statement.  Previous definitions are replaced.
#    <value> can contain references to other variables in the form $(<other-variable>)
#
# Some variables have special names:
#    MD5 defines the MD5 check-sum of a library
#    URL1 to URL9 define alternative download sites.  The first one that provides the library
#    with matching MD5 wins.
#    name is the name under which the library tar-ball is stored.  It overrides the name of the
#    downloaded file.

# Wherever possible the external tar-balls are loaded from their original distribution sites.
# Where that is not possible (version is not archived any longer,
# project does not any longer, server is temporarily not available) a
# fallback server is used.

# The primary fallback site.
OOO_EXTRAS=http://ooo-extras.apache-extras.org.codespot.com/files/

# Must not fallback to svn
# SVN_TRUNK=http://svn.apache.org/repos/asf/!svn/bc/1336449/incubator/ooo/trunk/ext_sources/


###############################################################################
# Libraries with category A license
#

if ( true )
    MD5 = 0168229624cfac409e766913506961a8
    name = ucpp-1.3.2.tar.gz
    URL1 = http://ucpp.googlecode.com/files/ucpp-1.3.2.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if ( true )
    MD5 = 067201ea8b126597670b5eff72e1f66c
    name = mythes-1.2.0.tar.gz
    URL1 = http://sourceforge.net/projects/hunspell/files/MyThes/1.2.0/mythes-1.2.0.tar.gz/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_MDDS != YES)
    MD5 = 0dd138efff4412c707e239290fb82d4f
    name = mdds_0.3.1.tar.bz2
    URL1 = http://multidimalgorithm.googlecode.com/files/mdds_0.3.1.tar.bz2
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)
 
if (SYSTEM_LIBTEXTCAT != YES)
    MD5 = 128cfc86ed5953e57fe0f5ae98b62c2e
    name = libtextcat-2.2.tar.gz
    URL1 = http://software.wise-guys.nl/download/libtextcat-2.2.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SOLAR_JAVA == TRUE)
    MD5 = 17410483b5b5f267aa18b7e00b65e6e0
    name = hsqldb_1_8_0.zip
    URL1 = http://sourceforge.net/projects/hsqldb/files/hsqldb/hsqldb_1_8_0/hsqldb_1_8_0_10.zip/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if ( true )
    MD5 = 1756c4fa6c616ae15973c104cd8cb256
    name = Adobe-Core35_AFMs-314.tar.gz
    URL1 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SOLAR_JAVA==TRUE && SYSTEM_LUCENE!=YES)
    MD5 = 17960f35b2239654ba608cf1f3e256b3
    name = lucene-2.9.4-src.tar.gz
    URL1 = http://archive.apache.org/dist/lucene/java/2.9.4/lucene-2.9.4-src.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_NSS_MODULE!=NO && SYSTEM_NSS!=YES)
    MD5 = 1f24ab1d39f4a51faf22244c94a6203f
    name = xmlsec1-1.2.14.tar.gz
    URL1 = ftp://ftp.aleksey.com/pub/xmlsec/releases/xmlsec1-1.2.14.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_REDLAND != YES)
    MD5 = 284e768eeda0e2898b0d5bf7e26a016e
    name = raptor-1.4.18.tar.gz
    URL1 = http://download.librdf.org/source/raptor-1.4.18.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_REDLAND != YES)
    MD5 = ca66e26082cab8bb817185a116db809b
    name = redland-1.0.8.tar.gz
    URL1 = http://download.librdf.org/source/redland-1.0.8.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_REDLAND != YES)
    MD5 = fca8706f2c4619e2fa3f8f42f8fc1e9d
    name = rasqal-0.9.16.tar.gz
    URL1 = http://download.librdf.org/source/rasqal-0.9.16.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (GUI!=UNX || SYSTEM_ZLIB!=YES)
    MD5 = 2ab442d169156f34c379c968f3f482dd
    name = zlib-1.2.7.tar.bz2
    URL1 = $(OOO_EXTRAS)$(MD5)-$(name)
    URL2 = http://zlib.net/zlib-1.2.7.tar.bz2

if (SOLAR_JAVA==TRUE && ENABLE_MEDIAWIKI==YES)
    MD5 = 2c9b0f83ed5890af02c0df1c1776f39b
    name = commons-httpclient-3.1-src.tar.gz
    URL1 = http://archive.apache.org/dist/httpcomponents/commons-httpclient/source/commons-httpclient-3.1-src.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SOLAR_JAVA==TRUE && ENABLE_MEDIAWIKI==YES)
    MD5 = 2e482c7567908d334785ce7d69ddfff7
    name = commons-codec-1.6-src.tar.gz
    URL1 = http://archive.apache.org/dist/commons/codec/source/commons-codec-1.6-src.tar.gz
    URL2 = http://apache.spinellicreations.com//commons/codec/source/commons-codec-1.6-src.tar.gz
    URL3 = $(OOO_EXTRAS)$(MD5)-$(name)

if ( true )
    MD5 = 2f6ecca935948f7db92d925d88d0d078
    name = icu4c-4_0_1-src.tgz
    URL1 = http://download.icu-project.org/files/icu4c/4.0.1/icu4c-4_0_1-src.tgz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if ( true )
    SHA1 = f65fbbd72926c8e7cf0dbd4ada03b0d226f461fd
    name = serf-1.2.1.tar.bz2
    URL1 = http://serf.googlecode.com/files/serf-1.2.1.tar.bz2
    URL2 = $(OOO_EXTRAS)$(SHA1)-$(name)

if (SOLAR_JAVA==TRUE && (ENABLE_MEDIAWIKI==YES || ENABLE_REPORTBUILDER==YES))
    MD5 = 3c219630e4302863a9a83d0efde889db
    name = commons-logging-1.1.1-src.tar.gz
    # This seems to be the original host, but the MD5 sum does not match.
    # URL1 = http://archive.apache.org/dist/commons/logging/source/commons-logging-1.1.1-src.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_JPEG != YES)
    MD5 = 52654eb3b2e60c35731ea8fc87f1bd29
    name = jpeg-8d.tar.gz
    URL1 = http://www.ijg.org/files/jpegsrc.v8d.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SOLAR_JAVA==TRUE && ENABLE_MEDIAWIKI==YES)
    MD5 = 625ff5f2f968dd908bca43c9469d6e6b
    name = commons-lang-2.4-src.tar.gz
    URL1 = http://archive.apache.org/dist/commons/lang/source/commons-lang-2.4-src.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_OPENSSL!=YES && DISABLE_OPENSSL!=TRUE)
    MD5 = 63ddc5116488985e820075e65fbe6aa4
    name = openssl-0.9.8o.tar.gz
    URL1 = http://www.openssl.org/source/openssl-0.9.8o.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if ( true )
    MD5 = 97262fe54dddaf583eaaee3497a426e1
    name = apr-1.4.5.tar.gz
    URL1 = http://archive.apache.org/dist/apr/$(name)
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if ( true )
    MD5 = 666a5d56098a9debf998510e304c8095
    name = apr-util-1.4.1.tar.gz
    URL1 = http://archive.apache.org/dist/apr/$(name)
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_LIBXML != YES)
    MD5 = 8127a65e8c3b08856093099b52599c86
    name = libxml2-2.7.8.tar.gz
    URL1 = ftp://xmlsoft.org/libxml2/libxml2-2.7.8.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_LIBXSLT != YES)
    MD5 = e61d0364a30146aaa3001296f853b2b9
    name = libxslt-1.1.26.tar.gz
    URL1 = ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SOLAR_JAVA == TRUE)
    MD5 = 63574e3ada44f473892a61a2da433a59
    name = apache-tomcat-5.5.36-src.tar.gz
    # URL1 = http://www.alliedquotes.com/mirrors/apache/tomcat/tomcat-5/v5.5.36/src/apache-tomcat-5.5.36-src.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SOLAR_JAVA == TRUE)
    MD5 = 980143f96b3f6ce45d2e4947da21a5e9
    name = stax-src-1.2.0.zip
    URL1 = http://dist.codehaus.org/stax/distributions/stax-src-1.2.0.zip
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_MEDIAWIKI == YES)
    MD5 = a7983f859eafb2677d7ff386a023bc40
    name = xsltml_2.1.2.zip
    URL1 = http://sourceforge.net/projects/xsltml/files/xsltml/v.2.1.2/xsltml_2.1.2.zip/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_PYTHON != YES)
    MD5 =  6334b666b7ff2038c761d7b27ba699c1
    name = Python-2.7.5.tar.bz2
    URL1 = http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_BOOST != YES)
    MD5 = d6eef4b4cacb2183f2bf265a5a03a354
    name = boost_1_55_0.tar.bz2
    URL1 = http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.bz2/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_VIGRA != YES)
    MD5 = d62650a6f908e85643e557a236ea989c
    name = vigra1.6.0.tar.gz
    URL1 = http://hci.iwr.uni-heidelberg.de/vigra/vigra1.6.0.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_EXPAT != YES)
    MD5 = dd7dab7a5fea97d2a6a43f511449b7cd
    name = expat-2.1.0.tar.gz
    URL1 = http://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (SYSTEM_CURL != YES)
    MD5 = ecb2e37e45c9933e2a963cabe03670ab
    name = curl-7.19.7.tar.gz
    URL1 = http://curl.haxx.se/download/curl-7.19.7.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (WITH_CATA_FONTS == YES)
    MD5 = f872f4ac066433d8ff92f5e316b36ff9
    name = dejavu-fonts-ttf-2.33.zip
    URL1 = http://sourceforge.net/projects/dejavu/files/dejavu/2.33/dejavu-fonts-ttf-2.33.zip/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if ( true )
    MD5 = fdb27bfe2dbe2e7b57ae194d9bf36bab
    name = SampleICC-1.3.2.tar.gz
    # This seems to be the original host, but the MD5 sum does not match.
    # URL1 = http://sourceforge.net/projects/sampleicc/files/sampleicc/SampleICC%201.3.2/SampleICC-1.3.2.zip/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (RAT_JAR_HOME==BUILD)
    MD5 = e4244e69eb3644e71c254aea5952a918
    name = apache-rat-incubating-0.8-bin.tar.bz2 
    URL1 = http://archive.apache.org/dist/incubator/rat/binaries/$(name)
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

###############################################################################
# Libraries with category B license
#

if (ENABLE_CATEGORY_B==YES && SYSTEM_COINMP!=YES)
    MD5 = 2b5f1ca58d6ef30f18f1415b65bed81c
    name = CoinMP-1.6.0.tgz
    URL1 = $(OOO_EXTRAS)$(MD5)-$(name)

if (WITH_CATB_FONTS == YES)
    MD5 = 35efabc239af896dfb79be7ebdd6e6b9
    name = gentiumbasic-fonts-1.10.zip
    # This seems to be the original host, but the MD5 sum does not match.
    # URL1 = http://scripts.sil.org/cms/scripts/render_download.php?format=file&media_id=GentiumBasic_110&filename=GentiumBasic_110.zip
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && SYSTEM_HYPH!=YES)
    MD5 = 48a9f787f43a09c0a9b7b00cd1fddbbf
    name = hyphen-2.7.1.tar.gz
    URL1 = http://sourceforge.net/projects/hunspell/files/Hyphen/2.7/hyphen-2.7.1.tar.gz/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && WITH_CATB_FONTS==YES)
    MD5 = 61f59e4110781cbe66b46449eadac231
    name = croscorefonts-1.21.0.tar.gz
    URL1 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && SYSTEM_HUNSPELL!=YES)
    name = hunspell-1.3.2.tar.gz
    MD5 = 3121aaf3e13e5d88dfff13fb4a5f1ab8
    URL1 = http://sourceforge.net/projects/hunspell/files/Hunspell/1.3.2/hunspell-1.3.2.tar.gz/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && SOLAR_JAVA==TRUE && ENABLE_JAVASCRIPT==YES)
    MD5 = 99d94103662a8d0b571e247a77432ac5
    name = rhino1_7R3.zip
    URL1 = ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R3.zip
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && ENABLE_NSS_MODULE==YES)
    MD5 = 067a04150b1d8b64f7da3019688a7547
    name = nss-3.14.4-with-nspr-4.9.5.tar.gz
    URL1 = ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_14_4_RTM/src/nss-3.14.4-with-nspr-4.9.5.tar.gz
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && SYSTEM_SAXON!=YES && DISABLE_SAXON!=YES && SOLAR_JAVA==TRUE)
    MD5 = 24be19595acad0a2cae931af77a0148a
    name = LICENSE_source-9.0.0.7-bj.html
    URL1 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && SYSTEM_SAXON!=YES && DISABLE_SAXON!=YES && SOLAR_JAVA==TRUE)
    MD5 = 48470d662650c3c074e1c3fabbc67bbd
    name = README_source-9.0.0.7-bj.txt
    URL1 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && SYSTEM_SAXON!=YES && DISABLE_SAXON!=YES && SOLAR_JAVA==TRUE)
    MD5 = ada24d37d8d638b3d8a9985e80bc2978
    name = source-9.0.0.7-bj.zip
    URL1 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && SYSTEM_GRAPHITE!=YES && ENABLE_GRAPHITE==TRUE)
    MD5 = 377a60170e5185eb63d3ed2fae98e621
    name = README_silgraphite-2.3.1.txt
    URL1 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && SYSTEM_GRAPHITE!=YES && ENABLE_GRAPHITE==TRUE)
    MD5 = d35724900f6a4105550293686688bbb3
    name = silgraphite-2.3.1.tar.gz
    URL1 = http://sourceforge.net/projects/silgraphite/files/silgraphite/2.3.1/silgraphite-2.3.1.tar.gz/download
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)

if (ENABLE_CATEGORY_B==YES && SOLAR_JAVA==TRUE && SYSTEM_BSH!=YES)
    MD5 = ea570af93c284aa9e5621cd563f54f4d
    name = bsh-2.0b1-src.tar.gz
    # This used to be the original host, but the link is broken.
    # URL1 = http://www.beanshell.org/bsh-2.0b1-src.zip
    URL2 = $(OOO_EXTRAS)$(MD5)-$(name)
