JavaLibrary.mk revision e79ac583cf570e66762c93c9bdfea14fd5c6249a
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
856ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
866ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(BUILD_JAVA_LIBRARY)
876ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
886ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore-intermediates := ${intermediates}
896ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
906ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
91302e330bfcd86f54e43c0d4d73c3fadfc334240aBrian Carlstrom# Make the core-tests library.
92d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse Wilsoninclude $(CLEAR_VARS)
93302e330bfcd86f54e43c0d4d73c3fadfc334240aBrian CarlstromLOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom json luni support xml)
94d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse WilsonLOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
95d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse WilsonLOCAL_NO_STANDARD_LIBRARIES := true
9637a816a09d0b075033bf81c7787a5037430f430dBrian CarlstromLOCAL_JAVA_LIBRARIES := bouncycastle core core-junit
9709336c914b4fc813e493acc82469b9ad89fd8694Jesse WilsonLOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc mockwebserver
98d610834e0a53866778efdab2a529e7c2f9a75dc9Elliott HughesLOCAL_JAVACFLAGS := $(local_javac_flags)
99d5d3526b485a6d79ec06598540ce77c6f3698f01Jesse WilsonLOCAL_MODULE_TAGS := tests
100b094af3cdc9225356724ff4b4f431fb51f781594Brian CarlstromLOCAL_MODULE := core-tests
101706d53593cd8841d378dbe298a8d1940db1e71dfJesse Wilsoninclude $(BUILD_STATIC_JAVA_LIBRARY)
102706d53593cd8841d378dbe298a8d1940db1e71dfJesse Wilson
1036ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# This one's tricky. One of our tests needs to have a
1046ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# resource with a "#" in its name, but Perforce doesn't
1056ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# allow us to submit such a file. So we create it here
1066ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# on-the-fly.
10743624e7f4cfd03e0425ad4a4ce818e403900b0d1Ying WangTMP_RESOURCE_DIR := $(intermediates.COMMON)/tmp/
1086ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinTMP_RESOURCE_FILE := org/apache/harmony/luni/tests/java/lang/test\#.properties
1096ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1106ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE):
1116ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein	@mkdir -p $(dir $@)
1126ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein	@echo "Hello, world!" > $@
1136ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
11443624e7f4cfd03e0425ad4a4ce818e403900b0d1Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) -C "$(TMP_RESOURCE_DIR)" "$(TMP_RESOURCE_FILE)"
1156ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(LOCAL_INTERMEDIATE_TARGETS): $(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE)
1166ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1176ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1186ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
1196ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Build for the host.
1206ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein#
1216ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1226ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinifeq ($(WITH_HOST_DALVIK),true)
1236ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1246ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    # Definitions to make the core library.
1256ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1266ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    include $(CLEAR_VARS)
1276ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1286ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    LOCAL_SRC_FILES := $(core_src_files)
1296ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
1306ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1316ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    LOCAL_NO_STANDARD_LIBRARIES := true
13248d0b3ffb83c2d9f08d9f4debb09e9798cf67c6aElliott Hughes    LOCAL_JAVACFLAGS := $(local_javac_flags)
1336ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    LOCAL_DX_FLAGS := --core-library
1346ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1357898a917ea805abf9f320ed42285ff3adf79968dJesse Wilson    LOCAL_BUILD_HOST_DEX := true
1366ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
137f2678961b60cfe08d8b9aa1210cb75291496f83fJean-Baptiste Queru    LOCAL_MODULE_TAGS := optional
13853fbc0a776feebcc04f6c24b34f2c7ba39e6b5a1Jesse Wilson    LOCAL_MODULE := core-hostdex
1396ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
1406ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein    include $(BUILD_HOST_JAVA_LIBRARY)
1416ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein
142d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    # Make the core-tests library.
143d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    include $(CLEAR_VARS)
144d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom json luni support xml)
145d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
146d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_NO_STANDARD_LIBRARIES := true
14737a816a09d0b075033bf81c7787a5037430f430dBrian Carlstrom    LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex core-junit-hostdex
14809336c914b4fc813e493acc82469b9ad89fd8694Jesse Wilson    LOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc-host mockwebserver-hostdex
149d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_JAVACFLAGS := $(local_javac_flags)
150e79ac583cf570e66762c93c9bdfea14fd5c6249aYing Wang    LOCAL_MODULE_TAGS := optional
151d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_MODULE := core-tests-hostdex
152d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    LOCAL_BUILD_HOST_DEX := true
153d39b1d6298afe1cf6364d4d118596045005c8688Brian Carlstrom    include $(BUILD_HOST_JAVA_LIBRARY)
15467cc34b75c18ae7d02c90282cb8616b82e1d8fcbElliott Hughesendif
155dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
156dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
157dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# Local droiddoc for faster libcore testing
158dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
159dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
160dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# Run with:
161dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     m libcore-docs
162dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
163dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# Main output:
164dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     out/target/common/docs/libcore/reference/packages.html
165dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
166dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# All text for proofreading (or running tools over):
167dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     out/target/common/docs/libcore-proofread.txt
168dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
169dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# TODO list of missing javadoc, etc:
170dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     out/target/common/docs/libcore-docs-todo.html
171dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
172dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# Rerun:
173dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#     rm -rf out/target/common/docs/libcore-timestamp && m libcore-docs
174dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom#
175dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrominclude $(CLEAR_VARS)
176dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
177dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# for shared defintion of libcore_to_document
178dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrominclude $(LOCAL_PATH)/Docs.mk
179dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
180cfa84a2aac159bb8a1763298882df7aa98f7fc6fBrian CarlstromLOCAL_SRC_FILES:=$(call libcore_to_document,$(LOCAL_PATH))
181dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom# rerun doc generation without recompiling the java
182dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_JAVA_LIBRARIES:=
183d610834e0a53866778efdab2a529e7c2f9a75dc9Elliott HughesLOCAL_JAVACFLAGS := $(local_javac_flags)
184dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_MODULE_CLASS:=JAVA_LIBRARIES
185dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
186dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_MODULE := libcore
187dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
188dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_DROIDDOC_OPTIONS:= \
189dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -offlinemode \
190dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -title "libcore" \
191dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -proofread $(OUT_DOCS)/$(LOCAL_MODULE)-proofread.txt \
192dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -todo ../$(LOCAL_MODULE)-docs-todo.html \
193dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom -hdf android.whichdoc offline
194dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
195dc3c15284f838a1330135249b7b8255b616b4670Brian CarlstromLOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
196dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrom
197dc3c15284f838a1330135249b7b8255b616b4670Brian Carlstrominclude $(BUILD_DROIDDOC)
198