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

57
ifeq ($(EMMA_INSTRUMENT),true)
Ying Wang's avatar
Ying Wang committed
58
ifneq ($(EMMA_INSTRUMENT_STATIC),true)
59
    common_core_src_files += $(call all-java-files-under, ../external/emma/core ../external/emma/pregenerated)
60 61
    core_resource_dirs += ../external/emma/core/res ../external/emma/pregenerated/res
endif
Ying Wang's avatar
Ying Wang committed
62
endif
63

64 65 66
libdvm_core_src_files += $(common_core_src_files) $(call all-main-java-files-under,libdvm)
libart_core_src_files += $(common_core_src_files) $(call all-main-java-files-under,libart)

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

#
# Build for the target (device).
#

# Definitions to make the core library.

include $(CLEAR_VARS)
78
LOCAL_SRC_FILES := $(libdvm_core_src_files)
79 80
LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
81
LOCAL_JAVACFLAGS := $(local_javac_flags)
82
LOCAL_DX_FLAGS := --core-library
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
include $(BUILD_JAVA_LIBRARY)

89 90 91 92 93 94 95 96 97 98 99
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(libart_core_src_files)
LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_DX_FLAGS := --core-library
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := core-libart
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
LOCAL_REQUIRED_MODULES := tzdata
include $(BUILD_JAVA_LIBRARY)
100

Kenny Root's avatar
Kenny Root committed
101 102 103 104 105 106 107 108 109
# 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
110
LOCAL_REQUIRED_MODULES := libjavacrypto
Kenny Root's avatar
Kenny Root committed
111 112 113 114 115 116 117 118 119 120 121 122
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
123
include $(BUILD_STATIC_JAVA_LIBRARY)
Kenny Root's avatar
Kenny Root committed
124 125


126
ifeq ($(LIBCORE_SKIP_TESTS),)
Kenny Root's avatar
Kenny Root committed
127
# Make the core-tests library.
128
include $(CLEAR_VARS)
129
LOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom harmony-tests json luni xml)
130 131
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
132
LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit okhttp
133
LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support sqlite-jdbc mockwebserver nist-pkix-tests okhttp-tests
134
LOCAL_JAVACFLAGS := $(local_javac_flags)
135
LOCAL_MODULE := core-tests
136
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
137
include $(BUILD_STATIC_JAVA_LIBRARY)
138
endif
139

140 141 142 143 144 145 146 147 148 149 150 151 152
ifeq ($(LIBCORE_SKIP_TESTS),)
# Make the core-tests-support library.
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-test-java-files-under,support)
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_MODULE := core-tests-support
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_STATIC_JAVA_LIBRARY)
endif

153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
ifeq ($(LIBCORE_SKIP_TESTS),)
# Make the conscrypt-tests library.
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto)
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit
LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support conscrypt-nojarjar
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := conscrypt-tests
LOCAL_REQUIRED_MODULES := libjavacrypto
LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_STATIC_JAVA_LIBRARY)
endif

170 171 172 173
# 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.
174
TMP_RESOURCE_DIR := $(intermediates.COMMON)/tmp/
175 176 177 178 179 180
TMP_RESOURCE_FILE := org/apache/harmony/luni/tests/java/lang/test\#.properties

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

181
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) -C "$(TMP_RESOURCE_DIR)" "$(TMP_RESOURCE_FILE)"
182 183 184 185 186 187 188
$(LOCAL_INTERMEDIATE_TARGETS): $(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE)


#
# Build for the host.
#

Tsu Chiang Chuang's avatar
Tsu Chiang Chuang committed
189 190 191 192 193 194
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)

195 196 197 198
ifeq ($(WITH_HOST_DALVIK),true)

    # Definitions to make the core library.
    include $(CLEAR_VARS)
199
    LOCAL_SRC_FILES := $(libdvm_core_src_files)
200 201
    LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
    LOCAL_NO_STANDARD_LIBRARIES := true
202
    LOCAL_JAVACFLAGS := $(local_javac_flags)
203
    LOCAL_DX_FLAGS := --core-library
204
    LOCAL_BUILD_HOST_DEX := true
Jean-Baptiste Queru's avatar
Jean-Baptiste Queru committed
205
    LOCAL_MODULE_TAGS := optional
Jesse Wilson's avatar
Jesse Wilson committed
206
    LOCAL_MODULE := core-hostdex
207
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
208
    LOCAL_REQUIRED_MODULES := tzdata-host
209
    include $(BUILD_HOST_JAVA_LIBRARY)
210

