JavaLibrary.mk 9.16 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 dex dom json luni support xml)
54
core_src_files += $(call all-main-java-files-under,libdvm)
55 56 57
core_resource_dirs := $(call all-core-resource-dirs,main)
test_resource_dirs := $(call all-core-resource-dirs,test)

58
ifeq ($(EMMA_INSTRUMENT),true)
Ying Wang's avatar
Ying Wang committed
59
ifneq ($(EMMA_INSTRUMENT_STATIC),true)
60 61 62
    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
Ying Wang's avatar
Ying Wang committed
63
endif
64

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

#
# 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
81
LOCAL_JAVACFLAGS := $(local_javac_flags)
82 83
LOCAL_DX_FLAGS := --core-library

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

include $(BUILD_JAVA_LIBRARY)

core-intermediates := ${intermediates}


Kenny Root's avatar
Kenny Root committed
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
# Create the conscrypt library
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-main-java-files-under,crypto)
LOCAL_JAVA_LIBRARIES := core
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := conscrypt
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_JAVA_LIBRARY)

# Create the conscrypt library without jarjar for tests
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-main-java-files-under,crypto)
LOCAL_JAVA_LIBRARIES := core
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := conscrypt-nojarjar
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_JAVA_LIBRARY)


118
ifeq ($(LIBCORE_SKIP_TESTS),)
Kenny Root's avatar
Kenny Root committed
119
# Make the core-tests library.
120
include $(CLEAR_VARS)
121
LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto dalvik dom harmony-tests json luni support xml)
122 123
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
Kenny Root's avatar
Kenny Root committed
124
LOCAL_JAVA_LIBRARIES := bouncycastle core conscrypt-nojarjar core-junit okhttp
125
LOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc mockwebserver nist-pkix-tests okhttp-tests
126
LOCAL_JAVACFLAGS := $(local_javac_flags)
Kenny Root's avatar
Kenny Root committed
127
LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
128
LOCAL_MODULE := core-tests
129
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
130
include $(BUILD_STATIC_JAVA_LIBRARY)
131
endif
132

133 134 135 136 137 138 139 140 141 142 143 144 145
ifeq ($(LIBCORE_SKIP_TESTS),)
# Make the jsr166-tests library.
include $(CLEAR_VARS)
LOCAL_SRC_FILES :=  $(call all-test-java-files-under, jsr166-tests)
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := core core-junit
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_MODULE := jsr166-tests
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_STATIC_JAVA_LIBRARY)
endif

146 147 148 149
# 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.
150
TMP_RESOURCE_DIR := $(intermediates.COMMON)/tmp/
151 152 153 154 155 156
TMP_RESOURCE_FILE := org/apache/harmony/luni/tests/java/lang/test\#.properties

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

157
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) -C "$(TMP_RESOURCE_DIR)" "$(TMP_RESOURCE_FILE)"
158 159 160 161 162 163 164
$(LOCAL_INTERMEDIATE_TARGETS): $(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE)


#
# Build for the host.
#

Tsu Chiang Chuang's avatar
Tsu Chiang Chuang committed
165 166 167 168 169 170
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-main-java-files-under, dex)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := dex-host
include $(BUILD_HOST_JAVA_LIBRARY)

171 172 173 174 175 176 177 178 179 180
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
181
    LOCAL_JAVACFLAGS := $(local_javac_flags)
182 183
    LOCAL_DX_FLAGS := --core-library

184
    LOCAL_BUILD_HOST_DEX := true
185

Jean-Baptiste Queru's avatar
Jean-Baptiste Queru committed
186
    LOCAL_MODULE_TAGS := optional
Jesse Wilson's avatar
Jesse Wilson committed
187
    LOCAL_MODULE := core-hostdex
188
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
189
    LOCAL_REQUIRED_MODULES := tzdata-host
190 191 192

    include $(BUILD_HOST_JAVA_LIBRARY)

