blob: 210928bc50e050cf53b3af07889efc8b4f34f45d [file] [log] [blame]
Elliott Hughes7ee3a062010-02-18 17:20:15 -08001# -*- mode: makefile -*-
Dan Bornstein6ac43c22009-10-24 15:33:49 -07002# Copyright (C) 2007 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16#
17# Definitions for building the Java library and associated tests.
18#
19
20#
21# Common definitions for host and target.
22#
23
24# The core library is divided into modules. Each module has a separate
25# Java source directory, and some (hopefully eventually all) also have
26# a directory for tests.
27
28define all-core-java-files
29$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find */src/$(1)/java -name "*.java"))
30endef
31
Elliott Hughes7ee3a062010-02-18 17:20:15 -080032define all-test-java-files-under
33$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find $(1)/src/test/java -name "*.java"))
34endef
35
Dan Bornstein6ac43c22009-10-24 15:33:49 -070036# Redirect ls stderr to /dev/null because the corresponding resources
37# directories don't always exist.
38define all-core-resource-dirs
Elliott Hughes7ee3a062010-02-18 17:20:15 -080039$(shell cd $(LOCAL_PATH) && ls -d */src/test/{java,resources} 2> /dev/null)
Dan Bornstein6ac43c22009-10-24 15:33:49 -070040endef
41
42# The core Java files and associated resources.
43core_src_files := $(call all-core-java-files,main)
44core_resource_dirs := $(call all-core-resource-dirs,main)
45
Elliott Hughes7ee3a062010-02-18 17:20:15 -080046# The tests' associated resources.
47test_resource_dirs := $(call all-core-resource-dirs)
Dan Bornstein6ac43c22009-10-24 15:33:49 -070048
49
50#
51# Build for the target (device).
52#
53
54# Definitions to make the core library.
55
56include $(CLEAR_VARS)
57
58LOCAL_SRC_FILES := $(core_src_files)
59LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
60
61LOCAL_NO_STANDARD_LIBRARIES := true
62LOCAL_DX_FLAGS := --core-library
63
64LOCAL_NO_EMMA_INSTRUMENT := true
65LOCAL_NO_EMMA_COMPILE := true
66
67LOCAL_MODULE := core
68
69include $(BUILD_JAVA_LIBRARY)
70
71core-intermediates := ${intermediates}
72
73
Elliott Hughes7ee3a062010-02-18 17:20:15 -080074
75
76# Definitions to make the core-tests libraries.
77#
78# We make a library per module, because otherwise the .jar files get too
79# large, to the point that dx(1) can't cope (and the build is
80# ridiculously slow).
81#
82# TODO: DalvikRunner will make this nonsense obsolete.
Dan Bornstein6ac43c22009-10-24 15:33:49 -070083
84include $(CLEAR_VARS)
Elliott Hughes7ee3a062010-02-18 17:20:15 -080085LOCAL_SRC_FILES := $(call all-test-java-files-under,annotation)
Dan Bornstein6ac43c22009-10-24 15:33:49 -070086LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
Elliott Hughes7ee3a062010-02-18 17:20:15 -080087LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -080088LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -080089LOCAL_DX_FLAGS := --core-library
90LOCAL_MODULE_TAGS := tests
91LOCAL_MODULE := core-tests-annotation
92include $(BUILD_JAVA_LIBRARY)
Dan Bornstein6ac43c22009-10-24 15:33:49 -070093
Elliott Hughes7ee3a062010-02-18 17:20:15 -080094include $(CLEAR_VARS)
95LOCAL_SRC_FILES := $(call all-test-java-files-under,archive)
96LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
97LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -080098LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -080099LOCAL_DX_FLAGS := --core-library
100LOCAL_MODULE_TAGS := tests
101LOCAL_MODULE := core-tests-archive
102include $(BUILD_JAVA_LIBRARY)
103
104include $(CLEAR_VARS)
105LOCAL_SRC_FILES := $(call all-test-java-files-under,concurrent)
106LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
107LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800108LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800109LOCAL_DX_FLAGS := --core-library
110LOCAL_MODULE_TAGS := tests
111LOCAL_MODULE := core-tests-concurrent
112include $(BUILD_JAVA_LIBRARY)
113
114include $(CLEAR_VARS)
115LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto)
116LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
117LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800118LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800119LOCAL_DX_FLAGS := --core-library
120LOCAL_MODULE_TAGS := tests
121LOCAL_MODULE := core-tests-crypto
122include $(BUILD_JAVA_LIBRARY)
123
124include $(CLEAR_VARS)
125LOCAL_SRC_FILES := $(call all-test-java-files-under,dom)
126LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
127LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800128LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800129LOCAL_DX_FLAGS := --core-library
130LOCAL_MODULE_TAGS := tests
131LOCAL_MODULE := core-tests-dom
132include $(BUILD_JAVA_LIBRARY)
133
134include $(CLEAR_VARS)
135LOCAL_SRC_FILES := $(call all-test-java-files-under,icu)
136LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
137LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800138LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800139LOCAL_DX_FLAGS := --core-library
140LOCAL_MODULE_TAGS := tests
141LOCAL_MODULE := core-tests-icu
142include $(BUILD_JAVA_LIBRARY)
143
144include $(CLEAR_VARS)
Elliott Hughesbf1ecf22010-02-22 12:45:26 -0800145LOCAL_SRC_FILES := $(call all-test-java-files-under,json)
146LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
147LOCAL_NO_STANDARD_LIBRARIES := true
148LOCAL_JAVA_LIBRARIES := core core-tests-support
149LOCAL_DX_FLAGS := --core-library
150LOCAL_MODULE_TAGS := tests
151LOCAL_MODULE := core-tests-json
152include $(BUILD_JAVA_LIBRARY)
153
154include $(CLEAR_VARS)
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800155LOCAL_SRC_FILES := $(call all-test-java-files-under,logging)
156LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
157LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800158LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800159LOCAL_DX_FLAGS := --core-library
160LOCAL_MODULE_TAGS := tests
161LOCAL_MODULE := core-tests-logging
162include $(BUILD_JAVA_LIBRARY)
163
164include $(CLEAR_VARS)
165LOCAL_SRC_FILES := $(call all-test-java-files-under,luni-kernel)
166LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
167LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800168LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800169LOCAL_DX_FLAGS := --core-library
170LOCAL_MODULE_TAGS := tests
171LOCAL_MODULE := core-tests-luni-kernel
172include $(BUILD_JAVA_LIBRARY)
173
174include $(CLEAR_VARS)
175LOCAL_SRC_FILES := $(call all-test-java-files-under,luni)
176LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
177LOCAL_NO_STANDARD_LIBRARIES := true
178# This module contains the top-level "tests.AllTests" that ties everything
179# together, so it has compile-time dependencies on all the other test
180# libraries.
181# TODO: we should have a bogus module that just contains tests.AllTests for speed.
Elliott Hughesbf1ecf22010-02-22 12:45:26 -0800182LOCAL_JAVA_LIBRARIES := \
183 core \
184 core-tests-support \
185 core-tests-annotation \
186 core-tests-archive \
187 core-tests-concurrent \
188 core-tests-crypto \
189 core-tests-dom \
190 core-tests-icu \
191 core-tests-json \
192 core-tests-logging \
193 core-tests-luni-kernel \
194 core-tests-math \
195 core-tests-nio \
196 core-tests-nio_char \
197 core-tests-prefs \
198 core-tests-regex \
199 core-tests-security \
200 core-tests-sql \
201 core-tests-suncompat \
202 core-tests-text \
203 core-tests-x-net \
204 core-tests-xml
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800205LOCAL_DX_FLAGS := --core-library
206LOCAL_MODULE_TAGS := tests
207LOCAL_MODULE := core-tests-luni
208include $(BUILD_JAVA_LIBRARY)
209
210include $(CLEAR_VARS)
211LOCAL_SRC_FILES := $(call all-test-java-files-under,math)
212LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
213LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800214LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800215LOCAL_DX_FLAGS := --core-library
216LOCAL_MODULE_TAGS := tests
217LOCAL_MODULE := core-tests-math
218include $(BUILD_JAVA_LIBRARY)
219
220include $(CLEAR_VARS)
221LOCAL_SRC_FILES := $(call all-test-java-files-under,nio)
222LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
223LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800224LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800225LOCAL_DX_FLAGS := --core-library
226LOCAL_MODULE_TAGS := tests
227LOCAL_MODULE := core-tests-nio
228include $(BUILD_JAVA_LIBRARY)
229
230include $(CLEAR_VARS)
231LOCAL_SRC_FILES := $(call all-test-java-files-under,nio_char)
232LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
233LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800234LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800235LOCAL_DX_FLAGS := --core-library
236LOCAL_MODULE_TAGS := tests
237LOCAL_MODULE := core-tests-nio_char
238include $(BUILD_JAVA_LIBRARY)
239
240include $(CLEAR_VARS)
241LOCAL_SRC_FILES := $(call all-test-java-files-under,prefs)
242LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
243LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800244LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800245LOCAL_DX_FLAGS := --core-library
246LOCAL_MODULE_TAGS := tests
247LOCAL_MODULE := core-tests-prefs
248include $(BUILD_JAVA_LIBRARY)
249
250include $(CLEAR_VARS)
251LOCAL_SRC_FILES := $(call all-test-java-files-under,regex)
252LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
253LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800254LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800255LOCAL_DX_FLAGS := --core-library
256LOCAL_MODULE_TAGS := tests
257LOCAL_MODULE := core-tests-regex
258include $(BUILD_JAVA_LIBRARY)
259
260include $(CLEAR_VARS)
261LOCAL_SRC_FILES := $(call all-test-java-files-under,security)
262LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
263LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800264LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800265LOCAL_DX_FLAGS := --core-library
266LOCAL_MODULE_TAGS := tests
267LOCAL_MODULE := core-tests-security
268include $(BUILD_JAVA_LIBRARY)
269
270include $(CLEAR_VARS)
271LOCAL_SRC_FILES := $(call all-test-java-files-under,sql)
272LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
273LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800274LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800275LOCAL_DX_FLAGS := --core-library
276LOCAL_MODULE_TAGS := tests
277LOCAL_MODULE := core-tests-sql
278include $(BUILD_JAVA_LIBRARY)
279
280include $(CLEAR_VARS)
281LOCAL_SRC_FILES := $(call all-test-java-files-under,suncompat)
282LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
283LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800284LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800285LOCAL_DX_FLAGS := --core-library
286LOCAL_MODULE_TAGS := tests
287LOCAL_MODULE := core-tests-suncompat
288include $(BUILD_JAVA_LIBRARY)
289
290include $(CLEAR_VARS)
291LOCAL_SRC_FILES := $(call all-test-java-files-under,support)
292LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700293LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughes67cc34b2010-02-19 22:14:19 -0800294LOCAL_JAVA_LIBRARIES := core
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700295LOCAL_DX_FLAGS := --core-library
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700296LOCAL_MODULE_TAGS := tests
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800297LOCAL_MODULE := core-tests-support
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700298include $(BUILD_JAVA_LIBRARY)
299
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800300include $(CLEAR_VARS)
301LOCAL_SRC_FILES := $(call all-test-java-files-under,text)
302LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
303LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800304LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800305LOCAL_DX_FLAGS := --core-library
306LOCAL_MODULE_TAGS := tests
307LOCAL_MODULE := core-tests-text
308include $(BUILD_JAVA_LIBRARY)
309
310include $(CLEAR_VARS)
311LOCAL_SRC_FILES := $(call all-test-java-files-under,x-net)
312LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
313LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800314LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800315LOCAL_DX_FLAGS := --core-library
316LOCAL_MODULE_TAGS := tests
317LOCAL_MODULE := core-tests-x-net
318include $(BUILD_JAVA_LIBRARY)
319
320include $(CLEAR_VARS)
321LOCAL_SRC_FILES := $(call all-test-java-files-under,xml)
322LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
323LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800324LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800325LOCAL_DX_FLAGS := --core-library
326LOCAL_MODULE_TAGS := tests
327LOCAL_MODULE := core-tests-xml
328include $(BUILD_JAVA_LIBRARY)
329
330
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700331
332
333# This one's tricky. One of our tests needs to have a
334# resource with a "#" in its name, but Perforce doesn't
335# allow us to submit such a file. So we create it here
336# on-the-fly.
337TMP_RESOURCE_DIR := $(OUT_DIR)/tmp/
338TMP_RESOURCE_FILE := org/apache/harmony/luni/tests/java/lang/test\#.properties
339
340$(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE):
341 @mkdir -p $(dir $@)
342 @echo "Hello, world!" > $@
343
344$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) -C $(TMP_RESOURCE_DIR) $(TMP_RESOURCE_FILE)
345$(LOCAL_INTERMEDIATE_TARGETS): $(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE)
346
347# Definitions for building a version of the core-tests.jar
348# that is suitable for execution on the RI. This JAR would
349# be better located in $HOST_OUT_JAVA_LIBRARIES, but it is
350# not possible to refer to that from a shell script (the
351# variable is not exported from envsetup.sh). There is also
352# some trickery involved: we need to include some classes
353# that reside in core.jar, but since we cannot incldue the
354# whole core.jar in the RI classpath, we copy those classses
355# over to our new file.
356HOST_CORE_JAR := $(HOST_COMMON_OUT_ROOT)/core-tests.jar
357
358$(HOST_CORE_JAR): PRIVATE_LOCAL_BUILT_MODULE := $(LOCAL_BUILT_MODULE)
359$(HOST_CORE_JAR): PRIVATE_CORE_INTERMEDIATES := $(core-intermediates)
360$(HOST_CORE_JAR): $(LOCAL_BUILT_MODULE)
361 @rm -rf $(dir $<)/hostctsclasses
362 $(call unzip-jar-files,$(dir $<)classes.jar,$(dir $<)hostctsclasses)
363 @unzip -qx -o $(PRIVATE_CORE_INTERMEDIATES)/classes.jar dalvik/annotation/* -d $(dir $<)hostctsclasses
364 @cp $< $@
365 @jar uf $@ -C $(dir $<)hostctsclasses .
366
367$(LOCAL_INSTALLED_MODULE): $(HOST_CORE_JAR)
368
369$(LOCAL_INSTALLED_MODULE): run-core-tests
370
371# Definitions to copy the core-tests runner script.
372
373include $(CLEAR_VARS)
374LOCAL_SRC_FILES := run-core-tests
375LOCAL_MODULE_CLASS := EXECUTABLES
376LOCAL_MODULE_TAGS := tests
377LOCAL_MODULE := run-core-tests
378include $(BUILD_PREBUILT)
379
380include $(CLEAR_VARS)
381LOCAL_SRC_FILES := run-core-tests-on-ri
382LOCAL_IS_HOST_MODULE := true
383LOCAL_MODULE_CLASS := EXECUTABLES
384LOCAL_MODULE_TAGS := tests
385LOCAL_MODULE := run-core-tests-on-ri
386include $(BUILD_PREBUILT)
387
388
389#
390# Build for the host.
391#
392
393ifeq ($(WITH_HOST_DALVIK),true)
394
395 # Definitions to make the core library.
396
397 include $(CLEAR_VARS)
398
399 LOCAL_SRC_FILES := $(core_src_files)
400 LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
401
402 LOCAL_NO_STANDARD_LIBRARIES := true
403 LOCAL_DX_FLAGS := --core-library
404
405 LOCAL_NO_EMMA_INSTRUMENT := true
406 LOCAL_NO_EMMA_COMPILE := true
407
408 LOCAL_MODULE := core
409
410 include $(BUILD_HOST_JAVA_LIBRARY)
411
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800412endif