blob: c9fe3e22da05ae1315b647df9f43cd981551fbc0 [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
Elliott Hughes3e951a52010-02-22 15:01:55 -080029$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find */src/main/java -name "*.java"))
Dan Bornstein6ac43c22009-10-24 15:33:49 -070030endef
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 Hughes3e951a52010-02-22 15:01:55 -080039$(shell cd $(LOCAL_PATH) && ls -d */src/$(1)/{java,resources} 2> /dev/null)
Dan Bornstein6ac43c22009-10-24 15:33:49 -070040endef
41
Elliott Hughes3e951a52010-02-22 15:01:55 -080042# The Java files and their associated resources.
43core_src_files := $(call all-core-java-files)
Dan Bornstein6ac43c22009-10-24 15:33:49 -070044core_resource_dirs := $(call all-core-resource-dirs,main)
Elliott Hughes3e951a52010-02-22 15:01:55 -080045test_resource_dirs := $(call all-core-resource-dirs,test)
Dan Bornstein6ac43c22009-10-24 15:33:49 -070046
47
48#
49# Build for the target (device).
50#
51
52# Definitions to make the core library.
53
54include $(CLEAR_VARS)
55
56LOCAL_SRC_FILES := $(core_src_files)
57LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
58
59LOCAL_NO_STANDARD_LIBRARIES := true
60LOCAL_DX_FLAGS := --core-library
61
62LOCAL_NO_EMMA_INSTRUMENT := true
63LOCAL_NO_EMMA_COMPILE := true
64
65LOCAL_MODULE := core
66
67include $(BUILD_JAVA_LIBRARY)
68
69core-intermediates := ${intermediates}
70
71
Elliott Hughes7ee3a062010-02-18 17:20:15 -080072
73
74# Definitions to make the core-tests libraries.
75#
76# We make a library per module, because otherwise the .jar files get too
77# large, to the point that dx(1) can't cope (and the build is
78# ridiculously slow).
79#
80# TODO: DalvikRunner will make this nonsense obsolete.
Dan Bornstein6ac43c22009-10-24 15:33:49 -070081
82include $(CLEAR_VARS)
Elliott Hughes7ee3a062010-02-18 17:20:15 -080083LOCAL_SRC_FILES := $(call all-test-java-files-under,annotation)
Dan Bornstein6ac43c22009-10-24 15:33:49 -070084LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
Elliott Hughes7ee3a062010-02-18 17:20:15 -080085LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -080086LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -080087LOCAL_DX_FLAGS := --core-library
88LOCAL_MODULE_TAGS := tests
89LOCAL_MODULE := core-tests-annotation
90include $(BUILD_JAVA_LIBRARY)
Dan Bornstein6ac43c22009-10-24 15:33:49 -070091
Elliott Hughes7ee3a062010-02-18 17:20:15 -080092include $(CLEAR_VARS)
93LOCAL_SRC_FILES := $(call all-test-java-files-under,archive)
94LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
95LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -080096LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -080097LOCAL_DX_FLAGS := --core-library
98LOCAL_MODULE_TAGS := tests
99LOCAL_MODULE := core-tests-archive
100include $(BUILD_JAVA_LIBRARY)
101
102include $(CLEAR_VARS)
103LOCAL_SRC_FILES := $(call all-test-java-files-under,concurrent)
104LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
105LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800106LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800107LOCAL_DX_FLAGS := --core-library
108LOCAL_MODULE_TAGS := tests
109LOCAL_MODULE := core-tests-concurrent
110include $(BUILD_JAVA_LIBRARY)
111
112include $(CLEAR_VARS)
113LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto)
114LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
115LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800116LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800117LOCAL_DX_FLAGS := --core-library
118LOCAL_MODULE_TAGS := tests
119LOCAL_MODULE := core-tests-crypto
120include $(BUILD_JAVA_LIBRARY)
121
122include $(CLEAR_VARS)
123LOCAL_SRC_FILES := $(call all-test-java-files-under,dom)
124LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
125LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800126LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800127LOCAL_DX_FLAGS := --core-library
128LOCAL_MODULE_TAGS := tests
129LOCAL_MODULE := core-tests-dom
130include $(BUILD_JAVA_LIBRARY)
131
132include $(CLEAR_VARS)
133LOCAL_SRC_FILES := $(call all-test-java-files-under,icu)
134LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
135LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800136LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800137LOCAL_DX_FLAGS := --core-library
138LOCAL_MODULE_TAGS := tests
139LOCAL_MODULE := core-tests-icu
140include $(BUILD_JAVA_LIBRARY)
141
142include $(CLEAR_VARS)
Elliott Hughesbf1ecf22010-02-22 12:45:26 -0800143LOCAL_SRC_FILES := $(call all-test-java-files-under,json)
144LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
145LOCAL_NO_STANDARD_LIBRARIES := true
146LOCAL_JAVA_LIBRARIES := core core-tests-support
147LOCAL_DX_FLAGS := --core-library
148LOCAL_MODULE_TAGS := tests
149LOCAL_MODULE := core-tests-json
150include $(BUILD_JAVA_LIBRARY)
151
152include $(CLEAR_VARS)
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800153LOCAL_SRC_FILES := $(call all-test-java-files-under,logging)
154LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
155LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800156LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800157LOCAL_DX_FLAGS := --core-library
158LOCAL_MODULE_TAGS := tests
159LOCAL_MODULE := core-tests-logging
160include $(BUILD_JAVA_LIBRARY)
161
162include $(CLEAR_VARS)
163LOCAL_SRC_FILES := $(call all-test-java-files-under,luni-kernel)
164LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
165LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800166LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800167LOCAL_DX_FLAGS := --core-library
168LOCAL_MODULE_TAGS := tests
169LOCAL_MODULE := core-tests-luni-kernel
170include $(BUILD_JAVA_LIBRARY)
171
172include $(CLEAR_VARS)
173LOCAL_SRC_FILES := $(call all-test-java-files-under,luni)
174LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
175LOCAL_NO_STANDARD_LIBRARIES := true
176# This module contains the top-level "tests.AllTests" that ties everything
177# together, so it has compile-time dependencies on all the other test
178# libraries.
179# TODO: we should have a bogus module that just contains tests.AllTests for speed.
Elliott Hughesbf1ecf22010-02-22 12:45:26 -0800180LOCAL_JAVA_LIBRARIES := \
181 core \
182 core-tests-support \
183 core-tests-annotation \
184 core-tests-archive \
185 core-tests-concurrent \
186 core-tests-crypto \
187 core-tests-dom \
188 core-tests-icu \
189 core-tests-json \
190 core-tests-logging \
191 core-tests-luni-kernel \
192 core-tests-math \
193 core-tests-nio \
194 core-tests-nio_char \
195 core-tests-prefs \
196 core-tests-regex \
197 core-tests-security \
198 core-tests-sql \
199 core-tests-suncompat \
200 core-tests-text \
201 core-tests-x-net \
202 core-tests-xml
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800203LOCAL_DX_FLAGS := --core-library
204LOCAL_MODULE_TAGS := tests
205LOCAL_MODULE := core-tests-luni
206include $(BUILD_JAVA_LIBRARY)
207
208include $(CLEAR_VARS)
209LOCAL_SRC_FILES := $(call all-test-java-files-under,math)
210LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
211LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800212LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800213LOCAL_DX_FLAGS := --core-library
214LOCAL_MODULE_TAGS := tests
215LOCAL_MODULE := core-tests-math
216include $(BUILD_JAVA_LIBRARY)
217
218include $(CLEAR_VARS)
219LOCAL_SRC_FILES := $(call all-test-java-files-under,nio)
220LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
221LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800222LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800223LOCAL_DX_FLAGS := --core-library
224LOCAL_MODULE_TAGS := tests
225LOCAL_MODULE := core-tests-nio
226include $(BUILD_JAVA_LIBRARY)
227
228include $(CLEAR_VARS)
229LOCAL_SRC_FILES := $(call all-test-java-files-under,nio_char)
230LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
231LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800232LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800233LOCAL_DX_FLAGS := --core-library
234LOCAL_MODULE_TAGS := tests
235LOCAL_MODULE := core-tests-nio_char
236include $(BUILD_JAVA_LIBRARY)
237
238include $(CLEAR_VARS)
239LOCAL_SRC_FILES := $(call all-test-java-files-under,prefs)
240LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
241LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800242LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800243LOCAL_DX_FLAGS := --core-library
244LOCAL_MODULE_TAGS := tests
245LOCAL_MODULE := core-tests-prefs
246include $(BUILD_JAVA_LIBRARY)
247
248include $(CLEAR_VARS)
249LOCAL_SRC_FILES := $(call all-test-java-files-under,regex)
250LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
251LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800252LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800253LOCAL_DX_FLAGS := --core-library
254LOCAL_MODULE_TAGS := tests
255LOCAL_MODULE := core-tests-regex
256include $(BUILD_JAVA_LIBRARY)
257
258include $(CLEAR_VARS)
259LOCAL_SRC_FILES := $(call all-test-java-files-under,security)
260LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
261LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800262LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800263LOCAL_DX_FLAGS := --core-library
264LOCAL_MODULE_TAGS := tests
265LOCAL_MODULE := core-tests-security
266include $(BUILD_JAVA_LIBRARY)
267
268include $(CLEAR_VARS)
269LOCAL_SRC_FILES := $(call all-test-java-files-under,sql)
270LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
271LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800272LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800273LOCAL_DX_FLAGS := --core-library
274LOCAL_MODULE_TAGS := tests
275LOCAL_MODULE := core-tests-sql
276include $(BUILD_JAVA_LIBRARY)
277
278include $(CLEAR_VARS)
279LOCAL_SRC_FILES := $(call all-test-java-files-under,suncompat)
280LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
281LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800282LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800283LOCAL_DX_FLAGS := --core-library
284LOCAL_MODULE_TAGS := tests
285LOCAL_MODULE := core-tests-suncompat
286include $(BUILD_JAVA_LIBRARY)
287
288include $(CLEAR_VARS)
289LOCAL_SRC_FILES := $(call all-test-java-files-under,support)
290LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700291LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughes67cc34b2010-02-19 22:14:19 -0800292LOCAL_JAVA_LIBRARIES := core
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700293LOCAL_DX_FLAGS := --core-library
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700294LOCAL_MODULE_TAGS := tests
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800295LOCAL_MODULE := core-tests-support
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700296include $(BUILD_JAVA_LIBRARY)
297
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800298include $(CLEAR_VARS)
299LOCAL_SRC_FILES := $(call all-test-java-files-under,text)
300LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
301LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800302LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800303LOCAL_DX_FLAGS := --core-library
304LOCAL_MODULE_TAGS := tests
305LOCAL_MODULE := core-tests-text
306include $(BUILD_JAVA_LIBRARY)
307
308include $(CLEAR_VARS)
309LOCAL_SRC_FILES := $(call all-test-java-files-under,x-net)
310LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
311LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800312LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800313LOCAL_DX_FLAGS := --core-library
314LOCAL_MODULE_TAGS := tests
315LOCAL_MODULE := core-tests-x-net
316include $(BUILD_JAVA_LIBRARY)
317
318include $(CLEAR_VARS)
319LOCAL_SRC_FILES := $(call all-test-java-files-under,xml)
320LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
321LOCAL_NO_STANDARD_LIBRARIES := true
Elliott Hughese2a6f772010-02-22 12:09:51 -0800322LOCAL_JAVA_LIBRARIES := core core-tests-support
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800323LOCAL_DX_FLAGS := --core-library
324LOCAL_MODULE_TAGS := tests
325LOCAL_MODULE := core-tests-xml
326include $(BUILD_JAVA_LIBRARY)
327
328
Dan Bornstein6ac43c22009-10-24 15:33:49 -0700329
330
331# This one's tricky. One of our tests needs to have a
332# resource with a "#" in its name, but Perforce doesn't
333# allow us to submit such a file. So we create it here
334# on-the-fly.
335TMP_RESOURCE_DIR := $(OUT_DIR)/tmp/
336TMP_RESOURCE_FILE := org/apache/harmony/luni/tests/java/lang/test\#.properties
337
338$(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE):
339 @mkdir -p $(dir $@)
340 @echo "Hello, world!" > $@
341
342$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS := $(extra_jar_args) -C $(TMP_RESOURCE_DIR) $(TMP_RESOURCE_FILE)
343$(LOCAL_INTERMEDIATE_TARGETS): $(TMP_RESOURCE_DIR)$(TMP_RESOURCE_FILE)
344
345# Definitions for building a version of the core-tests.jar
346# that is suitable for execution on the RI. This JAR would
347# be better located in $HOST_OUT_JAVA_LIBRARIES, but it is
348# not possible to refer to that from a shell script (the
349# variable is not exported from envsetup.sh). There is also
350# some trickery involved: we need to include some classes
351# that reside in core.jar, but since we cannot incldue the
352# whole core.jar in the RI classpath, we copy those classses
353# over to our new file.
354HOST_CORE_JAR := $(HOST_COMMON_OUT_ROOT)/core-tests.jar
355
356$(HOST_CORE_JAR): PRIVATE_LOCAL_BUILT_MODULE := $(LOCAL_BUILT_MODULE)
357$(HOST_CORE_JAR): PRIVATE_CORE_INTERMEDIATES := $(core-intermediates)
358$(HOST_CORE_JAR): $(LOCAL_BUILT_MODULE)
359 @rm -rf $(dir $<)/hostctsclasses
360 $(call unzip-jar-files,$(dir $<)classes.jar,$(dir $<)hostctsclasses)
361 @unzip -qx -o $(PRIVATE_CORE_INTERMEDIATES)/classes.jar dalvik/annotation/* -d $(dir $<)hostctsclasses
362 @cp $< $@
363 @jar uf $@ -C $(dir $<)hostctsclasses .
364
365$(LOCAL_INSTALLED_MODULE): $(HOST_CORE_JAR)
366
367$(LOCAL_INSTALLED_MODULE): run-core-tests
368
369# Definitions to copy the core-tests runner script.
370
371include $(CLEAR_VARS)
372LOCAL_SRC_FILES := run-core-tests
373LOCAL_MODULE_CLASS := EXECUTABLES
374LOCAL_MODULE_TAGS := tests
375LOCAL_MODULE := run-core-tests
376include $(BUILD_PREBUILT)
377
378include $(CLEAR_VARS)
379LOCAL_SRC_FILES := run-core-tests-on-ri
380LOCAL_IS_HOST_MODULE := true
381LOCAL_MODULE_CLASS := EXECUTABLES
382LOCAL_MODULE_TAGS := tests
383LOCAL_MODULE := run-core-tests-on-ri
384include $(BUILD_PREBUILT)
385
386
387#
388# Build for the host.
389#
390
391ifeq ($(WITH_HOST_DALVIK),true)
392
393 # Definitions to make the core library.
394
395 include $(CLEAR_VARS)
396
397 LOCAL_SRC_FILES := $(core_src_files)
398 LOCAL_JAVA_RESOURCE_DIRS := $(core_resource_dirs)
399
400 LOCAL_NO_STANDARD_LIBRARIES := true
401 LOCAL_DX_FLAGS := --core-library
402
403 LOCAL_NO_EMMA_INSTRUMENT := true
404 LOCAL_NO_EMMA_COMPILE := true
405
406 LOCAL_MODULE := core
407
408 include $(BUILD_HOST_JAVA_LIBRARY)
409
Elliott Hughes7ee3a062010-02-18 17:20:15 -0800410endif