211 212 213 214 215 216 217 218 219 220 221
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := $(libart_core_src_files)
    LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
    LOCAL_NO_STANDARD_LIBRARIES := true
    LOCAL_JAVACFLAGS := $(local_javac_flags)
    LOCAL_DX_FLAGS := --core-library
    LOCAL_BUILD_HOST_DEX := true
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE := core-libart-hostdex
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
    LOCAL_REQUIRED_MODULES := tzdata-host
222 223
    include $(BUILD_HOST_JAVA_LIBRARY)

Kenny Root's avatar
Kenny Root committed
224 225 226 227 228 229 230 231 232 233
    # 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
234
    LOCAL_REQUIRED_MODULES := libjavacrypto
Kenny Root's avatar
Kenny Root committed
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
    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)

250
    # Make the core-tests library.
251
    ifeq ($(LIBCORE_SKIP_TESTS),)
252
    include $(CLEAR_VARS)
253
    LOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom json luni xml)
254 255
    LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
    LOCAL_NO_STANDARD_LIBRARIES := true
256
    LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex core-junit-hostdex core-tests-support-hostdex okhttp-hostdex
257
    LOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc-host mockwebserver-host nist-pkix-tests-host
258
    LOCAL_JAVACFLAGS := $(local_javac_flags)
Ying Wang's avatar
Ying Wang committed
259
    LOCAL_MODULE_TAGS := optional
260
    LOCAL_MODULE := core-tests-hostdex
261
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
262 263
    LOCAL_BUILD_HOST_DEX := true
    include $(BUILD_HOST_JAVA_LIBRARY)
264
    endif
265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295

    # Make the core-tests-support library.
    ifeq ($(LIBCORE_SKIP_TESTS),)
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := $(call all-test-java-files-under,support)
    LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
    LOCAL_NO_STANDARD_LIBRARIES := true
    LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex core-junit-hostdex
    LOCAL_JAVACFLAGS := $(local_javac_flags)
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE := core-tests-support-hostdex
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
    LOCAL_BUILD_HOST_DEX := true
    include $(BUILD_HOST_JAVA_LIBRARY)
    endif

    # Make the conscrypt-tests library.
    ifeq ($(LIBCORE_SKIP_TESTS),)
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto)
    LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
    LOCAL_NO_STANDARD_LIBRARIES := true
    LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex core-junit-hostdex core-tests-support-hostdex conscrypt-hostdex-nojarjar
    LOCAL_JAVACFLAGS := $(local_javac_flags)
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE := conscrypt-tests-hostdex
    LOCAL_REQUIRED_MODULES := libjavacrypto
    LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
    LOCAL_BUILD_HOST_DEX := true
    include $(BUILD_HOST_JAVA_LIBRARY)
    endif
296
endif
Brian Carlstrom's avatar
Brian Carlstrom committed
297 298 299 300 301 302

#
# Local droiddoc for faster libcore testing
#
#
# Run with:
303
#     mm -j32 libcore-docs
Brian Carlstrom's avatar
Brian Carlstrom committed
304 305
#
# Main output:
306
#     ../out/target/common/docs/libcore/reference/packages.html
Brian Carlstrom's avatar
Brian Carlstrom committed
307 308
#
# All text for proofreading (or running tools over):
309
#     ../out/target/common/docs/libcore-proofread.txt
Brian Carlstrom's avatar
Brian Carlstrom committed
310 311
#
# TODO list of missing javadoc, etc:
312
#     ../out/target/common/docs/libcore-docs-todo.html
Brian Carlstrom's avatar
Brian Carlstrom committed
313 314
#
# Rerun:
315
#     rm -rf ../out/target/common/docs/libcore-timestamp && mm -j32 libcore-docs
Brian Carlstrom's avatar
Brian Carlstrom committed
316 317 318 319 320 321
#
include $(CLEAR_VARS)

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

322
LOCAL_SRC_FILES:=$(call libcore_to_document,$(LOCAL_PATH))
Brian Carlstrom's avatar
Brian Carlstrom committed
323 324
# rerun doc generation without recompiling the java
LOCAL_JAVA_LIBRARIES:=
325
LOCAL_JAVACFLAGS := $(local_javac_flags)
Brian Carlstrom's avatar
Brian Carlstrom committed
326 327 328
LOCAL_MODULE_CLASS:=JAVA_LIBRARIES

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

331
LOCAL_DROIDDOC_OPTIONS := \
Brian Carlstrom's avatar
Brian Carlstrom committed
332 333 334 335 336 337 338 339 340
 -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)