JavaLibrary.mk revision 32cfe9539e1cc988fa433c18c12a89a18afe1f55
16ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Copyright (C) 2007 The Android Open Source Project 26ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 36ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Licensed under the Apache License, Version 2.0 (the "License"); 46ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# you may not use this file except in compliance with the License. 56ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# You may obtain a copy of the License at 66ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 76ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# http://www.apache.org/licenses/LICENSE-2.0 86ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 96ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Unless required by applicable law or agreed to in writing, software 106ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# distributed under the License is distributed on an "AS IS" BASIS, 116ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 126ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# See the License for the specific language governing permissions and 136ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# limitations under the License. 146ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 156ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 166ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Definitions for building the Java library and associated tests. 176ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 186ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 196ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 206ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Common definitions for host and target. 216ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 226ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 236ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# The core library is divided into modules. Each module has a separate 246ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Java source directory, and some (hopefully eventually all) also have 256ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# a directory for tests. 266ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 2732cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsondefine all-main-java-files-under 2832cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilson$(foreach dir,$(1),$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find $(dir)/src/main/java -name "*.java" 2> /dev/null))) 2932cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsonendef 3032cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilson 3132cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsondefine all-test-java-files-under 3232cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilson$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find $(1)/src/test/java -name "*.java" 2> /dev/null)) 336ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinendef 346ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 356ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Redirect ls stderr to /dev/null because the corresponding resources 366ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# directories don't always exist. 376ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteindefine all-core-resource-dirs 386ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(shell cd $(LOCAL_PATH) && ls -d */src/$(1)/{java,resources} 2> /dev/null) 396ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinendef 406ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 416ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# The core Java files and associated resources. 4232cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsoncore_src_files := $(call all-main-java-files-under,annotation archive auth awt-kernel concurrent crypto dalvik dom icu json logging luni luni-kernel math nio nio_char openssl prefs regex security security-kernel sql suncompat support text x-net xml) 436ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore_resource_dirs := $(call all-core-resource-dirs,main) 446ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 456ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# The test Java files and associated resources. 4632cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsontest_src_files := $(call all-test-java-files-under,annotation archive auth awt-kernel concurrent crypto dalvik dom icu json junit logging luni luni-kernel math nio nio_char openssl prefs regex security security-kernel sql suncompat support text x-net xml) 476ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteintest_resource_dirs := $(call all-core-resource-dirs,test) 486ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 496ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 506ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 516ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Build for the target (device). 526ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 536ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 546ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Definitions to make the core library. 556ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 566ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(CLEAR_VARS) 576ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 586ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_SRC_FILES := $(core_src_files) 596ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs) 606ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 61709c24d3b00c9c84ab66213911be1292154fe0efGuang Zhuifeq ($(EMMA_INSTRUMENT),true) 62709c24d3b00c9c84ab66213911be1292154fe0efGuang ZhuLOCAL_SRC_FILES += $(call all-java-files-under, ../../external/emma/core ../../external/emma/pregenerated) 63709c24d3b00c9c84ab66213911be1292154fe0efGuang ZhuLOCAL_JAVA_RESOURCE_DIRS += ../../external/emma/core/res ../../external/emma/pregenerated/res 64709c24d3b00c9c84ab66213911be1292154fe0efGuang Zhuendif 65709c24d3b00c9c84ab66213911be1292154fe0efGuang Zhu 666ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_NO_STANDARD_LIBRARIES := true 676ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_DX_FLAGS := --core-library 686ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 696ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_NO_EMMA_INSTRUMENT := true 706ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_NO_EMMA_COMPILE := true 716ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 726ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE := core 736ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 746ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(BUILD_JAVA_LIBRARY) 756ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 766ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore-intermediates := ${intermediates} 776ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 786ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 7932cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilson# Make core-junit 8032cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsoninclude $(CLEAR_VARS) 8132cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse WilsonLOCAL_SRC_FILES := $(call all-main-java-files-under,junit) 8232cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse WilsonLOCAL_NO_STANDARD_LIBRARIES := true 8332cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse WilsonLOCAL_JAVA_LIBRARIES := core 8432cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse WilsonLOCAL_MODULE := core-junit 8532cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsoninclude $(BUILD_JAVA_LIBRARY) 8632cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilson 8732cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilson 886ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Definitions to make the core-tests library. 896ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 906ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(CLEAR_VARS) 916ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 926ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_SRC_FILES := $(test_src_files) 936ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs) 946ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 956ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_NO_STANDARD_LIBRARIES := true 9632cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse WilsonLOCAL_JAVA_LIBRARIES := core core-junit 976ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_DX_FLAGS := --core-library 986ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 996ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE_TAGS := tests 1006ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE := core-tests 1016ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 102f69aac3c1697d31dbeda8a81d2b32bb8f48b6850Guang ZhuLOCAL_NO_EMMA_INSTRUMENT := true 103f69aac3c1697d31dbeda8a81d2b32bb8f48b6850Guang ZhuLOCAL_NO_EMMA_COMPILE := true 104f69aac3c1697d31dbeda8a81d2b32bb8f48b6850Guang Zhu 1056ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(BUILD_JAVA_LIBRARY) 1066ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1076ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1086ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1096ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# This one's tricky. One of our tests needs to have a 1106ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# resource with a "#" in its name, but Perforce doesn't 1116ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# allow us to submit such a file. So we create it here 1126ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# on-the-fly. 1136ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinTMP_RESOURCE_DIR := $(OUT_DIR)/tmp/ 1146ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinTMP_RESOURCE_FILE := org/apache/harmony/luni/tests/java/lang/test\#.properties 1156ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1166ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE): 1176ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein @mkdir -p $(dir $@) 1186ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein @echo "Hello, world!" > $@ 1196ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1206ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) -C $(TMP_RESOURCE_DIR) $(TMP_RESOURCE_FILE) 1216ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(LOCAL_INTERMEDIATE_TARGETS): $(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE) 1226ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1236ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Definitions for building a version of the core-tests.jar 1246ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# that is suitable for execution on the RI. This JAR would 1256ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# be better located in $HOST_OUT_JAVA_LIBRARIES, but it is 1266ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# not possible to refer to that from a shell script (the 1276ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# variable is not exported from envsetup.sh). There is also 1286ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# some trickery involved: we need to include some classes 1296ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# that reside in core.jar, but since we cannot incldue the 1306ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# whole core.jar in the RI classpath, we copy those classses 1316ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# over to our new file. 1326ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinHOST_CORE_JAR := $(HOST_COMMON_OUT_ROOT)/core-tests.jar 1336ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1346ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(HOST_CORE_JAR): PRIVATE_LOCAL_BUILT_MODULE := $(LOCAL_BUILT_MODULE) 1356ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(HOST_CORE_JAR): PRIVATE_CORE_INTERMEDIATES := $(core-intermediates) 1366ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(HOST_CORE_JAR): $(LOCAL_BUILT_MODULE) 1376ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein @rm -rf $(dir $<)/hostctsclasses 1386ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein $(call unzip-jar-files,$(dir $<)classes.jar,$(dir $<)hostctsclasses) 1396ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein @unzip -qx -o $(PRIVATE_CORE_INTERMEDIATES)/classes.jar dalvik/annotation/* -d $(dir $<)hostctsclasses 1406ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein @cp $< $@ 1416ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein @jar uf $@ -C $(dir $<)hostctsclasses . 1426ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1436ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(LOCAL_INSTALLED_MODULE): $(HOST_CORE_JAR) 1446ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1456ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(LOCAL_INSTALLED_MODULE): run-core-tests 1466ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1476ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Definitions to copy the core-tests runner script. 1486ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1496ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(CLEAR_VARS) 1506ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_SRC_FILES := run-core-tests 1516ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE_CLASS := EXECUTABLES 1526ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE_TAGS := tests 1536ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE := run-core-tests 1546ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(BUILD_PREBUILT) 1556ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1566ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(CLEAR_VARS) 1576ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_SRC_FILES := run-core-tests-on-ri 1586ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_IS_HOST_MODULE := true 1596ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE_CLASS := EXECUTABLES 1606ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE_TAGS := tests 1616ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE := run-core-tests-on-ri 1626ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(BUILD_PREBUILT) 1636ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1646ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1656ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 1666ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Build for the host. 1676ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 1686ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1696ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinifeq ($(WITH_HOST_DALVIK),true) 1706ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1716ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein # Definitions to make the core library. 1726ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1736ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein include $(CLEAR_VARS) 1746ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1756ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_SRC_FILES := $(core_src_files) 1766ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs) 1776ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1786ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_NO_STANDARD_LIBRARIES := true 1796ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_DX_FLAGS := --core-library 1806ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1816ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_NO_EMMA_INSTRUMENT := true 1826ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_NO_EMMA_COMPILE := true 1836ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1846ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_MODULE := core 1856ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1866ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein include $(BUILD_HOST_JAVA_LIBRARY) 1876ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1886ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1896ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein # Definitions to make the core-tests library. 1906ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1916ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein include $(CLEAR_VARS) 1926ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1936ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_SRC_FILES := $(test_src_files) 1946ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs) 1956ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1966ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_NO_STANDARD_LIBRARIES := true 1976ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_JAVA_LIBRARIES := core 1986ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_DX_FLAGS := --core-library 1996ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 2006ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_MODULE_TAGS := tests 2016ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_MODULE := core-tests 2026ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 2036ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein include $(BUILD_HOST_JAVA_LIBRARY) 2046ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 20567cc34b75c18ae7d02c90282cb8616b82e1d8fcbElliott Hughesendif 206