JavaLibrary.mk 6.61 KB
Newer Older
1
# -*- mode: makefile -*-
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
# Copyright (C) 2007 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#
# Definitions for building the Java library and associated tests.
#

#
# Common definitions for host and target.
#

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
# libcore is divided into modules.
#
# The structure of each module is:
#
#   src/
#       main/               # To be shipped on every device.
#            java/          # Java source for library code.
#            native/        # C++ source for library code.
#            resources/     # Support files.
#       test/               # Built only on demand, for testing.
#            java/          # Java source for tests.
#            native/        # C++ source for tests (rare).
#            resources/     # Support files.
#
# All subdirectories are optional (hence the "2> /dev/null"s below).
39

40 41 42 43 44
define all-main-java-files-under
$(foreach dir,$(1),$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find $(dir)/src/main/java -name "*.java" 2> /dev/null)))
endef

define all-test-java-files-under
45
$(foreach dir,$(1),$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find $(dir)/src/test/java -name "*.java" 2> /dev/null)))
46 47 48 49 50 51
endef

define all-core-resource-dirs
$(shell cd $(LOCAL_PATH) && ls -d */src/$(1)/{java,resources} 2> /dev/null)
endef

52
# The Java files and their associated resources.
53
core_src_files := $(call all-main-java-files-under,dalvik dom json luni support xml)
54 55 56
core_resource_dirs := $(call all-core-resource-dirs,main)
test_resource_dirs := $(call all-core-resource-dirs,test)

57 58 59 60 61
ifeq ($(EMMA_INSTRUMENT),true)
    core_src_files += $(call all-java-files-under, ../external/emma/core ../external/emma/pregenerated)
    core_resource_dirs += ../external/emma/core/res ../external/emma/pregenerated/res
endif

62 63 64
local_javac_flags=-encoding UTF-8
#local_javac_flags+=-Xlint:all -Xlint:-serial,-deprecation,-unchecked
local_javac_flags+=-Xmaxwarns 9999999
65 66 67 68 69 70 71 72 73 74 75 76 77

#
# Build for the target (device).
#

# Definitions to make the core library.

include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(core_src_files)
LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)

LOCAL_NO_STANDARD_LIBRARIES := true
78
LOCAL_JAVACFLAGS := $(local_javac_flags)
79 80 81 82
LOCAL_DX_FLAGS := --core-library

LOCAL_NO_EMMA_INSTRUMENT := true
LOCAL_NO_EMMA_COMPILE := true
Jesse Wilson's avatar
Jesse Wilson committed
83
LOCAL_MODULE_TAGS := optional
84
LOCAL_MODULE := core
85
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
86
LOCAL_REQUIRED_MODULES := tzdata
87 88 89 90 91 92

include $(BUILD_JAVA_LIBRARY)

core-intermediates := ${intermediates}


93
# Make the core-tests library.
94
ifeq ($(LIBCORE_SKIP_TESTS),)
95
include $(CLEAR_VARS)
96
LOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom json luni support xml)
97 98
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
99
LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit
100
LOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc mockwebserver
101
LOCAL_JAVACFLAGS := $(local_javac_flags)
102
LOCAL_MODULE := core-tests
103
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
104 105
LOCAL_NO_EMMA_INSTRUMENT := true
LOCAL_NO_EMMA_COMPILE := true
106
include $(BUILD_STATIC_JAVA_LIBRARY)
107
endif
108

109 110 111 112
# This one's tricky. One of our tests needs to have a
# resource with a "#" in its name, but Perforce doesn't
# allow us to submit such a file. So we create it here
# on-the-fly.
113
TMP_RESOURCE_DIR := $(intermediates.COMMON)/tmp/
114 115 116 117 118 119
TMP_RESOURCE_FILE := org/apache/harmony/luni/tests/java/lang/test\#.properties

$(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE):
	@mkdir -p $(dir $@)
	@echo "Hello, world!" > $@

