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