Kenny Root's avatar
Kenny Root committed
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
    # Make the conscrypt-hostdex library
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := $(call all-main-java-files-under,crypto)
    LOCAL_JAVA_LIBRARIES := core-hostdex
    LOCAL_NO_STANDARD_LIBRARIES := true
    LOCAL_JAVACFLAGS := $(local_javac_flags)
    LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
    LOCAL_BUILD_HOST_DEX := true
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE := conscrypt-hostdex
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
    include $(BUILD_HOST_JAVA_LIBRARY)

    # Make the conscrypt-hostdex-nojarjar for tests
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := $(call all-main-java-files-under,crypto)
    LOCAL_JAVA_LIBRARIES := core-hostdex
    LOCAL_NO_STANDARD_LIBRARIES := true
    LOCAL_JAVACFLAGS := $(local_javac_flags)
    LOCAL_BUILD_HOST_DEX := true
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE := conscrypt-hostdex-nojarjar
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
    include $(BUILD_HOST_JAVA_LIBRARY)

218
    # Make the core-tests library.
219
    ifeq ($(LIBCORE_SKIP_TESTS),)
220
    include $(CLEAR_VARS)
Kenny Root's avatar
Kenny Root committed
221
    LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto dalvik dom json luni support xml)
222 223
    LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
    LOCAL_NO_STANDARD_LIBRARIES := true
Kenny Root's avatar
Kenny Root committed
224
    LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex conscrypt-hostdex-nojarjar core-junit-hostdex okhttp-hostdex
225
    LOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc-host mockwebserver-host nist-pkix-tests-host
226
    LOCAL_JAVACFLAGS := $(local_javac_flags)
Kenny Root's avatar
Kenny Root committed
227
    LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
Ying Wang's avatar
Ying Wang committed
228
    LOCAL_MODULE_TAGS := optional
229
    LOCAL_MODULE := core-tests-hostdex
230
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
231 232
    LOCAL_BUILD_HOST_DEX := true
    include $(BUILD_HOST_JAVA_LIBRARY)
233
    endif
234
endif
Brian Carlstrom's avatar
Brian Carlstrom committed
235 236 237 238 239 240

#
# Local droiddoc for faster libcore testing
#
#
# Run with:
241
#     mm -j32 libcore-docs
Brian Carlstrom's avatar
Brian Carlstrom committed
242 243
#
# Main output:
244
#     ../out/target/common/docs/libcore/reference/packages.html
Brian Carlstrom's avatar
Brian Carlstrom committed
245 246
#
# All text for proofreading (or running tools over):
247
#     ../out/target/common/docs/libcore-proofread.txt
Brian Carlstrom's avatar
Brian Carlstrom committed
248 249
#
# TODO list of missing javadoc, etc:
250
#     ../out/target/common/docs/libcore-docs-todo.html
Brian Carlstrom's avatar
Brian Carlstrom committed
251 252
#
# Rerun:
253
#     rm -rf ../out/target/common/docs/libcore-timestamp && mm -j32 libcore-docs
Brian Carlstrom's avatar
Brian Carlstrom committed
254 255 256 257 258 259
#
include $(CLEAR_VARS)

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

260
LOCAL_SRC_FILES:=$(call libcore_to_document,$(LOCAL_PATH))
Brian Carlstrom's avatar
Brian Carlstrom committed
261 262
# rerun doc generation without recompiling the java
LOCAL_JAVA_LIBRARIES:=
263
LOCAL_JAVACFLAGS := $(local_javac_flags)
Brian Carlstrom's avatar
Brian Carlstrom committed
264 265 266
LOCAL_MODULE_CLASS:=JAVA_LIBRARIES

LOCAL_MODULE := libcore
267
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
Brian Carlstrom's avatar
Brian Carlstrom committed
268

269
LOCAL_DROIDDOC_OPTIONS := \
Brian Carlstrom's avatar
Brian Carlstrom committed
270 271 272 273 274 275 276 277 278
 -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)