# Copyright (C) 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
#*******************************************************************************
#* Copyright (C) 2009-2014, International Business Machines Corporation and    *
#* others. All Rights Reserved.                                                *
#*******************************************************************************
shared.dir = ${workspace_loc:/icu4j-shared}

icu4j.core.dir = ${workspace_loc:/icu4j-core}
icu4j.charset.dir = ${workspace_loc:/icu4j-charset}
icu4j.collate.dir = ${workspace_loc:/icu4j-collate}
icu4j.currdata.dir = ${workspace_loc:/icu4j-currdata}
icu4j.langdata.dir = ${workspace_loc:/icu4j-langdata}
icu4j.localespi.dir = ${workspace_loc:/icu4j-localespi}
icu4j.regiondata.dir = ${workspace_loc:/icu4j-regiondata}
icu4j.translit.dir = ${workspace_loc:/icu4j-translit}

icu4j.test-framework.dir = ${workspace_loc:/icu4j-test-framework}
icu4j.core-tests.dir = ${workspace_loc:/icu4j-core-tests}
icu4j.collate-tests.dir = ${workspace_loc:/icu4j-collate-tests}
icu4j.charset-tests.dir = ${workspace_loc:/icu4j-charset-tests}
icu4j.localespi-tests.dir = ${workspace_loc:/icu4j-localespi-tests}
icu4j.packaging-tests.dir = ${workspace_loc:/icu4j-packaging-tests}
icu4j.translit-tests.dir = ${workspace_loc:/icu4j-translit-tests}
icu4j.testall.dir = ${workspace_loc:/icu4j-testall}

icu4j.build-tools.dir = ${workspace_loc:/icu4j-build-tools}
icu4j.tools.dir = ${workspace_loc:/icu4j-tools}

icu4j.demos.dir = ${workspace_loc:/icu4j-demos}
icu4j.samples.dir = ${workspace_loc:/icu4j-samples}

icu4j.perf-tests.dir = ${workspace_loc:/icu4j-perf-tests}