120
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) -C "$(TMP_RESOURCE_DIR)" "$(TMP_RESOURCE_FILE)"
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
$(LOCAL_INTERMEDIATE_TARGETS): $(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE)


#
# Build for the host.
#

ifeq ($(WITH_HOST_DALVIK),true)

    # Definitions to make the core library.

    include $(CLEAR_VARS)

    LOCAL_SRC_FILES := $(core_src_files)
    LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)

    LOCAL_NO_STANDARD_LIBRARIES := true
138
    LOCAL_JAVACFLAGS := $(local_javac_flags)
139 140 141 142
    LOCAL_DX_FLAGS := --core-library

    LOCAL_NO_EMMA_INSTRUMENT := true
    LOCAL_NO_EMMA_COMPILE := true
143
    LOCAL_BUILD_HOST_DEX := true
144

Jean-Baptiste Queru's avatar
Jean-Baptiste Queru committed
145
    LOCAL_MODULE_TAGS := optional
Jesse Wilson's avatar
Jesse Wilson committed
146
    LOCAL_MODULE := core-hostdex
147
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
148
    LOCAL_REQUIRED_MODULES := tzdata-host
149 150 151

    include $(BUILD_HOST_JAVA_LIBRARY)

152
    # Make the core-tests library.
153
    ifeq ($(LIBCORE_SKIP_TESTS),)
154 155 156 157
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom json luni support xml)
    LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
    LOCAL_NO_STANDARD_LIBRARIES := true
158
    LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex core-junit-hostdex
159
    LOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc-host mockwebserver-hostdex
160
    LOCAL_JAVACFLAGS := $(local_javac_flags)
Ying Wang's avatar
Ying Wang committed
161
    LOCAL_MODULE_TAGS := optional
162
    LOCAL_MODULE := core-tests-hostdex
163
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
164 165 166 167
    LOCAL_NO_EMMA_INSTRUMENT := true
    LOCAL_NO_EMMA_COMPILE := true
    LOCAL_BUILD_HOST_DEX := true
    include $(BUILD_HOST_JAVA_LIBRARY)
168
    endif
169
endif
Brian Carlstrom's avatar
Brian Carlstrom committed
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194

#
# Local droiddoc for faster libcore testing
#
#
# Run with:
#     m libcore-docs
#
# Main output:
#     out/target/common/docs/libcore/reference/packages.html
#
# All text for proofreading (or running tools over):
#     out/target/common/docs/libcore-proofread.txt
#
# TODO list of missing javadoc, etc:
#     out/target/common/docs/libcore-docs-todo.html
#
# Rerun:
#     rm -rf out/target/common/docs/libcore-timestamp && m libcore-docs
#
include $(CLEAR_VARS)

# for shared defintion of libcore_to_document
include $(LOCAL_PATH)/Docs.mk

195
LOCAL_SRC_FILES:=$(call libcore_to_document,$(LOCAL_PATH))
Brian Carlstrom's avatar
Brian Carlstrom committed
196 197
# rerun doc generation without recompiling the java
LOCAL_JAVA_LIBRARIES:=
198
LOCAL_JAVACFLAGS := $(local_javac_flags)
Brian Carlstrom's avatar
Brian Carlstrom committed
199 200 201
LOCAL_MODULE_CLASS:=JAVA_LIBRARIES

LOCAL_MODULE := libcore
202
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
Brian Carlstrom's avatar
Brian Carlstrom committed
203 204 205 206 207 208 209 210 211 212 213

LOCAL_DROIDDOC_OPTIONS:= \
 -offlinemode \
 -title "libcore" \
 -proofread $(OUT_DOCS)/$(LOCAL_MODULE)-proofread.txt \
 -todo ../$(LOCAL_MODULE)-docs-todo.html \
 -hdf android.whichdoc offline

LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk

include $(BUILD_DROIDDOC)