1
#
2
# Copyright (C) 2008 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
LOCAL_PATH := $(call my-dir)
17
18
# We have a special case here where we build the library's resources
19
# independently from its code, so we need to find where the resource
20
# class source got placed in the course of building the resources.
21
# Thus, the magic here.
22
# Also, this module cannot depend directly on the R.java file; if it
23
# did, the PRIVATE_* vars for R.java wouldn't be guaranteed to be correct.
24
# Instead, it depends on the R.stamp file, which lists the corresponding
25
# R.java file as a prerequisite.
26
# TODO: find a more appropriate way to do this.
27
framework-res-source-path := APPS/framework-res_intermediates/src
28
29
# the library
30
# ============================================================
31
include $(CLEAR_VARS)
32
33
# FRAMEWORKS_BASE_SUBDIRS comes from build/core/pathmap.mk
34
LOCAL_SRC_FILES := $(call find-other-java-files,$(FRAMEWORKS_BASE_SUBDIRS))
35
36
# The following filters out code we are temporarily not including at all.
37
# TODO: Move AWT and beans (and associated harmony code) back into libcore.
38
# TODO: Maybe remove javax.microedition entirely?
39
# TODO: Move SyncML (org.mobilecontrol.*) into its own library.
40
LOCAL_SRC_FILES := $(filter-out \
41
			org/mobilecontrol/% \
42
			,$(LOCAL_SRC_FILES))
43
44
## READ ME: ########################################################
45
##
46
## When updading this list of aidl files, consider if that aidl is
47
## part of the SDK API.  If it is, also add it to the list below that
48
## is preprocessed and distributed with the SDK.  This list should
49
## not contain any aidl files for parcelables, but the one below should
50
## if you intend for 3rd parties to be able to send those objects
51
## across process boundaries.
52
##
53
## READ ME: ########################################################
54
LOCAL_SRC_FILES += \
55
	core/java/android/accounts/IAccountsService.aidl \
56
	core/java/android/app/IActivityPendingResult.aidl \
57
	core/java/android/app/IActivityWatcher.aidl \
58
	core/java/android/app/IAlarmManager.aidl \
59
	core/java/android/app/IInstrumentationWatcher.aidl \
60
	core/java/android/app/IIntentReceiver.aidl \
61
	core/java/android/app/IIntentSender.aidl \
62
	core/java/android/app/INotificationManager.aidl \
63
	core/java/android/app/ISearchManager.aidl \
64
	core/java/android/app/IServiceConnection.aidl \
65
	core/java/android/app/IStatusBar.aidl \
66
	core/java/android/app/IThumbnailReceiver.aidl \
67
	core/java/android/app/ITransientNotification.aidl \
68
	core/java/android/app/IWallpaperService.aidl \
69
	core/java/android/app/IWallpaperServiceCallback.aidl \
70
	core/java/android/bluetooth/IBluetoothA2dp.aidl \
71
	core/java/android/bluetooth/IBluetoothDevice.aidl \
72
	core/java/android/bluetooth/IBluetoothDeviceCallback.aidl \
73
	core/java/android/bluetooth/IBluetoothHeadset.aidl \
74
	core/java/android/content/ISyncAdapter.aidl \
75
	core/java/android/content/ISyncContext.aidl \
76
	core/java/android/content/pm/IPackageDataObserver.aidl \
77
	core/java/android/content/pm/IPackageDeleteObserver.aidl \
78
	core/java/android/content/pm/IPackageInstallObserver.aidl \
79
	core/java/android/content/pm/IPackageManager.aidl \
80
	core/java/android/content/pm/IPackageStatsObserver.aidl \
81
	core/java/android/database/IContentObserver.aidl \
82
	core/java/android/hardware/ISensorService.aidl \
83
	core/java/android/net/IConnectivityManager.aidl \
84
	core/java/android/os/ICheckinService.aidl \
85
	core/java/android/os/IHardwareService.aidl \
86
	core/java/android/os/IMessenger.aidl \
87
	core/java/android/os/IMountService.aidl \
88
	core/java/android/os/INetStatService.aidl \
89
	core/java/android/os/IParentalControlCallback.aidl \
90
	core/java/android/os/IPermissionController.aidl \
91
	core/java/android/os/IPowerManager.aidl \
92
	core/java/android/text/IClipboard.aidl \
93
	core/java/android/view/IApplicationToken.aidl \
94
	core/java/android/view/IOnKeyguardExitResult.aidl \
