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