17ee3a061452c5a7e5c8e661219a1f08a14171858Elliott Hughes# -*- mode: makefile -*-
26ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Copyright (C) 2007 The Android Open Source Project
36ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
46ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Licensed under the Apache License, Version 2.0 (the "License");
56ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# you may not use this file except in compliance with the License.
66ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# You may obtain a copy of the License at
76ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
86ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#      http://www.apache.org/licenses/LICENSE-2.0
96ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
106ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Unless required by applicable law or agreed to in writing, software
116ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# distributed under the License is distributed on an "AS IS" BASIS,
126ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# See the License for the specific language governing permissions and
146ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# limitations under the License.
156ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
166ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
176ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Definitions for building the Java library and associated tests.
186ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
196ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
206ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
216ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Common definitions for host and target.
226ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
236ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
24d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson# libcore is divided into modules.
25d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#
26d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson# The structure of each module is:
27d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#
28d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#   src/
29d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#       main/               # To be shipped on every device.
30d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#            java/          # Java source for library code.
31d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#            native/        # C++ source for library code.
32d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#            resources/     # Support files.
33d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#       test/               # Built only on demand, for testing.
34d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#            java/          # Java source for tests.
35d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#            native/        # C++ source for tests (rare).
36d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#            resources/     # Support files.
37d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson#
38d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson# All subdirectories are optional (hence the "2> /dev/null"s below).
396ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
4032cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsondefine all-main-java-files-under
4132cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilson$(foreach dir,$(1),$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find $(dir)/src/main/java -name "*.java" 2> /dev/null)))
4232cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsonendef
4332cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilson
4432cfe9539e1cc988fa433c18c12a89a18afe1f55Jesse Wilsondefine all-test-java-files-under
45302e330bfcd86f54e43c0d4d73c3fadfc334240aBrian Carlstrom$(foreach dir,$(1),$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find $(dir)/src/test/java -name "*.java" 2> /dev/null)))
466ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinendef
476ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
486ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteindefine all-core-resource-dirs
496ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(shell cd $(LOCAL_PATH) && ls -d */src/$(1)/{java,resources} 2> /dev/null)
506ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinendef
516ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
52d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilson# The Java files and their associated resources.
53e590b9c7ecbe9b35c33fd2d101b1abc6bd7d1489Jesse Wilsoncore_src_files := $(call all-main-java-files-under,dalvik dom json luni support xml)
546ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore_resource_dirs := $(call all-core-resource-dirs,main)
556ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteintest_resource_dirs := $(call all-core-resource-dirs,test)
566ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
577898a917ea805abf9f320ed42285ff3adf79968dJesse Wilsonifeq ($(EMMA_INSTRUMENT),true)
58ff053c366fd8277f02773b1c0a6489ad67a794f1Ying Wangifneq ($(EMMA_INSTRUMENT_STATIC),true)
597898a917ea805abf9f320ed42285ff3adf79968dJesse Wilson    core_src_files += $(call all-java-files-under, ../external/emma/core ../external/emma/pregenerated)
607898a917ea805abf9f320ed42285ff3adf79968dJesse Wilson    core_resource_dirs += ../external/emma/core/res ../external/emma/pregenerated/res
617898a917ea805abf9f320ed42285ff3adf79968dJesse Wilsonendif
62ff053c366fd8277f02773b1c0a6489ad67a794f1Ying Wangendif
637898a917ea805abf9f320ed42285ff3adf79968dJesse Wilson
6448d0b3ffb83c2d9f08d9f4debb09e9798cf67c6aElliott Hugheslocal_javac_flags=-encoding UTF-8
6548d0b3ffb83c2d9f08d9f4debb09e9798cf67c6aElliott Hughes#local_javac_flags+=-Xlint:all -Xlint:-serial,-deprecation,-unchecked
6648d0b3ffb83c2d9f08d9f4debb09e9798cf67c6aElliott Hugheslocal_javac_flags+=-Xmaxwarns 9999999
676ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
686ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
696ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Build for the target (device).
706ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
716ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
726ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Definitions to make the core library.
736ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
746ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(CLEAR_VARS)
756ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
766ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_SRC_FILES := $(core_src_files)
776ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
786ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
796ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_NO_STANDARD_LIBRARIES := true
8048d0b3ffb83c2d9f08d9f4debb09e9798cf67c6aElliott HughesLOCAL_JAVACFLAGS := $(local_javac_flags)
816ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_DX_FLAGS := --core-library
826ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
8353fbc0a776feebcc04f6c24b34f2c7ba39e6b5a1Jesse WilsonLOCAL_MODULE_TAGS := optional
846ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE := core
8573d3e262ecf514ef17f47da335fdad899aecc3dcElliott HughesLOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
866ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
876ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(BUILD_JAVA_LIBRARY)
886ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
896ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore-intermediates := ${intermediates}
906ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
916ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
92302e330bfcd86f54e43c0d4d73c3fadfc334240aBrian Carlstrom# Make the core-tests library.
93d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilsoninclude $(CLEAR_VARS)
94302e330bfcd86f54e43c0d4d73c3fadfc334240aBrian CarlstromLOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom json luni support xml)
95d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse WilsonLOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
96d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse WilsonLOCAL_NO_STANDARD_LIBRARIES := true
9737a816a09d0b075033bf81c7787a5037430f430dBrian CarlstromLOCAL_JAVA_LIBRARIES := bouncycastle core core-junit
9809336c914b4fc813e493acc82469b9ad89fd8694Jesse WilsonLOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc mockwebserver
99d610834e0a53866778efdab2a529e7c2f9a75dc9Elliott HughesLOCAL_JAVACFLAGS := $(local_javac_flags)
100d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse WilsonLOCAL_MODULE_TAGS := tests
101b094af3cdc9225356724ff4b4f431fb51f781594Brian CarlstromLOCAL_MODULE := core-tests
10273d3e262ecf514ef17f47da335fdad899aecc3dcElliott HughesLOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
103706d53593cd8841d378dbe298a8d1940db1e71dfJesse Wilsoninclude $(BUILD_STATIC_JAVA_LIBRARY)
104706d53593cd8841d378dbe298a8d1940db1e71dfJesse Wilson
1056ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# This one's tricky. One of our tests needs to have a
1066ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# resource with a "#" in its name, but Perforce doesn't
1076ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# allow us to submit such a file. So we create it here
1086ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# on-the-fly.
10943624e7f4cfd03e0425ad4a4ce818e403900b0d1Ying WangTMP_RESOURCE_DIR := $(intermediates.COMMON)/tmp/
1106ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinTMP_RESOURCE_FILE := org/apache/harmony/luni/tests/java/lang/test\#.properties
1116ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1126ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE):
1136ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein	@mkdir -p $(dir $@)
1146ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein	@echo "Hello, world!" > $@
1156ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
11643624e7f4cfd03e0425ad4a4ce818e403900b0d1Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) -C "$(TMP_RESOURCE_DIR)" "$(TMP_RESOURCE_FILE)"
1176ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(LOCAL_INTERMEDIATE_TARGETS): $(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE)
1186ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1196ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1206ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
1216ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Build for the host.
1226ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
1236ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1246ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinifeq ($(WITH_HOST_DALVIK),true)
1256ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1266ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    # Definitions to make the core library.
1276ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1286ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    include $(CLEAR_VARS)
1296ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1306ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    LOCAL_SRC_FILES := $(core_src_files)
1316ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
1326ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1336ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    LOCAL_NO_STANDARD_LIBRARIES := true
13448d0b3ffb83c2d9f08d9f4debb09e9798cf67c6aElliott Hughes    LOCAL_JAVACFLAGS := $(local_javac_flags)
1356ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    LOCAL_DX_FLAGS := --core-library
1366ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1377898a917ea805abf9f320ed42285ff3adf79968dJesse Wilson    LOCAL_BUILD_HOST_DEX := true
1386ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
139f2678961b60cfe08d8b9aa1210cb75291496f83fJean-Baptiste Queru    LOCAL_MODULE_TAGS := optional
14053fbc0a776feebcc04f6c24b34f2c7ba39e6b5a1Jesse Wilson    LOCAL_MODULE := core-hostdex
14173d3e262ecf514ef17f47da335fdad899aecc3dcElliott Hughes    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
1426ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1436ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    include $(BUILD_HOST_JAVA_LIBRARY)
1446ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
145d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    # Make the core-tests library.
146d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    include $(CLEAR_VARS)
147d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom json luni support xml)
148d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
149d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_NO_STANDARD_LIBRARIES := true
15037a816a09d0b075033bf81c7787a5037430f430dBrian Carlstrom    LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex core-junit-hostdex
15109336c914b4fc813e493acc82469b9ad89fd8694Jesse Wilson    LOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc-host mockwebserver-hostdex
152d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_JAVACFLAGS := $(local_javac_flags)
153e79ac583cf570e66762c93c9bdfea14fd5c6249aYing Wang    LOCAL_MODULE_TAGS := optional
154d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_MODULE := core-tests-hostdex
15573d3e262ecf514ef17f47da335fdad899aecc3dcElliott Hughes    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
156d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_BUILD_HOST_DEX := true
157d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    include $(BUILD_HOST_JAVA_LIBRARY)
15867cc34b75c18ae7d02c90282cb8616b82e1d8fcbElliott Hughesendif
159dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
160dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
161dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# Local droiddoc for faster libcore testing
162dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
163dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
164dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# Run with:
165dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     m libcore-docs
166dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
167dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# Main output:
168dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     out/target/common/docs/libcore/reference/packages.html
169dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
170dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# All text for proofreading (or running tools over):
171dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     out/target/common/docs/libcore-proofread.txt
172dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
173dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# TODO list of missing javadoc, etc:
174dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     out/target/common/docs/libcore-docs-todo.html
175dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
176dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# Rerun:
177dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     rm -rf out/target/common/docs/libcore-timestamp && m libcore-docs
178dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
179dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrominclude $(CLEAR_VARS)
180dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
181dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# for shared defintion of libcore_to_document
182dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrominclude $(LOCAL_PATH)/Docs.mk
183dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
184cfa84a2aac159bb8a1763298882df7aa98f7fc6fBrian CarlstromLOCAL_SRC_FILES:=$(call libcore_to_document,$(LOCAL_PATH))
185dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# rerun doc generation without recompiling the java
186dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_JAVA_LIBRARIES:=
187d610834e0a53866778efdab2a529e7c2f9a75dc9Elliott HughesLOCAL_JAVACFLAGS := $(local_javac_flags)
188dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_MODULE_CLASS:=JAVA_LIBRARIES
189dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
190dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_MODULE := libcore
19173d3e262ecf514ef17f47da335fdad899aecc3dcElliott HughesLOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
192dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
193dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_DROIDDOC_OPTIONS:= \
194dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -offlinemode \
195dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -title "libcore" \
196dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -proofread $(OUT_DOCS)/$(LOCAL_MODULE)-proofread.txt \
197dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -todo ../$(LOCAL_MODULE)-docs-todo.html \
198dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -hdf android.whichdoc offline
199dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
200dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
201dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
202dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrominclude $(BUILD_DROIDDOC)
203