95
	core/java/android/view/IRotationWatcher.aidl \
96
	core/java/android/view/IWindow.aidl \
97
	core/java/android/view/IWindowManager.aidl \
98
	core/java/android/view/IWindowSession.aidl \
99
	core/java/com/android/internal/app/IBatteryStats.aidl \
100
	core/java/com/android/internal/app/IUsageStats.aidl \
101
	core/java/com/android/internal/appwidget/IAppWidgetService.aidl \
102
	core/java/com/android/internal/appwidget/IAppWidgetHost.aidl \
103
	core/java/com/android/internal/os/IResultReceiver.aidl \
104
	core/java/com/android/internal/view/IInputContext.aidl \
105
	core/java/com/android/internal/view/IInputContextCallback.aidl \
106
	core/java/com/android/internal/view/IInputMethod.aidl \
107
	core/java/com/android/internal/view/IInputMethodCallback.aidl \
108
	core/java/com/android/internal/view/IInputMethodClient.aidl \
109
	core/java/com/android/internal/view/IInputMethodManager.aidl \
110
	core/java/com/android/internal/view/IInputMethodSession.aidl \
111
	im/java/android/im/IImPlugin.aidl \
112
	location/java/android/location/IGpsStatusListener.aidl \
113
	location/java/android/location/ILocationListener.aidl \
114
	location/java/android/location/ILocationManager.aidl \
115
	media/java/android/media/IAudioService.aidl \
116
	media/java/android/media/IMediaScannerListener.aidl \
117
	media/java/android/media/IMediaScannerService.aidl \
118
	telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl \
119
	telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl \
120
	telephony/java/com/android/internal/telephony/ITelephony.aidl \
121
	telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl \
122
	telephony/java/com/android/internal/telephony/gsm/ISimPhoneBook.aidl \
123
	telephony/java/com/android/internal/telephony/gsm/ISms.aidl \
124
	wifi/java/android/net/wifi/IWifiManager.aidl \
125
	telephony/java/com/android/internal/telephony/IExtendedNetworkService.aidl
126
127
# FRAMEWORKS_BASE_JAVA_SRC_DIRS comes from build/core/pathmap.mk
128
LOCAL_AIDL_INCLUDES += $(FRAMEWORKS_BASE_JAVA_SRC_DIRS)
129
130
LOCAL_INTERMEDIATE_SOURCES := \
131
			$(framework-res-source-path)/android/R.java \
132
			$(framework-res-source-path)/android/Manifest.java \
133
			$(framework-res-source-path)/com/android/internal/R.java
134
135
LOCAL_NO_STANDARD_LIBRARIES := true
136
LOCAL_JAVA_LIBRARIES := core ext
137
138
LOCAL_MODULE := framework
139
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
140
141
# List of classes and interfaces which should be loaded by the Zygote.
142
LOCAL_JAVA_RESOURCE_FILES += $(LOCAL_PATH)/preloaded-classes
143
144
#LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
145
146
LOCAL_DX_FLAGS := --core-library
147
148
include $(BUILD_JAVA_LIBRARY)
149
150
# Make sure that R.java and Manifest.java are built before we build
151
# the source for this library.
152
framework_res_R_stamp := \
153
	$(call intermediates-dir-for,APPS,framework-res,,COMMON)/src/R.stamp
154
$(full_classes_compiled_jar): $(framework_res_R_stamp)
155
156
# Make sure that framework-res is installed when framework is.
157
$(LOCAL_INSTALLED_MODULE): | $(dir $(LOCAL_INSTALLED_MODULE))framework-res.apk
158
159
framework_built := $(LOCAL_BUILT_MODULE)
160
161
# AIDL files to be preprocessed and included in the SDK,
162
# relative to the root of the build tree.
163
# ============================================================
164
aidl_files := \
165
	frameworks/base/core/java/android/accounts/IAccountsService.aidl \
166
	frameworks/base/core/java/android/app/Notification.aidl \
167
	frameworks/base/core/java/android/app/PendingIntent.aidl \
168
	frameworks/base/core/java/android/content/ComponentName.aidl \
169
	frameworks/base/core/java/android/content/Intent.aidl \
170
	frameworks/base/core/java/android/content/SyncStats.aidl \
171
	frameworks/base/core/java/android/content/res/Configuration.aidl \
172
	frameworks/base/core/java/android/appwidget/AppWidgetProviderInfo.aidl \
173
	frameworks/base/core/java/android/net/Uri.aidl \
174
	frameworks/base/core/java/android/os/Bundle.aidl \
175
	frameworks/base/core/java/android/os/ParcelFileDescriptor.aidl \
176
	frameworks/base/core/java/android/view/KeyEvent.aidl \
177
	frameworks/base/core/java/android/view/MotionEvent.aidl \
178
	frameworks/base/core/java/android/view/Surface.aidl \
179
	frameworks/base/core/java/android/view/WindowManager.aidl \
180
	frameworks/base/core/java/android/widget/RemoteViews.aidl \
181
	frameworks/base/core/java/com/android/internal/view/IInputContext.aidl \
182
	frameworks/base/core/java/com/android/internal/view/IInputMethod.aidl \
183
	frameworks/base/core/java/com/android/internal/view/IInputMethodCallback.aidl \
184
	frameworks/base/core/java/com/android/internal/view/IInputMethodClient.aidl \
185
	frameworks/base/core/java/com/android/internal/view/IInputMethodManager.aidl \
186
	frameworks/base/core/java/com/android/internal/view/IInputMethodSession.aidl \
187
	frameworks/base/graphics/java/android/graphics/Bitmap.aidl \
188
	frameworks/base/graphics/java/android/graphics/Rect.aidl \
189
	frameworks/base/graphics/java/android/graphics/Region.aidl \
190
	frameworks/base/im/java/android/im/IImPlugin.aidl \
191
	frameworks/base/location/java/android/location/Criteria.aidl \
192
	frameworks/base/location/java/android/location/Location.aidl \
193
	frameworks/base/telephony/java/android/telephony/ServiceState.aidl \
194
	frameworks/base/telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl \
195
	frameworks/base/telephony/java/com/android/internal/telephony/ITelephony.aidl
196
197
gen := $(TARGET_OUT_COMMON_INTERMEDIATES)/framework.aidl
198
$(gen): PRIVATE_SRC_FILES := $(aidl_files)
199
ALL_SDK_FILES += $(gen)
200
$(gen): $(aidl_files) | $(AIDL)
201
		@echo Aidl Preprocess: $@
202
		$(hide) $(AIDL) --preprocess $@ $(PRIVATE_SRC_FILES)
203
204
# the documentation
205
# ============================================================
206
207
# TODO: deal with com/google/android/googleapps
208
packages_to_document := \
209
	android \
210
	javax/microedition/khronos
211
212
# Search through the base framework dirs for these packages.
213
# The result will be relative to frameworks/base.
214
fwbase_dirs_to_document := \
215
	test-runner \
216
	$(patsubst $(LOCAL_PATH)/%,%, \
217
	  $(wildcard \
218
	    $(foreach dir, $(FRAMEWORKS_BASE_JAVA_SRC_DIRS), \
219
	      $(addprefix $(dir)/, $(packages_to_document)) \
220
	     ) \
221
	   ) \
222
	 )
223
224
# These are relative to dalvik/libcore
225
# Intentionally not included from libcore:
226
#     icu openssl suncompat support
227
libcore_to_document := \
228
	annotation/src/main/java/java \
229
	archive/src/main/java/java \
230
	auth/src/main/java/javax \
231
	awt-kernel/src/main/java/java \
232
	concurrent/src/main/java \
233
	crypto/src/main/java/javax \
234
	dalvik/src/main/java/dalvik \
235
	json/src/main/java \
236
	junit/src/main/java \
237
	logging/src/main/java/java \
238
	luni/src/main/java/java \
239
	luni-kernel/src/main/java/java \
240
	math/src/main/java/java \
241
	nio/src/main/java/java \
242
	nio_char/src/main/java/java \
243
	prefs/src/main/java/java \
244
	regex/src/main/java/java \
245
	security/src/main/java/java \
246
	security/src/main/java/javax \
247
	security-kernel/src/main/java/java \
248
	sql/src/main/java/java \
249
	sql/src/main/java/javax \
250
	text/src/main/java/java \
251
	x-net/src/main/java/javax \
252
	xml/src/main/java/javax \
253
	xml/src/main/java/org/xml/sax \
254
	xml/src/main/java/org/xmlpull/v1 \
255
	xml/src/main/java/org/w3c
256
257
non_base_dirs := \
258
	../../external/apache-http/src/org/apache/http
259
260
# These are relative to frameworks/base
261
dirs_to_document := \
262
	$(fwbase_dirs_to_document) \
263
	$(non_base_dirs) \
264
	$(addprefix ../../dalvik/libcore/, $(libcore_to_document))
265
266
html_dirs := \
267
	$(FRAMEWORKS_BASE_SUBDIRS) \
268
	$(non_base_dirs)
269
270
# These are relative to frameworks/base
271
framework_docs_LOCAL_SRC_FILES := \
272
	$(call find-other-java-files, $(dirs_to_document)) \
273
	$(call find-other-html-files, $(html_dirs))
274
275
framework_docs_LOCAL_DROIDDOC_SOURCE_PATH := \
276
	$(FRAMEWORKS_BASE_JAVA_SRC_DIRS)
277
278
framework_docs_LOCAL_INTERMEDIATE_SOURCES := \
279
			$(framework-res-source-path)/android/R.java \
280
			$(framework-res-source-path)/android/Manifest.java \
281
			$(framework-res-source-path)/com/android/internal/R.java
282
283
framework_docs_LOCAL_JAVA_LIBRARIES := \
284
			core \
285
			ext \
286
287
framework_docs_LOCAL_MODULE_CLASS := JAVA_LIBRARIES
288
framework_docs_LOCAL_DROIDDOC_HTML_DIR := docs/html
289
framework_docs_LOCAL_DROIDDOC_OPTIONS := \
290
		-error 1 -error 2 -warning 3 -error 4 -error 6 -error 8 \
291
		-overview $(LOCAL_PATH)/core/java/overview.html
292
293
framework_docs_LOCAL_ADDITIONAL_JAVA_DIR:=$(call intermediates-dir-for,JAVA_LIBRARIES,framework)
294
295
web_docs_sample_code_flags := \
296
		-hdf android.hasSamples 1 \
297
		-samplecode samples/ApiDemos guide/samples/ApiDemos "API Demos" \
298
		-samplecode samples/LunarLander guide/samples/LunarLander "Lunar Lander" \
299
		-samplecode samples/NotePad guide/samples/NotePad "Note Pad"
300
301
sample_dir := development/samples
302
303
web_docs_sample_code_flags := \
304
		-hdf android.hasSamples 1 \
305
		-samplecode $(sample_dir)/ApiDemos \
306
		            guide/samples/ApiDemos "API Demos" \
307
		-samplecode $(sample_dir)/LunarLander \
308
		            guide/samples/LunarLander "Lunar Lander" \
309
		-samplecode $(sample_dir)/NotePad \
310
		            guide/samples/NotePad "Note Pad"
311
312
313
# ====  static html in the sdk ==================================
314
include $(CLEAR_VARS)
315
316
LOCAL_SRC_FILES:=$(framework_docs_LOCAL_SRC_FILES)
317
LOCAL_INTERMEDIATE_SOURCES:=$(framework_docs_LOCAL_INTERMEDIATE_SOURCES)
318
LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_JAVA_LIBRARIES)
319
LOCAL_MODULE_CLASS:=$(framework_docs_LOCAL_MODULE_CLASS)
320
LOCAL_DROIDDOC_SOURCE_PATH:=$(framework_docs_LOCAL_DROIDDOC_SOURCE_PATH)
321
LOCAL_DROIDDOC_HTML_DIR:=$(framework_docs_LOCAL_DROIDDOC_HTML_DIR)
322
LOCAL_ADDITIONAL_JAVA_DIR:=$(framework_docs_LOCAL_ADDITIONAL_JAVA_DIR)
323
324
LOCAL_MODULE := offline-sdk
325
326
LOCAL_DROIDDOC_OPTIONS:=\
327
		$(framework_docs_LOCAL_DROIDDOC_OPTIONS) \
328
		-title "Android SDK" \
329
		-proofread $(OUT_DOCS)/$(LOCAL_MODULE)-proofread.txt \
330
		-todo $(OUT_DOCS)/$(LOCAL_MODULE)-docs-todo.html \
331
		-stubs $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android_stubs_current_intermediates/src \
332
		-apixml $(INTERNAL_PLATFORM_API_FILE) \
333
		-sdkvalues $(OUT_DOCS) \
334
		-warning 3 \
335
		-hdf android.whichdoc offline
336
337
LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
338
LOCAL_DROIDDOC_CUSTOM_ASSET_DIR:=assets-sdk
339
340
include $(BUILD_DROIDDOC)
341
342
static_doc_index_redirect := $(out_dir)/index.html
343
$(static_doc_index_redirect): \
344
		$(LOCAL_PATH)/docs/docs-documentation-redirect.html | $(ACP)
345
	$(hide) mkdir -p $(dir $@)
346
	$(hide) $(ACP) $< $@
347
348
$(full_target): $(static_doc_index_redirect)
349
$(full_target): $(framework_built)
350
$(INTERNAL_PLATFORM_API_FILE): $(full_target)
351
$(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_API_FILE))
352
353
354
# ==== docs for the web (on the google app engine server) =======================
355
include $(CLEAR_VARS)
356
357
LOCAL_SRC_FILES:=$(framework_docs_LOCAL_SRC_FILES)
358
LOCAL_INTERMEDIATE_SOURCES:=$(framework_docs_LOCAL_INTERMEDIATE_SOURCES)
359
LOCAL_STATIC_JAVA_LIBRARIES:=$(framework_docs_LOCAL_STATIC_JAVA_LIBRARIES)
360
LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_JAVA_LIBRARIES)
361
LOCAL_MODULE_CLASS:=$(framework_docs_LOCAL_MODULE_CLASS)
362
LOCAL_DROIDDOC_SOURCE_PATH:=$(framework_docs_LOCAL_DROIDDOC_SOURCE_PATH)
363
LOCAL_DROIDDOC_HTML_DIR:=$(framework_docs_LOCAL_DROIDDOC_HTML_DIR)
364
LOCAL_ADDITIONAL_JAVA_DIR:=$(framework_docs_LOCAL_ADDITIONAL_JAVA_DIR)
365
366
LOCAL_MODULE := online-sdk
367
368
LOCAL_DROIDDOC_OPTIONS:= \
369
	$(framework_docs_LOCAL_DROIDDOC_OPTIONS) \
370
	$(web_docs_sample_code_flags) \
371
	-toroot / \
372
    -hdf android.whichdoc online
373
374
LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
375
LOCAL_DROIDDOC_CUSTOM_ASSET_DIR:=assets-sdk
376
377
include $(BUILD_DROIDDOC)
378
379
380
# ==== docs that have all of the stuff that's @hidden =======================
381
include $(CLEAR_VARS)
382
383
LOCAL_SRC_FILES:=$(framework_docs_LOCAL_SRC_FILES)
384
LOCAL_INTERMEDIATE_SOURCES:=$(framework_docs_LOCAL_INTERMEDIATE_SOURCES)
385
LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_JAVA_LIBRARIES) framework
386
LOCAL_MODULE_CLASS:=$(framework_docs_LOCAL_MODULE_CLASS)
387
LOCAL_DROIDDOC_SOURCE_PATH:=$(framework_docs_LOCAL_DROIDDOC_SOURCE_PATH)
388
LOCAL_DROIDDOC_HTML_DIR:=$(framework_docs_LOCAL_DROIDDOC_HTML_DIR)
389
LOCAL_ADDITIONAL_JAVA_DIR:=$(call intermediates-dir-for,JAVA_LIBRARIES,framework)
390
391
LOCAL_MODULE := hidden
392
LOCAL_DROIDDOC_OPTIONS:=\
393
		$(framework_docs_LOCAL_DROIDDOC_OPTIONS) \
394
        -title "Android SDK - Including hidden APIs."
395
#        -hidden
396
397
LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk
398
LOCAL_DROIDDOC_CUSTOM_ASSET_DIR:=assets-sdk
399
400
include $(BUILD_DROIDDOC)
401
402
# Build ext.jar
403
# ============================================================
404
405
ext_dirs := \
406
	../../external/apache-http/src \
407
	../../external/gdata/src \
408
	../../external/protobuf/src \
409
	../../external/tagsoup/src
410
411
ext_src_files := $(call all-java-files-under,$(ext_dirs))
412
413
# ====  the library  =========================================
414
include $(CLEAR_VARS)
415
416
LOCAL_SRC_FILES := $(ext_src_files)
417
418
LOCAL_NO_STANDARD_LIBRARIES := true
419
LOCAL_JAVA_LIBRARIES := core
420
LOCAL_STATIC_JAVA_LIBRARIES := libgoogleclient
421
422
LOCAL_MODULE := ext
423
424
include $(BUILD_JAVA_LIBRARY)
425
426
427
# Include subdirectory makefiles
428
# ============================================================
429
430
# If we're building with ONE_SHOT_MAKEFILE (mm, mmm), then what the framework
431
# team really wants is to build the stuff defined by this makefile.
432
ifeq (,$(ONE_SHOT_MAKEFILE))
433
include $(call first-makefiles-under,$(LOCAL_PATH))
434
endif